Postavljanje Fail2ban za zaštitu Apachea od DDOS napada


Apache je jedan od najčešće korištenih i najpopularnijih web poslužitelja na svijetu, stoga je važno zaštititi svoju web stranicu i korisnike od Brute-force napada. Fail2ban je softver otvorenog koda za sprječavanje upada napisan u Pythonu. Fail2Ban kontinuirano analizira log datoteke raznih servisa (kao što su Apache, ssh, postfix ...), a ako otkrije zlonamjerne napade, tada kreira pravila na vatrozidu za blokiranje IP adresa hakera na određeno vrijeme. Fail2Ban također e-poštom obavještava administratora sustava o svojoj aktivnosti.

U ovom ću članku objasniti kako instalirati fail2ban i konfigurirati ga da nadzire vaše Apache zapise radi zlonamjernih pokušaja neuspjeha autentifikacije.

Zahtjevi

  • Ubuntu poslužitelj 14.04 s instaliranim Apacheom
  • Apache konfiguriran s provjerom autentičnosti lozinkom

Instalacija Fail2Ban

Najprije provjerite radi li Apache poslužitelj i je li omogućena provjera autentičnosti lozinke.

Zatim možete instalirati Fail2ban pokretanjem:

sudo apt-get update
sudo apt-get install fail2ban

Konfigurirajte fail2ban za Apache

Fail2ban čuva svoju konfiguracijsku datoteku "jail.conf" u direktoriju "/etc/fail2ban/". Sadrži skup unaprijed definiranih filtara za različite usluge i preporučuje se da ne uređujete ovu datoteku. Morate omogućiti unaprijed definirane Apache zatvore stvaranjem datoteke "/etc/fail2ban/jail.local":

Da biste stvorili novu datoteku "jail.local", pokrenite:

sudo nano /etc/fail2ban/jail.local

Dodajte sljedeći sadržaj:

[apache]
enabled  = true
port     = http,https
filter   = apache-auth
logpath  = /var/log/apache2/*error.log
maxretry = 3
findtime = 600
ignoreip = 192.168.1.227
 
[apache-noscript]
enabled  = true
port     = http,https
filter   = apache-noscript
logpath  = /var/log/apache2/*error.log
maxretry = 3
findtime = 600
ignoreip = 192.168.1.227
 
[apache-overflows]
enabled  = true
port     = http,https
filter   = apache-overflows
logpath  = /var/log/apache2/*error.log
maxretry = 2
findtime = 600
ignoreip = 192.168.1.227
 
[apache-badbots]
enabled  = true
port     = http,https
filter   = apache-badbots
logpath  = /var/log/apache2/*error.log
maxretry = 2
findtime = 600
ignoreip = 192.168.1.227

Spremite i zatvorite datoteku, zatim ponovno pokrenite fail2ban kako bi promjene stupile na snagu.

sudo /etc/init.d/fail2ban restart

Možete provjeriti pravila koja je dodao Fail2Ban u iptables pomoću sljedeće naredbe:

sudo iptables -L

Ispis će izgledati otprilike ovako:

Napomena: pojedinosti o svakom zatvoru opisanom u nastavku možete pronaći:

  • [apache] : ovaj zatvor se koristi za blokiranje neuspjelih pokušaja prijave.
  • [apache-noscript] : ovaj zatvor se koristi za blokiranje udaljenih klijenata koji traže skripte na web stranici za izvršenje.
  • [apache-overflows] : ovaj se zatvor koristi za blokiranje klijenata koji pokušavaju zatražiti sumnjive URL-ove.
  • [apache-noscript] : ovaj zatvor se koristi za blokiranje udaljenih klijenata koji traže skripte na web stranici za izvršenje.
  • [apache-badbots] : ovaj se zatvor koristi za blokiranje zlonamjernih zahtjeva robota.

Napomena: pojedinosti o svakom pravilu opisanom u nastavku možete pronaći.

  • enabled : ova opcija znači da je Apache zaštita uključena.
  • port : ova opcija specificira usluge koje fail2ban prati.
  • filter : ova opcija upućuje na konfiguracijsku datoteku koja se nalazi u direktoriju /etc/fail2ban/filter.d/.
  • logpath : ova opcija navodi lokaciju datoteke dnevnika.
  • bantime : ova opcija određuje broj sekundi tijekom kojih će udaljeni host biti blokiran s poslužitelja.
  • maxretry : ova opcija određuje broj neuspjelih pokušaja prijave prije nego što se udaljeno računalo blokira tijekom vremena zabrane.
  • ignoreip : ova vam opcija omogućuje stavljanje određenih IP adresa na popis dopuštenih za blokiranje.

Provjerite Fail2ban status zabrane

Nakon što se zatvori aktiviraju, možete provjeriti fail2ban pomoću naredbe fail2ban-client:

sudo fail2ban-client status

Možete vidjeti popis svih zatvora koje ste omogućili.

Da biste vidjeli status određenog zatvora kao što je apache, apache-badbots pokretanjem sljedećih naredbi:

sudo fail2ban-client status apache

Izlaz izgleda ovako:

Također možete ručno postaviti zabranu ili poništavanje zabrane IP adresa.

Na primjer, za zabranu IP adrese (192.168.1.20) s apache zatvorom:

sudo fail2ban-client set apache banip 192.168.1.20

Za poništavanje zabrane IP adrese (192.168.1.21) s apache zatvorom:

sudo fail2ban-client set apache unbanip 192.168.1.21

Testiranje Fail2Ban

Važno je testirati svoj fail2ban radi li kako se očekuje ili ne. Sada na udaljenom računalu otvorite svoj web preglednik i upišite URL svoje domene (ili IP adresu vašeg poslužitelja). Kada Apache zatraži provjeru autentičnosti, više puta unesite netočno korisničko ime i lozinku. Nakon što dosegnete ograničenje, trebali biste biti blokirani i nećete moći pristupiti stranici.

Provjerite status naredbom fail2ban-client:

sudo fail2ban-client status apache

Vidjet ćete da je vaša IP adresa blokirana sa stranice.

Zaključak

Sada imate dovoljno znanja da konfigurirate fail2ban. Korištenje fail2ban je dobar i jednostavan način da se zaustavi flooding (napadi grubom silom). To je također dobar način da ograničite broj loših zahtjeva koje primate na svom Apache web poslužitelju.