Generator pf.conf dla OpenBSD i FreeBSD

Konfigurator zapory pf dla serwera (host firewall). Ustaw interfejs i usługi, włącz normalizację, antyspoofing, ochronę brute-force, opcjonalnie NAT i przekierowania portów, a narzędzie złoży kompletny, czytelny plik pf.conf w składni właściwej dla wybranego systemu. Wszystko liczy się w przeglądarce, nic nie jest wysyłane. To narzędzie dla administratorów, więc czytaj opisy reguł i testuj konfigurację przed wdrożeniem. Powiązane: administracja serwerem FreeBSD.

Interfejs i makra

Interfejs zewnętrzny (ext_if)
Dozwolone porty TCP (przez przecinek lub spację)
Dozwolone porty UDP (opcjonalnie)

Opcje globalne (set)

Pomija filtrowanie na interfejsie loopback. Standardowo zalecane.

Odrzuca pakiety po cichu (drop) zamiast odsyłać odpowiedź. Mniej informacji dla skanujących.

Zbiera statystyki dla interfejsu zewnętrznego (pfctl -si).

Automatyczna optymalizacja zestawu reguł.

Normalizacja (scrub)

Składa pofragmentowane pakiety i porządkuje ruch. W OpenBSD: match in all scrub (no-df), w FreeBSD: scrub in all.

Polityka domyślna i antyspoofing

Polityka default-deny: blokuj, co nie jest jawnie dozwolone. Fundament bezpiecznej zapory.

Blokuje pakiety z podrobionym adresem źródłowym.

Odrzuca ruch z adresów prywatnych i niealokowanych (tabela bogon) na interfejsie publicznym.

pass out keep state — serwer może inicjować połączenia wychodzące (aktualizacje, DNS).

Ochrona przed brute-force

Adresy przekraczające limit nowych połączeń trafiają do tabeli i są blokowane (overload).

max-src-conn (jednoczesne) max-src-conn-rate (nowe / sekundy)

ICMP (ping)

Dopuszcza echoreq oraz komunikaty potrzebne do działania sieci (np. unreach, PMTU).

NAT i przekierowania portów (opcjonalnie)

Interfejs wewnętrzny (int_if) Sieć wewnętrzna (CIDR)

Logowanie

Dodaje słowo log do reguły block, ruch widoczny przez tcpdump -i pflog0.


                    
⚠ Błędna konfiguracja pf może odciąć Ci dostęp do serwera. Najpierw sprawdź składnię: pfctl -nf pf.conf, wdrażaj z konsoli lub drugiej sesji i upewnij się, że masz regułę pass dla SSH.
Zapisz jako /etc/pf.conf, sprawdź pfctl -nf /etc/pf.conf, a następnie wczytaj pfctl -f /etc/pf.conf. Włącz pf: w OpenBSD pfctl -e, w FreeBSD service pf enable && service pf start.

Czym jest pf i jak działa pf.conf

pf (Packet Filter) to zapora sieciowa wywodząca się z OpenBSD, dostępna także we FreeBSD i pochodnych. Konfiguruje się ją deklaratywnie w pliku pf.conf, którego siłą jest czytelna, zwięzła składnia i bardzo dobra wydajność na dużym ruchu. Plik czyta się od góry do dołu, a o losie pakietu decyduje ostatnia pasująca reguła, chyba że wcześniejsza reguła użyła słowa quick. Typowy, bezpieczny układ to: makra, opcje globalne (set), normalizacja (scrub lub match scrub), reguły antyspoofingu, domyślny block all, a na końcu reguły pass dopuszczające konkretne usługi. Ten konfigurator generuje plik w takim właśnie, sprawdzonym porządku.

Co składa się na bezpieczną konfigurację serwera

Polityka default-deny Punkt wyjścia każdej dobrej zapory: block all, a następnie jawne pass tylko dla potrzebnych usług. Wszystko nieprzewidziane jest domyślnie odrzucane.
Stan połączeń pf domyślnie śledzi stan (keep state), więc wystarczy dopuścić ruch w jedną stronę, a odpowiedzi przechodzą automatycznie. To upraszcza reguły i zwiększa bezpieczeństwo.
Antyspoofing i bogony Reguła antispoof i blokada adresów prywatnych oraz niealokowanych na interfejsie publicznym odcinają ruch z podrobionym źródłem.
Ochrona brute-force Limity max-src-conn i max-src-conn-rate z mechanizmem overload przerzucają nadaktywne adresy do tabeli i blokują je. Skuteczne wobec ataków na SSH.
Normalizacja (scrub) Składanie fragmentów i porządkowanie pakietów chroni przed częścią ataków opartych na nietypowych pakietach i ułatwia spójne filtrowanie.

OpenBSD a FreeBSD: kluczowe różnice składni

FreeBSD korzysta ze starszej gałęzi pf niż OpenBSD, dlatego część zapisów się różni, a generator dostosowuje je do wybranego systemu. Najważniejsza różnica dotyczy translacji adresów: w OpenBSD NAT i przekierowania zapisuje się słowami nat-to i rdr-to wewnątrz reguł match lub pass, podczas gdy we FreeBSD nadal używa się osobnych reguł nat on i rdr on umieszczanych przed regułami filtrowania. Różni się też zapis normalizacji (match ... scrub w OpenBSD wobec scrub we FreeBSD). Składnię swojego systemu zawsze potwierdzisz w podręczniku man pf.conf.

Najczęstsze pytania o pf.conf

pf (Packet Filter) to zapora systemów BSD, z OpenBSD i FreeBSD. Konfiguruje się ją w pliku pf.conf: makra, opcje globalne, normalizacja i reguły pass/block. pf słynie z czytelnej składni i wydajności.

FreeBSD ma starszą gałąź pf. W OpenBSD translację zapisuje się jako nat-to i rdr-to wewnątrz match/pass, a w FreeBSD osobnymi regułami nat on i rdr on. Generator dostosowuje składnię do systemu.

Najpierw sprawdź składnię: pfctl -nf /etc/pf.conf. Potem wczytaj: pfctl -f /etc/pf.conf. Reguły podejrzysz przez pfctl -sr, statystyki pfctl -si. Testuj na połączeniu, które Cię nie odetnie.

Upewnij się, że jest pass dla portu SSH z Twojego adresu, wdrażaj z konsoli KVM lub drugiej sesji. Pomocne jest tymczasowe zadanie cron przywracające poprzednią konfigurację, gdyby nowa odcięła dostęp.

Nie. Plik pf.conf składany jest w przeglądarce w JavaScript. Wpisane adresy, porty i interfejsy nie są nigdzie wysyłane ani zapisywane poza Twoim urządzeniem.

Narzędzie i opracowanie: Marcin Szewczyk-Wilgan, WebOptimo. Składnia oparta na podręczniku pf.conf i praktyce konfiguracji zapór na serwerach OpenBSD i FreeBSD. Wygenerowaną konfigurację przetestuj przed wdrożeniem. Generator działa w przeglądarce, bez wysyłania danych.

Skonfigurujemy zaporę Twojego serwera

Projektujemy i wdrażamy reguły pf, hardening serwerów OpenBSD i FreeBSD oraz opiekę nad infrastrukturą. Bez zobowiązań, konkretna propozycja po krótkiej rozmowie.

Telefon

+48 608 271 665

Pn–Pt, 8:00–16:00

E-mail

kontakt@weboptimo.pl

Odpowiadamy w ciągu 24h

Firma

WebOptimo

NIP: 6391758393