GNU/Linux >> Znalost Linux >  >> Linux

Zabezpečte svůj Linuxový server pomocí Fail2Ban [Příručka pro začátečníky]

Co je Fail2Ban?

Pokud jste povolili SSH, zkontrolujte prosím historii přihlášení vašeho linuxového serveru. Budete překvapeni, když uvidíte obrovské množství IP adres, které se snaží přihlásit k vašemu serveru přes SSH.

Pokud nemáte žádný mechanismus, který by tyto pokusy o přihlášení odradil, váš systém je náchylný k útoku bruteforce. Skript/bot se bude v zásadě neustále pokoušet o připojení SSH k vašemu systému tím, že bude zkoušet různé kombinace uživatelského jména a hesla.

Zde přichází na scénu nástroj jako Fail2Ban. Fail2Ban je bezplatný software s otevřeným zdrojovým kódem, který pomáhá zabezpečit váš server Linux před škodlivými přihlášeními. Fail2Ban zakáže IP (na určitou dobu), pokud dojde k určitému počtu neúspěšných pokusů o přihlášení.

Fail2Ban funguje hned se základním nastavením, ale je také extrémně konfigurovatelný. Můžete jej vyladit podle svých představ a vytvářet filtry a pravidla podle svých potřeb.

Zní to zajímavě? Proč neotestovat Fail2Ban? Přečtěte si a sledujte zbytek článku a sami vyzkoušejte Fail2Ban.

Instalace Fail2Ban v systému Linux

Popularitu Fail2Ban můžete odhadnout ze skutečnosti, že je k dispozici v oficiálních repozitářích všech hlavních distribucí Linuxu. Díky tomu je instalace Fail2Ban jednoduchým úkolem.

Instalovat Fail2Ban na CentOS a Red Hat

Abyste mohli nainstalovat nový software do vašeho systému, musíte být uživatelem root nebo sudo.

Musíte se ujistit, že váš systém je aktuální a že máte nainstalované úložiště EPEL.

sudo yum update && sudo yum install epel-release

Nyní můžete nainstalovat Fail2Ban pomocí následujícího příkazu:

sudo yum install fail2ban

Instalovat Fail2Ban na Ubuntu a Debian

Nejprve se ujistěte, že je váš systém aktualizován:

sudo apt update && sudo apt upgrade -y

Nyní nainstalujte Fail2Ban pomocí tohoto příkazu:

sudo apt install fail2ban

Vysvětlení konfiguračního souboru Fail2Ban

Ve Fail2Ban jsou dva hlavní konfigurační soubory:/etc/fail2ban/fail2ban.conf a /etc/fail2ban/jail.conf. Dovolte mi vysvětlit, co dělají.

/etc/fail2ban/fail2ban.conf :Toto je konfigurační soubor pro provozní nastavení démona Fail2Ban. Zde jsou definována nastavení jako loglevel, log file, socket a pid soubor.

/etc/fail2ban/jail.conf :Tady se odehrává veškerá magie. Toto je soubor, ve kterém můžete nakonfigurovat věci, jako je výchozí čas zákazu, počet opakování před zabanováním IP, zařazení IP na seznam povolených IP, informace o odesílání pošty atd. V podstatě ovládáte chování Fail2Ban z tohoto souboru.

Nyní, než půjdete změnit tyto soubory, Fail2Ban doporučuje vytvořit kopii se souborem .local pro tyto soubory conf. Je to proto, že výchozí soubory conf lze v aktualizacích přepsat a ztratíte všechna svá nastavení.

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

Nyní pojďme pochopit soubor jail.conf. Pokud ke čtení tohoto velkého souboru použijete příkaz less, může se to zdát docela matoucí. Soubor conf se snaží vše vysvětlit příliš mnoha komentáři. Dovolte mi, abych vám to zjednodušil.

Soubor jail.conf je rozdělen na služby. Existuje sekce [Výchozí] a vztahuje se na všechny služby. A pak můžete vidět různé služby s jejich příslušným nastavením (pokud existují). Všechny tyto služby jsou v závorkách. Uvidíte sekce jako [sshd], [apache-auth], [squid] atd.

