Pereiti prie turinio

Slapukų nustatymai

Pasirinkite, kokių rūšių slapukus leidžiate. Pasirinkimą bet kada galite pakeisti per „Slapukų nustatymai“ kiekvieno puslapio apačioje. Privatumo pareiškimas

Būtinieji

Visada įjungti

Reikalingi prisijungti, išsaugoti krepšelį ir įsiminti Jūsų pasirinkimus. Jie visada įjungti.

Kokie slapukai?
  • weboke_sessie, weboke_klant, weboke_remember: Jūsų sesija ir prisijungimo išlaikymas
  • weboke_basket: Jūsų krepšelis
  • wkBtwIncl: kainų rodymas su PVM arba be PVM
  • wok_cookies: Jūsų slapukų pasirinkimas, 12 mėnesių

Matuoja, kuri reklama atveda prie apsilankymo ar užsakymo, kad nemokėtume už neveiksmingas reklamas.

Kokie slapukai?
  • Google Ads per Google Tag Manager (_gcl_au, _gcl_aw), iki 90 dienų
  • OpenAI Ads, reklamos ChatGPT
  • wok_aff: per kurį partnerį atėjote pas mus (partnerių programa), 60 dienų

4,6

Šalis ir kalba

Kiekviena šalis turi savo svetainę su tos šalies kainomis ir PVM.

Peržiūrėti

Užkarda su ufw ir nftables

5 modulis: Tinklo apsauga · Skaitymo laikas: 12 min.

Mokymosi tikslas: Po šios pamokos galėsite nustatyti užkardą, kuri praleidžia tik tai, ko reikia, tiek IPv4, tiek IPv6 srautui, ir neužsirakinsite patys. Taip pat žinosite, nuo ko užkarda Jūsų serverio neapsaugo.

Pagrindinės sąvokos: paketų filtras, netfilter, nftables, iptables-nft, ufw, numatytoji politika, allow, deny, reject, limit, IPv6 ufw užkardoje, paslaugų teikėjo užkarda, firewalld, Docker ir užkarda

Ką daro užkarda

Užkarda Jūsų serveryje yra paketų filtras: kiekvienam gaunamam tinklo paketui ji patikrina taisyklių sąrašą ir nusprendžia, ar jį praleisti. Linux sistemoje šis filtras yra branduolyje ir vadinamas netfilter. Jį nustatote naudodami programą:

  • nftables (komanda nft) yra dabartinis įrankis. Debian jį naudoja pagal numatytuosius nustatymus nuo Debian 10.
  • iptables yra senasis įrankis. Šiuolaikinėse sistemose iptables dažniausiai yra vertimas į nftables (iptables-nft), kad senos instrukcijos vis dar veiktų.
  • ufw (Uncomplicated Firewall) yra paprastas sluoksnis virš jų, įdiegtas Ubuntu pagal numatytuosius nustatymus, o Debian sistemoje įdiegiamas viena komanda. Vienam serveriui ufw yra paprasčiausias pasirinkimas. Šioje pamokoje naudojamas ufw, o po to parodoma, kaip tos pačios taisyklės atrodo nftables.

Užkarda yra Jūsų antrasis gynybos sluoksnis. Pirmasis yra tai, kad paslaugos klausosi tik tinkamu adresu (pamoka 5.1). Kartu jie užtikrina, kad klaida viename sluoksnyje iš karto netaptų atviromis durimis.

Pirmiausia: kaip grįšite, jei kas nors nepavyks?

Klasikinė klaida: įjungiate užkardą, pamirštate leisti SSH, ir ryšys nutrūksta. Tada per SSH prie serverio nebepateksite. Prieš pradėdami:

  1. Žinokite, kaip atidaryti savo paslaugų teikėjo konsolę (pamoka 1.2). Ji veikia aplenkdama tinklą, todėl veikia ir tada, kai užkarda viską uždaro. Ten prisijungiate ir įvedate ufw disable.
  2. Jei abejojate, sukurkite momentinę kopiją (snapshot).
  3. Palikite dabartinę SSH sesiją atvirą ir tikrinkite per antrą sesiją.

ufw penkiais žingsniais

1 žingsnis: įdiegti ir pasirinkti numatytąją politiką.

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'

Numatytoji politika taikoma viskam, kam nėra taisyklės. „Deny incoming“ reiškia: viskas, kas ateina į serverį, draudžiama, išskyrus tai, ką leisite toliau. Tai vienintelis saugus pagrindas. Išeinantį srautą (kai serveris parsisiunčia atnaujinimus) leidžiate.

