A Fail2Ban konfigurálása Linux rendszeren az SSH, Apache, MySQL, Exim védelmére

fail2ban lehetővé teszi a hozzáférést a kiszolgálóhoz vagy a futó szolgáltatásokhoz a hozzáférési naplók és kapcsolatok elemzése alapján. A Fail2Ban automatikusan létrehozhat tűzfalszabályokat az adott IP-címek blokkolására, ha az ezen IP-vel kapcsolatos tevékenységeket gyanúsnak találják. Tehát a Fail2Ban meg tudja védeni a szervert a jelszó kitalálásától az SSH, DDoS támadások révén, kizsákmányolási kísérleteket kihasználni és tiltott műveleteket végrehajtani..

Bármely kiszolgáló szolgáltatás, amelynek portjai nyitottak a külvilág számára, potenciálisan sérülékenyek lehetnek. Egyes szolgáltatások portjait bezárhatjuk, de nem mindegyik képes ezt megtenni. Például, ha azt szeretné, hogy az SMTP levelezőszolgáltatás teljes mértékben működjön, akkor nem tilthatja le, vagy nem blokkolhatja a tűzfalon lévő portot, és időnként láthatja a naplókban a fiókhoz tartozó jelszó kiválasztására tett kísérletet. Ez más szolgáltatásokkal történik..

Általában az összes szerveren kívülről bezárom az SSH hozzáférést Statikus IP-címemmel vagy OpenVPN-kapcsolaton keresztül kapcsolódok a kiszolgálóimhoz. De ez nem mindig lehetséges. A normál portok cseréje mentésre vagy konfigurálásra kerül a szerver kiszolgálón fail2ban. Ebben a példában bemutatjuk, hogyan telepítheti és tudja használni a fail2ban fájlt a CentOS-on, de ezt az utasítást más Linux disztribúciókra is felhasználhatja..

Tartalom:

  • A Fail2Ban telepítése és kezdeti beállítása a CentOS 8/7-ben
  • A Fail2Ban használata az SSH védelmére a jelszó vizsgálatától
  • Naplózza a Fail2Ban fájlt
  • Apache biztosítása a Fail2Ban segítségével
  • A Fail2Ban és Nginx csomagok konfigurálása
  • MySQL védelme a Fail2Ban segítségével
  • Fail2Ban Exim szabályok
  • Fail2Ban IP engedélyezési lista, IP feloldása

A Fail2Ban telepítése és kezdeti beállítása a CentOS 8/7-ben

A fail2ban telepítéséhez szükséges csomag az Epel tárolóban található, összekapcsoljuk:

# yum install epel-release -y

A lerakat csatlakoztatása után telepítheti a fail2ban-t a yum vagy a dnf segítségével (CentOS 8-on):

# yum install fail2ban -y

Mint minden más szolgáltatás, fail2ban hozzá kell adni az indításhoz, hogy az automatikusan elinduljon, amikor a rendszer újraindul:

[root @ szerver ~] # systemctl engedélyezése a fail2ban

Létrehozta a symlink /etc/systemd/system/multi-user.target.wants/fail2ban.service → /usr/lib/systemd/system/fail2ban.service szolgáltatást.

