iptables: como dar acesso ip a um serviço tcp por uma hora?

1

Eu gostaria de dar um acesso ip à porta tcp 3306 por uma hora. Depois disso, todas as conexões devem ser fechadas.

Como posso adicionar um tempo limite à seguinte expressão?

iptables -A INPUT -m state --state NEW -m tcp -p tcp --source 1.2.3.4 --dport 3306 -j ACCEPT
    
por JMW 21.09.2011 / 16:04

2 respostas

3

Eu acredito (eu nunca usei isso, e achei através da página de manual do iptables) --timestart e --timestop irão fazer isso.

iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -m tcp -p tcp --source 1.2.3.4 --dport 3306 --timestart 13:00 --timestop 14:00 -j ACCEPT

Permitiria entre 1 e 2 da tarde.

This matches if the packet arrival time/date is within a given range. All options are facultative.

--timestart value

Match only if it is after 'value' (Inclusive, format: HH:MM ; default 00:00).

--timestop value

Match only if it is before 'value' (Inclusive, format: HH:MM ; default 23:59).

    
por 21.09.2011 / 16:30
2

Solução alternativa que não requer o módulo de tempo iptables suportado.

( iptables -I INPUT -p tcp -s 1.2.3.4 --dport 3306 -j ACCEPT ; sleep 1h; iptables -D INPUT -p tcp -s 1.2.3.4 --dport 3306 -j ACCEPT ) &

Isso não fechará as conexões depois da hora, ele simplesmente retornará para qualquer política antes de permitir a conexão; que pode ser configurado para interromper e descartar / rejeitar o tráfego não permitido a menos que você tenha ESTADO ESTABELECIDO PERMITIR antecipadamente.

    
por 21.09.2011 / 17:02