Vyhledávání na webu

Jak používat Fail2ban k zabezpečení vašeho linuxového serveru


Zlepšení zabezpečení vašeho serveru by mělo být jednou z vašich nejvyšších priorit, pokud jde o správu linuxového serveru. Při kontrole protokolů vašeho serveru můžete často najít různé pokusy o přihlášení hrubou silou, záplavy webu, vyhledávání zneužití a mnoho dalších.

Pomocí softwaru pro prevenci narušení, jako je fail2ban, můžete prozkoumat protokoly serveru a přidat další pravidla iptables pro blokování problematických adres IP.

Přečtěte si také: Jak nainstalovat Fail2Ban k ochraně SSH na CentOS/RHEL 8

Tento tutoriál vám ukáže, jak nainstalovat fail2ban a nastavit základní konfiguraci pro ochranu vašeho systému Linux před útoky hrubou silou.

Požadavky

Fail2ban je napsán v pythonu a jediným požadavkem je mít nainstalovaný python:

  • Fail2ban větev 0.9.x vyžaduje Python >=2.6 nebo Python >=3.2
  • Fail2ban větev 0.8.x vyžaduje Python >=2.4
  • Kořenový přístup k vašemu systému
  • Volitelně iptables nebo showewall a sendmail

Jak nainstalovat Fail2Ban v systémech Linux

Instalace fail2ban je poměrně snadná:

Nainstalujte Fail2Ban na CentOS/RHEL

Nejprve aktualizujte své balíčky, povolte úložiště Epel a nainstalujte fail2ban, jak je znázorněno.

yum update
yum install epel-release
yum install fail2ban

Nainstalujte Fail2Ban na Debian/Ubuntu

Nejprve aktualizujte své balíčky a nainstalujte fail2ban podle obrázku.

apt-get update && apt-get upgrade -y
apt-get install fail2ban

Volitelně, pokud si přejete povolit mailovou podporu (pro mailová upozornění), můžete nainstalovat sendmail.

yum install sendmail                   [On CentOS/RHEL]
apt-get install sendmail-bin sendmail  [On Debian/Ubuntu]

Chcete-li povolit fail2ban a sendmail, použijte následující příkazy:

systemctl start fail2ban
systemctl enable fail2ban
systemctl start sendmail
systemctl enable sendmail

Jak nakonfigurovat Fail2ban v systémech Linux

Ve výchozím nastavení fail2ban používá soubory .conf umístěné v /etc/fail2ban/, které se čtou jako první. Ty však mohou být přepsány soubory .local umístěnými ve stejném adresáři.

Soubor .local tedy nemusí obsahovat všechna nastavení ze souboru .conf, ale pouze ta, která chcete přepsat. Změny by měly být provedeny v souborech .local, nikoli v souborech .conf. To zabrání přepsání změn při upgradu paketu fail2ban.

Pro účely tohoto tutoriálu zkopírujeme existující soubor fail2ban.conf do fail2ban.local.

cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local

Nyní můžete provést změny v souboru .local pomocí vašeho oblíbeného textového editoru. Hodnoty, které můžete upravit, jsou:

  • úroveň protokolu – jedná se o úroveň podrobností, která se má protokolovat. Možné možnosti jsou:

    • KRITICKÝ
    • CHYBA
    • VAROVÁNÍ
    • OZNÁMENÍ
    • INFO
    • LADIT
  • logtarget – protokolování akcí do konkrétního souboru. Výchozí hodnota je /var/log/fail2ban.log. Můžete to však změnit na:

    • STDOUT – výstup libovolných dat
    • STDERR – výstup všech chyb
    • SYSLOG – protokolování založené na zprávách
    • Soubor – výstup do souboru
  • socket – adresář, do kterého bude umístěn soubor soketu.
  • pidfile – umístění souboru pidfile.

Nakonfigurujte Fail2ban jail.local

Jedním z nejdůležitějších souborů ve fail2ban je jail.conf, který definuje vaše vězení. Zde definujete služby, pro které by měl být fail2ban povolen.

Jak jsme již zmínili dříve, soubory .conf mohou být změněny během upgradu, proto byste měli vytvořit soubor jail.local, kde můžete použít své úpravy.

Dalším způsobem, jak toho dosáhnout, je jednoduše zkopírovat soubor .conf pomocí:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

V případě, že používáte CentOS nebo Fedora, budete muset změnit backend v jail.local z „auto“ na „systemd“.