Pokud komentáře odstraním, výchozí sekce vypadá takto:

[DEFAULT]
ignorecommand =
bantime = 10m
findtime = 10m
maxretry = 5
backend = auto
usedns = warn
logencoding = auto
enabled = false
mode = normal
filter = %(name)s[mode=%(mode)s]
destemail = [email protected]
sender = [email protected]
mta = sendmail
protocol = tcp
chain =
port = 0:65535
fail2ban_agent = Fail2Ban/%(fail2ban_version)s
banaction = iptables-multiport
banaction_allports = iptables-allports
action_abuseipdb = abuseipdb
action = %(action_)s

Dovolte mi, abych vám řekl význam některých těchto parametrů.

  • bantime:Nastavte délku zákazu. Výchozí hodnota je 10 minut.
  • findtime:Okno, ve kterém bude provedena akce na IP. Výchozí hodnota je 10 minut. Předpokládejme, že se určitá IP v 10:30 pokusila o špatné přihlášení. Pokud stejná IP dosáhne maximálního počtu opakování před 10:40, bude zakázána. V opačném případě bude další neúspěšný pokus po 10:40 započítán jako první neúspěšný pokus.
  • maxretry:Počet neúspěšných opakování před provedením akce
  • usedns:Nastavení „upozornit“ se pokouší použít reverzní DNS k vyhledání názvu hostitele a zakázat použití názvu hostitele. Nastavením na no zakážete adresy IP, nikoli název hostitele.
  • destemail:E-mailová adresa, na kterou se budou zasílat upozornění (je třeba nakonfigurovat)
  • odesílatel:Jméno odesílatele v e-mailu s upozorněním
  • mta:Mail Transfer Agent používaný pro e-mail s upozorněním
  • banaction:Tento parametr používá soubor /etc/fail2ban/action.d/iptables-multiport.conf k nastavení akce po maximálním počtu neúspěšných opakování
  • protokol:Typ provozu, který bude po zákazu zrušen

Pokud chcete provést nějaké změny pro jakékoli vězení (nebo pro všechny věznice), jako je maximální počet opakování, doba zákazu, čas hledání atd., měli byste upravit soubor jail.local.

Jak používat Fail2Ban k zabezpečení linuxového serveru

Dovolte mi, abych vám ukázal některé způsoby, jak můžete pomocí Fail2Ban posílit zabezpečení Linuxu.

Pamatujte, že ke spuštění příkazů fail2ban musíte být uživatel root nebo mít přístup sudo.

Povolte na svém serveru Fail2Ban a zkontrolujte všechna běžící vězení

Ke spuštění a povolení Fail2Ban na vašem linuxovém serveru můžete použít příkazy systemd:

systemctl start fail2ban
systemctl enable fail2ban

Jakmile je Fail2Ban povolen, můžete vidět stav a aktivní vězení pomocí příkazu fail2ban-client:

fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd

Pokud by vás to zajímalo, sshd jail je ve výchozím nastavení povolen.

Viz protokol Fail2Ban

Protokol Fail2Ban se nachází na /var/log/fail2ban.log. Soubory protokolu jsou v následujícím formátu:

