Mine sisu juurde

Küpsiste seaded

Vali iga liigi kohta, milliseid küpsiseid lubad. Oma valikut saad alati muuta iga lehe allosas oleva lingi „Küpsiste seaded“ kaudu. Privaatsuspoliitika

Vajalikud

Alati sees

Vajalikud sisselogimiseks, ostukorvi säilitamiseks ja sinu valikute meelespidamiseks. Need on alati sees.

Millised küpsised?
  • weboke_sessie, weboke_klant, weboke_remember: sinu seanss ja sisselogituks jäämine
  • weboke_basket: sinu ostukorv
  • wkBtwIncl: hindade näitamine koos käibemaksuga või ilma
  • wok_cookies: sinu küpsisevalik, 12 kuud

Mõõdab, milline reklaam viib külastuse või tellimuseni, et me ei maksaks reklaamide eest, mis midagi ei anna.

Millised küpsised?
  • Google Ads Google Tag Manageri kaudu (_gcl_au, _gcl_aw), kuni 90 päeva
  • OpenAI Ads, reklaamid ChatGPT-s
  • wok_aff: millise partneri kaudu meie juurde jõudsid (partnerprogramm), 60 päeva

4,6

Riik ja keel

Igal riigil on oma sait, selle riigi hindade ja käibemaksuga.

Vaata

Mida mitte teha

Moodul 10: Turvaliseks jäämine · Lugemisaeg: 12 minutit

Õpieesmärk: Pärast seda õppetundi tunned ära vead, mis kõige sagedamini viivad häkitud või katkise serverini, oskad selgitada, miks need on ohtlikud, ja tead, mida selle asemel teha.

Põhimõisted: root-sisselogimine parooliga, nõrk või vaikimisi parool, avatud andmebaas, Docker-API pordil 2375, docker.sock konteineris, chmod 777, curl | bash, saladused Gitis, haldusliides ilma kaheastmelise kinnitamiseta, tulemüür "korraks väljas", uuendusi pole, varukoopiat pole

Miks õppetund vigadest?

Enamikku servereid ei häki geniaalne ründaja tundmatu turvaauguga. Neid häkivad botid, mis käivad läbi kogu interneti ja otsivad teadaolevaid vigu: arvatavat parooli, avatud andmebaasi, programmi, millel on uuendus juba kuid tegemata. Kes väldib selle õppetunni vigu, langeb nende bottide sihtmärkide hulgast välja. See ongi suurem osa kaitsest, mida saada võid.

Iga vea juures on kirjas, miks see on ohtlik ja mida selle asemel teha. Peaaegu kõike oled õppinud varasemates õppetundides, see õppetund võtab selle kokku.

1. Root-sisselogimine parooliga

Probleem. Iga server saab kogu päeva sisselogimiskatseid pordile root (õppetund 5.3). Kui root saab parooliga sisse logida, on see parool ainus asi boti ja täieliku kontrolli vahel. Korduvkasutatud või liiga lühikesed paroolid arvatakse varem või hiljem ära või on need juba lekkinud nimekirjas.

Tee nii. Logi sisse ainult võtmetega: PasswordAuthentication no ja KbdInteractiveAuthentication no, root kõige rohkem võtmega (PermitRootLogin prohibit-password) või üldse mitte (no), igapäevane töö tavakasutajana sudoga (õppetunnid 2.2 ja 3.2). Kontrolli väljastpoolt, milliseid sisselogimisviise su server pakub (ülesanne Z2.2).

2. Andmebaas, vahemälu või otsinguklaster avatud internetti

Probleem. MySQL/MariaDB (3306), PostgreSQL (5432), Redis (6379), Elasticsearch või OpenSearch (9200) ja MongoDB (27017) on tehtud usaldusväärsetele programmidele usaldusväärses võrgus. Kui need kuulavad aadressil 0.0.0.0 ilma tulemüürita, leiavad skännerid need kiiresti üles. Redis ütleb oma dokumentatsioonis, et teda ei tohi internetile avada ja et ligipääsuga inimene võib kustutada kogu andmestiku; käsuga CONFIG saab ründaja isegi faile serverisse kirjutada. Avatud andmebaasid ja otsinguklastrid on juba aastaid olnud suurte andmelekete ja sinu andmete asemel jäetud "lunaraha"-teadete tuntud põhjus.

