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

Jak používat Fail2ban k zabezpečení SSH na CentOS 7

Fail2ban je nejnovější bezpečnostní nástroj pro zabezpečení vašeho serveru před útokem hrubou silou. Automaticky chrání server před hackery. Funguje tak, že monitoruje prostřednictvím souborů protokolu a reaguje na problematické akce, jako jsou opakované neúspěšné pokusy o přihlášení. Proces spočívá v přidání nového pravidla do řetězce brány firewall a odeslání upozornění e-mailem. Fail2ban můžete snadno nainstalovat a nakonfigurovat pomocí tohoto jednoduchého dokumentu.

Než přistoupíme k instalaci, musíme se ujistit, že náš systém splňuje všechny softwarové požadavky pro kompilaci a instalaci aplikace. A také by měl být nakonfigurován se statickou IP adresou. V prvním kroku aktualizujte svá systémová úložiště a softwarové balíčky vydáním níže uvedených příkazů na CentOS.

# yum update

Instalace Fail2ban na CentOS

Chcete-li nainstalovat Fail2Ban na server CentOS 7, budeme muset nejprve nainstalovat úložiště EPEL (Extra Packages for Enterprise Linux). EPEL obsahuje další balíčky pro všechny verze CentOS. Můžeme spustit tento následující příkaz z kořenového adresáře a nainstalovat tento balíček.

# yum install epel-release -y
# yum install fail2ban fail2ban-systemd

Fail2ban vyžaduje určité závislosti. Automaticky je stáhne z úložiště.

fail2ban-firewalld
fail2ban-sendmail
fail2ban-server
systemd-python

Konfigurace nastavení pro Fail2ban na CentOS

Výchozí konfigurační soubor fail2ban se nachází na /etc/fail2ban/jail.conf
Všechny konfigurace fail2ban je třeba provést v místním souboru. Musíte zkopírovat /etc/fail2ban/jail.conf do /etc/fail2ban/jail.local

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

Po zkopírování budeme muset nakonfigurovat a přizpůsobit software pomocí jail.local konfigurační soubor. Soubor jail.local má přednost před souborem jail.conf a používá se k zabezpečení aktualizace vlastní konfigurace.

Hlavní konfigurace ve výchozím nastavení jail.local

Kód souboru se může skládat z mnoha řádků kódů, které se spouštějí k whitelistu nebo zabanování jedné nebo více IP adres, nastavení doby trvání bantime, počtu pokusů o selhání atd. Pro aktivaci služby můžete nastavit povolený stav od false do true. Potřebujete znát některé termíny používané v konfiguračním souboru.

  • ignoreip :Může to být adresa IP, maska ​​CIDR nebo hostitel DNS. Přidáním do tohoto seznamu můžete libovolnou IP adresu přidat na seznam povolených. Pomocí oddělovače mezer lze definovat několik adres.
  • bantime :Je to počet sekund, po které je hostitel zakázán.
  • Findtime :Je to parametr, který se používá ke kontrole, zda hostitel musí být zakázán nebo ne. Když hostitel vygeneruje maxretry ve svém posledním vyhledávacím čase, je zakázán.
  • Maxretry :Je to parametr používaný k nastavení limitu pro počet opakování hostitelem, při překročení tohoto limitu je hostitel zakázán.

Na serveru CentOS 7 budete muset změnit možnost backendu v jail.local z auto na systemd.

# "backend" specifies the backend used to get files modification.
# Available options are "pyinotify", "gamin", "polling", "systemd" and "auto".
# This option can be overridden in each jail as well.
#
# pyinotify: requires pyinotify (a file alteration monitor) to be installed.
# If pyinotify is not installed, Fail2ban will use auto.
# gamin: requires Gamin (a file alteration monitor) to be installed.
# If Gamin is not installed, Fail2ban will use auto.
# polling: uses a polling algorithm which does not require external libraries.
# systemd: uses systemd python library to access the systemd journal.
# Specifying "logpath" is not valid for this backend.
# See "journalmatch" in the jails associated filter config
# auto: will try to use the following backends, in order:
# pyinotify, gamin, polling.
#
# Note: if systemd backend is chosen as the default but you enable a jail
# for which logs are present only in its own log files, specify some other
# backend for that jail (e.g. polling) and provide empty value for
# journalmatch. See https://github.com/fail2ban/fail2ban/issues/959#issuecomment-74901200
backend = systemd

Konfigurace fail2ban pro ochranu SSH

Ve výchozím nastavení nejsou v CentOS 7 povoleny žádné vězení. Chcete-li povolit ochranu SSH, musíte odkomentovat následující řádky v jail.local soubor, jak je uvedeno níže:

# JAILS
# SSH servers
#

[sshd]

