Kako koristiti Fail2ban za osiguranje vašeg Linux servera


Poboljšanje sigurnosti vašeg servera trebao bi biti jedan od vaših glavnih prioriteta kada je u pitanju upravljanje linux serverom. Pregledajući zapise vašeg servera, često možete pronaći različite pokušaje brutalne prijave, web poplave, traženje eksploatacije i mnoge druge.

Sa softverom za prevenciju upada kao što je fail2ban, možete pregledati evidencije vašeg servera i dodati dodatna pravila iptablesa da blokirate problematične IP adrese.

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 sistema od brute-force napada.

Zahtjevi

Fail2ban je napisan na pythonu i jedini uslov 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 sistemu
  • Opciono, iptables ili showewall i sendmail

Kako instalirati Fail2Ban u Linux sisteme

Instalacija fail2ban je relativno jednostavna:

Instalirajte Fail2Ban na CentOS/RHEL

Prvo, ažurirajte svoje pakete, omogućite Epel spremište i instalirajte fail2ban kao što je prikazano.

yum update
yum install epel-release
yum install fail2ban

Instalirajte Fail2Ban na Debian/Ubuntu

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

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

Opciono, ako želite da omogućite podršku e-poštom (za obavještenja putem pošte), možete instalirati sendmail.

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

Da omogućite fail2ban i sendmail koristite sljedeće komande:

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

Kako konfigurirati Fail2ban u Linux sistemima

Podrazumevano, fail2ban koristi datoteke .conf koje se nalaze u /etc/fail2ban/ koje se prvo čitaju. Međutim, one mogu biti zamijenjene 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 poništiti. Promjene treba napraviti u datotekama .local, a ne u .conf. Ovo će spriječiti prepisivanje promjena prilikom nadogradnje fail2ban paketa.

Za potrebe ovog uputstva, 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 koristeći svoj omiljeni uređivač teksta. Vrijednosti koje možete urediti su:

  • loglevel – ovo je nivo detalja koji treba evidentirati. Moguće opcije su:

    • KRITIČNO
    • GREŠKA
    • UPOZORENJE
    • BILJESKA
    • INFO
    • DEBUG
  • logtarget – zabilježite radnje u određenom fajlu. Zadana vrijednost je /var/log/fail2ban.log. Međutim, ovo možete promijeniti u:

    • STDOUT – izlaz bilo kojeg podatka
    • STDERR – ispis svih grešaka
    • SYSLOG – evidencija zasnovana na porukama
    • Datoteka – izlaz u datoteku
  • socket – direktorij u koji će biti smješten socket fajl.
  • pidfile – lokacija pidfile-a.

Konfigurirajte Fail2ban jail.local

Jedan od najvažnijih fajlova u fail2ban je jail.conf koji definiše vaše zatvore. Ovdje definirate usluge za koje fail2ban treba biti omogućen.

Kao što smo ranije spomenuli .conf fajlovi se mogu mijenjati tokom nadogradnje, stoga bi trebali kreirati jail.local datoteku gdje možete primijeniti svoje izmjene.

Drugi način da to uradite je da jednostavno kopirate datoteku .conf sa:

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

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

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

Jail datoteka će po defaultu omogućiti SSH za Debian i Ubuntu, ali ne i za CentOS. Ako ga želite omogućiti, jednostavno promijenite sljedeći red u /etc/fail2ban/jail.local:

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

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

  • bantime – ovo je broj sekundi u kojima će IP adresa ostati zabranjena (podrazumevano 10 min).
  • vrijeme pronalaženja – vrijeme između pokušaja prijave, prije nego što je host zabranjen. (podrazumevano 10 min). Drugim riječima, ako je fail2ban postavljen da blokira IP adresu nakon 3 neuspješna pokušaja prijave, ta 3 pokušaja, moraju biti obavljena unutar perioda pronalaženja (10< min).
  • maxretry – broj pokušaja prije primjene zabrane. (podrazumevano 3).
Bijela lista IP adresa

Naravno, htjet ćete staviti određene IP adrese na bijelu listu. Da biste konfigurirali takve IP adrese, otvorite /etc/fail2ban/jail.local sa svojim omiljenim uređivačem teksta i dekomentirajte sljedeći red:

ignoreip = 127.0.0.1/8  ::1

Zatim možete staviti IP adrese koje želite da se ignorišu. IP adrese treba odvojiti razmakom ili zarezom.

Email Alerts

Ako želite primati obavještenja putem pošte o događaju, morat ćete konfigurirati sljedeće postavke u /etc/fail2ban/jail.local:

  • destemail – mail adresa na koju ćete primiti obavještenje.
  • Ime pošiljaoca – pošiljalac kojeg ćete vidjeti kada primite poruku.
  • pošiljalac – adresa e-pošte sa koje će fail2ban slati e-poštu.

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

Da biste primali obavještenja putem pošte, također ćete morati promijeniti postavku “akcija” iz:

Action = %(action_)s

Na jedno od ovih:

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

Dodatna Fail2ban Jail konfiguracija

Do sada smo pogledali osnovne opcije konfiguracije. Ako želite da konfigurišete zatvor, moraćete da ga omogućite u datoteci jail.local. Sintaksa je prilično jednostavna:

[jail_to_enable]
. . .
enabled = true

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

[sshd]

port = ssh
logpath = %(sshd_log)s

Možete omogućiti filter koji će vam pomoći da identifikujete da li je linija u dnevniku neuspješna. Vrijednost filtera je zapravo referenca na datoteku s imenom usluge iza kojeg slijedi .conf. Na primjer: /etc/fail2ban/filter.d/sshd.conf.

Sintaksa je:

filter = service

Na primjer:

filter = sshd

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

Koristite fail2ban-client

Fail2ban dolazi sa 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 sa:

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 snimku ekrana ispod, vidjet ćete da sam namjerno propustio višestruke prijave tako da fail2ban može blokirati IP adresu s koje sam pokušavao da se povežem:

Zaključak

Fail2ban je odličan, dobro dokumentovan sistem za sprečavanje upada, koji pruža dodatnu sigurnost vašem Linux sistemu. Potrebno je neko vrijeme da se naviknete na njegovo postavljanje i sintaksu, ali kada se upoznate s njim, slobodno ćete promijeniti i proširiti njegova pravila.