Prijeđite na sadržaj

Postavke kolačića

Za svaku vrstu odaberite koje kolačiće dopuštate. Svoj odabir uvijek možete promijeniti putem poveznice Postavke kolačića na dnu svake stranice. Izjava o privatnosti

Nužni

Uvijek uključeni

Potrebni za prijavu, čuvanje košarice i pamćenje Vaših odabira. Uvijek su uključeni.

Koji kolačići?
  • weboke_sessie, weboke_klant, weboke_remember: Vaša sesija i to da ostanete prijavljeni
  • weboke_basket: Vaša košarica
  • wkBtwIncl: prikaz cijena s PDV-om ili bez njega
  • wok_cookies: Vaš odabir kolačića, 12 mjeseci

Mjeri koji oglas dovodi do posjeta ili narudžbe, kako ne bismo plaćali oglase koji ništa ne donose.

Koji kolačići?
  • Google Ads putem Google Tag Managera (_gcl_au, _gcl_aw), do 90 dana
  • OpenAI Ads, oglasi u ChatGPT-u
  • wok_aff: preko kojeg ste partnera došli k nama (partnerski program), 60 dana

4,6

Država i jezik

Svaka država ima vlastitu stranicu, s cijenama i PDV-om te države.

Pogledajte

fail2ban protiv pokušaja pogađanja

Modul 5: Zaštita mreže · Vrijeme čitanja: 10 minuta

Cilj učenja: Nakon ove lekcije moći ćete postaviti fail2ban za SSH, čitati njegov status i zapisnik, ponovno osloboditi adresu te objasniti što fail2ban štiti, a što ne.

Ključni pojmovi: brute force, jail, filter, akcija (banaction), maxretry, findtime, bantime, bantime.increment, ignoreip, backend systemd, jail.conf, jail.local i jail.d, fail2ban-client, recidive

Oni koji kucaju na vrata interneta

Pogledajte dan nakon instalacije u zapisnik SSH-a i vidjet ćete: stotine pokušaja prijave, s imenima kao što su root, admin, test, ubuntu i oracle, s adresa iz cijelog svijeta.

anna@web1:~$ sudo journalctl -u ssh --since today | grep -c "Invalid user"
412
anna@web1:~$ sudo journalctl -u ssh --since today | grep "Invalid user" | tail -n 3
nov 09 14:02:11 web1 sshd-session[20311]: Invalid user admin from 203.0.113.77 port 51522
nov 09 14:02:13 web1 sshd-session[20313]: Invalid user oracle from 203.0.113.77 port 51544
nov 09 14:02:16 web1 sshd-session[20315]: Invalid user test from 203.0.113.77 port 51560

(Na Ubuntuu se usluga zove ssh, na AlmaLinuxu i Rockyju sshd. Naziv procesa može biti sshd ili sshd-session, ovisno o verziji OpenSSH-a.) To je brute-force napad: botovi koji jednostavno isprobavaju sva uobičajena imena i lozinke. Ako se prijavljujete ključevima, a prijava lozinkom je isključena (lekcija 2.2), nikada neće ući, koliko god puta pokušali. No pune Vaš zapisnik, troše nešto procesorske snage, a na uslugama na kojima je lozinka ipak potrebna (webmail, upravljačka ploča) mogu biti stvarno opasni.

fail2ban čita zapisnike, prepoznaje neuspjele pokušaje i adresu koja prečesto griješi na neko vrijeme zaključava u vatrozidu.

Kako fail2ban razmišlja: jailovi

fail2ban radi s jailovima (ćelijama). Jail kombinira tri stvari:

  • filter: regularne izraze koji u zapisniku prepoznaju neuspjele pokušaje (na primjer redak "Invalid user ... from <adres>");
  • akciju: što se događa kod previše pokušaja, obično pravilo vatrozida koje blokira adresu (banaction, na Debianu 13 standardno putem nftablesa);
  • pragove: koliko neuspjelih pokušaja (maxretry) unutar kojeg vremena (findtime) dovodi do blokade koliko dugo (bantime).

Zadane vrijednosti iz jail.conf su: maxretry = 5, findtime = 10m, bantime = 10m. Dakle: pet neuspjelih pokušaja unutar deset minuta znači deset minuta blokade.

Instalacija i zamka Debiana 12

