Co to jest CSF (ConfigServer Security and Firewall)? Kompletny przewodnik techniczny
CSF, czyli ConfigServer Security & Firewall, to zapora sieciowa z inspekcją stanową pakietów (SPI), demon wykrywania błędów logowania oraz pakiet zabezpieczeń dla serwerów Linux. Działa jako rozbudowany frontend dla iptables (i nftables w nowszych jądrach), przekształcając złożone zarządzanie regułami w ustrukturyzowaną warstwę konfiguracyjną, jednocześnie dodając aktywne wykrywanie zagrożeń poprzez towarzyszący demon LFD (Login Failure Daemon).
Dla każdego produkcyjnego serwera Linux — niezależnie od tego, czy działa na hostingu współdzielonym, VPS, czy w środowisku dedykowanym bare-metal — CSF zapewnia wielowarstwową ochronę perymetryczną: filtrowanie ruchu przychodzącego/wychodzącego, analizę logów w czasie rzeczywistym, ochronę przed atakami brute-force, wykrywanie skanowania portów oraz kontrolę dostępu na poziomie kraju, zarządzaną przez CLI lub interfejs webowy zintegrowany z cPanel, DirectAdmin lub Webmin.
Jak działa CSF od środka
CSF nie zastępuje iptables ani nftables — zarządza nimi. Gdy definiujesz reguły w /etc/csf/csf.conf lub manipulujesz listami IP, CSF tłumaczy te dyrektywy na reguły netfilter na poziomie jądra i stosuje je atomowo.
Architektura składa się z dwóch głównych komponentów działających równolegle:
- csf — silnik reguł zapory, który odczytuje pliki konfiguracyjne i wypełnia łańcuchy
iptables/ip6tables. - lfd — trwały demon, który na bieżąco śledzi systemowe pliki logów, ocenia zdarzenia uwierzytelniania względem konfigurowalnych progów i instruuje
csf, aby dynamicznie blokował lub odblokowywał adresy IP.
Podczas uruchamiania CSF usuwa istniejące łańcuchy i odbudowuje je od podstaw na podstawie swojej konfiguracji. To podejście „czystej tablicy” zapobiega gromadzeniu reguł i zapewnia, że stan zapory jest zawsze deterministyczny i możliwy do audytu.
Tryby działania CSF
CSF działa w jednym z dwóch podstawowych trybów ruchu:
Tryb zezwolenia (domyślny dla większości wdrożeń): Cały ruch przychodzący i wychodzący jest domyślnie blokowany. Dozwolone są tylko porty jawnie wymienione w dyrektywach TCP_IN, TCP_OUT, UDP_IN i UDP_OUT. Jest to zalecana konfiguracja produkcyjna.
Tryb testowy (TESTING = "1"): CSF ładuje reguły, ale LFD nie egzekwuje blokad. Zapobiega to zablokowaniu dostępu podczas wstępnej konfiguracji. Zawsze wyłącz tryb testowy przed uruchomieniem produkcyjnym:
# In /etc/csf/csf.conf, set:
TESTING = "0"
# Then restart CSF:
csf -rOmówienie kluczowych funkcji CSF
Silnik reguł zapory
CSF zarządza czterema głównymi listami portów w csf.conf:
TCP_IN / UDP_IN — porty otwarte dla połączeń przychodzących
TCP_OUT / UDP_OUT — porty dozwolone dla połączeń wychodzących
Minimalna konfiguracja serwera webowego może wyglądać następująco:
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,2077,2078,2082,2083,2086,2087,2095,2096"
TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995"
UDP_IN = "20,21,53"
UDP_OUT = "20,21,53,113,123"
Poza zarządzaniem portami CSF obsługuje reguły oparte na CIDR, umożliwiając zezwalanie lub blokowanie całych zakresów sieciowych. Reguły są przechowywane w płaskich plikach dla łatwej kontroli wersji:
Plik
Przeznaczenie
/etc/csf/csf.allow
Trwale umieszczone na białej liście adresy IP lub CIDR
/etc/csf/csf.deny
Trwale zablokowane adresy IP lub CIDR
/etc/csf/csf.ignore
Adresy IP, których LFD nigdy nie zablokuje automatycznie
/etc/csf/csf.dyndns
Dynamiczne nazwy hostów DNS do automatycznego rozwiązywania i zezwalania
Demon wykrywania błędów logowania (LFD)
LFD jest aktywną warstwą inteligencji CSF. Monitoruje pliki logów — w tym /var/log/secure, /var/log/maillog, /var/log/exim_mainlog i inne — oraz zlicza błędy uwierzytelniania na źródłowy adres IP w konfigurowalnym oknie czasowym.
Kluczowe dyrektywy konfiguracyjne LFD:
LF_TRIGGER — liczba błędów przed wydaniem blokady
LF_INTERVAL — kroczące okno czasowe (w sekundach) do zliczania błędów
LF_DURATION — jak długo trwa tymczasowa blokada (0 = trwała)
LF_SSH, LF_FTPD, LF_SMTPAUTH, LF_POP3D, LF_IMAPD — progi błędów dla poszczególnych usług
Praktyczny przykład zabezpieczenia: ustaw LF_SSH = "5" z LF_INTERVAL = "300", aby zablokować każdy adres IP, który 5 razy nie powiedzie się przy uwierzytelnianiu SSH w ciągu 5 minut. Ta jedna dyrektywa eliminuje zdecydowaną większość zautomatyzowanych ataków credential-stuffing wymierzonych w port 22.
Ważny przypadek brzegowy: Jeśli Twój system monitorowania lub agent kopii zapasowych uwierzytelnia się z dynamicznego adresu IP, w końcu wyzwoli LFD. Zawsze dodaj te źródłowe adresy IP do /etc/csf/csf.ignore przed zaostrzeniem progów.
Wykrywanie włamań i śledzenie procesów
Poza monitorowaniem logowań LFD wykonuje kilka funkcji wykrywania włamań opartych na hoście:
PT_LOAD — monitoruje obciążenie CPU i wysyła alerty lub blokuje, jeśli proces przekroczy zdefiniowane progi; przydatne do wykrywania cryptominingu lub niekontrolowanych procesów we współdzielonej infrastrukturze.
PT_USERMEM i PT_USERTIME — limity pamięci i czasu CPU na użytkownika, kluczowe dla środowisk hostingu współdzielonego, gdzie izolacja zasobów jest niezbędna.
LF_DIRWATCH — obserwuje określone katalogi pod kątem zmian plików, zapewniając podstawowe monitorowanie integralności plików.
LF_SCRIPT_ALERT — wykrywa skrypty wysyłające nadmierną ilość wiadomości e-mail, co jest częstym wskaźnikiem skompromitowanej aplikacji PHP.
Wykrywanie skanowania portów
CSF używa śledzenia modułu iptables recent do identyfikowania hostów sondujących wiele portów w szybkiej kolejności. Dyrektywy PS_INTERVAL, PS_LIMIT i PS_PORTS kontrolują czułość. Po wykryciu skanowania portów źródłowy adres IP jest natychmiast dodawany do listy blokad i wysyłany jest alert.
Warto wiedzieć: agresywne wykrywanie skanowania portów może generować fałszywe alarmy ze strony legalnych skanerów sieciowych używanych przez zespoły bezpieczeństwa lub usługi monitorowania dostępności. Proaktywnie dodaj adresy IP tych skanerów do csf.ignore.
DDoS i ograniczanie szybkości połączeń
CSF zapewnia kilka mechanizmów pochłaniania lub odpierania ataków wolumetrycznych:
CT_LIMIT — maksymalna liczba jednoczesnych połączeń na adres IP. Ustawienie tej wartości na 100–300 dla serwerów webowych zapobiega monopolizowaniu slotów połączeń przez pojedynczego hosta.
CT_INTERVAL — jak często działa moduł śledzenia połączeń.
SYNFLOOD i SYNFLOOD_RATE — włącza ochronę przed zalewem SYN iptables z konfigurowalnym limitem szybkości pakietów.
UDPFLOOD — ogranicza szybkość pakietów UDP na adres IP, łagodząc ataki amplifikacji UDP.
Ważne jest, aby zrozumieć zakres łagodzenia DDoS przez CSF: jest on skuteczny przeciwko atakom na warstwę aplikacji i niskowolumetrycznym atakom na warstwę sieciową pochodzącym z ograniczonej liczby źródeł. Przeciwko wielkoskalowemu wolumetrycznemu DDoS (dziesiątki Gbps) wymagane jest null-routing po stronie operatora lub dedykowana usługa scrubbing DDoS. CSF uzupełnia, ale nie zastępuje ochrony sieciowej po stronie operatora.
Kontrola dostępu na poziomie kraju (CC_DENY / CC_ALLOW)
CSF integruje się z bazami danych MaxMind GeoIP w celu egzekwowania polityk dostępu geograficznego. Dyrektywa CC_DENY akceptuje dwuliterowe kody krajów ISO 3166-1:
CC_DENY = "CN,RU,KP,IR"
Alternatywnie, CC_ALLOW_FILTER w połączeniu z CC_DENY = "ALL" tworzy politykę geograficzną opartą wyłącznie na białej liście — przydatną dla usług, które prawnie lub operacyjnie obsługują tylko określone jurysdykcje.
Pułapka operacyjna: Bazy danych GeoIP nie są w pełni dokładne. Legalni użytkownicy korzystający z firmowych VPN lub węzłów brzegowych CDN mogą wydawać się pochodzić z zablokowanego kraju. Połącz blokowanie krajów z umieszczaniem na białej liście IP dla znanych partnerów.
Tymczasowe blokady i odblokowywanie
CSF obsługuje blokady czasowe, które są preferowane od trwałych zakazów w niejednoznacznych przypadkach:
# Block an IP for 3600 seconds (1 hour)
csf -td 192.168.1.100 3600 "Suspicious scan activity"
# Remove a temporary block manually
csf -tr 192.168.1.100
# Check if an IP is currently blocked
csf -g 192.168.1.100
Alerty e-mail i raportowanie
CSF wysyła powiadomienia e-mail dla szerokiego zakresu zdarzeń. Dyrektywa LF_ALERT_TO ustawia adres odbiorcy. Kategorie alertów obejmują:
Przekroczenia progów nieudanych logowań
Udane logowania root
Wykrycia skanowania portów
Naruszenia limitów zasobów procesów
Zmiany reguł zapory
Podejrzane modyfikacje plików (jeśli LF_DIRWATCH jest włączone)
W przypadku serwerów o dużym ruchu zmęczenie alertami jest realnym ryzykiem operacyjnym. Używaj progów LF_EMAIL_ALERT i rozważ kierowanie alertów CSF do dedykowanej skrzynki pocztowej lub integracji SIEM zamiast ogólnej skrzynki odbiorczej. Niezawodne dostarczanie alertów zależy od prawidłowo skonfigurowanego stosu pocztowego — jeśli prowadzisz własną infrastrukturę pocztową, hosting poczty e-mail z właściwym wyrównaniem SPF/DKIM zapewnia, że alerty CSF nie są po cichu odrzucane jako spam.
Instalacja CSF na serwerze Linux
CSF nie jest dostępny w standardowych repozytoriach dystrybucji. Instalacja jest prosta:
# Download the latest release
cd /usr/src
wget https://download.configserver.com/csf.tgz
# Extract and install
tar -xzf csf.tgz
cd csf
sh install.sh
Po instalacji sprawdź, czy wszystkie wymagane moduły iptables są dostępne:
perl /usr/local/csf/bin/csftest.pl
Wyniki FATAL wskazują na brakujące moduły jądra, które muszą zostać rozwiązane przed prawidłowym działaniem CSF. Wyniki WARN mają charakter informacyjny i zazwyczaj nie blokują działania.
Wstępna konfiguracja znajduje się w /etc/csf/csf.conf. Najważniejszym pierwszym krokiem jest wyłączenie trybu testowego i zdefiniowanie dozwolonych portów przed ponownym uruchomieniem demona.
Integracja CSF z panelami sterowania
CSF jest dostarczany z natywnymi wtyczkami UI dla trzech dominujących paneli sterowania hostingiem Linux:
Panel sterowania
Metoda integracji
Lokalizacja w UI
cPanel / WHM
Wtyczka CSF dla WHM
WHM > Plugins > ConfigServer Security & Firewall
DirectAdmin
Wtyczka CSF
Panel administratora > Extra Features
Webmin
Moduł CSF dla Webmin
Webmin > Networking > ConfigServer Security & Firewall
Integracja z WHM jest najbardziej kompletna funkcjonalnie, udostępniając pełny edytor pliku konfiguracyjnego, wyszukiwanie IP, zarządzanie tymczasowymi blokadami i przeglądarkę logów w interfejsie WHM. Dla administratorów korzystających z VPS z cPanel, CSF jest de facto standardowym rozwiązaniem zapory sieciowej — jest preinstalowany lub trywialnie instalowalny praktycznie na każdym obrazie VPS z cPanel.
W środowiskach bez panelu sterowania CLI jest w pełni funkcjonalne. Podstawowe polecenia:
csf -s # Start firewall
csf -f # Stop (flush) firewall
csf -r # Restart firewall
csf -l # List current iptables rules
csf -a 203.0.113.5 # Allow an IP permanently
csf -d 203.0.113.5 # Deny an IP permanently
csf -g 203.0.113.5 # Check block status of an IP
csf -u # Check for CSF updates
CSF a alternatywne rozwiązania zapory sieciowej dla Linux
Zrozumienie miejsca CSF w szerszym ekosystemie pomaga podjąć świadomą decyzję architektoniczną.
Funkcja
CSF + LFD
UFW
firewalld
Fail2ban + iptables
Główna warstwa abstrakcji
iptables / nftables
iptables / nftables
nftables / iptables
iptables / nftables
Aktywne łagodzenie ataków brute-force
Wbudowane (LFD)
Brak (wymaga parowania)
Brak (wymaga parowania)
Podstawowa funkcja
Integracja z panelem sterowania
Natywna (cPanel, DA, Webmin)
Brak
Brak
Ograniczona
GeoIP / blokowanie krajów
Wbudowane
Brak
Brak
Przez wtyczkę
Wykrywanie skanowania portów
Wbudowane
Brak
Brak
Przez filtr
Monitorowanie procesów/zasobów
Wbudowane (PT_*)
Brak
Brak
Brak
Złożoność konfiguracji
Średnia-Wysoka
Niska
Średnia
Średnia
Odpowiedni dla hostingu współdzielonego
Tak
Nie
Nie
Częściowo
Obsługa IPv6
Tak (ip6tables)
Tak
Tak
Tak
Kiedy wybrać CSF: Gdy prowadzisz serwer cPanel/DirectAdmin/Webmin, VPS lub serwer dedykowany w kontekście wielodostępnym lub hostingowym, albo potrzebujesz jednego narzędzia, które konsoliduje zarządzanie zaporą, wykrywanie ataków brute-force i monitorowanie hosta bez łączenia wielu oddzielnych narzędzi.
Kiedy rozważyć alternatywy: Gdy prowadzisz skonteneryzowane środowisko mikroserwisów, w którym polityka sieciowa jest zarządzana na poziomie orkiestracji (Kubernetes NetworkPolicy, Calico), lub potrzebujesz natywnego zarządzania nftables w nowoczesnej dystrybucji bez warstw zgodności z iptables.
Typowe przypadki użycia i scenariusze wdrożenia
Zabezpieczanie serwera hostingu webowego
Na typowym serwerze cPanel CSF powinien być skonfigurowany tak, aby:
Otwierać tylko porty wymagane przez aktywne usługi (HTTP, HTTPS, SMTP, IMAP, POP3, FTP, SSH, DNS)
Włączyć LF_SCRIPT_ALERT do wykrywania skompromitowanych mailerów PHP
Ustawić CT_LIMIT w celu zapobiegania wyczerpaniu połączeń z jednego źródła
Włączyć integrację MODSEC, jeśli zainstalowany jest ModSecurity, korelując blokady WAF z odrzuceniami na poziomie zapory
Zabezpieczanie dostępu SSH
Połączenie CSF z uwierzytelnianiem SSH opartym na kluczach i niestandardowym portem SSH tworzy solidną postawę kontroli dostępu:
# Allow only your management IP on the SSH port
# In /etc/csf/csf.allow:
tcp|in|d=2222|s=203.0.113.10 # Replace with your actual management IP and SSH port
Ustaw LF_SSH = "3", aby zablokować każdy adres IP po trzech nieudanych próbach, i dodaj swój adres IP zarządzania do csf.ignore, aby zapobiec przypadkowemu zablokowaniu własnego dostępu.
Ochrona infrastruktury pocztowej
Serwery pocztowe są wartościowymi celami ataków brute-force. Progi LFD dla poszczególnych usług CSF (LF_SMTPAUTH, LF_POP3D, LF_IMAPD) powinny być ustawione agresywnie (3–5 błędów) na każdym serwerze obsługującym uwierzytelniony SMTP. Połącz to z prawidłowo skonfigurowanymi certyfikatami SSL na wszystkich portach pocztowych, aby zapobiec przechwytywaniu danych uwierzytelniających, które uczyniłoby ochronę przed brute-force bezcelową.
Obciążenia GPU i wysokowydajne
W środowiskach hostingu GPU obsługujących API wnioskowania ML lub usługi renderowania, ochrona CT_LIMIT i SYNFLOOD CSF jest szczególnie cenna — usługi te często udostępniają wartościowe punkty końcowe API, które przyciągają automatyczne sondowanie. Ogranicz porty API do znanych CIDR klientów za pomocą csf.allow i użyj CC_DENY do filtrowania obszarów geograficznych bez legalnej bazy użytkowników.
Lista kontrolna hartowania konfiguracji CSF
Przed uznaniem wdrożenia CSF za gotowe do produkcji sprawdź następujące elementy:
TESTING = "0" jest ustawione i CSF zostało ponownie uruchomione
TCP_IN i TCP_OUT zawierają tylko porty wymagane przez aktywne usługi — usuń wartości domyślne, które nie mają zastosowania
Progi LF_SSH, LF_FTPD, LF_SMTPAUTH są ustawione na 3–5 błędów
Twoje adresy IP zarządzania są w /etc/csf/csf.ignore i /etc/csf/csf.allowCT_LIMIT jest włączone i ustawione na rozsądną wartość (100–300 dla serwerów webowych)SYNFLOOD = "1" jest włączone na serwerach dostępnych z InternetuLF_SCRIPT_ALERT = "1" jest włączone na serwerach z aplikacjami PHPLF_ALERT_TO jest ustawione na monitorowaną skrzynkę pocztowącsf -u jest uruchamiane okresowo lub zautomatyzowane przez cron, aby CSF było aktualneperl /usr/local/csf/bin/csftest.pl nie zwraca błędów FATAL po żadnej aktualizacji jądraMacierz decyzyjna: czy CSF jest odpowiednim narzędziem dla Twojego środowiska?
| Środowisko | CSF zalecane? | Uwagi |
|---|---|---|
| VPS lub serwer dedykowany cPanel / WHM | Tak, zdecydowanie | Natywna integracja, standard branżowy |
| Serwer DirectAdmin | Tak | Pełna obsługa wtyczek |
| Bare Linux VPS bez panelu sterowania | Tak | Zarządzanie przez CLI, pełny zestaw funkcji |
| Hosting współdzielony (użytkownik końcowy) | Nie dotyczy | Zarządzany przez hosta, nie przez użytkownika końcowego |
| Klaster Docker / Kubernetes | Nie | Używaj polityk sieciowych i narzędzi opartych na eBPF |
| Windows Server | Nie | CSF działa tylko na Linux |
| Źródło CDN o dużym ruchu | Częściowo | Połącz z ochroną DDoS po stronie operatora |
FAQ
Jaka jest różnica między CSF a Fail2ban?
Oba narzędzia wykonują blokowanie IP metodą brute-force poprzez analizę plików logów, ale CSF jest kompletnym pakietem bezpieczeństwa, który zarządza również podstawowymi regułami zapory, dostępem do portów, ograniczaniem szybkości połączeń, monitorowaniem procesów i filtrowaniem GeoIP. Fail2ban jest ukierunkowanym narzędziem zapobiegania włamaniom, które opiera się na zewnętrznej zaporze (iptables, nftables lub firewalld) do egzekwowania. Na serwerach hostingowych z panelami sterowania CSF jest bardziej kompletnym operacyjnie rozwiązaniem. W minimalnych systemach Linux lub kontenerach Fail2ban sparowany z firewalld może być lżejszy i bardziej odpowiedni.
Czy CSF może blokować ruch IPv6?
Tak. CSF zarządza zarówno zestawami reguł iptables (IPv4), jak i ip6tables (IPv6). Obsługa IPv6 jest domyślnie włączona, gdy jądro ją obsługuje. Upewnij się, że IPV6 = "1" jest ustawione w csf.conf i że Twoje listy portów TCP6_IN / TCP6_OUT są skonfigurowane, ponieważ domyślnie odzwierciedlają ustawienia IPv4, ale mogą być dostosowywane niezależnie.
Jak zapobiec przypadkowemu zablokowaniu własnego dostępu podczas konfigurowania CSF?
Dodaj swój adres IP zarządzania zarówno do /etc/csf/csf.allow, jak i /etc/csf/csf.ignore przed wprowadzeniem jakichkolwiek restrykcyjnych zmian. Zachowaj TESTING = "1" podczas wstępnej konfiguracji — w trybie testowym CSF ładuje reguły, ale LFD nie egzekwuje blokad, a reguły są automatycznie usuwane po 5 minutach, jeśli nie zostaną potwierdzone. Ustaw TESTING = "0" dopiero po zweryfikowaniu łączności.
Czy CSF działa na serwerach bez panelu sterowania?
Tak, w pełni. CSF jest instalowany i zarządzany wyłącznie przez wiersz poleceń. Interfejs webowy jest opcjonalną warstwą wygody dla środowisk z panelami sterowania. Cała konfiguracja odbywa się przez pliki płaskie w /etc/csf/ i binarny plik CLI csf. Wielu administratorów preferuje zarządzanie wyłącznie przez CLI ze względu na możliwość audytu i automatyzacji za pomocą narzędzi do zarządzania konfiguracją, takich jak Ansible lub Puppet.
Jak często CSF powinien być aktualizowany i jak to się robi?
CSF powinien być aktualizowany za każdym razem, gdy zostanie wydana nowa wersja, szczególnie w przypadku zmian związanych z bezpieczeństwem. Sprawdź dostępność aktualizacji za pomocą csf -u, który porównuje zainstalowaną wersję z najnowszą wersją na serwerze pobierania ConfigServer. Aktualizacje można stosować bezpośrednio z interfejsu wtyczki WHM lub przez CLI. Zautomatyzuj sprawdzanie za pomocą cotygodniowego zadania cron, ale stosuj aktualizacje ręcznie po przejrzeniu dziennika zmian — aktualizacje CSF czasami zmieniają domyślne wartości konfiguracji, które wymagają przeglądu przed wdrożeniem.
