Parte de um firewall em um servidor:
iptables -A INPUT -p tcp --dport 22 -m state NEW --state -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 100 --hitcount 10 -j DROP
Quando pesquiso on-line, sempre vejo NEW sendo usado nessa regra, mas não consigo entender por que ESTABELECIDO e RELACIONADO não está sendo usado.
Como isso :
iptables -A INPUT -p tcp --dport 22 -m state NEW,ESTABLISHED,RELATED --state -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -m recent --update --seconds 100 --hitcount 10 -j DROP
Alguém pode me explicar quando exatamente um NOVO pacote muda para ESTABELECIDO e RELACIONADO?
SYN
/ACK
/RST
/ etc à medida que eles passam pelo roteador, e eu espero que o iptables faça isso.Asumming para servidor e cliente um restritivo
INPUT
e abertoOUTPUT
, ou seja:E de iptables-extensions (8) sobre o exemplo de FTP no modo ativo:
1. NOVO
O cliente na porta
50000
(qualquer porta sem privilégios aleatórios) se conecta ao servidor FTP na porta21
, o servidor precisaria pelo menos disso para aceitar esta conexão de entrada:2. ESTABELECIDO
Agora no lado do cliente, ele abriu uma conexão de saída para o servidor na porta
21
usando uma porta local50000
e ele precisa as seguintes iptables para permitir a resposta a chegar a partirserver (21)
declient (50000)
:3. RELACIONADOS
Agora, depois que a conexão FTP for estabelecida e uma conexão de dados estiver prestes a ser realizada, o cliente abrirá um soquete do servidor (sim, com o cliente FTP ativo se torna um servidor para a conexão de dados) na porta
60000
(para o meu entendimento, o cliente marcará essa porta60000
quantoRELATED
à outra conexão de50000->21
) e enviará esse número de porta ao servidor usando oPORT
comando FTP . Em seguida, o servidor FTP abrirá uma nova conexão de sua porta20
para porta60000
no cliente e, agora, o cliente exige o seguinte para permitir que essa nova conexão seja bem-sucedida:Por fim, para que isso funcione, você precisa habilitar o
ip_conntrack_ftp
módulo do kernel para permitir que o sistema marque conexões / pacotes comoRELATED
(este é meu entendimento, eu não cavei muito nisso):fonte
INPUT
.