Introduksjon til Fail2Ban
Installerer Fail2Ban
Konfigurering av Fail2Ban-innstillingene
Konfigurerer Fail2Ban for å beskytte SSH
Starter opp Fail2Ban-tjenesten
Hvordan spore mislykkede påloggingsforsøk
Introduksjon til Fail2Ban
Som standard kobler en klient til SSH ved hjelp av port 22. Fordi dette er en velkjent port, er standardkonfigurasjonen sårbar for mange brute force-angrep. Fail2Ban er en løsning for automatisk å beskytte en server mot disse angrepene. Programmet kjører i bakgrunnen, skanner loggfilene for å oppdage hvilke IP-er som angriper og forbyr dem automatisk tilgang til SSH.
Installerer Fail2Ban
I denne opplæringen vil vi installere Fail2Ban på CentOS 6 gjennom EPEL-depotet. Kjør følgende kommandoer.
yum install epel-release
yum install fail2ban
Forklaring
yum install epel-release: Installerer EPEL-depotet (ekstrapakker for Enterprise Linux).
yum install fail2ban: Installerer Fail2Ban fra EPEL-depotet.
Konfigurering av Fail2Ban-innstillingene
Åpne Fail2Ban-konfigurasjonsfilen.
nano /etc/fail2ban/jail.conf
I filen vil du se noen parametere som vist nedenfor. Juster hvilken som helst av verdiene til dine behov.
[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1
# "bantime" is the number of seconds that a host is banned.
bantime = 600
# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 600
# "maxretry" is the number of failures before a host get banned.
maxretry = 3
Forklaring
ignoreip: Ikke utesten verter som samsvarer med en adresse i denne listen. Flere adresser kan defineres ved hjelp av mellomromsseparator. Skriv din personlige IP på denne linjen.
bantime: Antall sekunder som en vert er utestengt.
findtime: En vert er utestengt hvis den har generert i maxretryløpet av den siste findtime.
maxretry: Antall feil før en vert blir utestengt.
Konfigurerer Fail2Ban for å beskytte SSH
Først må vi lage en konfigurasjonsfil.
nano /etc/fail2ban/jail.local
Kopier linjene under og lim inn i filen.
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
# sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath = /var/log/secure
maxretry = 5
enabled: Aktiver beskyttelsen. Hvis du vil slå den av, endre verdien til usann.
filter: Som standard er den satt til sshd som refererer til filen /etc/fail2ban/filter.d/sshd.conf.
action: Fail2Ban vil utestenge IP-en som samsvarer med filteret /etc/fail2ban/action.d/iptables.conf. Hvis du hadde endret SSH-porten før, bytt port=sshtil den nye porten, for eksempel port=2222. Hvis du bruker port 22, trenger du ikke å endre verdien.
logpath: Banen til loggfilen som brukes av Fail2Ban.
maxretry: Maksimalt antall mislykkede påloggingsforsøk.
Starter opp Fail2Ban-tjenesten
Kjør disse to kommandoene nedenfor for å starte Fail2Ban-tjenesten:
chkconfig --level 23 fail2ban on
service fail2ban start
Til slutt, sjekk for iptableså se om den har reglene lagt til av Fail2Ban.
iptables -L
Resultatet vil ligne denne utgangen.
Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-SSH tcp -- anywhere anywhere tcp dpt:EtherNet/IP-1
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain f2b-SSH (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Hvordan spore mislykkede påloggingsforsøk
Du kan bruke denne kommandoen til å sjekke om serveren din har hatt mislykkede påloggingsforsøk (mulige angrep).
cat /var/log/secure | grep 'Failed password'
Resultatet vil ligne disse linjene.
Dec 6 22:47:12 vultr sshd[7942]: Failed password for root from 43.229.53.67 port 23021 ssh2
Dec 6 22:47:15 vultr sshd[7944]: Failed password for root from 43.229.53.67 port 40996 ssh2
Dec 6 22:47:16 vultr sshd[7944]: Failed password for root from 43.229.53.67 port 40996 ssh2
Dec 6 22:47:18 vultr sshd[7944]: Failed password for root from 43.229.53.67 port 40996 ssh2
Dec 6 22:47:31 vultr sshd[7948]: Failed password for root from 43.229.53.67 port 29907 ssh2
Dec 6 22:47:34 vultr sshd[7948]: Failed password for root from 43.229.53.67 port 29907 ssh2
Dec 6 22:47:36 vultr sshd[7948]: Failed password for root from 43.229.53.67 port 29907 ssh2
Dec 6 22:47:39 vultr sshd[7950]: Failed password for root from 43.229.53.67 port 48386 ssh2
Dec 6 22:47:41 vultr sshd[7950]: Failed password for root from 43.229.53.67 port 48386 ssh2
Dec 6 22:47:43 vultr sshd[7950]: Failed password for root from 43.229.53.67 port 48386 ssh2
Dec 6 22:47:47 vultr sshd[7952]: Failed password for root from 43.229.53.67 port 62846 ssh2
Dec 6 22:47:49 vultr sshd[7952]: Failed password for root from 43.229.53.67 port 62846 ssh2
For å se hvilke IP-er som har blitt utestengt, bruk følgende kommando.
iptables -L -n
For å slette en IP-adresse fra forbudt liste, kjør følgende kommando. Bytt banned_iptil IP-en du vil oppheve utestengelsen.
iptables -D f2b-SSH -s banned_ip -j DROP