Siirry suoraan sisältöön

Evästeasetukset

Valitse, mitä evästetyyppejä sallit. Voit muuttaa valintaasi milloin tahansa jokaisen sivun alareunassa olevasta kohdasta Evästeasetukset. Tietosuojaseloste

Välttämättömät

Aina käytössä

Tarvitaan sisäänkirjautumiseen, ostoskorin säilyttämiseen ja valintojesi muistamiseen. Nämä ovat aina käytössä.

Mitkä evästeet?
  • weboke_sessie, weboke_klant, weboke_remember: istuntosi ja sisäänkirjautuneena pysyminen
  • weboke_basket: ostoskorisi
  • wkBtwIncl: hintojen näyttäminen verollisina tai verottomina
  • wok_cookies: evästevalintasi, 12 kuukautta

Mittaa, mikä mainos johtaa käyntiin tai tilaukseen, jotta emme maksa mainoksista, joista ei ole hyötyä.

Mitkä evästeet?
  • Google Ads Google Tag Managerin kautta (_gcl_au, _gcl_aw), enintään 90 päivää
  • OpenAI Ads, mainokset ChatGPT-palvelussa
  • wok_aff: minkä kumppanin kautta tulit meille (kumppaniohjelma), 60 päivää

4,6

Maa ja kieli

Jokaisella maalla on oma sivustonsa, jossa on kyseisen maan hinnat ja ALV.

Näytä

fail2ban arvausyrityksiä vastaan

Moduuli 5: Verkon suojaaminen · Lukuaika: 10 minuuttia

Tavoite: Tämän oppitunnin jälkeen osaat asettaa fail2banin SSH:lle, lukea sen tilan ja lokin, vapauttaa osoitteen uudelleen ja selittää, mitä fail2ban suojaa ja mitä ei.

Keskeiset käsitteet: brute force, jail, suodatin (filter), toiminto (banaction), maxretry, findtime, bantime, bantime.increment, ignoreip, backend systemd, jail.conf, jail.local ja jail.d, fail2ban-client, recidive

Internetin ovenkahvojen kokeilijat

Katso SSH:n lokia päivä asennuksen jälkeen, niin näet sen: satoja kirjautumisyrityksiä nimillä kuten root, admin, test, ubuntu ja oracle, osoitteista ympäri maailmaa.

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

(Ubuntussa palvelun nimi on ssh, AlmaLinuxissa ja Rockyssa sshd. Prosessin nimi voi olla sshd tai sshd-session OpenSSH-version mukaan.) Tämä on brute force -hyökkäys: botit kokeilevat yksinkertaisesti kaikkia yleisiä nimiä ja salasanoja. Kun kirjaudut avaimilla ja salasanakirjautuminen on pois päältä (oppitunti 2.2), ne eivät pääse koskaan sisään, vaikka yrittäisivät kuinka monta kertaa. Ne kuitenkin täyttävät lokisi, vievät hieman laskentatehoa, ja palveluissa, joissa salasanaa tarvitaan (webmail, hallintapaneeli), ne voivat olla todella vaarallisia.

fail2ban lukee lokeja, tunnistaa epäonnistuneet yritykset ja lukitsee liian usein epäonnistuvan osoitteen palomuurissa joksikin aikaa.

Miten fail2ban ajattelee: jailit

fail2ban toimii jaileilla (selleillä). Jail yhdistää kolme asiaa:

  • suodatin: säännölliset lausekkeet, jotka tunnistavat lokista epäonnistuneet yritykset (esimerkiksi rivin "Invalid user ... from <adres>");
  • toiminto: mitä tapahtuu liian monen yrityksen jälkeen, yleensä palomuurisääntö, joka estää osoitteen (banaction, Debian 13:ssa oletuksena nftablesin kautta);
  • raja-arvot: kuinka monta epäonnistunutta yritystä (maxretry) missä ajassa (findtime) johtaa kuinka pitkään estoon (bantime).

Tiedoston jail.conf oletusarvot ovat: maxretry = 5, findtime = 10m, bantime = 10m. Siis: viisi epäonnistunutta yritystä kymmenen minuutin sisällä johtaa kymmenen minuutin estoon.