anna@web1:~$ sudo apt install fail2ban
anna@web1:~$ sudo systemctl status fail2ban

Na Debianu i Ubuntuu jail za SSH ([sshd]) je nakon instalacije već uključen, putem datoteke /etc/fail2ban/jail.d/defaults-debian.conf.

Postoji jedna poznata zamka. fail2ban mora znati gdje se nalazi zapisnik. Nekada je to bila tekstualna datoteka /var/log/auth.log. Od Debiana 12 rsyslog se više ne instalira standardno, a poruke se nalaze samo u journalu systemd-a (lekcija 6.2). Paket fail2ban u Debianu 12 još je tražio /var/log/auth.log, nije ga pronašao i nije se pokrenuo. Debian 13 to je riješio tako da u defaults-debian.conf za SSH postavlja backend = systemd. Na Debianu 12 to rješavate sami (pogledajte niže) tako da učinite isto. Ubuntu i dalje standardno ima rsyslog, ali backend = systemd radi i ondje.

Vaše vlastite postavke: jail.local

Nikada ne mijenjajte jail.conf: ta se datoteka pri ažuriranju zamjenjuje. Svoje postavke stavite u /etc/fail2ban/jail.local ili u datoteku u /etc/fail2ban/jail.d/ s nastavkom .local:

# /etc/fail2ban/jail.d/eigen.local
[DEFAULT]
bantime  = 1h
findtime = 10m
maxretry = 5
bantime.increment = true
ignoreip = 127.0.0.1/8 ::1 198.51.100.20

[sshd]
enabled = true
backend = systemd

Što rade ovi retci:

  • bantime = 1h: blokada od jednog sata umjesto deset minuta.
  • bantime.increment = true: tko se nakon blokade vrati, svaki put dobiva dulju blokadu.
  • ignoreip: adrese koje se nikada ne blokiraju. Ovdje upišite fiksnu IP adresu svog ureda, ako je imate. Ne upisujte ovdje velike raspone "za svaki slučaj".
  • backend = systemd: čitaj journal umjesto tekstualne datoteke (potrebno na Debianu 12, preporučljivo svugdje). Za to mora biti instaliran paket python3-systemd; obično već jest, kao ovisnost.

Ponovno učitavanje i provjera:

anna@web1:~$ sudo fail2ban-client -t            # testiranje konfiguracije
OK: configuration test is successful
anna@web1:~$ sudo systemctl reload fail2ban
anna@web1:~$ sudo fail2ban-client status
Status
|- Number of jail:      1
`- Jail list:   sshd

Čitanje statusa, blokiranje i oslobađanje

anna@web1:~$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 3
|  |- Total failed:     1288
|  `- Journal matches:  _SYSTEMD_UNIT=ssh.service + _COMM=sshd
`- Actions
   |- Currently banned: 2
   |- Total banned:     117
   `- Banned IP list:   203.0.113.77 198.51.100.140

"Currently failed" su adrese koje su već pokušavale, ali još nisu prešle prag. "Currently banned" su adrese koje su trenutačno blokirane.

Ako ste blokirali sami sebe (na primjer jer ste nekoliko puta pokušali s pogrešnim ključem ili korisničkim imenom), prijavite se putem druge mreže ili konzole i oslobodite svoju adresu:

anna@web1:~$ sudo fail2ban-client set sshd unbanip 198.51.100.20

Zapisnik samog fail2bana nalazi se u /var/log/fail2ban.log i pokazuje kada je koja adresa blokirana i oslobođena:

2026-11-09 14:02:16,903 fail2ban.actions [811]: NOTICE  [sshd] Ban 203.0.113.77
2026-11-09 15:02:17,120 fail2ban.actions [811]: NOTICE  [sshd] Unban 203.0.113.77

Ponavljači: recidive

Neki se botovi nakon svake blokade jednostavno vrate. Za to postoje dva sredstva. bantime.increment (gore) svaki put produljuje blokadu. Osim toga postoji jail recidive: on čita zapisnik samog fail2bana i adresu koja je unutar jednog dana često blokirana blokira na tjedan dana na svim priključcima. Uključite ga u svojoj .local datoteci:

[recidive]
enabled = true

Što fail2ban radi, a što ne