2 žingsnis: leisti SSH dar prieš įjungiant užkardą.

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

OpenSSH yra ufw žinomas programos profilis (jis reiškia prievadą 22/tcp). Jei SSH veikia kitu prievadu, naudokite numerį: sudo ufw allow 2222/tcp. Atkreipkite dėmesį į „Rules updated (v6)“: ufw sukuria taisyklę ir IPv6. Taip yra todėl, kad faile /etc/default/ufw nurodyta IPV6=yes, o tai yra numatytoji reikšmė. Tai patikrinkite: jei ten nurodyta no, Jūsų užkarda taikoma tik IPv4.

3 žingsnis: kas dar Jums reikalinga.

anna@web1:~$ sudo ufw allow 80/tcp
anna@web1:~$ sudo ufw allow 443/tcp
anna@web1:~$ sudo ufw allow 443/udp       # tik jei naudojate HTTP/3

Taisyklę galite apriboti vienu šaltinio adresu, pavyzdžiui, administravimo prievadą, prie kurio leidžiama jungtis tik iš Jūsų biuro:

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

4 žingsnis: įjungti.

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

5 žingsnis: patikrinti. Atidarykite antrą langą ir prisijunkite iš naujo. Jei pavyksta, SSH nustatytas teisingai. Tada peržiūrėkite taisykles:

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)

Taisyklė pašalinama pagal numerį: sudo ufw status numbered, o tada sudo ufw delete 3.

deny, reject ir limit

  • deny tyliai atmeta paketą: iš išorės matysite „filtruojamas“ (pamoka 5.1).
  • reject grąžina atsisakymą: iš išorės matysite „uždarytas“. Tai tvarkingiau Jūsų pačių paslaugoms, tačiau išduoda, kad ten yra serveris.
  • limit leidžia ryšį, bet užblokuoja adresą, kuris per 30 sekundžių bando prisijungti šešis ar daugiau kartų. Patogu SSH: sudo ufw limit OpenSSH vietoj allow. Tai grubus būdas (skaičiuojami ryšiai, o ne nepavykę prisijungimai); fail2ban (pamoka 5.3) yra tikslesnis.

Tos pačios taisyklės nftables

ufw po gaubtu rašo netfilter taisykles. Jei norite dirbti be ufw, nftables failą parašote patys. Debian sistemoje jis yra /etc/nftables.conf ir įkeliamas paslauga 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;
    }
}

Skaitykite jį taip. Lentelė vadinasi filter ir priklauso šeimai inet: viena lentelė iš karto IPv4 ir IPv6, todėl IPv6 pamiršti negalite. Grandinėje input politika yra drop. Toliau: atsakymai į jau esamus ryšius leidžiami (established,related), viskas per loopback leidžiama, ICMP leidžiamas (jo reikia, be kita ko, IPv6 ir pranešimams apie paketų dydį), taip pat leidžiami prievadai 22, 80 ir 443.

anna@web1:~$ sudo nft -c -f /etc/nftables.conf    # patikrinti neįkeliant
anna@web1:~$ sudo systemctl enable --now nftables
anna@web1:~$ sudo nft list ruleset

Naudokite arba ufw, arba nuosavą nftables failą, bet ne abu: jie rašo į tą patį netfilter ir gali vienas kito taisyklėms trukdyti.

Nuo ko užkarda neapsaugo

  • Paslaugos, kurias leidžiate patys. Prievadas 443 atviras Jūsų svetainei, todėl spraga svetainėje yra tiesiog pasiekiama. Užkarda apsaugo tik uždarytus prievadus.
  • Docker. Kai su Docker publikuojate prievadą (-p 5432:5432), Docker nustato savo netfilter taisykles, kurios nukreipia srautą dar prieš pradedant galioti ufw taisyklėms. Docker dokumentacijoje tiesiai parašyta, kad Docker ir ufw gerai kartu neveikia. Taigi konteinerio prievadas gali būti atviras iš išorės, nors ufw status jo nerodo. Sprendimą (publikavimą adresu 127.0.0.1) išmoksite pamokoje 9.3.
  • Išeinantis srautas. Su „allow outgoing“ įsilaužėlių užvaldyta programa gali jungtis bet kur. Daugumai mažų serverių tai priimtinas pasirinkimas; griežtose aplinkose ribojamas ir išeinantis srautas.