Asennus ja Debian 12:n sudenkuoppa

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

Debianissa ja Ubuntussa SSH:n jail ([sshd]) on asennuksen jälkeen jo päällä tiedoston /etc/fail2ban/jail.d/defaults-debian.conf kautta.

Tunnettu sudenkuoppa on yksi. fail2banin täytyy tietää, missä loki on. Ennen se oli tekstitiedosto /var/log/auth.log. Debian 12:sta lähtien rsyslogia ei enää asenneta oletuksena, ja ilmoitukset ovat vain systemd:n journalissa (oppitunti 6.2). Debian 12:n fail2ban-paketti etsi yhä tiedostoa /var/log/auth.log, ei löytänyt sitä eikä käynnistynyt. Debian 13 on korjannut tämän asettamalla tiedostossa defaults-debian.conf SSH:lle backend = systemd. Debian 12:ssa korjaat asian itse (katso alla) tekemällä saman. Ubuntussa rsyslog on yhä oletuksena, mutta backend = systemd toimii sielläkin.

Omat asetuksesi: jail.local

Älä koskaan muokkaa tiedostoa jail.conf: se korvataan päivityksen yhteydessä. Laita omat asetuksesi tiedostoon /etc/fail2ban/jail.local tai hakemistoon /etc/fail2ban/jail.d/ tiedostoon, jonka pääte on .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

Mitä rivit tekevät:

  • bantime = 1h: tunnin esto kymmenen minuutin sijaan.
  • bantime.increment = true: kuka palaa eston jälkeen, saa joka kerta pidemmän eston.
  • ignoreip: osoitteet, joita ei koskaan estetä. Laita tähän toimistosi kiinteä IP-osoite, jos sinulla on sellainen. Älä laita tähän suuria osoitealueita "varmuuden vuoksi".
  • backend = systemd: lue journalia tekstitiedoston sijaan (pakollinen Debian 12:ssa, suositeltava kaikkialla). Tätä varten paketin python3-systemd täytyy olla asennettuna; yleensä se on jo asennettu riippuvuutena.

Lataa uudelleen ja tarkista:

anna@web1:~$ sudo fail2ban-client -t            # testaa asetukset
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

Tilan lukeminen, estäminen ja vapauttaminen

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" tarkoittaa osoitteita, jotka ovat jo yrittäneet mutta eivät vielä ylitä raja-arvoa. "Currently banned" tarkoittaa osoitteita, jotka ovat nyt estettyinä.

Jos olet estänyt itsesi (esimerkiksi yrittämällä muutaman kerran väärällä avaimella tai käyttäjänimellä), kirjaudu toisen verkon tai konsolin kautta ja vapauta osoitteesi:

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

fail2banin oma loki on tiedostossa /var/log/fail2ban.log, ja siitä näkyy, milloin mikin osoite estettiin ja vapautettiin:

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

Toistuvat yrittäjät: recidive

Osa boteista palaa jokaisen eston jälkeen. Niitä varten on kaksi keinoa. bantime.increment (yllä) pidentää estoa joka kerta. Lisäksi on jail recidive: se lukee fail2banin omaa lokia ja estää osoitteen, joka on vuorokauden aikana estetty usein, viikoksi kaikista porteista. Ota se käyttöön .local-tiedostossasi:

[recidive]
enabled = true

Mitä fail2ban tekee ja mitä ei

fail2ban on hyödyllinen, mutta se ei ole oven lukko. Lukko on kirjautuminen avaimella, salasanat pois päältä (oppitunti 2.2). Tiedä siksi myös, mihin fail2ban ei pysty:

  • Hajautettu hyökkäys tuhansista osoitteista, joista kustakin yksi tai kaksi yritystä, ei koskaan ylitä arvoa maxretry.
  • Heikko salasana pysyy heikkona. fail2ban hidastaa arvaamista, ei muuta.
  • Vain se, mikä on lokissa: palvelua, joka ei kirjaa epäonnistuneita yrityksiä, tai lokia, jota fail2ban ei lue, se ei näe.
  • Docker: tavallisen palomuuriketjun estot eivät koske julkaistuja konttiportteja (oppitunti 9.3). Konteissa ajettaville palveluille tarvitaan erillinen asetus (toiminto ketjussa DOCKER-USER).

