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.