Ostatni okres przyniósł gigantyczny skok w rozwoju środowiska BSNM. Zamiast opierać się na zewnętrznych dostawcach, wdrożyłem w pełni niezależną infrastrukturę usług sieciowych. Skupiłem się na trzech potężnych filarach: wdrożeniu autorytatywnego serwera DNS, budowie kompletnego ekosystemu pocztowego od zera oraz znacznym usprawnieniu mechanizmów bezpieczeństwa opartych na zaporze PF i systemie CrowdSec.
Poniżej techniczne zestawienie kluczowych zmian wdrożonych w tym miesiącu.
Niezależność domenowa – Wdrożenie serwera Knot DNS
Zarządzanie domenami w środowisku hostingowym wymaga szybkości, skalowalności i pełnej kontroli. Dlatego zrezygnowałem z popularnego BINDa na rzecz serwera Knot DNS. Jest to niezwykle wydajne, autorytatywne rozwiązanie typu „high-performance”, rozwijane przez czeski rejestr domen (CZ.NIC).
Instalator BSNM wdraża teraz serwer Knot DNS w wydzielonym, izolowanym jailu (Bastille). Skonfigurowałem go pod kątem minimalnego zużycia zasobów, przy jednoczesnym zachowaniu maksymalnej odporności na ataki typu DNS Amplification. Wprowadzenie własnego serwera DNS to krok milowy w kierunku pełnej autonomii środowiska BSNM.
Kompletny stos pocztowy: Postfix, Dovecot, Rspamd i Sieve
Kolejnym potężnym etapem było uruchomienie własnej infrastruktury serwera pocztowego. Nie korzystam z gotowych, ciężkich kombajnów – cały stos został zbudowany i zintegrowany z wykorzystaniem natywnych pakietów we FreeBSD. Architektura poczty w BSNM składa się obecnie z:
- Postfix: Główny MTA (Mail Transfer Agent) skonfigurowany pod kątem wysokiej wydajności i rygorystycznych weryfikacji połączeń przychodzących (odrzucanie spamu już na etapie negocjacji SMTP).
- Dovecot: Serwer IMAP/POP3, odpowiedzialny za dostarczanie poczty do skrzynek użytkowników i bezpieczne uwierzytelnianie.
- Rspamd: Nowoczesny, niezwykle szybki system antyspamowy, który zastąpił przestarzałego SpamAssassina. Wykorzystuje zaawansowane reguły uczenia maszynowego oraz szybki silnik Valkey (Redis) do buforowania wyników.
- Sieve: Zintegrowany z Dovecot język filtrowania, pozwalający użytkownikom na precyzyjne zarządzanie strumieniem wiadomości na poziomie serwera.
Obecnie serwer pocztowy został pomyślnie uruchomiony i przechodzi rygorystyczną fazę testów (wysyłanie, odbieranie, klasyfikacja spamu, walidacja nagłówków DKIM/SPF/DMARC). Warto zaznaczyć, że już wstępne testy całej architektury, przeprowadzone na platformie mail-tester.com bezpośrednio po jej uruchomieniu, zakończyły się perfekcyjnym wynikiem 10/10. Stanowi to twardy dowód na to, że wdrożona konfiguracja jest wolna od błędów, rygorystycznie trzyma się standardów i gwarantuje najwyższą dostarczalność wiadomości od samego początku.
Bezwzględne bezpieczeństwo: Integracja CrowdSec, Rspamd i Postfix
Zabezpieczenie serwera przed zautomatyzowanymi atakami to absolutny priorytet. W środowisku BSNM wykorzystuję silnik CrowdSec, który analizuje logi systemowe w czasie rzeczywistym i dynamicznie blokuje intruzów poprzez wstrzykiwanie adresów IP prosto do jądra zapory PF.
W najnowszej aktualizacji poszedłem o krok dalej i zintegrowałem logikę CrowdSec ze stosem pocztowym:
- Dodałem dedykowane, autorskie scenariusze parsujące dla Postfixa i Rspamd.
- System potrafi teraz błyskawicznie wykrywać agresywne skanery SMTP, próby autoryzacji botnetów (brute-force) oraz analizować wzorce złośliwego ruchu pocztowego.
- W przypadku wykrycia anomalii, agresor otrzymuje globalnego bana na poziomie stosu sieciowego jądra FreeBSD.
Testy jednostkowe (Unit Tests) dla logiki CrowdSec
Zautomatyzowane wdrożenie tak kluczowych mechanizmów bezpieczeństwa wymaga pewności, że wszystko działa idealnie. W tym celu napisałem dedykowany skrypt uruchamiający zestaw testów jednostkowych (Unit Tests) dla wdrożonego środowiska CrowdSec i zapory PF.
Test w pełni automatycznie weryfikuje m.in.:
- Poprawność komunikacji między usługą główną a lokalnym API (LAPI) Bouncera,
- Aktywne czytanie logów w trybie inotify,
- Symulację wstrzyknięcia testowego adresu IP do tablic jądra systemu zapory
pforaz weryfikację logiki zrzucania pakietów.
GuardX zyskuje nowy, niskopoziomowy moduł w C++
Autorski system monitorujący środowisko BSNM, GuardX, został wzbogacony o nowy moduł czuwający nad bezpieczeństwem serwera w czasie rzeczywistym.
Mając na uwadze rygorystyczne wymagania dotyczące wydajności, moduł monitorujący CrowdSec został napisany od zera jako natywna aplikacja w C++. Zrezygnowałem z używania ciężkich interpreterów powłoki. Program wykorzystuje niskopoziomowe odwołania do jądra FreeBSD (system calls) oraz komunikację z deskryptorami plików (/dev/pf). C++ pobiera na bieżąco status usług, weryfikuje reguły jądra zapory i kontroluje synchronizację LAPI, a wszystko to z zerowym opóźnieniem i mikroskopijnym narzutem na procesor (brak niepotrzebnego „forkowania” procesów).
Opracowany kod został zintegrowany z GuardX, dostarczając precyzyjne dane analityczne na konsolę administratora bez obciążania hosta fizycznego.
Co dalej?
Po zakończeniu fazy testowej serwera pocztowego (Postfix/Dovecot) i potwierdzeniu stabilności reguł Rspamd, kolejnym krokiem w rozwoju instalatora BSNM będzie pełna integracja certyfikatów SSL od Let’s Encrypt dedykowana specjalnie dla infrastruktury pocztowej. Zautomatyzuje to proces wystawiania i odnawiania kluczy, zapewniając najwyższy standard szyfrowania ruchu (IMAPS, POP3S, SMTPS oraz STARTTLS) bez konieczności ręcznej ingerencji administratora.
