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ä

Mitä ei kannata tehdä

Moduuli 10: Pysy turvassa · Lukuaika: 12 minuuttia

Tavoite: Tämän oppitunnin jälkeen tunnistat virheet, jotka useimmiten johtavat murrettuun tai rikkinäiseen palvelimeen, osaat selittää, miksi ne ovat vaarallisia, ja tiedät, mitä teet niiden sijaan.

Keskeiset käsitteet: root-kirjautuminen salasanalla, heikko tai oletussalasana, avoin tietokanta, Docker-API portissa 2375, docker.sock kontissa, chmod 777, curl | bash, salaisuudet Gitissä, hallintapaneeli ilman kaksivaiheista tunnistautumista, palomuuri "hetkeksi pois päältä", ei päivityksiä, ei varmuuskopiota

Miksi oppitunti virheistä?

Useimpia palvelimia ei murra nerokas hyökkääjä tuntemattoman haavoittuvuuden avulla. Niihin murtautuvat botit, jotka käyvät läpi koko internetin ja etsivät tunnettuja virheitä: arvattavissa olevaa salasanaa, avoinna olevaa tietokantaa, ohjelmaa, josta puuttuu päivitys jo kuukausien ajalta. Kun vältät tämän oppitunnin virheet, putoat näiden bottien tähtäimestä. Se on suurin osa siitä suojasta, jonka voit saada.

Jokaisen virheen kohdalla kerrotaan, miksi se on vaarallinen ja mitä teet sen sijaan. Lähes kaiken olet oppinut aiemmilla oppitunneilla; tämä oppitunti kokoaa asiat yhteen.

1. Root-kirjautuminen salasanalla

Ongelma. Jokainen palvelin saa kirjautumisyrityksiä koko päivän porttiin root (oppitunti 5.3). Jos root voi kirjautua salasanalla, se salasana on ainoa asia botin ja täyden hallinnan välissä. Uudelleenkäytetyt tai liian lyhyet salasanat arvataan ennemmin tai myöhemmin, tai ne ovat jo jollakin vuotaneella listalla.

Tee näin. Kirjaudu vain avaimilla: PasswordAuthentication no ja KbdInteractiveAuthentication no, root korkeintaan avaimella (PermitRootLogin prohibit-password) tai ei lainkaan (no), ja päivittäinen työ tavallisena käyttäjänä sudon kanssa (oppitunnit 2.2 ja 3.2). Tarkista ulkopuolelta, mitä kirjautumistapoja palvelimesi tarjoaa (tehtävä Z2.2).

2. Tietokanta, välimuisti tai hakuklusteri avoinna internetiin

Ongelma. MySQL/MariaDB (3306), PostgreSQL (5432), Redis (6379), Elasticsearch tai OpenSearch (9200) ja MongoDB (27017) on tehty luotetuille ohjelmille luotetussa verkossa. Jos ne kuuntelevat osoitteessa 0.0.0.0 ilman palomuuria, skannerit löytävät ne nopeasti. Redis sanoo omassa dokumentaatiossaan, ettei sitä pidä altistaa internetille ja että pääsyn saanut voi tyhjentää koko tietoaineiston; komennolla CONFIG hyökkääjä voi jopa kirjoittaa tiedostoja palvelimelle. Avoimet tietokannat ja hakuklusterit ovat jo vuosia olleet tunnettu syy suuriin tietovuotoihin ja "lunnasviesteihin" tietojesi tilalla.

Tee näin. Anna tällaisten palveluiden kuunnella osoitteessa 127.0.0.1 (oppitunti 5.1), pidä ne palomuurin takana (oppitunti 5.2) ja julkaise ne Dockerissa vain osoitteeseen 127.0.0.1 tai ei lainkaan (oppitunti 9.3). Itse pääset niihin kannettavaltasi SSH-tunnelilla (oppitunti 2.3). Tarkista ulkopuolelta (tehtävä Z5.1).

3. Docker-API avoinna tai docker.sock kontissa

Ongelma. Se, joka voi ohjata Docker-daemonia, on käytännössä palvelimen root: Dockerin dokumentaation mukaan daemonia saavat ohjata vain luotetut käyttäjät, ja pääsy daemoniin vastaa root-oikeuksia. Tästä virheestä on kaksi muunnelmaa:

  • Daemon kuuntelee TCP-porttia ilman TLS:ää (tavallisesti 2375). Kuka tahansa, joka tavoittaa portin, voi käynnistää kontteja, joihin on liitetty palvelimesi levy.
  • Kontille annetaan /var/run/docker.sock volyymina ("niin se voi itse hallita kontteja"). Jos kontti murretaan, koko palvelin on menetetty.

