A Fail2Ban bemutatása
A Fail2Ban telepítése
A Fail2Ban beállítások konfigurálása
A Fail2Ban beállítása az SSH védelmére
A Fail2Ban szolgáltatás indítása
A sikertelen bejelentkezési kísérletek nyomon követése
A Fail2Ban bemutatása
Alapértelmezés szerint a kliens a 22-es porton keresztül csatlakozik az SSH-hoz. Mivel ez egy jól ismert port, az alapértelmezett konfiguráció ki van téve sok brute force támadásnak. A Fail2Ban egy olyan megoldás, amely automatikusan megvédi a szervert ezektől a támadásoktól. A program a háttérben fut, átvizsgálja a naplófájlokat, hogy felismerje, mely IP-címek támadják, és automatikusan megtiltja számukra az SSH elérését.
A Fail2Ban telepítése
Ebben az oktatóanyagban telepítjük a Fail2Ban-t a CentOS 6 rendszerre az EPEL-tárhelyen keresztül. Futtassa a következő parancsokat.
yum install epel-release
yum install fail2ban
Magyarázat
yum install epel-release: Telepíti az EPEL-tárat (Extra Packages for Enterprise Linux).
yum install fail2ban: Telepíti a Fail2Ban-t az EPEL tárolóból.
A Fail2Ban beállítások konfigurálása
Nyissa meg a Fail2Ban konfigurációs fájlt.
nano /etc/fail2ban/jail.conf
A fájlban az alábbiak szerint néhány paramétert láthat. Bármelyik értéket az igényeinek megfelelően állíthatja be.
[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
Magyarázat
ignoreip: Ne tiltsa le azokat a gazdagépeket, amelyek megfelelnek a listán szereplő címeknek. Szóközelválasztóval több cím is megadható. Ebbe a sorba írja be személyes IP-jét.
bantime: A másodpercek száma, ameddig egy gazdagép tiltva van.
findtime: Egy gazdagép tiltott, ha maxretryaz utolsó során generált findtime.
maxretry: A hibák száma, mielőtt egy gazdagépet kitiltottak.
A Fail2Ban beállítása az SSH védelmére
Először is létre kell hoznunk egy konfigurációs fájlt.
nano /etc/fail2ban/jail.local
Másolja ki az alábbi sorokat, és illessze be a fájlba.
[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: Aktiválja a védelmet. Ha ki szeretné kapcsolni, módosítsa az értéket false-ra.
filter: Alapértelmezés szerint sshd-re van állítva, amely a fájlra hivatkozik /etc/fail2ban/filter.d/sshd.conf.
action: A Fail2Ban letiltja a szűrőnek megfelelő IP-címet /etc/fail2ban/action.d/iptables.conf. Ha korábban megváltoztatta az SSH-portot, váltson port=sshát az új portra, például port=2222. Ha a 22-es portot használja, akkor nem kell módosítania az értéket.
logpath: A Fail2Ban által használt naplófájl elérési útja.
maxretry: A sikertelen bejelentkezési kísérletek maximális száma.
A Fail2Ban szolgáltatás indítása
Futtassa az alábbi két parancsot a Fail2Ban szolgáltatás elindításához:
chkconfig --level 23 fail2ban on
service fail2ban start
Végül ellenőrizze iptables, hogy a Fail2Ban által hozzáadott szabályok-e.
iptables -L
Az eredmény ehhez a kimenethez hasonlóan fog kinézni.
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
A sikertelen bejelentkezési kísérletek nyomon követése
Ezzel a paranccsal ellenőrizheti, hogy a kiszolgálón voltak-e sikertelen bejelentkezési kísérletek (lehetséges támadások).
cat /var/log/secure | grep 'Failed password'
Az eredmény hasonló lesz ezekhez a sorokhoz.
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
A tiltott IP-címek megtekintéséhez használja a következő parancsot.
iptables -L -n
Ha törölni szeretne egy IP-címet a tiltott listáról, futtassa a következő parancsot. Váltson banned_iparra az IP-re, amelyet fel szeretne szüntetni.
iptables -D f2b-SSH -s banned_ip -j DROP