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ä

Palomuuri ufw:llä ja nftablesilla

Moduuli 5: Verkon suojaaminen · Lukuaika: 12 minuuttia

Tavoite: Tämän oppitunnin jälkeen osaat määrittää palomuurin, joka päästää läpi vain tarpeellisen sekä IPv4:llä että IPv6:lla lukitsematta itseäsi ulos, ja tiedät, mitä vastaan palvelimesi palomuuri ei suojaa.

Keskeiset käsitteet: pakettisuodatin, netfilter, nftables, iptables-nft, ufw, oletuskäytäntö, allow, deny, reject, limit, IPv6 ufw:ssä, palveluntarjoajan palomuuri, firewalld, Docker ja palomuuri

Mitä palomuuri tekee

Palvelimesi palomuuri on pakettisuodatin: jokaisen saapuvan verkkopaketin kohdalla se käy läpi sääntölistan ja päättää, pääseekö paketti läpi. Linuxissa suodatin on ytimessä, ja sen nimi on netfilter. Sitä määritetään ohjelmalla:

  • nftables (komento nft) on nykyinen työkalu. Debian käyttää sitä oletuksena Debian 10:stä lähtien.
  • iptables on vanha työkalu. Nykyaikaisissa järjestelmissä iptables on yleensä käännöskerros nftablesiin (iptables-nft), jotta vanhat ohjeet toimivat yhä.
  • ufw (Uncomplicated Firewall) on yksinkertainen kerros näiden päällä. Se on oletuksena mukana Ubuntussa, ja Debianiin sen saa asennettua yhdellä komennolla. Yksittäiselle palvelimelle ufw on helpoin valinta. Tällä oppitunnilla käytetään ufw:tä, ja sen jälkeen näet, miltä samat säännöt näyttävät nftablesissa.

Palomuuri on toinen puolustuskerroksesi. Ensimmäinen on se, että palvelut kuuntelevat vain oikeassa osoitteessa (oppitunti 5.1). Yhdessä ne varmistavat, ettei yhden kerroksen virhe ole heti avoin ovi.

Ensin: miten pääset takaisin, jos jokin menee pieleen?

Klassinen virhe: otat palomuurin käyttöön, unohdat sallia SSH:n ja yhteytesi katkeaa. Silloin et enää pääse palvelimelle SSH:lla. Ennen kuin aloitat:

  1. Selvitä, miten avaat palveluntarjoajasi konsolin (oppitunti 1.2). Se toimii verkon ohi, joten myös silloin, kun palomuuri sulkee kaiken. Kirjaudu sinne ja kirjoita ufw disable.
  2. Ota tilannevedos (snapshot), jos olet epävarma.
  3. Pidä nykyinen SSH-istuntosi auki ja testaa toisella istunnolla.

ufw viidessä vaiheessa

Vaihe 1: asenna ja valitse oletus.

anna@web1:~$ sudo apt install ufw
anna@web1:~$ sudo ufw default deny incoming
Default incoming policy changed to 'deny'
anna@web1:~$ sudo ufw default allow outgoing
Default outgoing policy changed to 'allow'

Oletuskäytäntö koskee kaikkea, mille ei ole sääntöä. "Deny incoming" tarkoittaa: kaikki saapuva on kielletty, paitsi se, minkä seuraavaksi sallit. Se on ainoa turvallinen pohja. Lähtevän liikenteen (palvelimesi hakee päivityksiä) sallit.

Vaihe 2: salli SSH ennen kuin otat palomuurin käyttöön.

anna@web1:~$ sudo ufw allow OpenSSH
Rules updated
Rules updated (v6)

OpenSSH on ufw:n tuntema sovellusprofiili (se tarkoittaa porttia 22/tcp). Jos SSH toimii eri portissa, käytä numeroa: sudo ufw allow 2222/tcp. Huomaa "Rules updated (v6)": ufw luo säännön myös IPv6:lle. Se tekee niin, koska tiedostossa /etc/default/ufw on rivi IPV6=yes, joka on oletus. Tarkista tämä; jos asetus on no, palomuurisi koskee vain IPv4:ää.

Vaihe 3: muut tarvitsemasi asiat.

anna@web1:~$ sudo ufw allow 80/tcp
anna@web1:~$ sudo ufw allow 443/tcp
anna@web1:~$ sudo ufw allow 443/udp       # vain jos käytät HTTP/3:a

Voit rajata säännön yhteen lähdeosoitteeseen, esimerkiksi hallintaporttiin, johon saa yhdistää vain toimistoltasi:

anna@web1:~$ sudo ufw allow from 198.51.100.20 to any port 9090 proto tcp

Vaihe 4: ota käyttöön.

anna@web1:~$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Vaihe 5: tarkista. Avaa toinen ikkuna ja kirjaudu uudelleen. Jos se onnistuu, SSH on kunnossa. Katso sen jälkeen säännöt:

anna@web1:~$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp (OpenSSH)           ALLOW IN    Anywhere
80/tcp                     ALLOW IN    Anywhere
443/tcp                    ALLOW IN    Anywhere
22/tcp (OpenSSH (v6))      ALLOW IN    Anywhere (v6)
80/tcp (v6)                ALLOW IN    Anywhere (v6)
443/tcp (v6)               ALLOW IN    Anywhere (v6)

Säännön poistaminen tehdään numeroilla: sudo ufw status numbered ja sitten sudo ufw delete 3.

deny, reject ja limit

  • deny pudottaa paketin hiljaa: ulkopuolelta portti näkyy "suodatettuna" (oppitunti 5.1).
  • reject lähettää takaisin hylkäyksen: ulkopuolelta portti näkyy "suljettuna". Siistimpää omille palveluillesi, mutta se paljastaa, että palvelin on olemassa.
  • limit sallii yhteyden mutta estää osoitteen, joka yrittää yhdistää kuusi kertaa tai useammin 30 sekunnin sisällä. Kätevä SSH:lle: sudo ufw limit OpenSSH eikä allow. Se on karkea (se laskee yhteyksiä, ei epäonnistuneita kirjautumisia); fail2ban (oppitunti 5.3) on tarkempi.

Samat säännöt nftablesissa

ufw kirjoittaa konepellin alla netfilter-sääntöjä. Jos haluat toimia ilman ufw:tä, kirjoitat itse nftables-tiedoston. Debianissa se on tiedostossa /etc/nftables.conf, ja se ladataan palvelulla nftables:

#!/usr/sbin/nft -f
flush ruleset

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;
        ct state established,related accept
        ct state invalid drop
        iif "lo" accept
        meta l4proto { icmp, ipv6-icmp } accept
        tcp dport { 22, 80, 443 } accept
    }
    chain forward {
        type filter hook forward priority 0; policy drop;
    }
    chain output {
        type filter hook output priority 0; policy accept;
    }
}

Lue se näin. Taulun nimi on filter ja sen perhe on inet: yksi taulu sekä IPv4:lle että IPv6:lle samanaikaisesti, joten IPv6:ta ei voi unohtaa. Ketjussa input käytäntö on drop. Sen jälkeen: jo olemassa olevien yhteyksien vastaukset saavat palata (established,related), kaikki loopbackissa on sallittua, ICMP on sallittu (tarpeen muun muassa IPv6:lle ja pakettikokoa koskeville virheilmoituksille), ja portit 22, 80 ja 443 ovat sallittuja.

anna@web1:~$ sudo nft -c -f /etc/nftables.conf    # tarkista lataamatta
anna@web1:~$ sudo systemctl enable --now nftables
anna@web1:~$ sudo nft list ruleset

Käytä joko ufw:tä tai omaa nftables-tiedostoa, älä molempia: ne kirjoittavat samaan netfilteriin ja voivat sotkea toistensa säännöt.

Mitä vastaan palomuuri ei suojaa

  • Palvelut, jotka itse sallit. Portti 443 on auki verkkosivustoasi varten; sivustosi haavoittuvuus on siis yhtä lailla tavoitettavissa. Palomuuri suojaa vain suljettuja portteja.
  • Docker. Kun julkaiset Dockerilla portin (-p 5432:5432), Docker asettaa omat netfilter-sääntönsä, jotka ohjaavat liikenteen ennen kuin ufw:n säännöt tulevat voimaan. Dockerin dokumentaatio sanoo suoraan, että Docker ja ufw eivät sovi hyvin yhteen. Kontin portti voi siis olla ulkoa auki, vaikka ufw status ei näytä sitä. Ratkaisun (julkaisu osoitteeseen 127.0.0.1) opit oppitunnilla 9.3.
  • Lähtevä liikenne. Kun "allow outgoing" on päällä, murrettu ohjelma voi ottaa yhteyden minne tahansa. Useimmille pienille palvelimille se on hyväksyttävä valinta; tiukoissa ympäristöissä rajoitetaan myös lähtevää liikennettä.

Palveluntarjoajan palomuuri

