Pokud jste správce systému, pak je ochrana vašeho serveru před různými druhy útoků nezbytnou součástí vaší práce; Fail2Ban firewall vám toho může pomoci dosáhnout. Fail2Ban je systém prevence narušení napsaný v jazyce Python používaný k blokování škodlivých IP adres, které se snaží narušit zabezpečení vašeho systému. Funguje tak, že skenuje různé soubory protokolu a blokuje adresy IP, které se po určitou dobu snaží o časté přihlášení. Umožňuje také sledovat sílu a frekvenci útoků. Díky své jednoduchosti je považován za preferovaný software pro zabezpečení vašeho serveru před DOS, DDOS a útoky hrubou silou.
V tomto tutoriálu vám ukážeme, jak zabezpečit SSH a Apache server pomocí Fail2Ban na CentOS 8.
Předpoklady
- Nový CentOS 8 VPS na cloudové platformě Atlantic.net.
- Heslo uživatele root nakonfigurované na vašem serveru.
Krok 1 – Vytvořte cloudový server Atlantic.Net
Nejprve se přihlaste ke svému cloudovému serveru Atlantic.Net. Vytvořte nový server a jako operační systém vyberte CentOS 8 s alespoň 1 GB RAM. Připojte se ke svému cloudovému serveru přes SSH a přihlaste se pomocí přihlašovacích údajů zvýrazněných v horní části stránky.
Jakmile se přihlásíte k serveru CentOS 8, spusťte následující příkaz a aktualizujte svůj základní systém nejnovějšími dostupnými balíčky.
dnf update -y
Krok 2 – Instalace Fail2Ban
Můžete jej nainstalovat pomocí následujícího příkazu:
dnf install epel-release -y
Po instalaci úložiště EPEL můžete nainstalovat Fail2Ban pomocí následujícího příkazu:
dnf install fail2ban -y
Po instalaci spusťte službu Fail2Ban a povolte její spuštění po restartu systému:
systemctl start fail2ban systemctl enable fail2ban
Krok 3 – Zabezpečte SSH pomocí Fail2Ban
V této části se naučíme, jak zabezpečit SSH server pomocí Fail2Ban.
Nakonfigurujte Fail2Ban pro SSH
Soubor jail.local pro SSH můžete vytvořit pomocí následujícího příkazu:
nano /etc/fail2ban/jail.local
Přidejte následující řádky:
[DEFAULT] ignoreip = your-server-ip bantime = 300 findtime = 300 maxretry = 3 banaction = iptables-multiport backend = systemd [sshd] enabled = true
Po dokončení uložte a zavřete soubor. Poté restartujte službu Fail2Ban, aby se změny projevily:
systemctl restart fail2ban
Nyní můžete zkontrolovat stav vězení SSH pomocí následujícího příkazu:
fail2ban-client status
Měli byste vidět, že je povoleno vězení SSH:
Status |- Number of jail: 1 `- Jail list: sshd
Krátké vysvětlení každého parametru je uvedeno níže:
- ignoreip :Používá se k definování IP adres, které chcete ignorovat.
- bantime :Používá se k definování počtu sekund, na které bude IP adresa zakázána.
- najít čas :Používá se k definování doby mezi pokusy o přihlášení, než bude IP zakázána.
- maxretry :Používá se k definování počtu pokusů, které mají být provedeny, než bude IP adresa zakázána.
- banán :Zákaz akce.
- povoleno :Tato možnost povolí ochranu pro službu SSH.
Otestujte SSH proti útokům na heslo
V tomto okamžiku je Fail2Ban nainstalován a nakonfigurován. Je čas vyzkoušet, zda to funguje nebo ne.
Chcete-li tak učinit, přejděte na vzdálený počítač a zkuste SSH na IP adresu serveru:
ssh [email protected]
Budete požádáni o zadání hesla uživatele root. Zadejte znovu a znovu nesprávné heslo. Jakmile dosáhnete limitu pokusů o přihlášení, vaše IP adresa bude zablokována.
Svou zablokovanou IP adresu můžete ověřit pomocí následujícího příkazu:
fail2ban-client status sshd
Vaši zablokovanou IP byste měli vidět v následujícím výstupu:
Status for the jail: sshd |- Filter | |- Currently failed: 7 | |- Total failed: 39 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 1 |- Total banned: 2 `- Banned IP list: 190.8.80.42
Můžete také zkontrolovat protokol SSH pro neúspěšné přihlášení:
tail -5 /var/log/secure | grep 'Failed password'
Měli byste vidět následující výstup:
Mar 1 03:55:03 centos8 sshd[11196]: Failed password for invalid user bpadmin from 190.8.80.42 port 55738 ssh2
Konkrétní IP adresu můžete také zablokovat a odblokovat ručně.
Chcete-li například odblokovat IP 190.8.80.42, spusťte následující příkaz:
fail2ban-client set sshd unbanip 190.8.80.42
Chcete-li zablokovat IP 190.8.80.42, spusťte následující příkaz:
fail2ban-client set sshd banip 190.8.80.42
Krok 4 – Zabezpečení Apache pomocí Fail2Ban
Webový server Apache můžete také zabezpečit před různými druhy útoků. Budete muset nakonfigurovat soubor jail.local pro Apache, jak je uvedeno níže:
nano /etc/fail2ban/jail.local
Na konec souboru přidejte následující řádky:
[apache-auth] enabled = true port = http,https logpath = %(apache_error_log)s [apache-badbots] enabled = true port = http,https logpath = %(apache_access_log)s bantime = 48h maxretry = 1 [apache-noscript] enabled = true port = http,https logpath = %(apache_error_log)s
Po dokončení uložte a zavřete soubor. Poté restartujte službu Fail2Ban, abyste provedli změny:
systemctl restart fail2ban
Nyní můžete ověřit stav všech vězení pomocí následujícího příkazu:
fail2ban-client status
Měli byste vidět následující výstup:
Status |- Number of jail: 5 `- Jail list: apache-auth, apache-badbots, apache-noscript, sshd
Krátké vysvětlení každého vězení je uvedeno níže:
- apache-auth :Toto vězení se používá k ochraně Apache před neúspěšnými pokusy o přihlášení.
- apache-badbots :Toto vězení se používá k zákazu hostitelů, jejichž agent identifikuje roboty spammerů, kteří procházejí web a hledají e-mailové adresy.
- apache-noscript :Používá se k zablokování adresy IP, která se snaží na webu vyhledávat skripty ke spuštění.
Závěr
Ve výše uvedeném tutoriálu jsme se naučili, jak chránit SSH a Apache server pomocí Fail2Ban. Jedná se o velmi užitečný systém prevence narušení, který dodává vašemu systému Linux další zabezpečení. Nyní můžete nakonfigurovat Fail2Ban, který bude vyhovovat vašim specifickým potřebám zabezpečení. Začněte s Fail2Ban ještě dnes s VPS Hosting od Atlantic.Net!