fail2ban je koristan, ali nije brava na vratima. Brava je prijava ključem, uz isključene lozinke (lekcija 2.2). Zato znajte i što fail2ban ne može:

  • Raspodijeljeni napad s tisuća adresa, s po jednim ili dva pokušaja, nikada ne prelazi maxretry.
  • Slaba lozinka ostaje slaba. fail2ban usporava pogađanje, ništa više.
  • Samo ono što je u zapisniku: uslugu koja ne bilježi neuspjele pokušaje, ili zapisnik koji fail2ban ne čita, on ne vidi.
  • Docker: blokade u običnom lancu vatrozida ne vrijede za objavljene priključke kontejnera (lekcija 9.3). Za usluge u kontejnerima potrebna je zasebna postavka (akcija na lancu DOCKER-USER).

Što fail2ban radi dobro: održava zapisnik mirnim, smanjuje opterećenje od botova i štiti usluge na kojima (još) koristite lozinke, kao što su webmail ili upravljačka ploča. Za takve usluge postoje filteri za nginx, Postfix, Dovecot i mnoge druge.

Na AlmaLinuxu i Rocky Linuxu

Ondje fail2ban dolazi iz EPEL-a: dnf install epel-release, a zatim dnf install fail2ban. Paket fail2ban instalira i povezivanje s firewalldom. SSH usluga zove se sshd. Sam jail uključite u .local datoteci; za razliku od Debiana, on nije automatski uključen.

Sažetak

  • Botovi cijeli dan pokušavaju prijavu; uz ključeve i isključenu prijavu lozinkom ne mogu ući, a fail2ban ih dodatno drži na udaljenosti.
  • Jail je filter + akcija + pragovi (maxretry, findtime, bantime); standardno 5 pokušaja u 10 minuta, 10 minuta blokade.
  • Vlastite postavke u jail.local ili jail.d/*.local, nikada u jail.conf; koristite backend = systemd (potrebno na Debianu 12).
  • fail2ban-client status sshd prikazuje blokirane adrese, set sshd unbanip ih oslobađa; recidive i bantime.increment rješavaju ponavljače.
  • fail2ban ne zaustavlja raspodijeljene napade ni slabe lozinke i ne vidi sam od sebe Docker priključke.

Kviz

1. Na Debian 12 instalirali ste fail2ban i on se ne pokreće, uz poruku da za sshd jail ne postoji datoteka zapisnika. Što je uzrok?



2. Zašto svoje postavke stavljate u jail.local, a ne u jail.conf?



3. Zadane postavke su maxretry = 5, findtime = 10m, bantime = 10m. Jedna adresa ima neuspjeli pokušaj u 14:00, 14:03, 14:05, 14:08 i 14:09. Što se događa?



4. Vaš poslužitelj svaki dan dobiva tisuće pokušaja prijave, raspoređenih na desetke tisuća adresa, po jedan pokušaj s svake. Što fail2ban čini protiv toga?



5. Blokirali ste sami sebe jer ste nekoliko puta upisali pogrešno korisničko ime. Koje je ispravno rješenje?



Zadatak

Zadatak Z5.3: Čitanje zapisnika provale. U primjernoj datoteci ssh-journal-1.txt nalazi se dio journala SSH poslužitelja s fail2banom, uz izlaz naredbe fail2ban-client status sshd. Odgovorite: koja je adresa isprobala najviše korisničkih imena, koja se adresa uspjela prijaviti ključem i kao koji korisnik, koja je adresa blokirana i u koliko sati, te bi li ta adresa sa zadanim postavkama (maxretry = 5, findtime = 10m) također bila blokirana? Program uspoređuje s fiksnim ključem. Ako imate vlastiti poslužitelj s fail2banom, ondje također pogledajte fail2ban-client status sshd.

Zadatak Z5.3: Čitanje zapisnika provale

Datoteka uz ovaj zadatak: ssh-journal-1.txt








Ono što unesete i što pronađemo ne spremamo. Vaš preglednik pamti Vaše odgovore i je li zadatak položen. Ako ste prijavljeni, u Moji tečajevi čuvamo samo podatak da ste zadatak (gotovo) uspješno riješili; ondje to možete i izbrisati.

Dodatno štivo

Trenutak…

Postavite svoje domene

Za svaku domenu odredite nameservere, povezivanje s hostingom i tko postaje vlasnik.

Učitavanje Vaših domena…