Monella palveluntarjoajalla on myös verkossa oleva palomuuri palvelimesi edessä, jota määrität asiakaspaneelissa (joskus nimellä "cloud firewall" tai "security group"). Se on erinomainen lisäkerros, ja se toimii silloinkin, kun teet jotain väärin itse palvelimella. Se ei kuitenkaan korvaa palvelimen omaa palomuuria: jos siirrät palvelimen tai vaihdat palveluntarjoajaa, se ei siirry mukana, eikä jokainen palveluntarjoaja tarjoa sitä. Pidä siksi aina palomuuri myös itse palvelimella.

AlmaLinuxissa ja Rocky Linuxissa

Niissä firewalld on oletuksena päällä, ja se käyttää vyöhykkeitä. Tärkeimmät komennot:

[root@web1 ~]# firewall-cmd --list-all
[root@web1 ~]# firewall-cmd --permanent --add-service=http --add-service=https
[root@web1 ~]# firewall-cmd --reload

Ilman valitsinta --permanent muutos on voimassa vain seuraavaan uudelleenkäynnistykseen asti; valitsimella --permanent se tulee voimaan vasta komennon --reload jälkeen. SSH on oletusvyöhykkeellä jo auki.

Käytännössä

Jos lukitset itsesi silti ulos WebOkén VPS:ltä, avaa VPS-näkymästä konsoli, kirjaudu sisään ja poista palomuuri käytöstä (ufw disable) tai peru viimeisin sääntö. Muilla palveluntarjoajilla tämä hätäsisäänkäynti on nimeltään myös console, VNC tai rescue. Selvitä, missä painike on, ennen kuin tarvitset sitä.

Yhteenveto

  • Palomuuri on toinen kerroksesi periaatteen "kuuntele vain siellä, missä tarvitaan" jälkeen; nftables on ytimen työkalu, ufw yksinkertainen kerros sen päällä.
  • Aloita komennolla default deny incoming, salli SSH ennen komentoa ufw enable, testaa toisella istunnolla ja tunne palveluntarjoajasi konsoli.
  • Tarkista, että ufw kattaa myös IPv6:n (IPV6=yes); nftablesissa perhe inet hoitaa sen kerralla.
  • deny näkyy ulkoa "suodatettuna", reject "suljettuna"; limit hidastaa toistuvia yhteyksiä.
  • Dockerin portit ohittavat ufw:n (oppitunti 9.3); palveluntarjoajan palomuuri on lisäkerros, ei korvaaja.

Tietovisa (quiz)

1. Missä järjestyksessä otat ufw:n ensimmäistä kertaa käyttöön palvelimella, jolle olet kirjautunut SSH:lla?



2. Komennon ufw enable jälkeen verkkosivustosi ei enää toimi IPv4:llä, mutta SSH toimii. Mikä on todennäköisin syy?



3. Julkaiset Dockerilla tietokantakontin portin 5432. ufw status ei näytä sääntöä portille 5432. Onko tietokanta tavoitettavissa ulkoa?



4. Miksi nftables-esimerkissä käytetään perheen inet taulua?



5. Palveluntarjoajallasi on verkkopalomuuri asiakaspaneelissa. Tarvitsetko silti palomuurin palvelimelle?



Tehtävä

Tehtävä O5.2: Palomuurin määrittäminen. Ota palvelimellasi käyttöön palomuuri ufw:llä (tai nftablesilla, tai firewalld:llä AlmaLinuxissa/Rockyssa): oletuksena kaikki saapuva suljettu, SSH sekä se, mitä todella tarvitset lisäksi. Testaa toisella istunnolla, tarkista, että IPv6 on katettu, ja katso ulkopuolelta komennolla nc, onko sallimaton portti suljettu tai suodatettu. Täytä tarkistuslista ja liitä tuloste ufw status verbose (tai nft list ruleset); kerro jokaisen avoimen portin kohdalla, mihin se on tarkoitettu.

Tehtävä O5.2: Palomuurin määrittäminen

Tämän tehtävän teet itse, kukaan ei tarkista sitä. Merkitse tekemäsi kohdat ja merkitse tehtävä tehdyksi.



Merkintäsi ja muistiinpanosi pysyvät vain tässä selaimessa, emme lähetä niitä minnekään. Jos olet kirjautunut sisään, tallennamme kohtaan Omat kurssit vain sen, että olet tehnyt tehtävän.

Lue lisää

Hetkinen…

Määritä verkkotunnuksesi

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

Ladataan verkkotunnuksia…