Pāriet uz saturu

Sīkdatņu iestatījumi

Izvēlieties, kāda veida sīkdatnes atļaujat. Savu izvēli varat jebkurā laikā mainīt sadaļā Sīkdatņu iestatījumi katras lapas apakšā. Privātuma politika

Nepieciešamās

Vienmēr ieslēgtas

Vajadzīgas, lai pieteiktos, saglabātu grozu un atcerētos Jūsu izvēles. Tās vienmēr ir ieslēgtas.

Kuras sīkdatnes?
  • weboke_sessie, weboke_klant, weboke_remember: Jūsu sesija un pieteikšanās saglabāšana
  • weboke_basket: Jūsu grozs
  • wkBtwIncl: cenu rādīšana ar PVN vai bez PVN
  • wok_cookies: Jūsu sīkdatņu izvēle, 12 mēneši

Mēra, kura reklāma noved pie apmeklējuma vai pasūtījuma, lai mēs nemaksātu par reklāmām, kas neko nedod.

Kuras sīkdatnes?
  • Google Ads ar Google Tag Manager (_gcl_au, _gcl_aw), līdz 90 dienām
  • OpenAI Ads, reklāmas ChatGPT
  • wok_aff: caur kuru partneri nonācāt pie mums (partneru programma), 60 dienas

4,6

Valsts un valoda

Katrai valstij ir sava vietne ar attiecīgās valsts cenām un PVN.

Skatīt

Ugunsmūris ar ufw un nftables

5. modulis: Tīkla aizsardzība · Lasīšanas laiks: 12 min.

Mācīšanās mērķis: Pēc šīs nodarbības Jūs varēsiet iestatīt ugunsmūri, kas atļauj tikai to, kas nepieciešams, gan IPv4, gan IPv6, neizslēdzot sevi no servera, un zināsiet, no kā ugunsmūris Jūsu serveri neaizsargā.

Pamatjēdzieni: pakešu filtrs, netfilter, nftables, iptables-nft, ufw, noklusējuma politika, allow, deny, reject, limit, IPv6 programmā ufw, pakalpojumu sniedzēja ugunsmūris, firewalld, Docker un ugunsmūris

Ko dara ugunsmūris

Ugunsmūris Jūsu serverī ir pakešu filtrs: katrai ienākošajai tīkla paketei tas pārbauda noteikumu sarakstu un izlemj, vai to drīkst laist cauri. Linux šis filtrs atrodas kodolā, un to sauc par netfilter. To iestata ar kādu no šīm programmām:

  • nftables (komanda nft) ir pašreizējais rīks. Debian to izmanto pēc noklusējuma kopš Debian 10.
  • iptables ir vecais rīks. Mūsdienu sistēmās iptables parasti ir tulkojums uz nftables (iptables-nft), lai vecās pamācības joprojām darbotos.
  • ufw (Uncomplicated Firewall) ir vienkāršs slānis virs tā, kas pēc noklusējuma ir pieejams Ubuntu un Debian sistēmā uzstādāms ar vienu komandu. Vienam serverim ufw ir vieglākā izvēle. Šajā nodarbībā izmantojam ufw un pēc tam parādām, kā tie paši noteikumi izskatās nftables.

Ugunsmūris ir Jūsu otrais aizsardzības slānis. Pirmais ir tas, ka pakalpojumi klausās tikai pareizajā adresē (nodarbība 5.1). Kopā tie nodrošina, ka kļūda vienā slānī uzreiz nekļūst par atvērtām durvīm.

Vispirms: kā atgriezties, ja kaut kas noiet greizi?

Klasiskā kļūda: Jūs ieslēdzat ugunsmūri, aizmirstat atļaut SSH, un savienojums pārtrūkst. Tad pa SSH Jūs serverim vairs nepiekļūstat. Pirms sākat:

  1. Noskaidrojiet, kā atvērt sava pakalpojumu sniedzēja konsoli (nodarbība 1.2). Tā darbojas ārpus tīkla, tātad arī tad, ja ugunsmūris visu aizver. Tur Jūs piesakāties un ierakstāt ufw disable.
  2. Ja šaubāties, izveidojiet momentuzņēmumu (snapshot).
  3. Paturiet atvērtu pašreizējo SSH sesiju un pārbaudiet ar otru sesiju.

ufw piecos soļos

1. solis: uzstādīšana un noklusējuma izvēle.

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'

Noklusējuma politika attiecas uz visu, kam nav noteikuma. "Deny incoming" nozīmē: viss ienākošais ir aizliegts, izņemot to, ko Jūs pēc tam atļaujat. Tas ir vienīgais drošais pamats. Izejošo datplūsmu (serveris, kas lejupielādē atjauninājumus) Jūs atļaujat.

