Powrót do strony głównej

Ochrona serwera ipset i CrowdSec przed skanerami

Artykuł opisuje trójwarstwowy system filtrowania ruchu oparty na ipset, autoblokadzie i CrowdSec. Blokada na poziomie jądra redukuje ruch śmieciowy do 0,3% i obciążenie. Podano kod aktualizacji zestawów, metryki i ograniczenia.

Trzy warstwy WAF: ipset + CrowdSec dla serwera Linux
Advertisement 728x90

Wielopoziomowa filtracja ruchu: ipset, autoblokada i CrowdSec dla serwerów

System filtracji oparty na ipset, autoblokadzie podejrzanych IP i CrowdSec redukuje śmieciowy ruch z 12% do mniej niż 0,3%. Blokada odbywa się na poziomie jądra Linux (L3/L4), przed przetwarzaniem przez nginx i PHP-FPM. To minimalizuje obciążenie serwera projektu komercyjnego na Bitrix, gdzie skanowanie .env, wp-login.php i config.php powodowało skoki odrzuceń do 99%.

Zalety podejścia: pełna przejrzystość blokad, atomowe aktualizacje list IP, modułowa architektura dla szybkiej konfiguracji projektu.

Zalety przed zewnętrznymi WAF i CDN

Zewnętrzne WAF i CDN nadają się do globalnych projektów, ale dla lokalnych rozwiązań z niskim obciążeniem preferowana jest samowystarczalna filtracja.

Google AdInline article slot

Kluczowe powody wyboru własnego systemu:

  • Pełna kontrola: widać zablokowane IP, regułę i czas trwania bana.
  • Blokada przed aplikacją: zasoby nginx/PHP nie są marnowane na śmieci.
  • Elastyczność: szybkie dodawanie reguł pod wzorce Bitrix (.env, .git).
  • Prostota: bez zbędnych warstw w architekturze.

Analiza prowadzona jest na podstawie logów HTTP (L7), ale odrzucanie pakietów — w iptables z ipset na poziomie jądra.

Struktura trójwarstwowej obrony

System jest uwarstwiony do sekwencyjnej filtracji.

Google AdInline article slot

Warstwa 1: Geoblokada. Pakiety z nieistotnych krajów odcinane są natychmiast, bez parsowania HTTP.

Warstwa 2: Autoblokada podejrzanych IP. Po geoblokadzie sprawdzane są wzorce skanowania: wp-login.php, shell.php, .env. IP banowane na 2 godziny.

Warstwa 3: CrowdSec. Integracja przez bouncer dodaje globalną czarną listę do ipset z TTL.

Google AdInline article slot

Modułowość pozwala wyłączać warstwy niezależnie, redukując ryzyko fałszywych alarmów.

Ipset jako podstawa skalowalności

Zwykłe iptables z tysiącami reguł IP prowadzą do liniowego przeszukiwania O(n), degradującego wydajność pod obciążeniem.

Ipset używa hash:ip lub hash:net dla sprawdzeń O(1):

-m set --match-set blocked_ips src

Aktualizacja zestawów atomowo przez temp-zestaw i swap, bez przerw w filtracji:

ipset create "${country}_temp" hash:net 2>/dev/null || ipset flush "${country}_temp"
if [[ -s "$temp_file" ]]; then
    while read network; do
        ipset add "${country}_temp" "$network"
    done < "$temp_file"
    ipset swap "${country}_temp" "$country"
fi
ipset destroy "${country}_temp"

To zapewnia ciągłą ochronę nawet przy masowych aktualizacjach list.

Detekcja skanerów po wzorcach

Skrypt auto-block-suspicious.sh monitoruje logi tail -n, skupiając się na podejrzanych żądaniach:

  • wp-login.php (na Bitrix).
  • shell.php, shoha.php.
  • .env, .git, .aws/credentials.

IP automatycznie banowane na 2 godziny. Przykład: fala żądań do /wp-login.php (200+ prób) zneutralizowana w 20–30 sekund, obciążenie znormalizowane.

Statystyki blokady:

  • Chiny: 8802 IP.
  • Podejrzane: 10 IP (przykłady: 4.193.97.168, 195.178.110.109).

Integracja CrowdSec

Bouncer CrowdSec uzupełnia ipset crowdsec_blacklist z TTL:

  • Autosynchronizacja globalnych sygnatur.
  • Autousuwanie po czasie.

CrowdSec uzupełnia niestandardowe moduły, zamykając znane zagrożenia bez zastępowania logiki projektowej.

Wyniki wdrożenia

Porównanie metryk (2025 bez WAF vs 2026 z WAF):

| Wskaźnik | Bez ochrony | Z WAF |

|------------------|------------|-----------|

| Śmieciowy ruch | ~12% | <0,3% |

| Load Average | 1,8–2,5 | 0,9–1,2 |

| Odrzucenia | Do 40% | 12–15% |

Skoki RPS od skanowania przerywane na jądrze, analityka oczyszczona z botów.

Ograniczenia:

  • Nie chroni przed atakami L4 dużym ruchem.
  • Wymaga aktualizacji CMS (Bitrix).
  • Nieefektywne przeciwko residential IP.
  • Nie dla globalnych projektów z CDN.

Co jest ważne

  • Skalowalność: ipset zapewnia sprawdzenia O(1) dla milionów IP.
  • Atomowość: swap zapobiega przerwom w filtracji.
  • Modułowość: Niezależne warstwy (kraje, podejrzane, CrowdSec) dla precyzyjnej konfiguracji.
  • Efektywność: Redukcja śmieci do 0,3%, LA dwa razy niższe.
  • Przejrzystość: Pełna kontrola bez czarnych skrzynek.

— Editorial Team

Advertisement 728x90

Czytaj dalej