Kako koristiti Fail2ban za zaštitu vašeg Linux poslužitelja


Poboljšanje sigurnosti vašeg poslužitelja trebalo bi biti jedan od vaših glavnih prioriteta kada je riječ o upravljanju linux poslužiteljem. Pregledavajući zapisnike vašeg poslužitelja, često možete pronaći različite pokušaje brutalne prijave, poplave weba, traženje exploita i mnoge druge.

Sa softverom za sprječavanje upada, kao što je fail2ban, možete pregledati zapise poslužitelja i dodati dodatna pravila iptables za blokiranje problematičnih IP adresa.

Pročitajte također: Kako instalirati Fail2Ban za zaštitu SSH na CentOS/RHEL 8

Ovaj vodič će vam pokazati kako instalirati fail2ban i postaviti osnovnu konfiguraciju za zaštitu vašeg Linux sustava od brutalnih napada.

Zahtjevi

Fail2ban je napisan u pythonu i jedini uvjet je da imate instaliran python:

  • Fail2ban grana 0.9.x zahtijeva Python >=2.6 ili Python >=3.2
  • Fail2ban grana 0.8.x zahtijeva Python >=2.4
  • Root pristup vašem sustavu
  • Po izboru, iptables ili showewall i sendmail

Kako instalirati Fail2Ban u Linux sustavima

Instalacija fail2ban je relativno jednostavna:

Instalirajte Fail2Ban na CentOS/RHEL

Najprije ažurirajte svoje pakete, omogućite Epel repozitorij i instalirajte fail2ban kao što je prikazano.

yum update
yum install epel-release
yum install fail2ban

Instalirajte Fail2Ban na Debian/Ubuntu

Najprije ažurirajte svoje pakete i instalirajte fail2ban kao što je prikazano.

apt-get update && apt-get upgrade -y
apt-get install fail2ban

Po želji, ako želite omogućiti podršku za e-poštu (za obavijesti o e-pošti), možete instalirati sendmail.

yum install sendmail                   [On CentOS/RHEL]
apt-get install sendmail-bin sendmail  [On Debian/Ubuntu]

Da biste omogućili fail2ban i sendmail koristite sljedeće naredbe:

systemctl start fail2ban
systemctl enable fail2ban
systemctl start sendmail
systemctl enable sendmail

Kako konfigurirati Fail2ban u Linux sustavima

Prema zadanim postavkama, fail2ban koristi .conf datoteke koje se nalaze u /etc/fail2ban/ koje se prve čitaju. Međutim, one se mogu nadjačati datotekama .local koje se nalaze u istom direktoriju.

Dakle, datoteka .local ne mora uključivati sve postavke iz datoteke .conf, već samo one koje želite nadjačati. Promjene bi se trebale napraviti u datotekama .local, a ne u .conf. Ovo će spriječiti prepisivanje promjena prilikom nadogradnje fail2ban paketa.

Za potrebe ovog vodiča, kopirat ćemo postojeću datoteku fail2ban.conf u fail2ban.local.

cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local

Sada možete izvršiti promjene u datoteci .local pomoću svog omiljenog uređivača teksta. Vrijednosti koje možete urediti su:

  • loglevel – ovo je razina detalja koja se bilježi. Moguće opcije su:

    • KRITIČNO
    • POGREŠKA
    • UPOZORENJE
    • OBAVIJEST
    • INFO
    • DEBUG
  • logtarget – zabilježite radnje u određenoj datoteci. Zadana vrijednost je /var/log/fail2ban.log. Međutim, to možete promijeniti u:

    • STDOUT – izlaz bilo kojeg podatka
    • STDERR – izlaz svih grešaka
    • SYSLOG – evidentiranje na temelju poruka
    • Datoteka – izlaz u datoteku
  • socket – direktorij u koji će biti smještena socket datoteka.
  • pidfile – lokacija pidfilea.

Konfigurirajte Fail2ban jail.local

Jedna od najvažnijih datoteka u fail2banu je jail.conf koja definira vaše zatvore. Ovdje definirate usluge za koje fail2ban treba biti omogućen.

Kao što smo ranije spomenuli .conf datoteke se mogu mijenjati tijekom nadogradnje, stoga biste trebali stvoriti datoteku jail.local gdje možete primijeniti svoje izmjene.

Drugi način da to učinite je jednostavno kopiranje .conf datoteke s:

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

U slučaju da koristite CentOS ili Fedora, morat ćete promijeniti pozadinu u jail.local iz “auto ” u “systemd ”.

Ako koristite Ubuntu/Debian, nema potrebe za ovom preinakom, iako i oni koriste systemd.