Myös ryhmä docker vastaa rootia (oppitunti 9.2): lisää siihen vain ylläpitäjiä.

Tee näin. Käytä Dockeria vain paikallisen socketin kautta. Etähallinta tapahtuu SSH:n kautta (docker context ja ssh://), tai jos sen on pakko kulkea TCP:n yli, TLS:llä portissa 2376 ja asiakasvarmenteilla. Liitä docker.sock vain konttiin, johon luotat täysin ja jota todella tarvitset, ja mieluiten vain luku -tilassa rajoittavan välityspalvelimen kautta.

4. chmod 777 virheilmoituksen poistamiseksi

Ongelma. Latauksessa tulee "Permission denied", ja keskustelupalsta neuvoo: chmod -R 777 /var/www. Sen jälkeen jokainen palvelimen käyttäjä ja prosessi voi kirjoittaa mitä tahansa sivustoosi, myös murrettu lisäosa tai toinen tili. Koodi, johon verkkopalvelin voi kirjoittaa, voidaan haavoittuvuuden kautta korvata takaovella.

Tee näin. Selvitä, kenen pitää kirjoittaa ja minne (oppitunti 3.1): yleensä vain verkkopalvelimen käyttäjän yhteen lataus- tai välimuistikansioon. Koodin omistaja on muu kuin verkkopalvelin, oikeudet 644/755, lataukset 750/640 tai vastaava.

5. curl ... | bash ja ohjelmat mistä tahansa

Ongelma. Skripti, jonka ajat lukematta rootina, voi tehdä mitä tahansa: lisätä lähteitä ja avaimia, korvata tiedostoja, avata palvelun. Vaikka tarkoitus olisi hyvä, et jälkikäteen tiedä, mitä muuttui, ja seuraavassa julkaisupäivityksessä jokin hajoaa (oppitunti 4.3).

Tee näin. Lataa skripti ja lue se. Asenna mieluummin jakelusi pakettilähteestä tai tekijän virallisesta lähteestä omalla avaimella (Signed-By, oppitunti 4.1). Kirjaa ylös, mitä asennat ja miksi.

6. Ei päivityksiä, tai päivitykset "myöhemmin"

Ongelma. Haavoittuvuudet korjataan ja niitä aletaan sen jälkeen hyödyntää, usein päivien kuluessa. Palvelimella, joka ei saa päivityksiä kuukausiin tai jonka julkaisun tuki on päättynyt, on lista tunnettuja aukkoja. apt ei päivitä kontteja.

Tee näin. Ota automaattiset tietoturvapäivitykset käyttöön (oppitunti 4.2), sovi kiinteä hetki uudelleenkäynnistyksille, merkitse julkaisusi tuen päättymispäivä kalenteriin (oppitunti 4.3) ja päivitä kontit säännöllisesti (oppitunti 9.4).

7. Ei varmuuskopiota, tai varmuuskopio, jota ei ole koskaan testattu

Ongelma. Tilannevedos samalla tallennustilalla ei ole varmuuskopio (oppitunti 8.1). Palvelimella itsellään oleva varmuuskopio katoaa mukana murron tai kiristyshaittaohjelman myötä. Ja varmuuskopio, jota ei ole koskaan palautettu, on toive, ei varmuus.

Tee näin. Salatut varmuuskopiot palvelimen ulkopuolelle (restic, oppitunti 8.2), valvonta, että ne toimivat, ja palautustesti vähintään kerran vuosineljänneksessä.

8. Hallintapaneelit avoinna kaikille ilman kaksivaiheista tunnistautumista

Ongelma. Tietokannan (kuten phpMyAdmin), Dockerin (kuten Portainer), sovelluksesi tai salasanaholvisi hallintapaneeli on houkutteleva kohde: yksi salasana antaa pääsyn kaikkeen. Oletussalasanat kuten admin/admin ja avoimeksi jätetty rekisteröityminen (Vaultwarden, oppitunti 9.4) tekevät siitä vielä helpompaa.

Tee näin. Älä avaa hallintapaneeleja internetiin: käytä niitä SSH-tunnelin kautta tai vain kiinteästä osoitteesta. Jos paneelin on silti oltava julkinen: https, vahva ja yksilöllinen salasana salasanojen hallintaohjelmasta, kaksivaiheinen tunnistautuminen ja rekisteröityminen suljettuna. Vaihda oletussalasanat aina.

9. Salaisuudet Gitissä tai compose-tiedostossa

Ongelma. Salasana, API-avain tai yksityinen avain tiedostossa, joka päätyy Git-repositorioon, jää historiaan pysyvästi, vaikka poistaisit sen myöhemmin. Botit etsivät julkisista repositorioista juuri tällaisia avaimia.

Tee näin. Säilytä salaisuudet erillisessä tiedostossa oikeuksilla 600 (EnvironmentFile, oppitunti 6.3; .env Docker Composessa, oppitunti 9.3), joka on lisätty tiedostoon .gitignore. Jos salaisuus on silti vuotanut, vaihda se heti (uusi salasana, uusi avain); pelkkä siivous Gitissä ei riitä.

10. Palomuuri "hetkeksi" pois, kaikki rootina eikä muistiinpanoja

Ongelma. "Laitan palomuurin hetkeksi pois testatakseni" unohtuu. "Teen tämän nopeasti rootina" muuttuu tavaksi. Ja palvelinta, josta kukaan ei tiedä, mitä siinä pyörii ja miksi, ei voi hallita eikä palauttaa.

Tee näin. Testaa väliaikaisella, kapealla säännöllä (yksi portti, yksi lähdeosoite) ja poista se sen jälkeen. Työskentele tavallisena käyttäjänä sudon kanssa. Pidä lyhyttä palvelinkansiota: mitä pyörii, mitkä portit ovat auki, missä varmuuskopiot ovat ja milloin julkaisun tuki päättyy (oppitunti 10.4).

Käytännössä

Kaikki nämä virheet voi tehdä millä tahansa VPS:llä, WebOkéllä siinä missä muillakin palveluntarjoajilla: palvelimesi sisällä tapahtuvasta vastaat itse. Palveluntarjoaja voi kuitenkin irrottaa palvelimen verkosta, jos se lähettää roskapostia tai tekee hyökkäyksiä, koska se vaikuttaa muihin asiakkaisiin. Ennaltaehkäisy on siis tärkeää myös oman saavutettavuutesi kannalta.

Yhteenveto

  • Useimmat murrot hyödyntävät tunnettuja virheitä, eivät tuntemattomia haavoittuvuuksia.
  • Kirjaudu avaimilla ja poista salasanakirjautuminen; älä koskaan avaa tietokantoja, välimuisteja tai Docker-APIa internetiin; ei docker.sock konteissa, joihin et luota täysin.
  • Ei chmod 777 eikä curl | bash: tiedä, kuka saa tehdä mitä ja mitä asennat.
  • Päivitykset automaattisesti, varmuuskopiot palvelimen ulkopuolelle ja testattuina, hallintapaneelit tunnelin taakse tai kaksivaiheisella tunnistautumisella.
  • Salaisuudet pois Gitistä ja compose-tiedostoista; vuotanut salaisuus vaihdetaan.

Tietovisa (quiz)

1. Miksi TCP-porttia ilman TLS:ää kuunteleva Docker-daemon on niin vaarallinen?



2. Sivustosi antaa "Permission denied" kuvaa ladattaessa. Mikä on oikea ratkaisu?



3. Huomaat laittaneesi vahingossa API-avaimen julkiseen Git-repositorioon. Mitä teet ensin?



4. Mikä yhdistelmä tekee Redis-palvelimesta haavoittuvimman?



5. Kollega haluaa avata phpMyAdminin osoitteeseen https://example.com/pma, "koska se on helppoa". Mikä on paras neuvo?



Tehtävä

Tehtävä Z10.2: Mikä virhe on kyseessä? Esimerkkitiedostossa casussen-z10-2.md on kahdeksan lyhyttä tapausta palvelimista, joissa on jotain vialla. Valitse jokaiselle tapaukselle, mikä tämän oppitunnin listan virhe (A:sta J:hin) on kyseessä ja mikä on paras ensimmäinen toimenpide. Ohjelma vertaa vastauksiasi kiinteään avaimeen ja näyttää sen jälkeen selityksen jokaiselle tapaukselle.

Tehtävä Z10.2: Mikä virhe on kyseessä?

Tähän tehtävään liittyvä tiedosto: casussen-z10-2.md

















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…