2. solis: atļaujiet SSH, pirms ieslēdzat ugunsmūri.

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

OpenSSH ir lietotnes profils, ko ufw pazīst (tas apzīmē portu 22/tcp). Ja SSH darbojas citā portā, izmantojiet numuru: sudo ufw allow 2222/tcp. Pievērsiet uzmanību paziņojumam "Rules updated (v6)": ufw izveido noteikumu arī IPv6. Tas notiek tāpēc, ka failā /etc/default/ufw ir rindiņa IPV6=yes, kas ir noklusējums. Pārbaudiet to; ja tur ir no, Jūsu ugunsmūris darbojas tikai IPv4.

3. solis: viss pārējais, kas Jums nepieciešams.

anna@web1:~$ sudo ufw allow 80/tcp
anna@web1:~$ sudo ufw allow 443/tcp
anna@web1:~$ sudo ufw allow 443/udp       # tikai tad, ja Jūs izmantojat HTTP/3

Noteikumu var ierobežot ar vienu avota adresi, piemēram, pārvaldības portam, kam drīkst piekļūt tikai no Jūsu biroja:

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

4. solis: ieslēgšana.

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. solis: pārbaude. Atveriet otru logu un piesakieties vēlreiz. Ja tas izdodas, SSH ir iestatīts pareizi. Pēc tam apskatiet noteikumus:

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)

Noteikumu dzēš pēc numura: sudo ufw status numbered un pēc tam sudo ufw delete 3.

deny, reject un limit

  • deny paketi klusi izmet: no ārpuses redzams "filtrēts" (nodarbība 5.1).
  • reject nosūta atpakaļ atteikumu: no ārpuses redzams "slēgts". Tas ir pieklājīgāk pret Jūsu pašu pakalpojumiem, taču atklāj, ka tur ir serveris.
  • limit savienojumu atļauj, bet bloķē adresi, kas 30 sekunžu laikā mēģina izveidot savienojumu sešas vai vairāk reizes. Noderīgi SSH: sudo ufw limit OpenSSH nevis allow. Tas ir rupjš rīks (tas skaita savienojumus, nevis neveiksmīgas pieteikšanās); fail2ban (nodarbība 5.3) ir precīzāks.

Tie paši noteikumi nftables

ufw aizkulisēs raksta netfilter noteikumus. Ja vēlaties strādāt bez ufw, Jūs pats rakstāt nftables failu. Debian sistēmā tas atrodas /etc/nftables.conf, un to ielādē ar pakalpojumu 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;
    }
}

Lasiet to šādi. Tabulas nosaukums ir filter, un tā pieder saimei inet: viena tabula vienlaikus IPv4 un IPv6, lai Jūs nevarētu aizmirst IPv6. Ķēdē input politika ir drop. Tālāk: atbildes uz jau esošiem savienojumiem drīkst atgriezties (established,related), viss loopback saskarnē ir atļauts, ICMP ir atļauts (vajadzīgs cita starpā IPv6 un kļūdu paziņojumiem par paketes izmēru), un porti 22, 80 un 443 ir atļauti.

anna@web1:~$ sudo nft -c -f /etc/nftables.conf    # pārbaudīt bez ielādes
anna@web1:~$ sudo systemctl enable --now nftables
anna@web1:~$ sudo nft list ruleset

Izmantojiet vai nu ufw, vai savu nftables failu, ne abus: tie raksta vienā un tajā pašā netfilter un var traucēt viens otra noteikumiem.

No kā ugunsmūris neaizsargā

  • Pakalpojumi, kurus Jūs pats atļaujat. Ports 443 ir atvērts Jūsu vietnei, tātad ievainojamība Jūsu vietnē ir pilnīgi sasniedzama. Ugunsmūris aizsargā tikai slēgtos portus.
  • Docker. Ja ar Docker publicējat portu (-p 5432:5432), Docker iestata savus netfilter noteikumus, kas novirza datplūsmu, pirms sāk darboties ufw noteikumi. Docker dokumentācijā burtiski teikts, ka Docker un ufw kopā labi nesader. Tātad konteinera ports var būt atvērts no ārpuses, kaut gan ufw status to nerāda. Risinājumu (publicēšanu uz 127.0.0.1) apgūsiet nodarbībā 9.3.
  • Izejošā datplūsma. Ar "allow outgoing" uzlauzta programma var sazināties ar jebkuru vietu. Lielākajai daļai mazu serveru tā ir pieņemama izvēle; stingrās vidēs ierobežo arī izejošo datplūsmu.

