[5] PF – Packet Filter – Testowanie uzupełnionego wstępnego zestawu reguł
31 stycznia 2024W 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