Jak chránit SSH - Fail2ban
Fail2ban je velmi užitečná aplikace pro vás, pokud spravujete bezpečnost serveru nebo provozujete vlastní vps či fyzický server. Fail2ban skenuje soubory protokolu vytvořené v systému a umí zakázat IP adresy, které byly nalezeny jako škodlivé na základě konfiguračních pravidel. Můžeme jej použít ke sledování různých logů systémových služeb, jako je Apache, SSH a blogování ips, které se snaží narušit bezpečnost systému.
CentOS 7
Ujistěte se, že je váš systém je aktuální a nainstalujte repozitář EPEL, Pak nainstalujte fail2ban:
yum update && yum install epel-release
yum install fail2ban
Pokud chcete navíc získat podporu e-mailu, nainstalujte Sendmail. Sendmail není pro použití Fail2Ban nutný:
yum install sendmail
Spusťte a povolte Fail2ban a případně Sendmail:
systemctl start fail2ban
systemctl enable fail2ban
systemctl start sendmail
systemctl enable sendmail
POZNÁMKA: Pokud narazíte na chybu, že "neexistuje adresář /var/run/fail2ban, který by obsahoval soketový soubor /var/run/fail2ban/fail2ban.sock", vytvořte adresář ručně:'mkdir /var/run/fail2ban`.
Debian / Ubuntu
Zkontrolujte, zda je váš systém aktuální:
apt-get update && apt-get upgrade -y
Nainstalujte Fail2ban:
apt-get install fail2ban
Služba se automaticky spustí. Pokud chcete podporu elektronické pošty, nainstalujte si Sendmail:
apt-get install sendmail-bin sendmail
Konfigurace služby Fail2ban
Fail2ban načítá své konfigurační soubory tak, že všechny soubory .conf jsou načteny jako první a soubory .local přepisují veškerá nastavení. Z tohoto důvodu se všechny změny konfigurace obvykle provádějí v souborech .local a soubory .conf zůstávají nedotčeny. Soubor fail2ban.conf obsahuje výchozí konfigurační profil. Výchozí nastavení vám poskytne rozumné a funkční nastavení, takže je to nejlepší místo, kde začít. Pokud chcete provést nějaké změny, je nejlepší je provést v samostatném souboru fail2ban.local, který je nadřazen souboru fail2ban.conf. Přejmenujte kopii souboru fail2ban.conf na fail2ban.local.
cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Pokud používáte CentOS nebo Fedoru, musíte změnit volbu backend v souboru jail.local z auto na systemd. V Debianu 8 nebo Ubuntu 16.04 to není nutné, přestože oba systémy používají také systemd.
{: .file-excerpt}
/etc/fail2ban/jail.local
: ~~~ conf
# "backend" určuje backend používaný k získání modifikace souborů.
# Dostupné volby jsou "pyinotify", "gamin", "polling", "systemd" a "auto".
# Tuto volbu lze v každém vězení také nadefinovat.
. . .
backend = systemd
~~~
V CentOS 7 nejsou ve výchozím nastavení povoleny žádné jaily. Chcete-li například povolit vězení démona SSH, odkomentujte následující řádky v souboru `jail.local:
{: .file-excerpt}
/etc/fail2ban/jail.local
: ~~~ conf
[sshd]
enabled = true
~~~
IP Whitelisting
Do řádku ignoreip přidejte všechny IP adresy, které chcete, aby Fail2ban ignoroval. Ve výchozím nastavení tento příkaz nezakáže localhost. Pokud často pracujete z jedné IP adresy, může být výhodné přidat ji do seznamu ignorovaných adres: Úryvek ze souboru: /etc/fail2ban/jail.local
[DEFAULT]
# "ignoreip" může být IP adresa, maska CIDR nebo hostitel DNS. Fail2ban
# nezakáže hostitele, který odpovídá adrese v tomto seznamu. Může se jednat o několik adres
# definovat pomocí oddělovače mezerami.
ignoreip = 127.0.0.1/8 123.45.67.89
Pokud si přejete vytvořit whitelist IP adres pouze pro určité jaily, lze to provést pomocí příkazu fail2ban-client. Nahraďte JAIL názvem souboru a 123.45.67.89 IP adresou, kterou chcete zařadit na whitelist:
fail2ban-client set JAIL addignoreip 123.45.67.89
Doba zákazu a počet opakování
Poté je třeba nastavit bantime, findtime a maxretry. To jsou hodnoty, které definují okolnosti a délku zákazu.
Úrivek souboru: /etc/fail2ban/jail.local
# "bantime" je počet sekund, po které je hostitel zabanován.
bantime = 600
# Hostitel je zakázán, pokud během posledních "findtime" sekund vygeneroval "maxretry".
findtime = 600
maxretry = 3
Konfigurace vězení
Kromě výše uvedené adresy základního nastavení obsahuje soubor jail.local také různé konfigurace vězení pro řadu běžných služeb, včetně SSH. Ve výchozím nastavení je povoleno pouze SSH. Průměrná konfigurace vězení bude vypadat následovně:
Úryvek souboru: /etc/fail2ban/jail.local
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
Pokud konfiguraci změníte, restartujte službu fail2ban :) Další informace o příkazech fail2ban-client naleznete na wiki Fail2ban.