Pakalpojumu sniedzēja ugunsmūris

Daudziem pakalpojumu sniedzējiem ir arī ugunsmūris tīklā, pirms Jūsu servera, ko iestata klienta panelī (dažreiz to sauc par "cloud firewall" vai "security group"). Tas ir lielisks papildu slānis, un tas darbojas arī tad, ja pašā serverī esat kaut ko iestatījis nepareizi. Taču tas neaizstāj ugunsmūri serverī: ja pārvietojat serveri vai maināt pakalpojumu sniedzēju, tas nepārceļas līdzi, un ne katrs pakalpojumu sniedzējs to piedāvā. Tāpēc vienmēr uzturiet ugunsmūri arī pašā serverī.

AlmaLinux un Rocky Linux

Tur pēc noklusējuma ir ieslēgts firewalld ar zonām. Svarīgākās komandas:

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

Bez --permanent izmaiņas ir spēkā tikai līdz nākamajai restartēšanai; ar --permanent tās stājas spēkā tikai pēc --reload. Standarta zonā SSH jau ir atvērts.

Praksē

Ja tomēr esat sevi izslēdzis no VPS pie WebOké, VPS ekrānā atveriet konsoli, piesakieties un izslēdziet ugunsmūri (ufw disable) vai atsauciet pēdējo noteikumu. Pie citiem pakalpojumu sniedzējiem šo avārijas ieeju arī sauc par konsoli, VNC vai rescue. Noskaidrojiet, kur atrodas šī poga, pirms Jums tā ir vajadzīga.

Kopsavilkums

  • Ugunsmūris ir Jūsu otrais slānis pēc principa "klausīties tikai tur, kur vajag"; nftables ir rīks kodolā, ufw ir vienkāršs slānis virs tā.
  • Sāciet ar default deny incoming, atļaujiet SSH pirms ufw enable, pārbaudiet ar otru sesiju un ziniet sava pakalpojumu sniedzēja konsoli.
  • Pārbaudiet, vai ufw aptver arī IPv6 (IPV6=yes); nftables to uzreiz paveic saime inet.
  • deny no ārpuses rāda "filtrēts", reject rāda "slēgts"; limit bremzē atkārtotus savienojumus.
  • Docker porti apiet ufw (nodarbība 9.3); pakalpojumu sniedzēja ugunsmūris ir papildu slānis, nevis aizstājējs.

Tests (quiz)

1. Kādā secībā Jūs pirmo reizi ieslēdzat ufw serverī, kurā esat pieteicies pa SSH?



2. Pēc ufw enable Jūsu vietne pa IPv4 vairs nedarbojas, bet SSH darbojas. Kāds ir visticamākais iemesls?



3. Jūs ar Docker publicējat datubāzes konteinera portu 5432. ufw status nerāda noteikumu portam 5432. Vai datubāze ir sasniedzama no ārpuses?



4. Kāpēc nftables piemērā izmantota saimes inet tabula?



5. Jūsu pakalpojumu sniedzējam klienta panelī ir tīkla ugunsmūris. Vai Jums joprojām vajadzīgs ugunsmūris serverī?



Uzdevums

Uzdevums O5.2: Jūsu ugunsmūra iestatīšana. Ieslēdziet savā serverī ugunsmūri ar ufw (vai nftables, vai firewalld sistēmā AlmaLinux/Rocky): pēc noklusējuma viss ienākošais slēgts, SSH un tas, kas Jums vēl patiešām nepieciešams. Pārbaudiet ar otru sesiju, pārliecinieties, ka IPv6 ir aptverts, un no ārpuses ar nc pārbaudiet, vai neatļauts ports ir slēgts vai filtrēts. Aizpildiet kontrolsarakstu un ielīmējiet savu ufw status verbose (vai nft list ruleset); katram atvērtajam portam norādiet, kam tas paredzēts.

Uzdevums O5.2: Jūsu ugunsmūra iestatīšana

Šo uzdevumu veicat paši; neviens to nepārbauda. Atzīmējiet, ko esat izdarījuši, un atzīmējiet uzdevumu kā paveiktu.



Jūsu atzīmes un piezīmes paliek tikai šajā pārlūkprogrammā; mēs tās nekur nesūtām. Ja esat pieteikušies, sadaļā Mani kursi saglabājam tikai to, ka uzdevums ir paveikts.

Vairāk lasīt

Lūdzu, uzgaidiet…

Iestatiet savus domēnus

Katram domēnam norādiet vārdu serverus, piesaisti hostingam un to, kurš būs turētājs.

Ielādē Jūsu domēnus…