2019-03-25 07:09:08,004 fail2ban.filter [25630]: INFO [sshd] Found 139.59.69.76 – 2019-03-25 07:09:07
2019-03-25 07:09:36,756 fail2ban.filter [25630]: INFO [sshd] Found 159.89.205.213 – 2019-03-25 07:09:36
2019-03-25 07:09:36,757 fail2ban.filter [25630]: INFO [sshd] Found 159.89.205.213 – 2019-03-25 07:09:36
2019-03-25 07:09:36,774 fail2ban.actions [25630]: NOTICE [sshd] Ban 159.89.205.213
2019-03-25 07:09:36,956 fail2ban.filter [25630]: INFO [sshd] Found 182.70.253.202 – 2019-03-25 07:09:36
2019-03-25 07:09:36,957 fail2ban.filter [25630]: INFO [sshd] Found 182.70.253.202 – 2019-03-25 07:09:36
2019-03-25 07:09:36,981 fail2ban.actions [25630]: NOTICE [sshd] Ban 182.70.253.202
2019-03-25 07:09:37,247 fail2ban.filter [25630]: INFO [sshd] Found 112.64.214.90 – 2019-03-25 07:09:37
2019-03-25 07:09:37,248 fail2ban.filter [25630]: INFO [sshd] Found 112.64.214.90 – 2019-03-25 07:09:37
2019-03-25 07:09:37,589 fail2ban.actions [25630]: NOTICE [sshd] Ban 112.64.214.90

Můžete vidět, že identifikuje IP adresy a zakáže je, když překročí práh maximálního opakování.

Zobrazit zakázané IP adresy od Fail2Ban

Jedním ze způsobů je zkontrolovat stav určitého vězení. K tomuto účelu můžete použít klienta Fail2Ban.

fail2ban-client status <jail_name>

Pokud například musíte vidět všechna špatná přihlášení k ssh zakázaná službou Fail2Ban, můžete ji použít následujícím způsobem. Výstup bude zobrazovat celkový počet neúspěšných pokusů a celkový počet zakázaných IP adres.

[email protected]:~# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 14
| |- Total failed: 715
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 7
|- Total banned: 17
`- Banned IP list: 177.47.115.67 118.130.133.110 68.183.62.73 202.65.154.110 106.12.102.114 61.184.247.3 218.92.1.150

Systém, který se pokouší přihlásit přes SSH z neúspěšného přihlášení, by měl dostat chybu jako je tato

ssh: connect to host 93.233.73.133 port 22: Connection refused

Jak trvale zakázat IP pomocí Fail2Ban

Nyní víte, že zákaz uvalený na IP ze strany Fail2Ban je dočasný. Ve výchozím nastavení je to na 10 minut a útočník se může pokusit znovu přihlásit po 10 minutách.

To představuje bezpečnostní riziko, protože útočníci by mohli použít skript, který se pokusí přihlásit po intervalu 10 minut.

Jak tedy zakážete trvalý zákaz pomocí Fail2Ban? Na to neexistuje jednoznačná odpověď.

Počínaje Fail2Ban verze 0.11 bude doba zákazu vypočítána automaticky a doba zákazu trvalých IP adres se exponenciálně prodlouží.

Ale pokud zkontrolujete svou verzi Fail2Ban, pravděpodobně používáte verzi 0.10.

fail2ban-server --version 
Fail2Ban v0.10.2
Copyright (c) 2004-2008 Cyril Jaquier, 2008- Fail2Ban Contributors
Copyright of modifications held by their respective authors.
Licensed under the GNU General Public License v2 (GPL).

V dřívějších verzích jste mohli použít záporný bantime (bantime =-1), což by odpovídalo trvalému banu, ale pokud vyzkoušíte tuto metodu, pravděpodobně uvidíte chybu jako 'Spouštění fail2ban:ERROR NOK:(' obraz disku databáze je chybně vytvořen',)'.

Jedním ne tak čistým řešením by bylo zvýšit bantime na něco jako 1 den, 1 týden, 1 měsíc nebo 1 rok. To by mohlo problém obejít, dokud nebude ve vašem systému dostupná nová verze.

Jak zrušit zákaz IP blokované pomocí Fail2Ban

Nejprve zkontrolujte, zda je IP blokována nebo ne. Protože Fail2Ban funguje na iptables, můžete se podívat do iptable a zobrazit IP adresy, které váš server zakazuje:

iptables -n -L

Pokud je zakázáno příliš mnoho IP, možná budete muset použít příkaz grep.

Pokud ve výstupu najdete zadanou IP adresu, je zakázána:

Takže dalším krokem je zjistit, které „vězení“ zakazuje uvedenou IP. Zde budete muset použít příkaz Grep s protokoly fail2ban.

Jak můžete vidět ve výstupu níže, IP je zakázána vězením sshd.

[email protected]:~# grep -E ‘Ban.*61.184.247.3’ /var/log/fail2ban.log
2019-03-14 13:09:25,029 fail2ban.actions [25630]: NOTICE [sshd] Ban 61.184.247.3
2019-03-14 13:52:56,745 fail2ban.actions [25630]: NOTICE [sshd] Ban 61.184.247.3

Nyní, když znáte název vězení blokujícího IP, můžete IP zrušit pomocí fail2ban-client:

fail2ban-client set <jail_name> unbanip <ip_address>

Jak přidat IP na seznam povolených ve Fail2Ban

Nebude dobré, když se zakážete, že? Chcete-li ignorovat blokování IP adresy aktuální relací Fail2Ban, můžete IP adresu uvést na bílou listinu pomocí příkazu, jako je tento:

fail2ban-client set <JAIL_NAME> addignoreip <IP_Address>

Svou IP adresu v Linuxu najdete snadno. V mém případě to bylo

sudo fail2ban-client set sshd addignoreip 203.93.83.113
These IP addresses/networks are ignored:
`- 203.93.83.113

