Nowa akcja w filtrze pakietów OpenBSD

Wczoraj coś wspomniałem o nowej akcji match w pf, dziś nie mogę nie rozwinąć tematu. Tym bardziej, że nie znalazłem żadnych dodatkowych informacji ani na spryciarze.pl, ani na jaktosierobi.tv (a na tym drugim przejrzałem wszystkie filmy).

Fakty, które znamy (-release):

  • reguły przetwarzane są z góry do dołu (a w każdej linii od lewej do prawej),
  • ostatnia pasująca reguła wygrywa,
  • wyjątkiem jest słowo kluczowe quick.

Powyższe oznacza, że każdy pakiet przejdzie po kolei pełny zestaw reguł. Co w przypadku, gdy logujemy (log)? Niejako jest to powiązane z akcją, więc pakiet zalogowany będzie tylko raz. Poniżej przykład:

block log all
pass in log on $int_if inet proto tcp from any to ($int_if) port ssh flags S/SA modulate state

tcpdump pokaże nam:

07:30:44.227293 rule 3/(match) pass in on xl0: 192.168.1.131.61392 > 192.168.1.64.22: S 738501558:738501558(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK> (DF)

Nowa akcja match (-current) po prostu dopasowuje pakiet i może go zalogować lub oznakować (tag), ale nie zrobi z nim nic więcej (nie zaakceptuje i nie odrzuci). Zmieniony zestaw reguł:

block log all
match in log on $int_if inet proto tcp from any to ($int_if) port ssh
pass in log on $int_if inet proto tcp from any to ($int_if) port ssh flags S/SA modulate state

da następujące wyniki:

07:36:55.505154 rule 4/(match) pass in on xl0: 192.168.1.131.61403 > 192.168.1.64.22: S 3714164883:3714164883(0) win 8192 (DF)
07:36:55.505168 rule 3/(match) match in on xl0: 192.168.1.131.61403 > 192.168.1.64.22: S 3714164883:3714164883(0) win 8192 (DF)

Czyli jeden pakiet (patrz numer sekwencyjny) dwukrotnie zalogowany. Co ważne – w logach pierw mamy pass, a potem match (niezależnie jak reguły ułożymy).

Przydatne? Myślę, że tak. Wracamy do NetFlow (oczywiście z najeżkowatą w tle – pamiętać należy, że w Polsce nie wolno wprowadzać ich do obrotu).

Tagi: ,

Dodaj odpowiedź