Paslaugų teikėjo užkarda

Daugelis paslaugų teikėjų taip pat turi užkardą tinkle, prieš Jūsų serverį, kurią nustatote klientų skydelyje (kartais ji vadinama „cloud firewall“ arba „security group“). Tai puikus papildomas sluoksnis, veikiantis ir tada, kai pačiame serveryje ką nors padarote ne taip. Tačiau ji nepakeičia užkardos serveryje: jei serverį perkeliate ar keičiate paslaugų teikėją, ji kartu neperkeliama, be to, ne kiekvienas paslaugų teikėjas ją siūlo. Todėl visada turėkite užkardą ir pačiame serveryje.

AlmaLinux ir Rocky Linux sistemose

Ten pagal numatytuosius nustatymus įjungta firewalld su zonomis. Svarbiausios komandos:

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

Be --permanent pakeitimas galioja tik iki kito paleidimo iš naujo; su --permanent jis įsigalioja tik po --reload. Numatytojoje zonoje SSH jau atviras.

Praktikoje

Jei vis dėlto užsirakinate WebOké VPS, VPS lange atidarykite konsolę, prisijunkite ir išjunkite užkardą (ufw disable) arba atšaukite paskutinę taisyklę. Kitų paslaugų teikėjų šis avarinis įėjimas taip pat vadinamas console, VNC arba rescue. Sužinokite, kur yra šis mygtukas, dar prieš jo prireikiant.

Santrauka

  • Užkarda yra antrasis sluoksnis po principo „klausytis tik ten, kur reikia“; nftables yra įrankis branduolyje, ufw yra paprastas sluoksnis virš jo.
  • Pradėkite nuo default deny incoming, leiskite SSH prieš ufw enable, tikrinkite per antrą sesiją ir žinokite savo paslaugų teikėjo konsolę.
  • Patikrinkite, ar ufw apima ir IPv6 (IPV6=yes); nftables tai iš karto padaro šeima inet.
  • deny iš išorės rodo „filtruojamas“, reject rodo „uždarytas“; limit stabdo pasikartojančius ryšius.
  • Docker prievadai aplenkia ufw (pamoka 9.3); paslaugų teikėjo užkarda yra papildomas sluoksnis, o ne pakaitalas.

Testas (quiz)

1. Kokia tvarka pirmą kartą įjungiate ufw serveryje, prie kurio esate prisijungę per SSH?



2. Po ufw enable Jūsų svetainė per IPv4 nebeveikia, bet SSH veikia. Kokia labiausiai tikėtina priežastis?



3. Su Docker publikuojate duomenų bazės konteinerio prievadą 5432. ufw status nerodo jokios taisyklės prievadui 5432. Ar duomenų bazė pasiekiama iš išorės?



4. Kodėl nftables pavyzdyje naudojama šeimos inet lentelė?



5. Jūsų paslaugų teikėjas klientų skydelyje turi tinklo užkardą. Ar Jums dar reikia užkardos serveryje?



Užduotis

Užduotis O5.2: Jūsų užkardos sąranka. Įjunkite savo serveryje užkardą su ufw (arba nftables, arba firewalld AlmaLinux/Rocky sistemose): pagal numatytuosius nustatymus visas gaunamas srautas uždarytas, leidžiamas SSH ir tai, ko Jums iš tiesų dar reikia. Patikrinkite per antrą sesiją, patikrinkite, ar apimtas IPv6, ir iš išorės su nc pažiūrėkite, ar neleistas prievadas yra uždarytas arba filtruojamas. Užpildykite kontrolinį sąrašą ir įklijuokite savo ufw status verbose (arba nft list ruleset); prie kiekvieno atviro prievado nurodykite, kam jis skirtas.

Užduotis O5.2: Jūsų užkardos sąranka

Šią užduotį atliekate patys; niekas jos netikrina. Pažymėkite, ką atlikote, ir pažymėkite užduotį kaip atliktą.



Jūsų pažymėti varneliai ir pastabos lieka tik šioje naršyklėje; niekur jų nesiunčiame. Jei esate prisijungę, skiltyje Mano kursai išsaugome tik tai, kad užduotį atlikote.

Skaitykite daugiau

Akimirką…

Nustatykite domenus

Kiekvienam domenui nustatykite vardų serverius, susiejimą su talpinimu ir tai, kas taps valdytoju.

Įkeliami Jūsų domenai…