Slik beskytter du SSH-serveren med Fail2Ban [Linux / Ubuntu]
SSH er et godt verktøy for å få ekstern tilgang til datamaskinen / serveren din og gjøre endringer i det som om du er foran datamaskinen. Hvis du har en SSH-server, har vi vist deg hvordan du genererer og bruker en offentlig / privat nøkkel, slik at du kan koble til den eksterne serveren sikkert, men det betyr ikke at SSH-serveren din er trygg. Tvert imot er de fleste SSH-servere sårbare for brutte kraftangrep, og hvis du ikke betaler oppmerksomhet, kan hackere enkelt hacke inn i serveren din og ødelegge / stjele alt du har.
Fail2Ban er et enkelt, men likevel nyttig verktøy som kan overvåke serveren din mot ondsinnet angrep og blokkere dem før de kan forårsake ødeleggelse.
Installasjon
Fail2Ban er tilgjengelig i Ubuntu-depotet, slik at du enkelt kan installere med kommandoen:
sudo apt-get install fail2ban
For Red Hat eller Centos-brukere kan du installere Fail2Ban via EPEL-depotet.
Når du har installert Fail2Ban, er neste trinn å flytte konfigurasjonsfilen til en lokal mappe, slik at du ikke vil endre hovedkonfigurasjonsfilen ved et uhell.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
konfigurasjon
Når installert, vil Fail2Ban automatisk begynne å overvåke serveren din for ondsinnet angrep. I de fleste tilfeller er standardinnstillingene tilstrekkelig til å beskytte nettstedet ditt, men hvis du har noen tilpasset serverkonfigurasjon (som en annen port for SSH-tilgang) eller vil aktivere andre tjenester, kan du gjøre det her:
sudo nano /etc/fail2ban/jail.local
Konfigurasjonsfilen er delt inn i ulike seksjoner. Den første du vil komme over er [DEFAULT].
[DEFAULT] # "ignoreip" kan være en IP-adresse, en CIDR-mask eller en DNS-vert ignoreip = 127.0.0.1/8 bantime = 600 maxretry = 3 # "backend" angir backend som brukes til å få filer modifisering. Tilgjengelige # alternativer er "gamin", "polling" og "auto". # yoh: For noen grunn Debian sendt python-gamin fungerte ikke som forventet # Dette problemet igjen ToDo, så polling er standard backend for nå backend = auto # # Destinasjons e-postadresse som bare brukes til interpolasjoner i # fengsel. {conf, lokale} konfigurasjonsfiler. destemail = root @ localhost
De få parametrene du trenger å merke seg her er ignoreip
, bantime
og maxretry
.
- ignoreip - dette er stedet der du hvitelisten IP som du ikke vil blokkere. Standardinnstillingen er lokalhost (127.0.0.1/8). Du kan legge til flere IP-adresser i feltet, skille hver IP med et mellomrom.
- bantime - dette er tiden i sekunder for å blokkere IP fra tilgang til serveren din. Standardinnstillingen er 10 minutter (600 sekunder)
- maxretry- dette er antall mislykkede påloggingsforsøk før IP-adressen er blokkert.
Det er også destemail
feltet der du kan angi en e-postadresse for å varsle hvor et skadelig angrep er oppdaget. En ting å merke seg er at dette bare vil fungere hvis du har installert en e-postserver.
Den neste delen er "Handlinger".
# ACTIONS # # Standard banningshandling (f.eks. Iptables, iptables-new, # iptables-multiport, shorewall, osv.) Det brukes til å definere # action_ * -variabler. Kan overstyres globalt eller per # delen i jail.local file banaction = iptables-multiport # email handling. Siden 0.8.1 oppstrøms fail2ban bruker sendmail # MTA for mailing. Endre mta konfigurasjonsparameter til e-post # hvis du vil gå tilbake til konvensjonell 'mail'. mta = sendmail # Standard protokollprotokoll = tcp # Angi kjede hvor hoppene må legges i iptables- * actions chain = INPUT # # Handlingsgenveier. Brukes til å definere handlingsparameter # Den enkleste handlingen som skal utføres: Forby bare action_ =% (banaction) s [navn =% (__ navn __) s, port = "% (port) s", protokoll = "% ", chain ="% (chain) s "] # ban og send en e-post med whois rapport til destemail. action_mw =% (banaction) s [navn =% (__ navn __) s, port = "% (port) s", protokoll = "% s-whois [navn =% (__ navn __) s, dest = "% (destemail) s", protokoll = "% (protokoll) s", kjede = "% (kjede) s"] # forbud og send en e-post med whois rapport og relevante logglinjer # til destemail. action_mwl =% (banaction) s [navn =% (__ navn __) s, port = "% (port) s", protokoll = "% s-whois-linjer [navn =% (__ navn __) s, dest = "% (destemail) s", logpath =% (logpath) s, chain = "% (chain) s"] # Velg standard handling. For å endre, overstyr bare verdien av "handling" med # interpolasjonen til den valgte handlingsgenveien (f.eks. Action_mw, action_mwl osv.) I fengsel.lokal # globalt (seksjon [DEFAULT]) eller per bestemt seksjon action =% (action_) s
De fleste innstillingene her kan bli satt til standard med mindre du vil endre banaction
og protocol
. Standard "banaction" er via IPTable. Du kan få det til å bruke multi-port-innstillingen eller opprette en ny IpTable for dette. Standardverdien for "protokollen" er tcp, men du kan endre den til utp, avhengig av hvilken tilkobling du bruker.
Den siste delen av "Fangsel" -delen der du kan konfigurere Fail2Ban til å overvåke Apache-serveren, FTP-serveren, e-postserveren og DNS-serveren.
[ssh] enabled = sann port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6
I de fleste tilfeller må du bare endre " enabled = false " -innstillingen til " enabled = true " og det vil bli aktivert for den tjenesten. Hvis du ikke bruker vanlig port 20 for SSH, kan du også endre portnummeret i innstillingen ovenfor.
Når du er ferdig med konfigurasjonen, trykker du på "Ctrl + o" for å lagre og "ctrl + x" for å avslutte.
Til slutt, start Fail2Ban-tjenesten med kommandoen:
sudo service fail2ban restart
Hvilke andre måter bruker du til å beskytte din SSH-server?