Sådan beskytter du din SSH-server med Fail2Ban [Linux / Ubuntu]
SSH er et godt værktøj til at få fjernadgang til din computer / server og ændre det som om du er foran computeren. Hvis du har en SSH-server, har vi vist dig, hvordan du genererer og bruger en offentlig / privat nøgle, så du sikkert kan oprette forbindelse til den eksterne server, men det betyder ikke, at din SSH-server er sikker. Tværtimod er de fleste SSH-servere sårbare overfor voldsangreb, og hvis du ikke er opmærksom, kan hackere nemt hakke i din server og ødelægge / stjæle alt hvad du har.
Fail2Ban er et simpelt, men alligevel nyttigt værktøj, der kan overvåge din server mod ondsindet angreb og blokere dem, før de kan forårsage kaos.
Installation
Fail2Ban er tilgængelig i Ubuntu-depotet, så du nemt kan installere med kommandoen:
sudo apt-get install fail2ban
For brugere af Red Hat eller Centos kan du installere Fail2Ban via EPEL-depotet.
Når du har installeret Fail2Ban, er det næste trin at flytte konfigurationsfilen til en lokal mappe, så du ikke vil ændre hovedkonfigurationsfilen ved et uheld.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Konfiguration
Når en gang er installeret, begynder Fail2Ban automatisk at overvåge din server for ondsindet angreb. I de fleste tilfælde er standardindstillingerne tilstrækkelige til at beskytte dit websted, men hvis du har nogle brugerdefinerede serverkonfigurationer (som en anden port til SSH-adgang) eller vil aktivere andre tjenester, kan du gøre det her:
sudo nano /etc/fail2ban/jail.local
Konfigurationsfilen er opdelt i forskellige sektioner. Den første, du kommer på tværs af, er [DEFAULT].
[DEFAULT] # "ignoreip" kan være en IP-adresse, en CIDR-maske eller en DNS-vært ignoreip = 127.0.0.1/8 bantime = 600 maxretry = 3 # "backend" angiver den backend, der bruges til at modificere filer. Tilgængelige # indstillinger er "gamin", "polling" og "auto". # yoh: Af en eller anden grund Debian afsendt python-gamin fungerede ikke som forventet # Dette problem er tilbage ToDo, så polling er standard backend for nu backend = auto # # Destination email adresse, der udelukkende anvendes til interpolationer i # fængsel. lokale} konfigurationsfiler. destemail = root @ localhost
De få parametre, du skal notere her, er ignoreip
, bantime
og maxretry
.
- ignoreip - dette er stedet hvor du hvidlister den IP, du ikke vil blokere. Standardværdien er den lokalehost (127.0.0.1/8). Du kan tilføje yderligere IP'er til feltet, adskille hver IP med et mellemrum.
- bantime - det er tid i sekunder for at blokere IP'en fra at få adgang til din server. Standardindstillingen er 10 minutter (600 sekunder)
- maxretry- dette er antallet af fejlagtige loginforsøg, før IP'en er blokeret.
Der er også destemail
feltet, hvor du kan angive en e-mail-adresse for at underrette, hvor et ondsindet angreb er registreret. En ting at bemærke er, at dette kun vil fungere, hvis du har installeret en mailserver.
Næste afsnit er "Actions".
# AKTIONER # # Standardforbudshandling (f.eks. Iptables, iptables-new, # iptables-multiport, shorewall osv.) Det bruges til at definere # action_ * variabler. Kan overstyres globalt eller pr. # Sektion i jail.local file banaction = iptables-multiport # email handling. Siden 0.8.1 upstream fail2ban bruger sendmail # MTA til mailing. Skift mt konfigurationsparameter til mail # hvis du vil vende tilbage til konventionel 'mail'. mta = sendmail # Standardprotokollprotokol = tcp # Angiv kæde, hvor hoppe skal tilføjes i iptables- * actions chain = INPUT # # Handlingsgenveje. Anvendes til at definere handling parameter # Den enkleste handling at tage: Forbud kun action_ =% (banaction) s [navn =% (__ navn __) s, port = "% (port) s", protocol = "% ", chain ="% (chain) s "] # forbud og send en e-mail med whois rapport til destemail. action_mw =% (banaction) s [navn =% (__ navn __) s, port = "% (port) s", protokol = "% (protokol) s", kæde = "% (kæde) s"]% s-whois [navn =% (__ navn __) s, dest = "% (destemail) s", protokol = "% (protokol) s", kæde = "% (kæde) s"] # forbud og send en e-mail med whois rapport og relevante log linjer # til destemail. action_mwl =% (banaction) s [navn =% (__ navn __) s, port = "% (port) s", protokol = "% (protokol) s", kæde = "% (kæde) s"]% s-whois-linjer [navn =% (__ navn __) s, dest = "% (destemail) s", logpath =% (logpath) s, chain = "% (chain) s"] # Vælg standard handling. Hvis du vil ændre, skal du bare tilsidesætte værdien af 'handling' med # interpolationen til den valgte aktionsgenvej (f.eks. Action_mw, action_mwl osv.) I fængsel. Lokal # globalt (sektion [DEFAULT]) eller pr. Bestemt sektion action =% (action_) s
De fleste af indstillingerne her kan overlades til standard, medmindre du vil ændre banaction
og protocol
. Standard "banaction" er via IPTable. Du kan få det til at bruge multi-port indstillingen eller oprette en ny IpTable til dette. Standardværdien for "protokollen" er tcp, men du kan ændre den til udp, afhængigt af hvilken forbindelse du bruger.
Den sidste del af afsnittet "Fængsel", hvor du kan konfigurere Fail2Ban til at overvåge din Apache-server, FTP-server, mailserver og DNS-server.
[ssh] enabled = sand port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6
I de fleste tilfælde skal du bare ændre indstillingen " aktiveret = falsk " til " enabled = true ", og den vil blive aktiveret for den pågældende tjeneste. Hvis du ikke bruger den sædvanlige port 20 til SSH, kan du også ændre portnummeret i indstillingen ovenfor.
Når du er færdig med konfigurationen, tryk på "Ctrl + o" for at gemme og "ctrl + x" for at afslutte.
Endelig genstart Fail2Ban-tjenesten med kommandoen:
sudo service fail2ban genstart
Hvilke andre måder bruger du til at beskytte din SSH-server?