iroda fail2ban konfigurációs fájlokat tárol egy könyvtárban / etc / fail2ban. Fő konfigurációs fájl - /etc/fail2ban/jail.conf. Mivel ez a fájl felülírható a szolgáltatás frissítésekor, hogy működjön, létre kell hoznia egy fájlt jail.local. A könyvtárban lévő fájlok is /etc/fail2ban/jail.d/ használható a fenti fájlok beállításainak felülbírálására. A fájlok a következő sorrendben kerülnek alkalmazásra:

  • /etc/fail2ban/jail.conf
  • /etc/fail2ban/jail.d/*.conf
  • /etc/fail2ban/jail.local
  • /etc/fail2ban/jail.d/*.local

A Fail2Ban használata az SSH védelmére a jelszó vizsgálatától

Hozzon létre egy fájlt, és végezze el a beállításokat:

# nano /etc/fail2ban/jail.local

És adjuk hozzá a tartalmat:

[DEFAULT] # Bankszolgáltatók letiltása egy órán keresztül: bantime = 3600 # Az /etc/fail2ban/jail.d/00-firewalld.conf felülbírálása: banaction = iptables-multiport [sshd] engedélyezve = true

Ez a konfiguráció új időt állít fel az összes szolgáltatás IP-címeinek blokkolására, beállítja a felhasználást iptables zárakhoz és az sshd védelme engedélyezve van.

A tűzfalak szűréséhez történő használatához adja meg:

banaction = firewallcmd-ipset

A beállítások megváltoztatása után indítsa újra a szolgáltatást:

# systemctl újraindítása fail2ban

A fail2ban állapot megtekintéséhez és a védett szolgáltatások listájának ellenőrzéséhez futtassa a következő parancsot:

[root @ szerver ~] # fail2ban-kliens állapota

Állapot | - börtönök száma: 1 '- börtönlista: sshd 

Megkérdezheti az adott szolgáltatás sikertelen banki zárolási állapotát:

# fail2ban-kliens státusz sshd

Aktában jail.conf leírhatja azokat az általános paramétereket, amelyeket nem szabad felülbírálni jail.local.

Oldja fel a sort:

ignoreip = 127.0.0.1/8

Módosítsa a következő értékeket:
bantime = 10m - az IP letiltásának ideje
találási idő = 10m - az az idő, amely alatt a sikertelen engedélyezési kísérleteket beleszámítják.
max. kísérlet = 3 - a blokkolás előtti kísérletek száma

Az e-mail értesítések fogadásához a következő lehetőségeket kell konfigurálnia:
destemail = [email protected] -a címzett
feladó = [email protected] - feladó
mta = postfix - SMTP szolgáltatás, amelyen keresztül küldés

Az egyes szolgáltatások blokkolásának konfigurálása a fájlban /etc/fail2ban/jail.local a [DEFAULT] blokk után egy blokk jön létre a kívánt szolgáltatáshoz, például, mint az sshd. Adjon hozzá néhány beállítást:

[sshd] engedélyezve = true port = ssh logpath =% (sshd_log) s

Megállapítottuk, hogy melyik portot blokkolja, és hol írja a blokkoló naplókat. Vegye figyelembe a könyvtárat /etc/fail2ban/filter.d, ott szűrőket írnak le, amelyek segítségével a naplóba tartozó elemeket elemzik, és ellenőrizni tudják, hogy ez vagy az a bejegyzés sikertelen hitelesítést jelez-e. Ha felsorolja a fájlokat egy könyvtárban, megtalálhatja a fail2ban szabályokat a legnépszerűbb szolgáltatások számára:
# ls /etc/fail2ban/filter.d

A fájlokat nagyon részletesebben leírják, és megismerheti, hogy mit kell megérteni a naplóellenőrzések során..

Naplózza a Fail2Ban fájlt

A napló ellenőrzése fail2ban, futtassa a parancsot:

# journalctl -b -u fail2ban

A naplókat valós időben is ellenőrizheti:

# tail -F /var/log/fail2ban.log

Napló kimenet:

2019-12-05 12: 13: 26,914 fail2ban.actions [9750]: FIGYELMEZTETÉS [sshd] Visszaállítási tilalom 222.186.180.17 2019-12-05 12: 13: 26 930 fail2ban.actions [9750]: FIGYELMEZTETÉS [sshd] 222.186 visszaállítási tilalom .180.223 2019-12-05 12: 13: 26,944 fail2ban.actions [9750]: FIGYELMEZTETÉS [sshd] Visszaállítási tilalom 36.72.82.10 2019-12-05 12: 13: 26 958 fail2ban.actions [9750]: FIGYELMEZTETÉS [sshd] Visszaállítás 40.117.135.57 számú 2019-12-05 12: 13: 26,973 fail2ban.actions [9750]: FIGYELMEZTETÉS [sshd] Visszaállítja a 45.55.155.224 2019-12-05 12: 13: 26,988 fail2ban.actions [9750]: FIGYELMEZTETÉS [sshd ] Visszaállítási Ban 67.205.135.127 2019-12-05 12: 13: 27,003 fail2ban.actions [9750]: FIGYELMEZTETÉS [sshd] Visszaállítási Ban 83.171.107.216 2019-12-05 12: 13: 43 362 fail2ban.filter [9750]: INFO [sshd] Talált: 183.87.134.98 - 2019-12-05 12:13:42 2019-12-05 12: 13: 45,571 fail2ban.filter [9750]: INFO [sshd] Talált: 183.87.134.98 - 2019-12-05 12 : 13: 45 2019-12-05 12: 15: 46,109 fail2ban.filter [9750]: INFO [sshd] Talált: 112.64.170.178 - 2019-12-05 12:15:45 2019-12-05 12: 17: 05,317 fail2ban.actions [9750]: MEGJEGYZÉS [sshd] Unba n 222.186.175.216

Ahogy látod, fail2ban működik, és időszakosan blokkolja vagy eltávolítja az IP-címek blokkolását.

Annak ellenőrzéséhez, hogy mely IP-címeket blokkolja az iptables a fail2ban által, tegye:

# iptable -L

Mint láthatja, amikor az ssh nyitva van, időről időre valaki megpróbál jelszót találni és bejelentkezni. Ha egy idő után ellenőrzi a statisztikát, láthatja, hogy a blokkolt IP-k száma növekszik.

Apache biztosítása a Fail2Ban segítségével

Ha testreszabni szeretné fail2ban az apache (httpd) esetén adja hozzá a következő beállításokat jail.local:

# sikertelen jelszavas kísérletek észlelése [apache] engedélyezett = true port = http, https filter = apache-auth logpath = / var / log / httpd / error_log maxretry = 3 # blokkolja az IP-ket, amelyek közvetlenül elérik a szkripteket a php, asp, exe, pl, cgi, scgi [apache-noscript] engedélyezve = true port = http, https szűrő = apache-noscript logpath = / var / log / httpd / error_log maxretry = 3 # az Apache túlcsordulási kísérleteinek észlelése [apache-overflows] engedélyezve = true port = http, https filter = apache-overflows logpath = / var / log / httpd / error_log maxretry = 2 # sikertelen keresési kísérletek észlelése a kiszolgáló otthoni könyvtárában [apache-nohome] engedélyezve = true port = http, https filter = apache -nohome logpath = / var / log / httpd / * error_log maxretry = 2

A konfigurációs fájl megváltoztatása után indítsa újra a szolgáltatást, és ellenőrizze az állapotot:

[gyökér @ kiszolgáló ~] # fail2ban-kliens állapot-apache

A börtön állapota: apache | - Szűrő | | - Jelenleg nem sikerült: 0 | | - Összes sikertelen: 0 | '- Fájllista: / var / log / httpd / error_log' - Műveletek | - Jelenleg tiltva: 0 | - Tilos összesen: 0 '- Tiltott IP-lista:

A teszthez telepítettem a kiszolgálóra Joomla, ezután megpróbáltam megnyitni egy nem létező fájlt, és fail2ban blokkolt:

[root @ szerver httpd] # fail2ban-kliens állapot apache-noscript

A börtön állapota: apache-noscript | - Szűrő | | - Jelenleg nem sikerült: 1 | | - Összes kudarc: 6 | '- Fájllista: / var / log / httpd / error_log' - Műveletek | - Jelenleg tiltva: 1 | - Tilos összesen: 1 '- Tiltott IP-lista: *. *. *. *

A Fail2Ban és Nginx csomagok konfigurálása

Ha Ön webszerver nginx és a webhelyen vannak engedélyezést igénylő szakaszok, akkor problémák lehetnek a jelszavak felsorolására irányuló kísérletekkel is. mert fail2ban megadhatjuk a fájl használatát nginx-http-auth.conf, Alapértelmezés szerint ez már szerepel a konfigurációs fájlban. /etc/fail2ban/jail.conf:

[root @ szerver ~] # cat /etc/fail2ban/jail.conf | grep nginx

[nginx-http-auth] logpath =% (nginx_error_log) s # Az 'nginx-limit-req' börtön használatához rendelkeznie kell 'ngx_http_limit_req_module' # -al, és definiálnia 'limit_req' és 'limit_req_zone' az nginx # # dokumentációban leírtak szerint: /nginx.org/en/docs/http/ngx_http_limit_req_module.html # vagy lásd például a 'config / filter.d / nginx-limit-req.conf' [nginx-limit-req] logpath =% (nginx_error_log) s [ nginx-botsearch] logpath =% (nginx_error_log) s logpath =% (nginx_access_log) s

Be kell vonnunk a konfigurációs fájlba /etc/fail2ban/jail.local hozzáadásával:

[nginx-http-auth] engedélyezve = igaz

Az összes beállítás elvégzése után ne felejtse el újraindítani a szolgáltatást:

# systemctl újraindítása fail2ban

MySQL védelme a Fail2Ban segítségével

A MySQL védelme érdekében külön blokkot kell hozzáadnia a konfigurációs fájlhoz jail.local:

[mysqld-auth] engedélyezett = true filter = mysqld-auth port = 3306 logpath = /var/log/mysql/error.log

Ez a beállítás megvédi a jelszó kitalálásától a mysql felhasználó számára (ez egy nagyon gyakori nyers erő).

Fail2Ban Exim szabályok

Az Exim e-mail szolgáltatás biztonságának konfigurálásához hajtsa végre a következő konfigurációt:

[exim] engedélyezve = igaz szűrő = exim művelet = iptables-multiport [név = exim, port = "25 465 587"] logpath = / var / log / exim / mainlog

Tehát testreszabhatja fail2ban szinte az összes népszerű szolgáltatással együtt dolgozni, és a szerver a lehető legbiztonságosabbá válik.

Fail2Ban IP engedélyezési lista, IP feloldása

A blokkolt IP feloldása fail2ban, használja a parancsot:

# fail2ban-client set SECTION szüntesse meg az IP-címet - ahol a SECTION a konfigurációs fájlban lévő szakasz neve, amelynek szabályai szerint az IP-címét letiltották. Például:

# fail2ban-client beállította az apache-noscript 185 törlését. *. *. *

Adott IP-címeket hozzáadhat a fail2ban kivételekhez (feketelistához). Ehhez a konfigurációs fájlban jail.conf írja be az IP-t a sorba:

ignoreip = 185. *. *. *

Az IP-cím hozzáadásával a kivételekhez több támadást hajtottam végre, mint az előző, és a blokkolás nem történt meg.

Mint láthatja, a fai2ban meglehetősen egyszerűen állítható be, de elég hatékony eszköz a szerver kiegészítő védelmére a betolakodók ellen. Sajnos Windows rendszerben nem láttam hasonló funkcióval rendelkező ingyenes programokat (megpróbálhatja blokkolni az IP címeket a PowerShell használatával - lásd az RDP védelme a jelszóvizsgálattól című cikket).