[5] PF – Packet Filter – Testowanie uzupełnionego wstępnego zestawu reguł

31 stycznia 2024 Wyłączono przez Adam [zicherka] Nogły

W tym kroku przejrzymy i przetestujemy podstawowy zestaw reguł, aby upewnić się, że wszystko działa poprawnie. Najlepiej unikać wdrażania zbyt wielu reguł naraz bez ich testowania. Najlepszą praktyką jest rozpoczęcie od podstaw, stopniowe rozszerzanie i tworzenie kopii zapasowych podczas wprowadzania zmian w konfiguracji.

Oto nasz dotychczasowy, kompletny podstawowy zestaw reguł:

root@vfbsd01:~ # cat /etc/pf.conf
vmx0 = "vmx0"
icmp_types = "{ echoreq unreach }"
table <bruteforce> persist
table <rfc6890> { 0.0.0.0/8 10.0.0.0/8 100.64.0.0/10 127.0.0.0/8 169.254.0.0/16   \
           172.16.0.0/12 192.0.0.0/24 192.0.0.0/29 192.0.2.0/24 192.88.99.0/24    \
           198.18.0.0/15 198.51.100.0/24 203.0.113.0/24 240.0.0.0/4               \
           255.255.255.255/32 }

set skip on lo0
scrub in all fragment reassemble max-mss 1440
antispoof quick for $vmx0
block in quick on $vmx0 from <rfc6890>
block return out quick on egress to <rfc6890>
block all
pass in on $vmx0 proto tcp to port { 22 } \
        keep state (max-src-conn 15, max-src-conn-rate 3/1, \
                overload <bruteforce> flush global)
pass out proto { tcp udp } to port { 22 53 80 123 443 }
pass out inet proto icmp icmp-type $icmp_types

Zanim przejdziesz dalej, upewnij się, że Twój plik [/etc/pf.conf] jest identyczny z przedstawionym powyżej kompletnym, podstawowym zestawem reguł. Następnie zapisz i zamknij plik.

Nasz kompletny podstawowy zestaw reguł zapewnia:

  • Zbiór makr, za pomocą których możemy definiować kluczowe usługi i urządzenia.
  • Zasady oczyszczania sieci w celu rozwiązania problemu fragmentacji pakietów i nielogicznych adresów IP.
  • Domyślną strukturę filtrowania odmów, która blokuje wszystko i zezwala tylko na to, co określimy.
  • Przychodzący dostęp SSH z ograniczeniami liczby jednoczesnych połączeń, które może nawiązać host.
  • Zasady ruchu wychodzącego, które zapewniają dostęp do niektórych krytycznych usług z Internetu.
  • Zasady ICMP zapewniające dostęp do narzędzia ping i wykrywania ścieżki MTU.

Uruchom następującą komendę [pfctl], aby wykonać przebieg próbny [dry run]:

root@vfbsd01:~ # pfctl -nf /etc/pf.conf

Przekazanie opcji [-nf] mówi PF aby uruchomił zestaw usług, lecz ich nie ładował. Ma to na celu zgłoszenie błędów, jeśli takowe wystąpią. Jeśli nie otrzymaliśmy żadnych informacji o błędach, możemy załadować nasz zestaw reguł.

root@vfbsd01:~ # pfctl -f /etc/pf.conf

Jeśli nie ma żadnych błędów, oznacza to, że podstawowy zestaw reguł jest aktywny i działa prawidłowo. Zatem wykonajmy kilka testów, aby sprawdzić czy wszystko działa prawidłowo i tak jak powinno.

Pierwszy test połączenia internetowego i usługi DNS:

root@vfbsd01:~ # ping -c 2 google.com
PING google.com (142.250.203.142): 56 data bytes
64 bytes from 142.250.203.142: icmp_seq=0 ttl=117 time=28.262 ms
64 bytes from 142.250.203.142: icmp_seq=1 ttl=117 time=27.698 ms

--- google.com ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 27.698/27.980/28.262/0.282 ms

Test drugi, czyli sprawdzenie możliwości pobrania aktualizacji repozytoriów [pkg].

root@vfbsd01:~ # pkg upgrade
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
Checking for upgrades (1 candidates): 100%
Processing candidates (1 candidates): 100%
Checking integrity... done (0 conflicting)
Your packages are up to date.

Jak widać, wszystko działa poprawnie. Zatem możemy zrestartować nasz serwer.

root@vfbsd01:~ # reboot –n