Jail datoteka će prema zadanim postavkama omogućiti SSH za Debian i Ubuntu, ali ne i na CentOS. Ako ga želite omogućiti, jednostavno promijenite sljedeći redak u /etc/fail2ban/jail.local:

[sshd]
enabled = true
Vrijeme zabrane i ponovnog pokušaja

Možete konfigurirati okolnosti nakon kojih se IP adresa blokira. U tu svrhu fail2ban koristi bantime, findtime i maxretry.

  • bantime – ovo je broj sekundi koliko će IP adresa ostati zabranjena (zadano 10 min).
  • findtime – količina vremena između pokušaja prijave, prije nego što host bude zabranjen. (zadano 10 min). Drugim riječima, ako je fail2ban postavljen da blokira IP adresu nakon 3 neuspjela pokušaja prijave, ta 3 pokušaja moraju biti učinjena unutar findtime perioda (10< min).
  • maxretry – broj pokušaja prije primjene zabrane. (zadano 3).
IP adresa na bijelom popisu

Naravno, htjet ćete staviti određene IP adrese na bijelu listu. Za konfiguraciju takvih IP adresa otvorite /etc/fail2ban/jail.local sa svojim omiljenim uređivačem teksta i odkomentirajte sljedeći redak:

ignoreip = 127.0.0.1/8  ::1

Zatim možete staviti IP adrese za koje želite da budu zanemarene. IP adrese trebaju biti odvojene razmakom ili zarezom.

Obavijesti e-poštom

Ako želite primati upozorenja e-poštom o događaju, morat ćete konfigurirati sljedeće postavke u /etc/fail2ban/jail.local:

  • destemail – mail adresa na koju ćete primati obavijesti.
  • Ime pošiljatelja – pošiljatelj kojeg ćete vidjeti kada primite poruku.
  • pošiljatelj – adresa e-pošte s koje će fail2ban slati e-poruke.

Zadani mta (agent za prijenos pošte) postavljen je na sendmail.

Da biste primali obavijesti e-poštom, također ćete morati promijeniti postavku “action” iz:

Action = %(action_)s

Jednom od ovih:

action = %(action_mw)s
action = %(action_mwl)s
  • %(action_mw)s – zabranit će host i poslati e-poruku s whois izvješćem.
  • %(action_mwl)s – zabranit će host, dati whois informacije i sve relevantne informacije iz datoteke dnevnika.

Dodatna Fail2ban konfiguracija zatvora

Do sada smo pogledali osnovne opcije konfiguracije. Ako želite konfigurirati zatvor, morat ćete ga omogućiti u datoteci jail.local. Sintaksa je prilično jednostavna:

[jail_to_enable]
. . .
enabled = true

Gdje biste trebali zamijeniti jail_to_enable sa stvarnim zatvorom, na primjer, “sshd ”. U datoteci jail.local sljedeće će vrijednosti biti unaprijed definirane za ssh uslugu:

[sshd]

port = ssh
logpath = %(sshd_log)s

Možete omogućiti filtar koji će pomoći u prepoznavanju je li redak u zapisniku neispravan. Vrijednost filtra zapravo je referenca na datoteku s nazivom usluge nakon kojeg slijedi .conf. Na primjer: /etc/fail2ban/filter.d/sshd.conf.

Sintaksa je:

filter = service

Na primjer:

filter = sshd

Možete pregledati postojeće filtere u sljedećem direktoriju: /etc/fail2ban/filter.d/.

Koristite fail2ban-client

Fail2ban dolazi s klijentom koji se može koristiti za pregled i promjenu trenutne konfiguracije. Budući da nudi mnogo opcija, možete proći kroz njegov priručnik s:

man fail2ban-client 

Ovdje ćete vidjeti neke od osnovnih naredbi koje možete koristiti. Za pregled trenutnog statusa fail2ban ili za određeni zatvor, možete koristiti:

fail2ban-client status

Rezultat će izgledati slično ovome:

Za pojedinačni zatvor, možete pokrenuti:

fail2ban-client status sshd

Na snimci zaslona ispod vidjet ćete da sam namjerno propustio višestruke prijave tako da fail2ban može blokirati IP adresu s koje sam se pokušavao spojiti:

Zaključak

Fail2ban je izvrstan, dobro dokumentiran sustav za sprječavanje upada, koji pruža dodatnu sigurnost vašem Linux sustavu. Potrebno je neko vrijeme da se naviknete na njegovu postavku i sintaksu, ali nakon što se upoznate s njom, slobodno ćete promijeniti i proširiti njena pravila.