Den här artikeln är en del av Apache Server Guide-serien:

  • Säkra Apache på Ubuntu - Del 1
  • Säkra Apache på Ubuntu - Del 2
  • Optimera Apache Performance - Del 1
  • Optimera Apache Performance - Del 2
  • Konfigurera namnbaserad Virtualhost Apache
  • Konfigurera IP och portbaserad Virtualhost i Apache
  • Så här ställer du in lösenordskyddswebbkatalogen i Apache
  • Ställa in Apache Server med SSL-support på Ubuntu
  • Konfigurera Fail2ban för att skydda Apache från ett DDOS-attack
  • Så här ställer du upp Webdav med Apache på Ubuntu
  • Övervaka Apache webbserver med Mod_status
  • Hur man skyddar mot DDoS med Mod_evasive på Apache Server

Apache är ett av de mest använda och populära webbservrarna i världen, så det är viktigt att skydda din webbplats och användare från Brute-force attacker. Fail2ban är ett open-source inkräktningsskyddsprogram skrivet i Python. Fail2Ban analyserar kontinuerligt olika tjänsters loggfiler (som Apache, ssh, postfix ...) och om det upptäcker skadliga attacker skapar det regler på brandväggen för att blockera hackers IP-adresser för en viss tid. Fail2Ban informerar också en systemadministratör med ett e-postmeddelande om sin verksamhet.

I den här artikeln kommer jag att förklara hur man installerar fail2ban och konfigurerar den för att övervaka dina Apache-loggar för felaktiga autentiseringsfel.

Krav

  • Ubuntu-server 14.04 med Apache installerad
  • Apache konfigurerad med lösenordsautentisering

Installera Fail2Ban

Kontrollera först att Apache-servern körs och lösenordsautentisering är aktiverad.

Därefter kan du installera Fail2ban genom att köra:

 sudo apt-få uppdatering sudo apt-get install fail2ban 

Konfigurera fail2ban för Apache

Fail2ban håller sin konfigurationsfil "jail.conf" i katalogen "/ etc / fail2ban /". Den innehåller en uppsättning fördefinierade filter för olika tjänster, och det rekommenderas att du inte redigerar den här filen. Du måste aktivera fördefinierade Apache-fängelser genom att skapa en "/etc/fail2ban/jail.local" -fil:

För att skapa en ny "jail.local" -fil, kör:

 sudo nano /etc/fail2ban/jail.local 

Lägg till följande innehåll:

 [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-överflöden] enabled = true port = http, https filter = apache-överflöden logpath = /var/log/apache2/*error.log maxretry = 2 findtime = 600 ignoreip = 192.168.1.227 [apache-badbots] enabled = sann port = http, https filter = apache-badbots logpath = / var / log / apache2 /*error.log maxretry = 2 findtime = 600 ignoreip = 192.168.1.227 

Spara och stäng filen och starta om fail2ban för att ändringarna ska träda i kraft.

 sudo /etc/init.d/fail2ban omstart 

Du kan verifiera de regler som lagts till av Fail2Ban i iptables med följande kommando:

 sudo iptables -L 

Utgången kommer att se ut så här:

Obs! Du kan hitta detaljerna i varje fängelse som beskrivs nedan:

  • [apache] : denna fängelse används för att blockera misslyckade inloggningsförsök.
  • [apache-noscript] : den här fängelset används för att blockera fjärrklienter som söker efter skript på webbplatsen att utföra.
  • [apache-overflows] : den här fängelset används för att blockera klienter som försöker begära misstänkta webbadresser.
  • [apache-noscript] : den här fängelset används för att blockera fjärrklienter som söker efter skript på webbplatsen för att exekvera.
  • [apache-badbots] : denna fängelse används för att blockera skadliga botförfrågningar.

Obs! Du kan hitta detaljerna för varje regel som beskrivs nedan.

  • enabled : det här alternativet betyder att Apache-skydd är på.
  • port : det här alternativet anger de tjänster som fail2ban övervakar.
  • filter : det här alternativet refererar till config-filen som finns i /etc/fail2ban/filter.d/ .
  • logpath : det här alternativet anger platsen för loggfilen.
  • bantime : det här alternativet anger bantime många sekunder en fjärr värd kommer att blockeras från servern.
  • maxretry : det här alternativet anger antalet misslyckade inloggningsförsök innan en fjärr värd blockeras för längden av fördröjningstiden.
  • ignoreip : det här alternativet gör att du kan lista vissa IP-adresser från att blockera.

Kontrollera Fail2ban Banning Status

När fängelser är aktiverade kan du kontrollera fail2ban med hjälp av fail2ban-client kommandot:

 sudo fail2ban-klient status 

Du kan se en lista över alla de fängelser du aktiverat.

För att se statusen för en viss fängelse som apache, apache-badbots genom att köra följande kommandon:

 sudo fail2ban-client status apache 

Utsignalen ser så här ut:

Du kan också manuellt ställa in förbjudna IP-adresser.

Till exempel, förbud mot en IP-adress (192.168.1.20) med en apache-fängelse:

 sudo fail2ban-client set apache banip 192.168.1.20 

För att avbryta en IP-adress (192.168.1.21) med en apache-fängelse:

 sudo fail2ban-client set apache unbanip 192.168.1.21 

Testing Fail2Ban

Det är viktigt att testa din fail2ban om det fungerar som förväntat eller inte. Nu på en fjärrmaskin, öppna din webbläsare och skriv webbadressen till din domän (eller din servers IP-adress). När Apache frågar för autentisering, uppge felaktigt användarnamn och lösenord flera gånger. När du har nått gränsen bör du vara blockerad och kunna inte komma åt webbplatsen.

Kontrollera statusen med fail2ban-client :

 sudo fail2ban-client status apache 

Du kommer att se din IP-adress blockeras från webbplatsen.

Slutsats

Nu har du tillräckligt med kunskap för att konfigurera fail2ban. Att använda fail2ban är ett bra och enkelt sätt att stoppa översvämning (Brute-force attacks). Det är också ett bra sätt att begränsa antalet dåliga förfrågningar du får på din Apache webbserver.