Tee nii. Lase sellistel teenustel kuulata aadressil 127.0.0.1 (õppetund 5.1), hoia neid tulemüüri taga (õppetund 5.2) ja ära avalda neid Dockeris või avalda ainult aadressil 127.0.0.1 (õppetund 9.3). Kui ise oma sülearvutist ligi vaja: SSH-tunnel (õppetund 2.3). Kontrolli väljastpoolt (ülesanne Z5.1).

3. Docker-API avatud või docker.sock konteineris

Probleem. Kes saab Dockeri deemonit juhtida, on sisuliselt serveris root: Dockeri dokumentatsioon ütleb, et deemonit tohivad juhtida ainult usaldusväärsed kasutajad, ja võrdsustab ligipääsu deemonile root-ligipääsuga. Sellel veal on kaks varianti:

  • Deemon kuulab TCP-pordil ilma TLS-ita (tavaliselt 2375). Igaüks, kes selle pordini jõuab, saab käivitada konteinereid, millesse on haagitud su serveri ketas.
  • Konteiner saab köiteks /var/run/docker.sock ("siis saab ta ise konteinereid hallata"). Kui see konteiner häkitakse, on kogu server ründaja käes.

Ka grupp docker võrdub rootiga (õppetund 9.2): lisa sinna ainult haldurid.

