Weboldal keresés

A Fail2Ban telepítése és konfigurálása biztonságos Linux-kiszolgálóhoz


Ez a részletes útmutató megtanítja Önnek, hogy mi az a Fail2Ban, hogyan kell konfigurálni, és hogyan használhatja további biztonsági réteg biztosítására Linux rendszerén.

Mi az a Fail2Ban?

Ha engedélyezte az SSH-t, ellenőrizze a Linux-kiszolgáló bejelentkezési előzményeit. Meg fog lepődni, ha hatalmas számú IP-címet lát, amelyek SSH-n keresztül próbálnak bejelentkezni a szerverére.

Ha nincs olyan mechanizmus, amely megakadályozná ezeket a bejelentkezési kísérleteket, akkor rendszere érzékeny a bruteforce támadásokra. Alapvetően egy szkript/bot továbbra is megpróbál SSH-csatlakozni a rendszerhez a felhasználónév és a jelszavak különféle kombinációinak kipróbálásával.

Itt jön képbe egy olyan eszköz, mint a Fail2Ban. A Fail2Ban egy ingyenes és nyílt forráskódú szoftver, amely segít megvédeni Linux-kiszolgálóját a rosszindulatú bejelentkezésektől. A Fail2Ban letiltja az IP-címet (bizonyos időre), ha bizonyos számú sikertelen bejelentkezési kísérlet történik.

A Fail2Ban az alapbeállításokkal azonnal működik, de rendkívül konfigurálható is. Tetszés szerint módosíthatja, és igény szerint szűrőket és szabályokat hozhat létre.

Érdekesen hangzik? Miért nem teszteli a Fail2Ban-t? Olvassa el és kövesse a cikk többi részét, és próbálja ki a Fail2Ban-t.

A Fail2Ban telepítése Linuxra

A Fail2Ban népszerűségét abból sejtheti, hogy az összes jelentősebb Linux disztribúció hivatalos tárházában elérhető. Ez egyszerű feladattá teszi a Fail2Ban telepítését.

Telepítse a Fail2Ban-t a CentOS és a Red Hat rendszerre

Ahhoz, hogy új szoftvert telepíthessen a rendszerére, root vagy sudo felhasználónak kell lennie.

Meg kell győződnie arról, hogy rendszere naprakész, és telepítve van-e az EPEL repository.

sudo yum update && sudo yum install epel-release

Most telepítheti a Fail2Ban-t a következő paranccsal:

sudo yum install fail2ban

Telepítse a Fail2Ban-t Ubuntu és Debian rendszerre

Először győződjön meg arról, hogy a rendszer frissítve van:

sudo apt update && sudo apt upgrade -y

Most telepítse a Fail2Ban-t ezzel a paranccsal:

sudo apt install fail2ban

A Fail2Ban konfigurációs fájl megértése

A Fail2Banban két fő konfigurációs fájl található: /etc/fail2ban/fail2ban.conf és /etc/fail2ban/jail.conf. Hadd magyarázzam el, mit csinálnak.

/etc/fail2ban/fail2ban.conf: Ez a Fail2Ban démon működési beállításainak konfigurációs fájlja. Itt vannak megadva olyan beállítások, mint a naplószint, a naplófájl, a socket és a pid fájl.

/etc/fail2ban/jail.conf: Itt történik minden varázslat. Ez az a fájl, ahol beállíthat olyan dolgokat, mint az alapértelmezett kitiltási idő, az IP-k tiltása előtti reties-ek száma, az IP-k engedélyezése a listára, a levélküldési információk stb. Alapvetően ebből a fájlból szabályozhatja a Fail2Ban viselkedését.

Mielőtt megváltoztatná ezeket a fájlokat, a Fail2Ban azt tanácsolja, hogy készítsen másolatot .local fájllal ezekről a conf fájlokról. Ez azért van, mert az alapértelmezett conf-fájlok felülírhatók a frissítésekben, és elveszíti az összes beállítást.

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

Most értsük meg a jail.conf fájlt. Ha a less paranccsal olvassa el ezt a nagy fájlt, elég zavarónak tűnhet. A conf fájl mindent túl sok megjegyzéssel próbál megmagyarázni. Szóval, hadd egyszerűsítsem ezt le neked.

A jail.conf fájl szolgáltatásokra van felosztva. Van egy [Alapértelmezett] szakasz, amely minden szolgáltatásra vonatkozik. Ezután különféle szolgáltatásokat láthat a megfelelő beállításokkal (ha vannak ilyenek). Mindezek a szolgáltatások zárójelben vannak. Olyan szakaszokat fog látni, mint [sshd], [apache-auth], [squid] stb.