enabled =true# Chcete-li použít agresivnější filtr sshd (včetně sshd-ddos failregex):#filter =sshd-aggressiveport =sshlogpath =%(sshd_log)sbackend =%(sshd_backend)s

Parametr enabled je nastaven na hodnotu true, abychom poskytli ochranu, pro deaktivaci ochrany jej můžeme nastavit na hodnotu false. Parametr filtru kontroluje konfigurační soubor fail2ban sshd, který se nachází v cestě /etc/fail2ban/filter.d/sshd.conf .

Parametr action se používá k odvození IP adresy, kterou je třeba zakázat pomocí filtru dostupného z /etc/fail2ban/action.d/firewallcmd-ipset.conf.

  • Port :Tento parametr lze změnit na novou hodnotu, například port=2222, pokud jste přesunuli port na 2222 namísto výchozího. Pro výchozí port 22 není nutné tento parametr měnit.
  • Logpath :Poskytuje cestu, kde je uložen soubor protokolu. Tento soubor protokolu je zkontrolován Fail2Ban.
  • Maxretry :Používá se k nastavení maximálního limitu pro neúspěšné přihlášení.
  • Bantime :Používá se k nastavení doby trvání v sekundách, na kterou musí být hostitel zakázán.
  • filter :Název souboru umístěného v /etc/fail2ban/filter.d který obsahuje informace failregex používané k náležité analýze souborů protokolu.

Povolení služby Fail2ban

Pro spuštění tohoto softwaru musíte povolit a spustit službu CentOS firewalld.

# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
# systemctl start firewalld
# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2018-01-14 10:57:34 UTC; 9s ago
Docs: man:firewalld(1)
Main PID: 19493 (firewalld)
CGroup: /system.slice/firewalld.service
└─19493 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Now we can enable and start our fail2ban service by executing these commands below:

#systemctl enable fail2ban
#systemctl start fail2ban

V případě jakýchkoli změn konfigurace restartujte službu a přidejte tyto změny pomocí příkazu níže:

#systemctl restart fail2ban

Použijte klienta Fail2ban

Fail2ban poskytuje příkaz fail2ban-client které lze použít ke spuštění Fail2ban z příkazového řádku. Podívejte se na různé možnosti příkazového řádku níže:

fail2ban-client COMMAND
  • start :spustí server a vězení
  • reload :znovu načte konfiguraci
  • reload <JAIL> :znovu načte vězení
  • stop :zastaví všechna vězení a ukončí server
  • status :získá aktuální stav serveru
  • ping :testuje, zda je server naživu
  • help :vrátit tento výstup
  • version :vrátí verzi serveru

Chcete-li například zkontrolovat, zda běží Fail2Ban a zda je povoleno vězení SSHd, spusťte:

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

Pro více informací o tomto příkazu můžete spustit man fail2ban-client .

Sledování neúspěšných pokusů o přihlášení

Pomocí následujícího příkazu můžeme zkontrolovat protokol SSH a zkontrolovat, zda nedošlo k nějakým neúspěšným pokusům o přihlášení k serveru přes port ssh. Můžeme získat seznam neúspěšných pokusů o heslo uživatele root z různých IP adres podobných tomuto výstupu.

Jan 14 05:08:58 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:00 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:02 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:04 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:06 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:08 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2

Seznam zakázaných IP adres, které dosáhly maximálního počtu neúspěšných pokusů, můžete zobrazit příkazem níže:

#iptables -L -n

Zrušení zákazu IP adresy

Aby bylo možné odstranit IP adresu ze seznamu zakázaných, je parametr IPADDRESS nastaven na příslušnou IP, která vyžaduje whitelisting. Název "sshd" je název vězení, v tomto případě vězení "sshd", které jsme nakonfigurovali výše. Pro totéž můžeme spustit následující příkaz.

#fail2ban-client set sshd unbanip IPADDR

Koneckonců

Fail2ban funguje na pozadí a nepřetržitě prohledává soubory protokolu, zda neobsahují neobvyklé přihlašovací vzory a pokusy o narušení bezpečnosti. Tento článek vám poskytuje krátký úvod do tohoto tématu, více informací o tom můžete získat na této wiki Fail2ban. Doufám, že je to pro vás užitečné. Uveřejněte prosím své cenné komentáře a návrhy.


Cent OS
  1. Jak nainstalovat Fail2Ban na CentOS 7

  2. Jak používat sůl na Centos 8

  3. Jak změnit port SSH v CentOS

  1. Jak nastavit klíče SSH na CentOS 8

  2. Jak nastavit klíče SSH na CentOS 8

  3. Jak chránit Apache a SSH pomocí Fail2Ban na CentOS 8

  1. Jak nastavit klíče SSH na CentOS 7

  2. Jak nainstalovat a používat Curl na CentOS 8

  3. Jak nainstalovat a používat Terraform na CentOS 8