Como filtrar pacotes TCP com base em sinalizadores usando o Filtro de Pacotes

1

Bem, eu não sabia exatamente como fazer essa pergunta, mas sei que você pode usar a palavra-chave flags para especificar quais sinalizadores deseja filtrar.

De acordo com a documentação do filtro de pacotes:

To have PF inspect the TCP flags during evaluation of a rule, the flags keyword is used with the following syntax:

flags check/mask flags any

The mask part tells PF to only inspect the specified flags and the check part specifies which flag(s) must be "on" in the header for a match to occur. Using the any keyword allows any combination of flags to be set in the header.

pass in on fxp0 proto tcp from any to any port ssh flags S/SA pass in on fxp0 proto tcp from any to any port ssh

As flags S/SA is set by default, the above rules are equivalent, Each of these rules passes TCP traffic with the SYN flag set while only looking at the SYN and ACK flags. A packet with the SYN and ECE flags would match the above rules, while a packet with SYN and ACK or just ACK would not.

Então, eu entendi o exemplo e por que o pacote com as flags S e E pode passar (porque o flag E não é considerado devido à máscara SA) e porque o pacote com apenas o flag Ack não pode passar pelo firewall .

O que eu não entendi é porque o pacote com as flags S e A não pode passar a regra S / SA, se a bandeira S estiver "ligada" no cabeçalho do pacote. Talvez a documentação seja ambígua? Desculpe se esta é uma pergunta estúpida ou um inglês mal entendido.

Eu imagino que ele só possa passar se TEM SOMENTE a bandeira S. Na aritmética set seria algo assim:

sinalizadores devem estar "ligados" no cabeçalho - > sinalizador (es) pertence ao subconjunto mascarado [pf doc] somente a (s) bandeira (s) deve (m) estar 'on' no cabeçalho - > flag (s) é egual para o subconjunto mascarado [o que eu entendi do exemplo dado]

Obrigado antecipadamente!

    
por Davi Sampaio 18.04.2013 / 23:26

1 resposta

0

Isso significa que você está vendo dois sinalizadores S & A , mas você corresponde se e somente se S estiver "ligado" E A estiver "desativado".

flags S/SA

 ---------------
| S | A | Match |
 ---|---|-------
| 0 | 0 | No    |
| 0 | 1 | No    |
| 1 | 0 | Yes   |
| 1 | 1 | No    |
 ---------------

Se você quiser corresponder quando os dois SA flags estiverem "on", você usará flags SA/SA .

flags SA/SA

 ---------------
| S | A | Match |
 ---|---|-------
| 0 | 0 | No    |
| 0 | 1 | No    |
| 1 | 0 | No    |
| 1 | 1 | Yes   |
 ---------------
    
por 18.04.2013 / 23:44