Ha eltávolítom a megjegyzéseket, az alapértelmezett rész így néz ki:

[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 = root@localhost
sender = root@
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

Hadd mondjam el néhány paraméter jelentését.

  • bantime: Állítsa be a tiltás hosszát. Az alapértelmezett 10 perc.

  • findtime: Az az ablak, amelyben egy IP-címen végrehajtják a műveletet. Az alapértelmezett 10 perc. Tegyük fel, hogy rossz bejelentkezést kísérelt meg egy bizonyos IP 10:30-kor. Ha ugyanaz az IP eléri az újrapróbálkozások maximális számát 10:40 előtt, a rendszer letiltja. Ellenkező esetben a következő sikertelen kísérlet 10:40 után az első sikertelen kísérletnek számít.

  • maxretry: A sikertelen újrapróbálkozások száma a művelet végrehajtása előtt

  • usedns: A „warn” beállítás megpróbálja a fordított DNS-t használni a gazdagépnév megkeresésére, és a gazdagépnév használatával letiltására. Ha nem értékre állítja, akkor az IP-címeket tiltja, nem a gazdagépnevet.

  • destemail: Az e-mail cím, amelyre a figyelmeztetéseket küldik (be kell állítani)

  • feladó: A feladó neve az értesítő e-mailben

  • mta: Az értesítő e-mailekhez használt levéltovábbítási ügynök

  • banaction: Ez a paraméter az /etc/fail2ban/action.d/iptables-multiport.conf fájlt használja a művelet beállításához a maximális sikertelen újrapróbálkozás után.

  • protokoll: A tiltás után megszűnő forgalom típusa

Ha bármilyen változtatást szeretne végrehajtani bármely börtönben (vagy az összes börtönben), például a maximális próbálkozások számát, a kitiltási időt, az időt találni stb., szerkessze a jail.local fájlt.

A Fail2Ban használata a Linux szerver biztonságossá tételére

Hadd mutassak meg néhány módszert, amellyel a Fail2Ban segítségével megerősítheti a Linux biztonságát.

Vegye figyelembe, hogy a fail2ban parancsok futtatásához root felhasználónak vagy sudo hozzáféréssel kell rendelkeznie.

Engedélyezze a Fail2Ban-t a kiszolgálón, és ellenőrizze az összes futó jail-t

A systemd parancsok segítségével elindíthatja és engedélyezheti a Fail2Ban-t a Linux-kiszolgálón:

systemctl start fail2ban
systemctl enable fail2ban

A Fail2Ban engedélyezése után a fail2ban-client paranccsal láthatja az állapotot és az aktív jaileket:

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

Ha kíváncsi, az sshd jail alapértelmezés szerint engedélyezve van.

Lásd a Fail2Ban naplót

A Fail2Ban napló a /var/log/fail2ban.log címen található. A naplófájlok a következő formátumúak:

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

Láthatja, hogy azonosítja az IP-címeket, és letiltja őket, ha átlépik a maximális újrapróbálkozás küszöbét.

Lásd a Fail2Ban által tiltott IP-címeket

Az egyik módja egy bizonyos börtön állapotának ellenőrzése. Erre a célra használhatja a Fail2Ban klienst.

fail2ban-client status <jail_name>

Például, ha látnia kell a Fail2Ban által tiltott összes rossz ssh bejelentkezést, akkor a következő módon használhatja. A kimenet az összes sikertelen kísérletet és a tiltott IP-címeket jeleníti meg.

root@test-server:~# 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

A sikertelen bejelentkezésből SSH-n keresztül bejelentkezni próbáló rendszernek ehhez hasonló hibát kell kapnia

ssh: connect to host 93.233.73.133 port 22: Connection refused

Hogyan lehet véglegesen kitiltani egy IP-t a Fail2Ban segítségével

Mostanra már tudja, hogy a Fail2Ban által IP-címekre helyezett tiltás ideiglenes. Alapértelmezés szerint 10 percig tart, és a támadó 10 perc elteltével megpróbálhat újra bejelentkezni.

Ez biztonsági kockázatot jelent, mivel a támadók olyan szkriptet használhatnak, amely 10 perc elteltével megpróbál bejelentkezni.

Szóval, hogyan állíthat be végleges kitiltást a Fail2Ban használatával? Erre nincs egyértelmű válasz.

A Fail2Ban 0.11-es verziójától kezdve a tiltási idő automatikusan kiszámításra kerül, és a perzisztens IP-címek tiltási ideje exponenciálisan megnő.

De ha ellenőrzi a Fail2Ban verzióját, valószínűleg a 0.10-es verziót futtatja.

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).

