volbit
(usa Debian)
Enviado em 16/12/2015 - 21:33h
Certo amigo, vamos la, como mencionei acima dado estes comandos:
pass in on eth0 proto tcp from any to any port ssh flags S/SA (OPENBSD)
ou em iptables
iptables -A INPUT -i eth0 --p tcp --tcp-flags SYN,ACK SYN --dport 22 -j ACCEPT
os dois comandos fazem basicamente a mesma coisa mas um é no openbsd e o outro é o iptables q todos conhecem, devido a isso, vamos imaginar o handshake triplo do tcp, para estabelecer a conexão o handshake é necessário concluir os 3 passos (SYN,SYN/ACK e ACK) certo? . A regra diz para passar somente o SYN correto? Blz depois disso o servidor envia o SYN/ACK e então a novamente o computador que fez a requisição deve enviar o ACK, porem NÃO POSSUI NENHUMA REGRA EXPLICITA QQUE PERMITE O ACK PASSAR, no caso do pfsense toda regra por padrão vem com esse argumento no final de liberar somente o ACK. A minha dúvida é porque a conexão estabelece se eu só liberei o SYN e não o ACK??? entende.
Outra questão é aquela que eu coloquei embaixo que na documentação do OPENBSD ou no PFSENSE diz que essa regra:
pass in on fxp0 proto tcp from any to any port ssh flags S/SA
que um pacote com os flags SYN e ECE corresponderia à regra acima se eu nem ao menos esta especificado a flag ECE na regra, o link da documentação é esse:
http://openbsd.das.ufsc.br/faq/pf/pt/filter.html#tcpflags
outra coisa que eles mencionaram:
#### Deve-se tomar cuidado ao usar sinalizadores -- entenda o que você está fazendo e o porquê, e tenha cuidado com conselhos dados pelos outros, pois grande parte deles são incorretos. Algumas pessoas sugerem a criação de estado "somente se o sinalizador SYN estiver marcado, e nenhum outro". Essa regra deve ficar assim:
. . . flags S/FSRPAUEW má ideia!!
A teoria é criar estado apenas no início da sessão TCP, e a sessão deve ser iniciada somente com um sinalizador SYN, e nenhum outro. O problema é que alguns lugares estão começando a usar o sinalizador ECN, e qualquer um que use ECN e tente se conectar ao seu servidor seria rejeitado por essa regra. Uma abordagem muito melhor seria não especificar sinalizador nenhum e deixar o PF aplicar os sinalizadores padrão nas suas regras. Se você realmente necessita de especificar os sinalizadores você mesmo, então esta combinação seria segura:
. . . flags S/SAFR ####
Qual a diferença dessa regra (openbsd) "flags S/FSRPAUEW" e dessa "flags S/SA" ??????????
Qual a diferença dessa regra (iptables) : --tcp-flags ALL SYN e dessa --tcp-flags SYN,ACK SYN ????????
Na documentação eles mensionam que a segunda é mais segura que a primeira , mas para mim não muda nada , podes me explicar a diferença??
obrigado