Missä fail2ban on hyvä: se pitää lokin rauhallisena, vähentää bottien kuormaa ja suojaa palveluita, joissa käytät (vielä) salasanoja, kuten webmailia tai hallintapaneelia. Tällaisille palveluille on suodattimet nginxille, Postfixille, Dovecotille ja monelle muulle.

AlmaLinuxissa ja Rocky Linuxissa

fail2ban tulee siellä EPEListä: dnf install epel-release ja sitten dnf install fail2ban. Paketti fail2ban asentaa myös firewalld-kytkennän. SSH-palvelun nimi on sshd. Ota jail itse käyttöön .local-tiedostossa; toisin kuin Debianissa, se ei ole automaattisesti päällä.

Yhteenveto

  • Botit yrittävät kirjautua koko päivän; avaimilla ja salasanakirjautuminen pois päältä ne eivät pääse sisään, ja fail2ban pitää ne lisäksi loitolla.
  • Jail on suodatin + toiminto + raja-arvot (maxretry, findtime, bantime); oletuksena 5 yritystä 10 minuutissa, 10 minuutin esto.
  • Omat asetukset tiedostoon jail.local tai jail.d/*.local, ei koskaan tiedostoon jail.conf; käytä asetusta backend = systemd (pakollinen Debian 12:ssa).
  • fail2ban-client status sshd näyttää estetyt osoitteet, set sshd unbanip vapauttaa; recidive ja bantime.increment hoitavat toistuvat yrittäjät.
  • fail2ban ei pysäytä hajautettuja hyökkäyksiä tai heikkoja salasanoja eikä näe Docker-portteja itsestään.

Tietovisa (quiz)

1. Olet asentanut fail2banin Debian 12:een, eikä se käynnisty, koska sshd-jailille ei ole lokitiedostoa. Mikä on syy?



2. Miksi laitat asetuksesi tiedostoon jail.local etkä tiedostoon jail.conf?



3. Oletusasetukset ovat maxretry = 5, findtime = 10m, bantime = 10m. Osoite tekee epäonnistuneen yrityksen kello 14:00, 14:03, 14:05, 14:08 ja 14:09. Mitä tapahtuu?



4. Palvelimesi saa joka päivä tuhansia kirjautumisyrityksiä kymmenistä tuhansista osoitteista, kustakin yhden yrityksen. Mitä fail2ban tekee sitä vastaan?



5. Olet estänyt itsesi kirjoittamalla muutaman kerran väärän käyttäjänimen. Mikä on siisti ratkaisu?



Tehtävä

Tehtävä Z5.3: Murtautumislokin lukeminen. Esimerkkitiedostossa ssh-journal-1.txt on ote fail2bania käyttävän SSH-palvelimen journalista sekä komennon fail2ban-client status sshd tuloste. Vastaa: mikä osoite kokeili eniten käyttäjänimiä, mikä osoite onnistui kirjautumaan avaimella ja minä käyttäjänä, mikä osoite on estetty ja mihin aikaan, ja olisiko tämä osoite estetty myös oletusasetuksilla (maxretry = 5, findtime = 10m)? Ohjelma vertaa vastauksiasi kiinteään vastausavaimeen. Jos sinulla on oma palvelin, jossa on fail2ban, katso siellä myös fail2ban-client status sshd.

Tehtävä Z5.3: Murtautumislokin lukeminen

Tähän tehtävään liittyvä tiedosto: ssh-journal-1.txt








Sitä, mitä kirjoitat ja mitä löydämme, ei tallenneta. Selaimesi muistaa vastauksesi ja sen, oletko suorittanut tehtävän. Jos olet kirjautunut sisään, tallennamme kohtaan Omat kurssit vain sen, että tehtävä oli (lähes) oikein; voit poistaa sen myös sieltä.

Lue lisää

Hetkinen…

Määritä verkkotunnuksesi

Määritä kullekin verkkotunnukselle nimipalvelimet, liitos webhotelliin ja se, kuka tulee omistajaksi.

Ladataan verkkotunnuksia…