Botneturile care țintesc serverul tău web au devenit mai avansate, reușind să evite metodele tradiționale de securitate, cum ar fi limitarea ratei și blocarea statică a IP-urilor. Acești actori rău intenționați pot supraîncărca serverul folosind adrese IP distribuite și modele de trafic sofisticate, ceea ce face detectarea și atenuarea lor o provocare. În acest articol, vom demonstra cum să utilizezi Fail2ban împreună cu CrowdSec pentru a detecta și bloca dinamic IP-urile abuzive, fără a te baza pe o listă statică masivă de blocare. Această abordare asigură că serverul tău rămâne sigur și funcțional, fără a suprasolicita resursele.

De ce metodele tradiționale de atenuare sunt insuficiente

Măsurile tradiționale, cum ar fi limitarea ratei, listele de blocare statice sau detectarea bazată pe regex, deseori nu sunt eficiente împotriva boturilor moderne. Iată de ce:

  • IP-uri dinamice: Botii își schimbă adesea adresele IP, făcând listele statice de blocare ineficiente.
  • Atacuri cu rată redusă: Limitând cererile la câteva pe secundă și folosind IP-uri distribuite, botii evită măsurile de limitare a ratei.
  • Evitarea modelelor: Atacatorii folosesc intrări codificate sau randomizate pentru a evita filtrele regex de bază.
  • Liste de blocare mari: Încărcarea a milioane de IP-uri în firewall este ineficientă și poate degrada performanța serverului.

Prin combinarea Fail2ban cu CrowdSec, putem crea o soluție dinamică și ușoară care verifică în timp real IP-urile care intră în rețea în raport cu o rețea globală de informații despre amenințări și blochează doar cele care afectează efectiv serverul tău.

Prezentare generală a soluției

Vom configura Fail2ban pentru a monitoriza jurnalele serverului și vom folosi o acțiune personalizată pentru a interoga baza de date a CrowdSec pentru IP-uri suspecte. Dacă un IP este considerat malițios, acesta va fi blocat dinamic folosind o abordare ușoară. Astfel, doar IP-urile relevante sunt blocate, minimizând utilizarea inutilă a resurselor.

De ce ai nevoie

  • Un server care rulează Debian/Ubuntu sau RHEL/CentOS.
  • Jurnalele serverului web (de exemplu, Apache sau Nginx).
  • Fail2ban instalat.
  • CrowdSec instalat și configurat.
  • Familiaritate de bază cu comenzile Linux și fișierele de configurare.

Pasul 1: Instalează Fail2ban și CrowdSec

Fail2ban și CrowdSec sunt componentele de bază ale acestei soluții. Mai întâi, să le instalăm pe serverul tău.

Instalarea Fail2ban

Pe Debian/Ubuntu:


sudo apt update
sudo apt install fail2ban -y

Pe RHEL/CentOS:


sudo dnf install epel-release -y
sudo dnf install fail2ban -y

Instalarea CrowdSec

CrowdSec este o platformă colaborativă de informații despre amenințări, care oferă liste actualizate cu IP-uri malițioase.

Pe Debian/Ubuntu:


curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
sudo apt install crowdsec -y

Pe RHEL/CentOS:


curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.rpm.sh | sudo bash
sudo dnf install crowdsec -y

După instalare, pornește și activează serviciul CrowdSec:


sudo systemctl enable --now crowdsec

Pasul 2: Configurează CrowdSec pentru informații despre amenințări

CrowdSec folosește colecții pentru a gestiona detectarea amenințărilor. Instalează colecția necesară pentru detectarea atacurilor bazate pe web:


sudo cscli hub update
sudo cscli collections install crowdsecurity/http-bad-behaviors
sudo systemctl restart crowdsec

Această colecție asigură că CrowdSec poate identifica IP-urile asociate cu activități malițioase pe web. Poți adăuga mai multe colecții după necesitate.

Configurarea Bouncer-ului

Bouncer-ul CrowdSec se integrează cu firewall-ul sau Fail2ban pentru a bloca IP-urile malițioase.


sudo cscli bouncers add fail2ban-bouncer

Pasul 3: Creează o acțiune personalizată pentru Fail2ban

Pentru a integra Fail2ban cu CrowdSec, vom crea o acțiune personalizată care interoghează API-ul CrowdSec pentru fiecare IP detectat.

Creează scriptul de acțiune

Salvează următoarea configurație ca /etc/fail2ban/action.d/crowdsec-check.conf:


[Definition]
actionstart =
actionstop =
actionban = curl -s -G "http://127.0.0.1:8080/v1/decisions?ip=<ip>" | jq '.new'
actionunban =

Această configurație trimite IP-ul detectat către API-ul local CrowdSec pentru analiză și primește un răspuns care indică dacă IP-ul este malițios.


Pasul 4: Definește un filtru pentru Fail2ban

Filtrele Fail2ban specifică ce modele de jurnale să monitorizeze. De exemplu, pentru a detecta intrările malițioase în jurnalele Apache, creează următorul fișier de filtru:

Exemplu de filtru pentru Apache

Salvează filtrul ca /etc/fail2ban/filter.d/apache-malicious.conf:


[Definition]
failregex = ^<HOST> - .* "(GET|POST).*%3Cscript.*" .*$
ignoreregex =

Acest filtru detectează cererile cu intrări codificate malițioase (de exemplu, %3Cscript).


Pasul 5: Configurează un jail pentru Fail2ban

Definește un jail Fail2ban care folosește filtrul și acțiunea personalizată. Creează fișierul de configurare al jail-ului:

Adaugă configurația Jail

Salvează următorul fișier ca /etc/fail2ban/jail.d/apache-malicious.local:

[apache-malicious]

enabled = true port = http,https filter = apache-malicious logpath = /var/log/apache2/access.log bantime = 3600 findtime = 300 maxretry = 1 action = crowdsec-check[name=apache, ip=<ip>]

Această configurație activează jail-ul, monitorizează jurnalele Apache și folosește acțiunea personalizată CrowdSec pentru a bloca dinamic IP-urile malițioase.


Pasul 6: Repornește serviciile

Repornește Fail2ban și CrowdSec pentru a aplica configurațiile:


sudo systemctl restart fail2ban
sudo systemctl restart crowdsec

Pasul 7: Testează și monitorizează

Monitorizează jurnalele Fail2ban

Verifică statusul jail-ului apache-malicious pentru a te asigura că funcționează corect:


sudo fail2ban-client status apache-malicious

Simulează o cerere malițioasă

Pentru a verifica dacă sistemul blochează cererile malițioase, simulează una folosind curl:


curl -A "malicious-bot" "http://serverultau.com/%3Cscript%3Ealert(1)%3C/script%3E"

IP-ul ar trebui să fie identificat și blocat după detectare.


Opțional: Filtrare GeoIP

Dacă dorești să blochezi cererile din anumite țări, poți integra filtrarea GeoIP cu Fail2ban.

Instalează dependențele GeoIP

Instalează pachetele necesare:


sudo apt install xtables-addons-common geoip-database -y

Exemplu de regulă GeoIP

Adaugă următorul cod în configurația jail-ului pentru a bloca traficul non-SUA:


actionban = iptables -A INPUT -m geoip ! --src-cc US -j DROP

Concluzie

Prin integrarea Fail2ban cu CrowdSec, poți detecta și bloca dinamic traficul bot malițios fără a supraîncărca serverul cu liste masive de blocare. Această soluție ușoară este extrem de eficientă împotriva atacurilor sofisticate și asigură că serverul tău rămâne sigur și receptiv.

Pentru asistență suplimentară, nu ezita să ne contactezi.