SSH är ett bra verktyg för att fjärråtkomst till din dator / server och göra ändringar på det som om du befinner dig framför datorn. Om du har en SSH-server har vi visat hur du genererar och använder en offentlig / privat nyckel så att du kan ansluta till den fjärranslutna servern säkert, men det betyder inte att din SSH-server är säker. Tvärtom är de flesta SSH-servrar sårbara mot brutta kraftattacker och om du inte uppmärksammar kan hackare enkelt hacka in på din server och förstöra / stjäla allt du har.

Fail2Ban är ett enkelt men ändå användbart verktyg som kan övervaka din server från skadlig attack och blockera dem innan de kan utgöra förödelse.

Installation

Fail2Ban finns i Ubuntu-förvaret, så du kan enkelt installera med kommandot:

 sudo apt-get install fail2ban 

För användare av Red Hat eller Centos kan du installera Fail2Ban via EPEL-förvaret.

När du har installerat Fail2Ban, är nästa steg att flytta konfigurationsfilen till en lokal mapp så att du inte kommer att ändra huvudkonfigurationsfilen av misstag.

 sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local 

Konfiguration

När Fail2Ban har installerats, börjar den automatiskt att övervaka din server för skadlig attack. I de flesta fall är standardinställningarna tillräckliga för att skydda din webbplats, men om du har någon anpassad serverkonfiguration (som en annan port för SSH-åtkomst) eller vill aktivera andra tjänster, så här gör du hur du kan göra det:

 sudo nano /etc/fail2ban/jail.local 

Konfigurationsfilen är indelad i olika sektioner. Den första som du kommer att stöta på är [DEFAULT].

 [DEFAULT] # "ignoreip" kan vara en IP-adress, en CIDR-mask eller en DNS-värd ignoreip = 127.0.0.1/8 bantime = 600 maxretry = 3 # "backend" specificerar bakgrunden som används för att få filer modifiering. Tillgängliga # alternativ är "gamin", "polling" och "auto". # yoh: Av någon anledning Debian levererade Python-gamin fungerade inte som förväntat # Detta problem lämnade ToDo, så polling är standardbackend för nu backend = auto # # Destination email-adress som enbart används för interpolationer i # fängelse. lokala} konfigurationsfiler. destemail = root @ localhost 

De få parametrar som du behöver notera här är ignoreip, bantime och maxretry .

  • ignoreip - det här är den plats där du vitlistar den IP som du inte vill blockera. Standardvärdet är localhost (127.0.0.1/8). Du kan lägga till ytterligare IP-adresser i fältet, separera varje IP med ett mellanslag.
  • bantime - det här är hur mycket tid på sekunder att blockera IP från att komma åt din server. Standardvärdet är 10 minuter (600 sekunder)
  • maxretry-det här är antalet misslyckade inloggningsförsök innan IP är blockerad.

Det finns också destemail fältet där du kan ange en e-postadress för att meddela om en skadlig attack upptäcks. En sak att notera är att detta bara kommer att fungera om du har installerat en mailserver.

Nästa avsnitt är "Åtgärder".

 # ÅTGÄRDER # # Standardförbud (t.ex. iptables, iptables-new, # iptables-multiport, shorewall, etc.) Det används för att definiera # action_ * -variabler. Kan överskridas globalt eller per # sektion inom jail.local file banaction = iptables-multiport # email-åtgärd. Eftersom 0.8.1 upstream fail2ban använder sendmail # MTA för mailing. Ändra mt konfigurationsparametern till post nr. # Om du vill återgå till vanligt "mail". mta = sendmail # Standardprotokollprotokoll = tcp # Ange kedja där hopp skulle behöva läggas till i iptables- * actions chain = INPUT # # Åtkomstgenvägar. Används för att definiera åtgärdsparameter # Den enklaste åtgärd som ska vidtas: förbjud endast action_ =% (banaction) s [namn =% (__ namn __) s, port = "% (port) s", protokoll = "% ", chain ="% (chain) s "] # ban och skicka ett e-mail med whois rapport till destemail. action_mw =% (banaction) s [namn =% (__ namn __) s, port = "% (port) s", protokoll = "% (protokoll) s", kedja = "% (kedja) s"]% s-whois [namn =% (__ namn __) s, dest = "% (destemail) s", protokoll = "% (protokoll) s", kedja = "% (kedja) s"] # förbud och skicka ett e-mail med whois rapport och relevanta logglinjer # till destemailen. action_mwl =% (banaction) s [namn =% (__ namn __) s, port = "% (port) s", protokoll = "% (protokoll) s", kedja = "% (kedja) s"]% s-whois-linjer [namn =% (__ namn __) s, dest = "% (destemail) s", logpath =% (logpath) s, chain = "% (chain) s"] # Välj standardåtgärd. För att ändra, överväga bara värdet av "action" med # -interpoleringen till den valda åtkomstgenväggen (t.ex. action_mw, action_mwl osv.) I fängelse.lokal # globalt (avsnitt [DEFAULT]) eller per enskild sektion action =% (action_) s 

De flesta inställningarna här kan lämnas som standard om du inte vill ändra banaction och protocol . Standard "banaction" är via IPTable. Du kan få den att använda inställningen för flera portar eller skapa en ny IpTable för detta. Standardvärdet för "protokollet" är tcp, men du kan ändra det till utp, beroende på vilken anslutning du använder.

Den sista delen av avsnittet "Fängelse" där du kan konfigurera Fail2Ban för att övervaka din Apache-server, FTP-server, e-postserver och DNS-server.

 [ssh] enabled = sant port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6 

I de flesta fall behöver du bara ändra inställningen " enabled = false " till " enabled = true " och den aktiveras för den tjänsten. Om du inte använder den vanliga porten 20 för SSH kan du också ändra portnummeret i inställningen ovan.

När du är klar med konfigurationen trycker du på "Ctrl + o" för att spara och "ctrl + x" för att avsluta.

Slutligen starta om Fail2Ban-tjänsten med kommandot:

 sudo service fail2ban omstart 

Vilka andra sätt använder du för att skydda din SSH-server?