Pokud používáte Ubuntu/Debian, není třeba tuto úpravu provádět, i když také používají systemd.

Vězení ve výchozím nastavení povolí SSH pro Debian a Ubuntu, ale ne pro CentOS. Pokud jej chcete povolit, jednoduše změňte následující řádek v /etc/fail2ban/jail.local:

[sshd]
enabled = true
Časy zákazu a opakování

Můžete nakonfigurovat okolnost, po které je adresa IP zablokována. Za tímto účelem fail2ban používá bantime, findtime a maxretry.

  • bantime – počet sekund, po které zůstane IP adresa zakázaná (výchozí 10 min).
  • findtime – doba mezi pokusy o přihlášení, než je hostitel zablokován. (výchozí 10 min). Jinými slovy, pokud je fail2ban nastaven tak, aby blokoval IP adresu po 3 neúspěšných pokusech o přihlášení, tyto 3 pokusy musí být provedeny během doby hledání (10< min).
  • maxretry – počet pokusů, které je třeba provést před uplatněním zákazu. (výchozí 3).
Seznam povolených IP adres

Samozřejmě budete chtít přidat určité IP adresy na seznam povolených. Chcete-li nakonfigurovat takové adresy IP, otevřete /etc/fail2ban/jail.local ve svém oblíbeném textovém editoru a odkomentujte následující řádek:

ignoreip = 127.0.0.1/8  ::1

Poté můžete zadat adresy IP, které chcete ignorovat. IP adresy by měly být odděleny mezerou nebo čárkou.

Upozornění e-mailem

Pokud si přejete dostávat e-mailová upozornění na událost, budete muset nakonfigurovat následující nastavení v /etc/fail2ban/jail.local:

  • destemail – e-mailová adresa, na kterou obdržíte upozornění.
  • Jméno odesílatele – odesílatele, kterého uvidíte při příjmu zprávy.
  • odesílatel – e-mailová adresa, ze které bude fail2ban odesílat e-maily.

Výchozí mta (agent přenosu pošty) je nastaven na sendmail.

Chcete-li dostávat e-mailová upozornění, budete také muset změnit nastavení „akce“ z:

Action = %(action_)s

K jednomu z těchto:

action = %(action_mw)s
action = %(action_mwl)s
  • %(action_mw)s – zakáže hostitele a odešle e-mail s hlášením whois.
  • %(action_mwl)s – zakáže hostitele, poskytne informace whois a všechny relevantní informace ze souboru protokolu.

Další konfigurace vězení Fail2ban

Zatím jsme se podívali na základní možnosti konfigurace. Pokud si přejete nakonfigurovat vězení, budete ho muset povolit v souboru jail.local. Syntaxe je docela jednoduchá:

[jail_to_enable]
. . .
enabled = true

Kde byste měli nahradit jail_to_enable skutečným vězením, například “sshd “. V souboru jail.local budou pro službu ssh předdefinovány následující hodnoty:

[sshd]

port = ssh
logpath = %(sshd_log)s

Můžete povolit filtr, který pomůže identifikovat, zda je řádek v protokolu chybný. Hodnota filtru je ve skutečnosti odkazem na soubor s názvem služby následovaným .conf. Například: /etc/fail2ban/filter.d/sshd.conf.

Syntaxe je:

filter = service

Například:

filter = sshd

Stávající filtry si můžete prohlédnout v následujícím adresáři: /etc/fail2ban/filter.d/.

Použijte fail2ban-client

Fail2ban přichází s klientem, který lze použít pro kontrolu a změnu aktuální konfigurace. Vzhledem k tomu, že poskytuje mnoho možností, můžete si její příručku projít pomocí:

man fail2ban-client 

Zde uvidíte některé ze základních příkazů, které můžete použít. Chcete-li zkontrolovat aktuální stav fail2ban nebo konkrétního vězení, můžete použít:

fail2ban-client status

Výsledek bude vypadat podobně:

Pro individuální vězení můžete spustit:

fail2ban-client status sshd

Na níže uvedeném snímku obrazovky uvidíte, že jsem záměrně selhal při několika přihlášeních, takže fail2ban může zablokovat IP adresu, ze které jsem se snažil připojit:

Závěr

Fail2ban je vynikající, dobře zdokumentovaný systém prevence narušení, který poskytuje extra zabezpečení vašeho systému Linux. Vyžaduje nějaký čas, než si zvyknete na jeho nastavení a syntaxi, ale jakmile se s ním seznámíte, můžete jeho pravidla bez obav měnit a rozšiřovat.