Tee nii. Lase Dockeril töötada ainult kohaliku sokli kaudu. Kaughaldus käib üle SSH (docker context koos ssh://) või, kui tõesti on vaja TCP-d, TLS-iga pordil 2376 ja kliendisertifikaatidega. Haagi docker.sock ainult konteinerisse, mida täielikult usaldad ja mida päriselt vajad, ning eelistatult ainult lugemiseks piirava puhverserveri kaudu.

4. chmod 777, et veateatest lahti saada

Probleem. Üleslaadimisel tuleb "Permission denied" ja foorum soovitab: chmod -R 777 /var/www. Pärast seda võib iga kasutaja ja iga protsess serveris kirjutada su veebisaidis kõike, ka häkitud plugin või mõni teine konto. Kood, mis on veebiserverile kirjutatav, võidakse turvaaugu kaudu tagauksega asendada.

Tee nii. Uuri välja, kes peab kirjutama ja kuhu (õppetund 3.1): tavaliselt ainult veebiserveri kasutaja ühes üleslaadimiste või vahemälu kaustas. Koodi omanik peab olema keegi muu kui veebiserver, õigused 644/755, üleslaadimised 750/640 või sarnased.

5. curl ... | bash ja tarkvara ükskõik kust

Probleem. Skript, mille käivitad rootina läbi lugemata, saab teha kõike: lisada allikaid ja võtmeid, faile üle kirjutada, teenust avada. Isegi kui kavatsus on hea, ei tea sa pärast, mis muutus, ja järgmisel väljalaske uuendamisel läheb midagi katki (õppetund 4.3).

Tee nii. Laadi skript alla ja loe see läbi. Eelista paigaldamist oma distributsiooni pakettide allikast või tegija ametlikust allikast, oma võtmega (Signed-By, õppetund 4.1). Pane kirja, mida paigaldad ja miks.

6. Uuendusi pole või uuendused "hiljem"

Probleem. Turvaaugud parandatakse ja seejärel kuritarvitatakse, tihti mõne päeva jooksul. Server, mis pole kuid uuendusi saanud või mis töötab toeta väljalaskel, kannab endas nimekirja teadaolevatest avaustest. Konteinereid apt ei uuenda.

Tee nii. Lülita automaatsed turvauuendused sisse (õppetund 4.2), määra taaskäivitamiseks kindel aeg, pane oma väljalaske toe lõppkuupäev kalendrisse (õppetund 4.3) ja uuenda konteinereid regulaarselt (õppetund 9.4).

7. Varukoopiat pole või seda pole kunagi testitud

Probleem. Hetktõmmis samal salvestusel ei ole varukoopia (õppetund 8.1). Serveris endas asuv varukoopia kaob häkkimise või lunavara korral koos sellega. Ja varukoopia, mida pole kunagi taastatud, on lootus, mitte kindlus.

Tee nii. Krüpteeritud varukoopiad väljaspool serverit (restic, õppetund 8.2), jälgimine, et need toimuvad, ja vähemalt kord kvartalis taastamise test.

8. Haldusliidesed avatud kõigile, ilma kaheastmelise kinnitamiseta

Probleem. Andmebaasi haldusliides (nt phpMyAdmin), Dockeri oma (nt Portainer), su rakenduse või paroolihoidla oma on ahvatlev sihtmärk: üks parool annab ligipääsu kõigele. Vaikimisi paroolid nagu admin/admin ja avatuks jäetud registreerimine (Vaultwarden, õppetund 9.4) teevad selle veel lihtsamaks.

Tee nii. Ära ava haldusliideseid internetti: kasuta SSH-tunnelit või luba ligipääs ainult kindlalt aadressilt. Kui liides peab siiski avalik olema: https, tugev unikaalne parool paroolihaldurist, kaheastmeline kinnitamine ja registreerimine suletud. Muuda alati vaikimisi paroolid.

9. Saladused Gitis või compose-failis

Probleem. Parool, API-võti või privaatvõti failis, mis satub Git-repositooriumisse, jääb sinna ajalukku igaveseks, ka siis, kui selle hiljem eemaldad. Botid otsivad avalikest repositooriumidest just selliseid võtmeid.

Tee nii. Hoia saladusi eraldi failis õigustega 600 (EnvironmentFile, õppetund 6.3; .env Docker Compose'i puhul, õppetund 9.3), mis on kirjas failis .gitignore. Kui saladus siiski lekkis: asenda see kohe (uus parool, uus võti), ainult Gitis koristamisest ei piisa.

10. Tulemüür "korraks" väljas, kõik rootina ja märkmeid pole

Probleem. "Lülitan tulemüüri testimiseks korraks välja" ununeb. "Teen selle korraks rootina" muutub harjumuseks. Ja serverit, mille kohta keegi ei tea, mis seal töötab ja miks, ei saa hallata ega taastada.

Tee nii. Testi ajutise, kitsa reegliga (üks port, üks lähteaadress) ja eemalda see pärast. Tööta tavakasutajana sudoga. Pea lühikest serveritoimikut: mis töötab, millised pordid on avatud, kus on varukoopiad, millal lõpeb väljalaske tugi (õppetund 10.4).

Praktikas

Kõiki neid vigu saab teha igas VPS-is, WebOké juures samamoodi nagu teiste pakkujate juures: mis su serveris toimub, haldad sa ise. Pakkuja võib serveri võrgust eemaldada, kui see saadab rämpsposti või korraldab rünnakuid, sest see mõjutab teisi kliente. Ennetamine on seega oluline ka su enda kättesaadavuse jaoks.

Kokkuvõte

  • Enamik häkkimisi kasutab teadaolevaid vigu, mitte tundmatuid turvaauke.
  • Logi sisse võtmetega, paroolisisselogimine välja; andmebaasid, vahemälud ja Docker-API mitte kunagi internetile avatud; docker.sock mitte konteineritesse, mida sa täielikult ei usalda.
  • Ei mingit chmod 777 ega curl | bash: tea, kes mida tohib ja mida sa paigaldad.
  • Uuendused automaatselt, varukoopiad väljaspool serverit ja testitud, haldusliidesed tunneli taga või kaheastmelise kinnitamisega.
  • Saladused väljaspool Giti ja compose-faile; lekkinud tähendab asendatud.

Test (quiz)

1. Miks on Dockeri deemon, mis kuulab TCP-pordil ilma TLS-ita, nii ohtlik?



2. Su veebisait annab pildi üleslaadimisel "Permission denied". Mis on õige lahendus?



3. Avastad, et panid API-võtme kogemata avalikku Git-repositooriumisse. Mida teed kõigepealt?



4. Milline kombinatsioon teeb Redise serveri kõige haavatavamaks?



5. Kolleeg tahab phpMyAdmini avada aadressil https://example.com/pma, "sest see on mugav". Mis on parim nõuanne?



Ülesanne

Ülesanne Z10.2: Mis viga see on? Näidisfailis casussen-z10-2.md on kaheksa lühikest juhtumit serveritest, millega on midagi valesti. Vali iga juhtumi kohta, milline viga see on selle õppetunni nimekirjast (A kuni J) ja mis on parim esimene samm. Programm võrdleb vastuseid kindla võtmega ja näitab seejärel iga juhtumi selgitust.

Ülesanne Z10.2: Mis viga see on?

Selle ülesande fail: casussen-z10-2.md

















Seda, mida sisestad, ja mida leiame, me ei salvesta. Su brauser jätab meelde su vastused ja selle, kas sooritasid ülesande. Kui oled sisse loginud, salvestame Minu kursustes ainult info, et sul oli ülesanne (peaaegu) õige; ka selle saad sealt kustutada.

Loe edasi

Hetk…

Seadista oma domeenid

Määra iga domeeni jaoks nimeserverid, seos sinu majutusega ja kes saab omanikuks.

Laadin sinu domeene…