GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nainstalovat a nakonfigurovat Fail2Ban na CentOS 8 a Fedora 33

Fail2Ban je nástroj pro analýzu protokolů, který skenuje soubory protokolů různých procesů a zakazuje adresy IP, které způsobují příliš mnoho selhání hesla. Když je nalezen pokus o přihlášení, Fail2Ban přidá do iptables nové pravidlo, které zablokuje IP adresu útočníka, ať už dočasně nebo trvale. Může vás na to také upozornit e-mailem.

Primárně se zaměřuje na detekci narušení prostřednictvím SSH, ale lze jej nakonfigurovat tak, aby fungoval s jakoukoli službou, která používá soubory protokolu.

Předpoklady

  1. Server Fedora 33 nebo CentOS 8 s uživatelem bez oprávnění root s právy sudo.

  2. Nainstalujte si Nano editor, protože to je to, co budeme používat.

    $ sudo dnf install nano -y
    

Instalovat Fail2Ban

Chcete-li nainstalovat Fail2Ban na CentOS 8, musíte nejprve nainstalovat úložiště EPEL Yum.

$ sudo dnf install epel-release

Fedora 33 se dodává s Fail2Ban.

Spusťte následující příkaz a nainstalujte Fail2Ban na Fedora 33 i CentOS 8.

$ sudo dnf install fail2ban

Po instalaci musíme službu povolit.

$ sudo systemctl enable fail2ban

Dále spusťte službu fail2ban.

$ sudo systemctl start fail2ban

Nyní můžete zkontrolovat stav služby a zjistit, zda funguje správně.

$ sudo systemctl status fail2ban
? fail2ban.service - Fail2Ban Service
     Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
     Active: active (running) since Mon 2020-11-02 21:15:59 UTC; 5s ago
       Docs: man:fail2ban(1)
    Process: 19031 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
   Main PID: 19032 (f2b/server)
      Tasks: 3 (limit: 1125)
     Memory: 11.0M
        CPU: 96ms
     CGroup: /system.slice/fail2ban.service
             ??19032 /usr/bin/python3 -s /usr/bin/fail2ban-server -xf start

Nov 02 21:15:59 howtoforge-tutorial systemd[1]: Starting Fail2Ban Service...
Nov 02 21:15:59 howtoforge-tutorial systemd[1]: Started Fail2Ban Service.
Nov 02 21:15:59 howtoforge-tutorial fail2ban-server[19032]: Server ready

Nakonfigurujte Fail2Ban

Služba Fail2Ban uchovává své konfigurační soubory v /etc/fail2ban adresář. Narazíte na soubor jail.conf v něm. Tento soubor je obvykle během upgradu balíčku přepsán, takže by neměl být upravován.

Místo toho by měly být všechny konfigurace provedeny v novém souboru, který budeme nazývat jail.local . Nastavení v těchto 2 souborech lze dále přepsat pomocí souborů z /etc/fail2ban/jail.d/ adresář.

