Иди на текст

Primena Fail2Ban zaštite u Shibboleth IdP okruženju

Fail2Ban

Fail2Ban je sigurnosni alat koji automatski analizira log fajlove i blokira IP adrese koje pokazuju zlonamerno ponašanje, poput ponovljenih neuspešnih pokušaja prijavljivanja ili brute‑force napada.

Fail2Ban i Shibboleth Identity Provider

Fail2Ban se može integrisati sa Shibboleth IdP‑om radi dodatnog unapređenja bezbednosti autentifikacionog servisa. U okviru svih IdP‑ova iAMRES Federacije, Fail2Ban je posebno podešen da analizira relevantne log fajlove Shibboleth IdP‑a. Na osnovu tih podataka, sistem automatski detektuje i blokira sumnjive ili zlonamerne pokušaje prijavljivanja, kao što su ponovljene neuspešne autentifikacije ili brute‑force napadi. Na ovaj način obezbeđuje se viši nivo zaštite IdP servisa, smanjuje rizik od neovlašćenog pristupa i doprinosi stabilnom, pouzdanom i bezbednom radu sistema.

Instalacija fail2ban alata

U ovom uputstvu biće prikazana instalacija i konfiguracija za Debian/Ubuntu Linux distribucije.

apt install python3
apt install fail2ban
Provera verzije instaliranog fail2ban alata:

fail2ban-server -V
1.0.2

Konfiguracija fail2ban alata

Kreiranje fail2ban filtera

Filter omogućava Fail2Ban alatu da analizira log fajl i prepozna IP adrese sa neuspešnim pokušajima logovanja. Neuspešni pokušaji mogu se pojaviti u INFO, ERROR i WARN formi loga, zbog čega su kreirana pravila za sva tri slučaja.

Preuzimanje fail2ban filtera na sledeću putanju /etc/fail2ban/filter.d/shibboleth-idp.conf:

wget https://docs.amres.ac.rs/download/fail2ban/filter.conf -O /etc/fail2ban/filter.d/shibboleth-idp.conf 

Kreiranje jail fajla - Struktura 1

Ova opcija podrazumeva da postoji aktivan firewall (u ovom slučaju iptables). U okviru jail foldera definišu se pravila za praćenje logova i način na koji se IP adrese blokiraju.Kreira se lokalni fajl (.local) kako bi izmene bile sačuvane prilikom ažuriranja Fail2Ban paketa. Putanja za kreiranje fail2ban konfiguracije /etc/fail2ban/jail.d/shibboleth-idp.local:

nano /etc/fail2ban/jail.d/shibboleth-idp.local
Primer shibboleth-idp.local konfiguracionog fajla:

[shibboleth-idp]                 # Naziv modula
enabled = true                   
filter = shibboleth-idp          # Filter koji se koristi
logpath = /opt/shibboleth-idp/logs/idp-process.log   # Log fajl koji se prati
backend = polling                # Metoda praćenja log fajla
maxretry = 5                     # Broj dozvoljenih neuspešnih pokušaja
findtime = 300                   # Vremenski interval (u sekundama) u kojem Fail2Ban broji neuspešne pokušaje prijave
bantime = 120                    # Trajanje zabrane u sekundama; IP će ostati blokiran ovoliko vremena nakon prekoračenja maxretry.
ignoreip = 127.0.0.1/8           # IP adrese koje se nikad ne blokiraju
action = iptables-allports[name=ShibbolethIdP]   # Akcija koju Fail2ban izvršava prilikom blokiranja IP adrese

Kreiranje jail fajla - Struktura 2

Ova opcija podrazumeva da ne postoji aktivan firewall. Kreira se Fail2Ban pravilo za blokadu saobraćaja bez korišćenja firewall-a, primenom iproute blackhole mehanizma. Konfiguracija akcije definiše se u fajlu iproute-blackhole.conf, na putanji /etc/fail2ban/action.d/iproute-blackhole.conf:

nano /etc/fail2ban/action.d/iproute-blackhole.conf

Primer iproute-blackhole.conf action fajla:

[Definition]
actionstart =
actionstop =
actioncheck =
actionban = ip route add blackhole <ip> # Komanda koja blokira IP dodavanjem blackhole rute
actionunban = ip route del blackhole <ip> # Komanda koja uklanja blokadu brisanjem blackhole rute

Konfiguracioni fajl /etc/fail2ban/jail.d/defaults-debian.conf u Fail2Ban-u treba izmeniti, jer koristi firewall, koji na sistemu nije dostupan.

nano /etc/fail2ban/jail.d/defaults-debian.conf
Enabled parametar postaviti na false kao u sledećem primeru:

[sshd]
enabled = false 

U okviru jail foldera definišu se pravila za praćenje logova i način na koji se IP adrese blokiraju. Kreira se lokalni fajl (.local) kako bi izmene bile sačuvane prilikom ažuriranja Fail2Ban paketa. Putanja za kreiranje fail2ban konfiguracije /etc/fail2ban/jail.d/shibboleth-idp.local:

nano /etc/fail2ban/jail.d/shibboleth-idp.local
Primer shibboleth-idp.local konfiguracionog fajla:

[shibboleth-idp]                 # Naziv modula
enabled = true                   
filter = shibboleth-idp          # Filter koji se koristi
logpath = /opt/shibboleth-idp/logs/idp-process.log   # Log fajl koji se prati
backend = polling                # Metoda praćenja log fajla
maxretry = 5                     # Broj dozvoljenih neuspešnih pokušaja
findtime = 300                   # Vremenski interval (u sekundama) u kojem Fail2Ban broji neuspešne pokušaje prijave
bantime = 120                    # Trajanje zabrane u sekundama; IP će ostati blokiran ovoliko vremena nakon prekoračenja maxretry.
ignoreip = 127.0.0.1/8           # IP adrese koje se nikad ne blokiraju
action = iproute-blackhole       # Akcija koju Fail2ban izvršava prilikom blokiranja IP adrese

Restart i provera Fail2Ban konfiguracije

Restartovati Fail2Ban proces:

systemctl restart fail2ban

Provera statusa svih jail fajlova:

fail2ban-client status
Provera statusa fail2ban shibboleth-idp konfiguracije:

fail2ban-client status shibboleth-idp

Ukoliko želimo da uklonimo zabranu za određenu IP adresu:

fail2ban-client set shibboleth-idp unbanip <IP>

Istorija blokiranih IP adresa:

apt install sqlite3
sqlite3 /var/lib/fail2ban/fail2ban.sqlite3 "SELECT * FROM bans;"