Pokud chcete IP adresu trvale přidat na seznam povolených, měli byste upravit konfigurační soubor vězení. Přejděte do uvedené sekce vězení a přidejte řádek ignoreip takto:

ignoreip = 127.0.0.1/8 <IP_TO_BE_WHITELISTED>

Pokud chcete přidat IP na seznam povolených IP ze všech vězení ve vašem systému, bylo by lepší upravit soubor /etc/fail2ban/jail.local a přidat řádek pod sekci DEFAULT, jako jsme viděli výše.

Aby se tato změna projevila, budete muset restartovat Fail2Ban.

Jak zobrazit seznam povolených IP adres ve vězení

Pomocí tohoto příkazu můžete zobrazit všechny adresy IP zařazené na bílou listinu vězení:

fail2ban-client get <JAIL_NAME> ignoreip

Mělo by ukazovat všechny IP adresy, které Fail2Ban pro dané vězení ignoruje:

sudo fail2ban-client set sshd addignoreip 203.93.83.113
These IP addresses/networks are ignored:
|- 127.0.0.0/8
|- ::1
`- 203.93.83.113

Jak odstranit IP z Fail2Ban whitelistu

Pokud odstraňujete IP adresu z určitého vězeňského whitelistu, můžete použít tento příkaz:

fail2ban-client set <JAIL_NAME> delignoreip <IP_Address>

Pokud chcete IP adresu trvale odstranit, měli byste upravit soubor /etc/fail2ban/jail.local.

Co jiného?

S Fail2Ban můžete dělat mnohem více věcí. Tato příručka vám poskytne základy, jak začít s Fail2Ban. Nedotkl jsem se témat, jako jsou akce, e-mailová upozornění, filtry atd.

Jakmile se seznámíte se základy Fail2Ban, můžete je začít zkoumat více. Prozatím si s tím hrajte a přidejte další vrstvu zabezpečení k SSH na vašem linuxovém serveru.


Linux
  1. Zobrazte síťová připojení svého linuxového serveru pomocí netstat

  2. Jak zabezpečit své e-mailové služby Linux pomocí SSL/TLS

  3. Vytvořte si cloudové úložiště pomocí ownCloud 6 na Linux Mint 17

  1. Zabezpečení Linuxu:Chraňte své systémy pomocí fail2ban

  2. 6 nezbytných nástrojů s otevřeným zdrojovým kódem pro zabezpečení vašeho linuxového serveru

  3. 10 tipů, jak zabezpečit webový server Apache v systému UNIX / Linux

  1. Zabezpečte své kontejnery pomocí SELinux

  2. Jak nainstalovat Nextcloud s Dockerem na váš Linux Server

  3. Jak zabezpečit server Ubuntu pomocí brány firewall CSF