Konfigurace se použijí v následujícím pořadí:

  1. /etc/fail2ban/jail.conf
  2. etc/fail2ban/jail.d/*.conf , Abecedně
  3. /etc/fail2ban/jail.local
  4. /etc/fail2ban/jail.d/*.local , Abecedně

jail.conf obsahuje [DEFAULT] sekce následovaná sekcemi pro jednotlivé služby. Kteroukoli z těchto sekcí lze přepsat jejich definováním v .local soubory.

Nakonfigurujte jail.local

Vytvoříme nový jail.local soubor.

$ sudo nano /etc/fail2ban/jail.local

Vložte do něj následující kód.

[DEFAULT]
# Ban hosts for one hour:
bantime = 3600

# Override backend=auto in /etc/fail2ban/jail.conf
backend = systemd

[sshd]
enabled = true

Stiskněte Ctrl + X zavřete editor a stiskněte Y po zobrazení výzvy k uložení souboru. Tím se nastaví nový výchozí bantime pro všechny služby změní backend na systemd a povolí `sshd vězení.

Chcete-li implementovat nové změny, restartujte Fail2ban.

$ sudo systemctl restart fail2ban

Nově použitá nastavení můžeme potvrdit pomocí fail2ban-client utility.

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

Můžeme také získat podrobný stav každého vězení konkrétně následujícím způsobem.

$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:

Další nastavení

jail.conf poskytuje mnohem více nastavení, která lze upravit pomocí /jail.local soubor. Dále si projdeme některá nastavení.

Adresa IP na seznamu povolených

Pomocí následujícího kódu můžete IP adresy zablokovat/ignorovat na seznam povolených/ignorovat

[DEFAULT]
ignoreip = 127.0.0.1/8 123.45.67.89

Pokud chcete přidat na seznam povolených IP adres pouze pro určité věznice, můžete tak učinit prostřednictvím fail2ban-client .

$ sudo fail2ban-client set JAIL addignoreip 123.45.67.89

Nahraďte JAIL ve výše uvedeném příkazu s názvem vězení, pro které chcete upravit nastavení.

Čas zákazu a částka opakování

Existují 3 nastavení, která mohou nastavit čas a počet opakování pro zákaz.

bantime - je doba v sekundách, po kterou je IP zakázána. Chcete-li nastavit trvalý zákaz, nastavte tuto hodnotu na záporné číslo. Výchozí hodnota je 10 minut nebo 600 sekund.

findtime - je doba mezi pokusy o přihlášení, než je nastaven zákaz. Tato hodnota je vždy počet sekund. Pokud je například Fail2ban nastaven tak, aby zablokoval IP adresu po 5 neúspěšných pokusech o přihlášení, těchto 5 pokusů musí proběhnout během nastavených 10 minut bantime limit.

maxretry - je počet opakování z jedné IP adresy před uložením zákazu. Výchozí hodnota je 3.

Chcete-li tato nastavení přizpůsobit, vložte následující řádky do \etc\fail2ban\jail.local soubor pod [DEFAULT] sekce.

bantime = 3600
findtime = 300
maxretry = 4

E-mailová upozornění

Chcete-li zasílat e-mailová upozornění, budete si muset nejprve nainstalovat Mail Transfer Agent (MTA). Pro náš účel nainstalujeme sendmail .

$ sudo dnf install sendmail

Chcete-li obdržet e-mail, přidejte následující kód do \etc\fail2ban\jail.local soubor pod [DEFAULT] sekce.

destemail = [email protected]
sendername = Fail2Ban
mta = sendmail
action = %(action_mw)s

destemail odkazuje na ID cílového e-mailu, což je ID, na které chcete dostávat e-maily, sendername odkazuje na jméno odesílatele, takže pro něj používáme Fail2Ban. mta odkazuje na používaného agenta pro přenos pošty, což je sendmail tady. Pokud používáte Postfix , pak použijte hodnotu mail pro mta proměnná.

action odkazuje na výchozí akci, která se provede po zjištění narušení. Výchozí hodnota je %(action_)s který pouze zakáže uživatele. %(action_mw)s zakáže a odešle e-mail se zprávou Whois; zatímco %(action_mwl)s zakáže a odešle e-mail se zprávou Whois spolu s informacemi z příslušných souborů protokolu. Toto lze také změnit na základě konkrétního vězení.

Nastavení pro jednotlivá vězení

Jak již víme, [DEFAULT] sekce platí pro všechny věznice, je čas podívat se na některá konkrétní vězení a jejich nastavení.

Vězení SSHD

Již jsme definovali [sshd] dříve v našem jail.local soubor. Pomocí následujícího kódu jej můžeme trochu více přizpůsobit.

[sshd]

enabled = true
port = ssh
logpath = %(ssh_log)s

V tomto případě používáme předdefinovanou proměnnou ssh pro port, který je výchozím portem SSH. Pokud používáte jiný port SSH, měli byste jej změnit. logpath odkazuje na umístění souboru protokolu, který se má monitorovat. %(ssh_log)s používá hodnotu definovanou ve standardním konfiguračním souboru Fail2ban (/etc/fail2ban/paths-common.conf ).

Vězení Nginx

Nginx má několik vězení, které lze použít ve Fail2Ban. Pokud je například opakovaně napadena část vašeho webu chráněná heslem, můžete použít sekci [nginx-http-auth] v jail.local soubor pro to.

[nginx-http-auth]
enabled = true

Můžeme také přidat sekci nazvanou [nginx-botsearch] k zastavení požadavků na složky nebo umístění, která neexistují.

[nginx-badbots]
enabled  = true

Existují také další věznice Nginx, ale nejsou předem nakonfigurované s Fail2Ban. Je třeba je vytvořit ručně a většina z nich může být založena na těch Apache, se kterými se dodává Fail2Ban.

Fail2Ban Filters a Failregexs

V konfiguraci Fail2Ban je další nastavení, které se nazývá filtry. Filtry rozhodují, zda řádek v souboru protokolu označuje neúspěšné ověření.

Hodnota filtru v konfiguračním souboru je odkaz na soubor umístěný v /etc/fail2ban/filter.d adresář s jeho .conf rozšíření odstraněno.

Chcete-li zjistit, jaké druhy filtrů jsou k dispozici, zkontrolujte adresář.

$ ls /etc/fail2ban/filter.d

Uvidíte v něm 2 soubory protokolu pro Nginx; nginx-badbots.conf a nginx-http-auth.conf .

Tyto konfigurační soubory používají k analýze souborů protokolu regulární výrazy (regex). Tyto se nazývají Failregexs. Můžete si přizpůsobit nebo vytvořit nové filtry napsáním vlastních regulárních výrazů. Těmito regulárními výrazy se nebudeme podrobně zabývat, protože jsou mimo rozsah tohoto tutoriálu.

Sledování protokolů Fail2Ban a brány firewall

Stav Fail2Ban můžete zkontrolovat pomocí systemctl jak bylo uvedeno dříve.

$ sudo systemctl status fail2ban

Chcete-li získat trochu více podrobností, můžete použít journalctl příkaz.

$ sudo journalctl -b -u fail2ban

Můžete také použít fail2ban-client pro dotaz na stav fail2ban-server nebo individuální vězení.

$ sudo fail2ban-client status
$ sudo fail2ban-client status jail_name

Můžete se také dotazovat na soubor protokolu Fail2ban.

$ sudo tail -F /var/log/fail2ban.log

Můžete vypsat aktuální pravidla nakonfigurovaná pro iptables.

$ sudo iptables -L

Můžete také uvést pravidla iptables ve formátu, který odráží příkazy nezbytné k aktivaci těchto pravidel.

$ sudo iptables -S

Závěr

Tímto končí náš tutoriál o instalaci a konfiguraci Fail2Ban na serveru založeném na Fedora 33 nebo CentOS 8. Pokud máte nějaké dotazy, napište je do komentářů níže.


Cent OS
  1. Jak nainstalovat a nakonfigurovat Redis 6 na Fedoře 34

  2. Jak nainstalovat a nakonfigurovat Fail2ban na CentOS 8?

  3. Jak nainstalovat a nakonfigurovat CyberPanel na CentOS 8

  1. Jak nainstalovat a nakonfigurovat Nginx na CentOS 7

  2. Jak nainstalovat a nakonfigurovat Fail2ban na CentOS 8

  3. Jak nainstalovat a nakonfigurovat Redis na CentOS 7

  1. Jak nainstalovat a nakonfigurovat GitLab na CentOS 7

  2. Jak nainstalovat a nakonfigurovat Redmine na CentOS 7

  3. Jak nainstalovat a nakonfigurovat Redis na CentOS 8