Blogi
Written by
Niklas Westerstråhle
Senior System Specialist

Paranna Linux käyttöjärjestelmäsi tietoturvaa

Tänään monet ovat edelleen sitä mieltä, että Linux pohjaiset käyttöjärjestelmät ovat täysin tietoturvallisia.

Vuosien varrella vääriä mielikuvia on päässyt syntymään monelle, usein kuulee väitteitä kuten ”Linux on virukseton käyttöjärjestelmä” tai ”Ei Linuxille tehdä viruksia koska se ei ole yleinen käyttöjärjestelmä”. Näin ei kuitenkaan ole, ja jokaisen Linuxia käyttävän kannattaa käyttää hetki aikaa asian pohtimiseen.

Valveutuneet asiakkaamme teettävät palveluaan vasten tietoturva auditointeja, jossa ulkoiset auditoijat (esim. Nixu Oyj) tutkivat järjestelmän ja raportoivat puutteista asiakkaalle. Tämän jälkeen raportti yleensä päätyy palvelutarjoajan pöydälle läpikäytäväksi ja korjattavaksi.

Aloimme pohtia asiaa. Näkökulmamme oli yksinkertainen - kaikilla asiakkaillamme tulisi olla tietoturvallinen palvelinratkaisu. Käyttäen lähtökohtana ulkoisen auditoijan raportteja loimme vakioidun mallin jolla nykyisin asennetaan uudet toimittamamme palvelinratkaisut.

tmp-hakemistot

Linux palvelimilla on suositeltavaa että /tmp luodaan erilliselle osiolle ja että sitä käytetään ”noexec” ja ”nosuid” optioilla. Myös /var/tmp ja /dev/shm tulee suojata. Näin estetään hakkereita ajamasta haittaohjelmia näitä hakemistoja hyväksikäyttäen.

Virtuaalipalvelimissa yleensä ei ole omaa osiota tmp:lle, vaan koko käyttöjärjestelmä levy on yksi osio. Tällöin on suositeltavaa luoda tmp:tä varten tiedosto jota käytetään kuten fyysistä levyosiota.

Esimerkki väliaikaiskansion /tmp luomisesta omalle tiedostojärjestelmälleen, vaikka virtuaalipalvelimessa / instansissa ei ole kuin / partition.

dd if=/dev/zero of=/var/tmpMnt bs=1024 count=2048000 mkfs.ext4 –F /var/tmpMnt mount –o loop,noexec,nosuid,nodev,rw /var/tmpMnt /tmp

Tämän jälkeen editoidaan /etc/fstab seuraavasti:

/var/tmpMnt /tmp ext3 loop,rw,noexec,nosuid,nodev 0 0 tmpfs /dev/shm tmpfs defaults,nodev,nosuid,noexec 0 0 /tmp /var/tmp none rw,noexec,nosuid,nodev,bind 0 0

Sysctl määritykset

“Mikä on sysctl?” on ehkä ensimmäinen ajatuksesi. Sysctl on ohjelma jonka avulla voidaan muokata kernelin määrityksiä ”lennossa”. Määritykset voi muokata hetkellisesti suoraan sysctl komennolla, tai pysyvästi määrittelemällä ne /etc/sysctl.conf tiedostoon. Hetkellisesti asetetut asetukset poistuvat kun käyttöjärjestelmä uudelleenkäynnistetään.

Esimerkiksi määrittelemällä kuinka IP paketteja käsitellään tietyissä tilanteissa, voidaan suojautua useammalta hyökkäykseltä ja järjestelmän väärinkäyttötilanteelta.

net.ipv4.conf.all.log_martians = 1 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.secure_redirects = 0 net.ipv4.conf.all.rp_filter = 1 net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.icmp_ignore_bogus_error_responses = 1

Palomuurin määrittely

Palomuurauksen voisi kiteyttää lyhyesti muutamaan sanaan: Käytä palomuuria.

Palomuuria määritellessäsi ota lähtökohdaksi avata vain ne portit joita palvelut oikeasti vaativat. Tämä riippumatta palomuurin toteutustavasta. Palomuuri voi sijaita palvelimella (iptables), pilvessä (security groups) tai olla erillinen fyysinen laite.

Written by
Niklas Westerstråhle
Senior System Specialist