A korábbi verziókban használhatott negatív bantime-ot (bantime=-1), és ez egyenértékű lett volna egy állandó kitiltással, de ha ezt a módszert próbálja ki, valószínűleg megjelenik egy hibaüzenet, például "A fail2ban indítása: HIBA NOK: (" az adatbázis lemezképe hibás',)'.

Az egyik nem túl tiszta megoldás az lenne, ha a bantime-ot 1 napra, 1 hétre, 1 hónapra vagy 1 évre növelnénk. Ez megkerülheti a problémát, amíg az új verzió nem érhető el a rendszeren.

Hogyan lehet feloldani a Fail2Ban által blokkolt IP-címet

Először ellenőrizze, hogy az IP blokkolva van-e vagy sem. Mivel a Fail2Ban az iptables-on működik, az iptable-ban megtekintheti a szervere által letiltott IP-címeket:

iptables -n -L

Lehetséges, hogy grep parancsot kell használnia, ha túl sok IP-cím van tiltva.

Ha megtalálja a megadott IP-címet a kimenetben, akkor az letiltásra kerül:

Tehát a következő lépés annak megállapítása, hogy melyik „börtön” tiltja az említett IP-t. Itt kell használnia a Grep parancsot a fail2ban naplókkal.

Amint az alábbi kimenetben látható, az IP-t az sshd börtön tiltja.

root@test-server:~# 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

Most, hogy ismeri az IP-t blokkoló börtön nevét, feloldhatja az IP tiltását a fail2ban-client segítségével:

fail2ban-client set <jail_name> unbanip <ip_address>

Hogyan lehet az IP-t engedélyezőlistára tenni a Fail2Ban-ban

Nem lesz jó, ha letiltod magad, igaz? Ha figyelmen kívül szeretne hagyni egy IP-címet, hogy a Fail2Ban aktuális munkamenete ne tiltsa le, az IP-címet engedélyezőlistára helyezheti egy ehhez hasonló paranccsal:

fail2ban-client set <JAIL_NAME> addignoreip <IP_Address>

Az IP-címét Linux alatt könnyen megtalálhatja. Az én esetemben így volt

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

Ha az IP-címet véglegesen engedélyezőlistára szeretné helyezni, szerkessze a börtön konfigurációs fájlját. Menjen az említett börtönrészhez, és adja hozzá az ignoreip sort a következőképpen:

ignoreip = 127.0.0.1/8 <IP_TO_BE_WHITELISTED>

Ha engedélyezőlistára szeretne tenni egy IP-címet a rendszer összes jailjából, jobb ötlet lenne szerkeszteni az /etc/fail2ban/jail.local fájlt, és hozzáadni egy sort az ALAPÉRTELMEZETT szakaszhoz, mint ahogy fent láttuk.

A változtatás életbe lépéséhez újra kell indítania a Fail2Ban alkalmazást.

Hogyan lehet megtekinteni az IP-engedélyezőlistát börtönben

Ezzel a paranccsal megtekintheti a börtön által engedélyezett összes IP-címet:

fail2ban-client get <JAIL_NAME> ignoreip

Meg kell mutatnia az összes IP-címet, amelyet a Fail2Ban figyelmen kívül hagy az adott börtön esetében:

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

IP-cím eltávolítása a Fail2Ban engedélyezőlistáról

Ha eltávolítja az IP-t egy bizonyos börtön engedélyezőlistájáról, akkor ezt a parancsot használhatja:

fail2ban-client set <JAIL_NAME> delignoreip <IP_Address>

Ha véglegesen el szeretné távolítani az IP-címet, szerkessze az /etc/fail2ban/jail.local fájlt.

Mi más?

A Fail2Ban segítségével sokkal több mindent megtehet. Ez az útmutató megadja az alapokat a Fail2Ban használatához. Nem érintettem olyan témákat, mint a műveletek, e-mail értesítések, szűrők stb.

Miután tisztában van a Fail2Ban alapjaival, elkezdheti a további felfedezéseket. Egyelőre csak játsszon vele, és adjon hozzá egy további biztonsági réteget az SSH-hoz a Linux-kiszolgálón.

Kapcsolódó cikkek: