Diferença de --syn e --state NEW [RESOLVIDO]

1. Diferença de --syn e --state NEW [RESOLVIDO]

Wagner R. M.
wagnerrm

(usa Slackware)

Enviado em 12/09/2013 - 17:28h

Alguém sabe me explicar a diferença destas regras abaixo?

iptables -A INPUT -p tcp --dport 22 --syn -m limit --limit 6/minute -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 6/minute -j ACCEPT

iptables -A INPUT -p tcp --dport 22 --syn -m state --state NEW -m limit --limit 6/minute -j ACCEPT

Andei lendo sobre o assunto e entendi que o --syn serve para identificar um pacote que inícia uma nova conexão.
Mas não é a mesma coisa que --state NEW?

Não entendi quando usar um e quando usar outro.
Ou quando os dois combinados.
Agradeço qualquer esclarecimento.



  


2. Re: Diferença de --syn e --state NEW [RESOLVIDO]

Pedro
px

(usa Debian)

Enviado em 12/09/2013 - 18:09h

wagnerrm escreveu:

Alguém sabe me explicar a diferença destas regras abaixo?

iptables -A INPUT -p tcp --dport 22 --syn -m limit --limit 6/minute -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 6/minute -j ACCEPT

iptables -A INPUT -p tcp --dport 22 --syn -m state --state NEW -m limit --limit 6/minute -j ACCEPT

Andei lendo sobre o assunto e entendi que o --syn serve para identificar um pacote que inícia uma nova conexão.
Mas não é a mesma coisa que --state NEW?

Não entendi quando usar um e quando usar outro.
Ou quando os dois combinados.
Agradeço qualquer esclarecimento.


Não necessariamente, um pacote novo também é considerado NEW mesmo que não seja SYN.

use isto:

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --dport 22 --syn -m state --state NEW -j ACCEPT




Ative os syncookies no kernel se quiser ainda mais segurança, mas ñ coloque limite na regra geral de conexão, faça um limite de ip e de conexões paralelas



3. Re: Diferença de --syn e --state NEW [RESOLVIDO]

Fernando
phoemur

(usa Debian)

Enviado em 12/09/2013 - 18:10h

O --syn seria apenas quando você receber um pacote SYN inicial...

O --state NEW seria apenas quando o handshake completo tiver sido estabelecido...
Ou seja, você recebe um SYN, devolve um SYN/ACK e recebe um ACK depois...

Daí você deduz que nem todo SYN que você recebe ser uma conexão... Pode ser um portscan ou outras coisas por exemplo...

Sugiro estudar protocolo tcp


4. Re: Diferença de --syn e --state NEW [RESOLVIDO]

Buckminster
Buckminster

(usa Debian)

Enviado em 13/09/2013 - 00:54h

É a pilha do protocolo TCP/IP em ação. É o famoso "Aperto de Mão em Três Vias".
Antes de enviar ou solicitar um dado, um site por exemplo, o cliente solicita a conexão enviando um pacote com a flag SYN, o servidor responde com as flags SYN+ACK e o cliente responde com um ACK e a transmissão se inicia, ou seja, você recebe teu site.
Mais ou menos assim:
O cliente diz para o servidor que está enviando uma mensagem 100 (número de sequência do cliente), o servidor responde e sincroniza a mensagem 200 (número de sequência do servidor) e diz para o cliente prosseguir com a mensagem 101 (ACK). O cliente envia a mensagem 101 e diz para o servidor prosseguir com a mensagem 201 (ACK) e assim sucessivamente.
Depois de feita a sincronização, começa a troca de pacotes.

Veja nessa RFC:
http://www.ietf.org/rfc/rfc793.txt

URG: Urgent Pointer field significant (aponta para conteúdo urgente)
ACK: Acknowledgment field significant (reconhecimento)
PSH: Push Function (um dado deve ser passado à aplicação)
RST: Reset the connection (reinicia a conexão)
SYN: Synchronize sequence numbers (sincroniza números de sequência para iniciar a conexão)
FIN: No more data from sender (finaliza a conexão)

No Iptables:
[!] --syn :: Somente corresponde pacotes TCP com o bit SYN e com os bits RST, ACK e FIN limpos. Esses pacotes são utilizados para solicitar o início da conexão TCP, por exemplo, bloquear esses pacotes em uma interface vai evitar conexões TCP de entrada, mas as conexões TCP de saída não serão afetadas. É equivalente a --tcp-flags syn, rst, ack, fin syn. Se o "!" precede a flag "--syn", o sentido da opção é invertido.

invalid :: Significa que o pacote está associado com nenhuma conexão conhecida.
new :: Significa que o pacote começou uma nova conexão ou está associado a uma conexão que não tem pacotes vindos de ambas as direções.
established :: Significa que o pacote está associado com uma conexão que tem pacotes vindos de ambas direções.
related :: Significa que o pacote está começando uma nova conexão, mas está associado a uma conexão existente, como uma transferência de dados de FTP, ou um erro ICMP.
untracked :: Significa que o pacote não é seguido em tudo. Isso acontece se você usa o alvo notrack na tabela raw.
snat :: É um estado virtual, combina se o endereço de origem for diferente do endereço de destino.
dnat :: É um estado virtual, combina se o endereço de destino difere do endereço de origem.

iptables -A INPUT -p tcp --dport 22 --syn -m state --state NEW -m limit --limit 6/minute -j ACCEPT
iptables adicione uma regra na chain INPUT com o protocolo tcp na porta 22 para os pacotes com a flag SYN que tenham o estado NEW (nova conexão), corresponda até o limite de 6 minutos ser atingido então aceite (ACCEPT).
Trocando em miúdos, uma nova conexão (NEW) com a flag SYN (início da conexão, pois uma nova conexão pode ter a flag FIN, fim da conexão) é para esperar 6 minutos e só então aceitar o pacote, ou seja, é usado para restringir a taxa de pacotes dentro do limite especificado.

iptables -A INPUT -p tcp --dport 22 --syn -m limit --limit 6/minute -j ACCEPT
Essa regra acima limita todos os pacotes na chain INPUT com a flag SYN, não importando se forem pacotes novos ou não.

Veja que há uma diferença entre conexão e pacotes novos. Uma conexão já estabelecida pode solicitar pacotes novos.
Essa é a diferença entre SYN e NEW.

Não sei se fui claro.

Fale com o Manuel nesse link:
http://www.vivaolinux.com.br/artigo/Manual-do-IPtables-Comentarios-e-sugestoes-de-regras






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts