Hogyan védje meg Linux-kiszolgálóját a fail2ban segítségével

A fail2ban használatával a Linux számítógépe automatikusan blokkolja azokat az IP-címeket, amelyeknél túl sok a kapcsolati hiba. Ez önszabályozó biztonság! Megmutatjuk, hogyan kell használni.

Biztonság Biztonság Biztonság

Windsori hercegnő, Wallis Simpson, Egyszer híres mondása: „Soha nem lehetsz túl gazdag vagy túl vékony.” Frissítettük ezt a modern, összekapcsolt világunkhoz: Soha nem lehetsz túl óvatos vagy túl biztonságos.

Ha számítógépe elfogadja a bejövő csatlakozási kéréseket, mint pl Secure Shell (SSH) kapcsolatokat, vagy web- vagy e-mail szerverként működik, meg kell védenie a brute force támadásoktól és a jelszókitalálóktól.

Ehhez figyelnie kell azokat a csatlakozási kéréseket, amelyek nem jutnak be egy fiókba. Ha rövid időn belül ismételten nem sikerül hitelesíteni, el kell tiltani őket a további próbálkozásoktól.

Ezt gyakorlatilag csak a teljes folyamat automatizálásával lehet elérni. Egy kis egyszerű konfigurációval a fail2ban kezelni fogja a figyelése, kitiltása és feloldása neked.

A fail2ban integrálható a következővel a Linux tűzfal iptables. A tűzfalhoz szabályok hozzáadásával érvényesíti a gyanús IP-címekre vonatkozó tiltásokat. Annak érdekében, hogy ez a magyarázat ne zsúfolt legyen, az iptables-t üres szabálykészlettel használjuk.

Természetesen, ha aggódik a biztonság miatt, valószínűleg van egy tűzfala, amely jól lakott szabálykészlettel van konfigurálva. csak fail2ban hozzáadja és eltávolítja saját szabályait– a szokásos tűzfal funkciói érintetlenek maradnak.

Az üres szabálykészletünket ezzel a paranccsal láthatjuk:

sudo iptables -L

A fail2ban telepítése

A fail2ban telepítése egyszerű minden olyan disztribúción, amelyet a cikk kutatásához használtunk. Az Ubuntu 20.04-en a parancs a következő:

sudo apt-get install fail2ban

Fedora 32-n írja be:

sudo dnf install fail2ban

A Manjaro 20.0.1-ben a pacmant használtuk:

sudo pacman -Sy fail2ban

A fail2ban beállítása

A fail2ban telepítés egy jail.conf nevű alapértelmezett konfigurációs fájlt tartalmaz. Ezt a fájlt felülírja a fail2ban frissítése, így a módosításaink elvesznek, ha testreszabjuk ezt a fájlt.

  Az 5 legjobb Steam játékáruház alternatívája Linux számára

Ehelyett a jail.conf fájlt átmásoljuk a jail.local nevű fájlba. Ha konfigurációs változtatásainkat a jail.local fájlba helyezzük, azok a frissítések során is megmaradnak. Mindkét fájlt automatikusan beolvassa a fail2ban.

A fájl másolása a következőképpen történik:

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

Most nyissa meg a fájlt kedvenc szerkesztőjében. A gedit fogjuk használni:

sudo gedit /etc/fail2ban/jail.local

Két részt fogunk keresni a fájlban: [DEFAULT] és [sshd]. Ügyeljen arra, hogy megtalálja a tényleges részeket. Ezek a címkék szintén megjelennek a tetején, egy őket leíró részben, de nem ezt akarjuk.

Meg fogja találni a [DEFAULT] szakasz valahol a 40. sor környékén. Ez egy hosszú szakasz, sok megjegyzéssel és magyarázattal.

Görgessen le a 90-es sorhoz, és a következő négy beállítást találja, amelyet tudnia kell:

ignoreip: A soha nem tiltott IP-címek engedélyezési listája. Van egy állandó Get Out of Jail Free kártyájuk. A localhost IP-cím (127.0.0.1) alapértelmezés szerint szerepel a listában, az IPv6 megfelelőjével (::1) együtt. Ha vannak más IP-címek, amelyekről tudja, hogy soha nem szabad letiltani, adja hozzá őket ehhez a listához, és hagyjon szóközt közöttük.
bantime: Az az időtartam, ameddig egy IP-cím tiltva van (az „m” perceket jelent). Ha egy értéket „m” vagy „h” nélkül ír be (órákra), a rendszer másodpercként kezeli. A -1 érték véglegesen letiltja az IP-címet. Ügyeljen arra, hogy ne zárja ki magát végleg.
findtime: Az az idő, amelyen belül túl sok sikertelen csatlakozási kísérlet egy IP-cím kitiltását eredményezi.
maxretry: A „túl sok sikertelen kísérlet” értéke.

Ha egy kapcsolat ugyanarról az IP-címről maxretry sikertelen csatlakozási kísérletet hajt végre a findtime időtartamon belül, akkor azok a bantime időtartamára letiltásra kerülnek. Az egyetlen kivétel az ignoreip listában szereplő IP-címek.

A fail2ban az IP-címeket meghatározott időre börtönbe helyezi. A fail2ban számos különböző jailt támogat, és mindegyik azt jelenti, hogy az egyetlen kapcsolattípusra érvényes beállításokat tartalmazza. Ez lehetővé teszi, hogy különböző beállításokat adjon meg a különböző csatlakozási típusokhoz. Vagy beállíthatja, hogy a fail2ban csak egy kiválasztott kapcsolattípus-készletet figyeljen meg.

  A curl használata fájlok letöltéséhez a Linux parancssorból

