Fail2ban - konfiguracija i uporaba, 2. dio
U prvom nastavku iz serije članaka o fail2ban sustavu zaštite uveli smo vas u osnovne postavke i način rada fail2ban sustava. U ovom nastavku ćemo malo više obratiti pažnju na ono što se zbiva “ispod haube”.
Fail2ban rabi standardni način rada, putem daemona i klijentskog programa. S daemon programom ne bismo trebali imati nikakav direktan kontakt, jer se sve poruke daemonu mogu navesti preko klijenta. Daemon, ipak, kod starta prima određene opcije, pa ćemo ih navesti.
-b start in background
-f start in foreground
-s <FILE> socket path
-x force execution of the server (remove socket file)
-h, --help display this help message
-V, --version print the version
Kao što se može vidjeti, opcije su iskoristive praktički samo kod debugiranja i testiranja, pa se nećemo na njima zadržavati, jer je opis samorazumljiv. S druge strane, klijent prima sljedeće naredbe:
-c <DIR> configuration directory
-s <FILE> socket path
-d dump configuration. For debugging
-i interactive mode
-v increase verbosity
-q decrease verbosity
-x force execution of the server (remove socket file)
-h, --help display this help message
-V, --version print the version
I ovdje možemo vidjeti da opcije prije svega služe za razna testiranja prije puštanja u produkciju. Najzanimljivije su opcije za smanjivanje i povećavanje razine zapisa u logovima (verbosity). Razina 1 je minimalna razina, a razina 4 se rabi samo u postupku eventualnog debugiranja.
No, najsnažnija karakteristika klijenta je direktna mogućnost konfiguriranja cijelog sustava, baš kao da smo rabili konfiguracijske datoteke. Naredbi je mnogo, pa ćemo opisati najkorisnije, a druge ćemo samo spomenuti. Za daljnje informacije pogledajte dokumentaciju na adresi http://www.fail2ban.org/wiki/index.php/MANUAL_0_8.
Naredbe koje fail2ban-client podržava:
start pokreće se daemon i svi "zatvori" (jailovi)
reload ponovno se učitava konfiguracija
reload <JAIL> ponovo se učitava samo zatvor pod imenom <JAIL>
stop zaustavlja se daemon i svi zatvori
status dobija se informacija o trenutnom stanju daemona
ping provjerava se je li daemon uopće pokrenut
set loglevel <LEVEL> postavlja se razina informativnosti (verbosity) na razinu <LEVEL>.
get loglevel ispisuje razinu informativnosti
get/set …
Opcija iza get/set naredbi ima mnogo, primjerice addignoreip, addlogpath, addfailregex, findtime i tako dalje. No, vjerojatno je besmisleno na ovaj način učiti konfigurirati fail2ban, i držati se konfiguriranja preko standardnih konfiguracijskih datoteka. Ipak, neke naredbe bi bilo dobro znati, primjerice:
# fail2ban-client get loglevel
Current logging level is INFO
Dakle, trenutna razina je INFO (razina 3). Ostale razine su: ERROR (1), WARN (2) i DEBUG (4).
Fail2ban ima i interaktivni način, pa ćemo ostale opcije demonstarirati na taj način. Ulazak u interaktivni način je pomoću opcije "-i".
# fail2ban-client -i
fail2ban> get logtarget
Current logging target is:
`- /var/log/fail2ban.log
Dakle, ova naredba se isto mogla izvršiti i direktno iz naredbene linije, a prikazuje u koju datoteku se zapisuju logovi.
fail2ban> ping
Server replied: pong
Slično kao i standardna naredba "ping" koja daje osnovnu informaciju je li mrežni uređaj aktivan, i ovdje ona samo daje potvrdu da je daemon "živ", bez dodatnih informacija.
fail2ban> status
Status
|- Number of jail: 2
`- Jail list: pam-generic, ssh
Naredba "status" bez dodatnih opcija daje samo popis trenutno aktivnih zatvora.
fail2ban> status ssh
Status for the jail: ssh
|- filter
| |- File list: /var/log/auth.log
| |- Currently failed: 8
| `- Total failed: 6143
`- action
|- Currently banned: 0
| `- IP list:
`- Total banned: 17
Nešto izdašniji ispis daje naredba "status <JAIL>", gdje ćemo dobiti statističke podatke o tome koliko je adresa trenutno na "čekanju", te koliko ih je trenutno na crnoj listi. Adresa će na crnu listu doći kad prekorači zadane parametre.
fail2ban> stop ssh
Jail stopped
Sa naredbom "stop" možemo određene zatvore zaustaviti, bilo radi dodatne konfiguracije, bilo radi pogrešnog rada, (pre)opeterećenja sustava i slično.
Kad smo se upoznali s osnovama i načinom rada, dalje je prilično jednostavno. Nakon instalacije paketa, automatski miate zaštitu od SSH i PAM napada (a autentikaciju preko PAM-a rabi većina servisa, primjerice login). Neki za autentikaciju ne rabe PAM, primjerice Apache može rabiti direktno LDAP, ili vlastiti htpasswd mehanizam. U tom slučaju, sve što trebate učiniti je uključiti odgovrajući zatvor u jail.conf:
[apache]
enabled = false
port = http,https
filter = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 6
Za uključivanje je dovoljno promijeniti prvi redak u:
enabled = true
Nakon toga samo treba napraviti reload:
# fail2ban-client reload
i provjeriti je li zatvor uključen:
# fail2ban-client status
Status
|- Number of jail: 3
`- Jail list: apache, pam-generic, ssh
Od tog trenutka je aktivna i zaštita definirana s parametrom failregex unutar datoteke /etc/fail2ban/filter.d/apache-auth.conf.
Slična stvar je i sa drugim servisima, jedino kod mail servisa (kod nas je standardan Postfix), možda će trebati promijeniti putanju do logova:
[postfix]
enabled = true
port = smtp,ssmtp
filter = postfix
logpath = /var/log/mail.log
u
logpath = /var/log/mail/mail.log
U sljedećem, zadnjem, nastavku, pokazat ćemo vam kako prilagoditi fail2ban svojim potrebama, te napraviti vlastite filtere i akcije, u slučaju da ne postoje odgovarajuće u postojećoj distribuciji.
- Inačica za ispis
- Logirajte se za dodavanje komentara
- PDF version