Lehet, hogy kitaláltad a [DEFAULT] szakasz neve, de az általunk megvizsgált beállítások az alapértelmezettek. Most nézzük meg az SSH börtön beállításait.

Börtön konfigurálása

A Jail-ek lehetővé teszik a kapcsolattípusok áthelyezését a fail2ban megfigyelésébe, illetve onnan. Ha az alapértelmezett beállítások nem egyeznek a börtönben alkalmazni kívántakkal, megadhat konkrét értékeket a bantime, findtime és maxretry paraméterekhez.

Görgessen le a 280-as sorig, és látni fogja a [sshd] szakasz.

Itt állíthatja be az SSH-kapcsolat jail értékeit. Ahhoz, hogy ezt a börtönt bevonjuk a megfigyelésbe és a kitiltásba, be kell írnunk a következő sort:

enabled = true

Ezt a sort is beírjuk:

maxretry = 3

Az alapértelmezett beállítás öt volt, de szeretnénk óvatosabbak lenni az SSH-kapcsolatokkal. Háromra csökkentettük, majd elmentettük és bezártuk a fájlt.

Ezt a börtönt hozzáadtuk a fail2ban figyeléséhez, és felülírtuk az egyik alapértelmezett beállítást. A börtön használhatja az alapértelmezett és a börtönspecifikus beállítások kombinációját.

A fail2ban engedélyezése

Eddig a fail2ban-t telepítettük és konfiguráltuk. Most engedélyeznünk kell, hogy automatikus indítási szolgáltatásként fusson. Ezután tesztelnünk kell, hogy megbizonyosodjunk arról, hogy a várt módon működik.

A fail2ban mint szolgáltatás engedélyezéséhez a systemctl parancs:

sudo systemctl enable fail2ban

A szolgáltatás elindításához is ezt használjuk:

sudo systemctl start fail2ban

A rendszerctl segítségével is ellenőrizhetjük a szolgáltatás állapotát:

sudo systemctl status fail2ban.service

Minden jól néz ki – zöld utat kaptunk, tehát minden rendben van.

Lássuk, hogy a fail2ban egyetért-e:

sudo fail2ban-client status

Ez azt tükrözi, amit beállítottunk. Egyetlen nevű börtönt engedélyeztünk [sshd]. Ha az előző parancsunkkal együtt szerepeltetjük a börtön nevét, akkor alaposabban megtekinthetjük:

sudo fail2ban-client status sshd

Ez felsorolja a hibák és a tiltott IP-címek számát. Természetesen jelenleg minden statisztika nulla.

Börtönünk tesztelése

Egy másik számítógépen SSH-csatlakozási kérelmet küldünk tesztgépünknek, és szándékosan félreírjuk a jelszót. Minden egyes csatlakozási kísérletnél háromszor próbálkozik a jelszó helyes megadására.

  A legjobb Linux disztribúciók Mac felhasználók számára

A maxretry érték három sikertelen csatlakozási kísérlet után aktiválódik, nem pedig három sikertelen jelszókísérlet után. Tehát háromszor kell beírnunk egy helytelen jelszót, hogy sikertelen legyen az egyik csatlakozási kísérlet.

Ezután újabb csatlakozási kísérletet teszünk, és még háromszor hibásan írjuk be a jelszót. A harmadik kapcsolódási kérelem első helytelen jelszókísérletének ki kell váltania a fail2ban-t.

A harmadik csatlakozási kérelem első helytelen jelszó után nem kapunk választ a távoli géptől. Nem kapunk magyarázatot; csak kapjuk a hideg vállát.

A parancssorba való visszatéréshez le kell nyomnia a Ctrl+C billentyűkombinációt. Ha még egyszer megpróbáljuk, más választ fogunk kapni:

ssh [email protected]

Korábban a hibaüzenet „Engedély megtagadva” volt. Ezúttal a csatlakozást egyenesen megtagadják. Persona non grata vagyunk. Ki lettünk tiltva.

Nézzük a részleteket a [sshd] megint börtön:

sudo fail2ban-client status sshd

Három hiba történt, és egy IP-címet (192.168.4.25) letiltottak.

Amint azt korábban említettük, a fail2ban a tiltásokat úgy hajtja végre, hogy szabályokat ad hozzá a tűzfalszabályzathoz. Vessünk még egy pillantást a szabályrendszerre (korábban üres volt):

sudo iptables -L

Az INPUT házirendhez hozzáadtunk egy szabályt, amely az SSH-forgalmat az f2b-sshd lánchoz küldi. Az f2b-sshd lánc szabálya elutasítja az SSH-kapcsolatokat a 192.168.4.25-től. A bantime alapértelmezett beállítását nem változtattuk meg, így 10 percen belül az IP-cím tiltása megszűnik, és új csatlakozási kéréseket kezdeményezhet.

Ha hosszabb kitiltási időtartamot állít be (például több órát), de szeretné lehetővé tenni, hogy egy IP-cím hamarabb kezdeményezzen újabb csatlakozási kérelmet, akkor korán feltételesen szabadlábra helyezheti.

Ehhez a következőket írjuk be:

sudo fail2ban-client set sshd unbanip 192.168.5.25

Távoli számítógépünkön, ha újabb SSH-csatlakozási kérelmet adunk be és beírjuk a helyes jelszót, akkor csatlakozhatunk:

ssh [email protected]

Egyszerű és hatékony

Az egyszerűbb általában jobb, a fail2ban pedig elegáns megoldás egy bonyolult problémára. Nagyon kevés konfigurálást igényel, és szinte semmilyen működési többletet nem ró Önnek vagy számítógépének.