11.2.1998 Mikko Rauhala/Sampsa Hario

5.7.1999 Niko Tyni

11.9.2000 Jussi Helminen

Linuxin turvallisuuden parantaminen


Atk-osasto ei resurssipulan takia pysty tarjoamaan Linux-tukea, ja nämäkin tiedot ovat jo osin vanhentuneita. Ne pidetään kuitenkin kaiken varalta näkyvillä. Yliopiston linuxien ylläpitäjille tällä hetkellä (syyskuu 2000) ainoa toimiva palvelu on linux-managers-postituslista, jolta jaetaan turvainfoa.


Tämän dokumentin tarkoituksena on auttaa Linux-työasemien käyttäjiä varmistamaan oman järjestelmänsä turvallisuus ja parantamaan sitä. Dokumentissa esitetyt suositeltavat toimenpiteet ovat yleisesti ottaen sellaisia, jotka kannattaa suorittaa, mikäli ei tiedä, että juuri omalla kohdallaan esim. tarvitsee jotain poistettavaksi suositeltua palvelua. Suositukset on räätälöity lähinnä keskivertotyöasemakäyttäjän tarpeisiin.

Dokumentti pyrkii olemaan mahdollisimman paranoidi kaiken suhteen. Ei siis ole kenties syytä hätääntyä niin paljon kuin teksti antaisi ymmärtää (vaikkei toki lepsuiluunkaan ole aihetta).

Asennuksesta

Kun hankitaan Linux cd:llä ja lähdetään asentamaan sitä näppärästi cd-asemalta, on helppoa (aivan liian helppoa) vain asentaa kaikki palikat ja "katsoa sitten myöhemmin". Yleensä se katsominen jää tekemättä, joten on parasta heti alussa asentaa vain tarvittavat asennuspaketit.

Päivityksestä

Asennus oli helppoa, mutta päivitys saattaa olla työlästä: Pitäisi varmuuskopioida ja suunnitella päivitys, ottaa vanhat asetukset ylös ja niin edelleen. Siksipä monissa koneissa on vielä nähty kakkosella alkavia versioita Red Hatista ja Slackwaresta ja seurauksena kaikki ohjelmat ovat ikivanhoja ja niistä on löydetty jo n+123 reikää. Uusimmat Red Hatit ovat niin helppoja päivittää (asennuksessa "Upgrade"), että suosittelemme vuoden-parin välein laittamaan asennuksen uusiksi.

Samaten kernelin kääntäminen on siihen tottumattomalle aikamoinen urakka ja voisin veikata, että Yliopistolla pyörii kymmeniä koneita vielä vanhoilla version 1.2.13 kerneleillä (ilmestynyt 1.8.1995). Kuitenkin, aivan hiljattain on ilmennyt monia uusia tapoja kaataa lähes kaikki tunnetut käyttöjärjestelmät. Näihin turvareikiin ainoa korjaus on päivittää kernel tuoreeseen versioon (kirjoittamishetkellä 2.2.17). Hyvä ohje kernelin kääntämiseen on Kernel-HOWTO. Se on kuitenkin ehkä hieman vanhentunut, joten suppeampi ohje, joka löytyy Red Hatin manuaalista, kannattaa katsoa myös läpi.

Inetd:n käynnistämien palvelujen tarkistus ja minimointi

inetd on ohjelma, jonka kautta käynnistetään suuri osa Unixien verkkopalveluista. inetd:n konfiguraatiotiedosto on /etc/inetd.conf, jossa on määritelty, mikä ohjelma pitää tarvittaessa käynnistää mitäkin palvelua hoitamaan.

Me luonnollisesti olemme kiinnostuneet karsimaan ko. palveluja, koska mitä useampi palvelu koneessa pyörii, sitä enemmän on potentiaalisia turvallisuusaukkoja. Jokainen rivi, joka ei ala #-merkillä (eikä ole tyhjä), määrittelee yhden olemassaolevan palvelun. Voit poistaa palvelun käytöstä lisäämällä lempieditorillasi #-kommenttimerkin ko. rivin alkuun.

Nyt olisi suotavaa, että otat ko. tiedoston editoitavaksi, ja käyt sen läpi kommentoiden ylläkuvatulla tavalla kaikki ne palvelut, joita et välttämättä tarvitse. Koska joistakin palveluista voi olla hankalaa sanoa, pitäisikö niiden olla päällä, seuraavaan on koottu kattava otos mahdollisesti sieltä löytyvistä palveluista (poistettava-suositus tarkoittaa kommentin lisäämistä rivin alkuun):

echo, discard, daytime, chargen
Nämä ja muut inetd:n sisäiset palvelut kannattaa yleensä ottaa pois inetd:n sisäisten bugien välttämiseksi. Eivät tee kovin mainittavia asioita. Tiedät kyllä, jos tarvitset näitä.
ftp
FTP-palvelin hoitaa sisääntulevat ftp-yhteydet. Suositus: Poistettava, koska salasanat (ja muukin data) siirretään kryptaamattomana). Poiston jälkeen tiedostojen siirron voi hoitaa turvallisesti esim. scp:llä.
telnet
Telnet-palvelin tarjoaa pääteyhteydet koneeseesi. Suositus: Poistettava, koska yhteys on salaamaton. Poiston jälkeen voi pääteyhteydet hoitaa turvallisesti ssh:lla. (Huomautus: jos tarvitset välttämättä pääteyhteyttä koneilta, joissa ssh:n käyttö ei ole mahdollista, lienee pakko jättää telnet päälle.)
gopher
Gopher on julkinen tietopalvelu, jonka WWW on pitkälti syrjäyttänyt. Suositus: Poistettava, jollet tiedä tarvitsevasi.
smtp
SMTP on postinkuljetusprotokolla. Yleensä postia ei hoideta inetd:stä käsin, mutta tämä saattaa kumminkin löytyä sieltä. Suositus: Poistettava, jos et tiedä tarvitsevasi. Käytä mieluummin esim. ATK-osaston postipalveluja, niillä on oma ylläpito... Et tarvitse tätä lähettääksesi postia koneeltasi.
nntp
Uutispalvelin. Suositus: Poistettava, ellet tiedä tarvitsevasi. Et tarvitse tätä uutisten lukemiseen yliopiston palvelimelta.
shell, login, exec
Turvattomia etäkäyttöprotokollia. Suositus: Poistettava, korvattava ssh:lla tarvittaessa.
talk, ntalk, dtalk
Talk-palvelin. Suositus: Poistettava, ellei ole tarvetta olla talkin tavoitettavissa suoraan työasemalla. ATK-osaston Unix-palvelimista talk toki toimii ilmankin.
pop, pop-2, pop-3
POP-palvelin tarjoaa paikallisia postilaatikoita (turvattomasti) verkkoon. Suositus: Poistettava. Joistakin POP-palvelimista on löydetty turvallisuusaukkoja, joten päivitä omasi uusimpaan versioon, jos tarvitset tätä palvelua.
imap
IMAP-palvelin tarjoaa paikallisia postilaatikoita (yleensä turvattomasti) verkkoon. Suuressa osassa ennen heinäkuuta 1998 tehdyistä versioista on vakava turvallisuusaukko. Suositus: Poistettava. Jos kuitenkin tarvitset tätä jostain syystä, päivitä ehdottomasti omasi uusimpaan versioon.
uucp
UUCP on vanha protokolla tiedonsiirtoon valintaisessa puhelinverkossa. Nykyään ei laajalti käytössä. Suositus: Poistettava.
tftp
TFTP:tä käytetään esim. tarvittavien tiedostojen jakamiseen levyttömille työasemille. Suositus: Poistettava.
bootps
Bootp-palvelin huolehtii dynaamisten IP-osoitteiden jakamisesta verkon koneille. Suositus: Poistettava.
finger, cfinger
Tarjoavat käyttäjistä tietoja kertovaa finger-palvelua ulospäin. Suositus: Poistettava (mahdollisten varsinaisten aukkojen lisäksi kertoo ulospäin tietoa käyttäjistä)
sysstat, netstat
Kertovat järjestelmän ja verkon tilatietoja ulospäin. Suositus: Poistettava.
time
Kertoo ulospäin järjestelmän aikaa. Suositus: Poistettava.
auth
Kertoo kysyttäessä, mikä käyttäjätunnus on ottanut koneeltasi tietyn yhteyden ulospäin kysyvään koneeseen. Suositus: Paranoidimpi poistaa, mutta voi myös säilyttää, kunhan tarkistaa että identd on tuore.

Muiden palveluiden tarkistus ja minimointi

Jotta asiat eivät olisi liian yksinkertaisia, on olemassa joukko palveluita, joita ei käynnistetä inetd:n kautta. Seuraavassa käymme läpi näitä palveluita toimintasuositusten kera. Sen jälkeen käymme läpi, millä tavoin niitä voi ottaa pois käytöstä (tai poistaa kokonaan) eri distribuutioissa.

sendmail (postipalvelu)
Turva-asioissa pahamaineinen postinvälitysohjelma. Suositus: Ohjelma saa olla koneella olemassa, mutta sen käynnistäminen on syytä jättää väliin. Tällöin ulkoapäin ei voi lähettää postia koneeseen, mutta suositeltavampaa onkin käyttää ATK-osaston palveluita.
rpc.nfsd, rpc.mountd (NFS-palvelu)
NFS-palvelu jakaa koneen levyjä verkkoon /etc/exports-asetustiedoston perusteella. Ennen syyskuuta 1998 tehdyissä Linux-versioissa on vakava turvallisuusaukko. Suositus: Poistettava.
smbd, nmbd (Samba-palvelu)
Samba hoitaa paikallisten levyjen ja/tai printtereiden jakamisen Windows- ja OS/2-järjestelmille. Suositus: Poistettava.
innd (uutispalvelu)
innd jakaa ja vastaanottaa uutisia. Suositus: Poistettava.
mars_nwe & linwared (Netware-palvelu)
mars_nwe ja linwared ovat ohjelmia, joilla voi jakaa levyjä ja kirjoittimia Netware-verkossa. Suositus: Poistettava.
rpc.ypserv, rpc.yppasswdd (YP-palvelut)
rpc.ypserv jakaa ulospäin esim. salasanatietokantaa, ja rpc.yppasswdd antaa vaihtaa salasanoja ulkoa käsin. Kaikki ei ole toki ihan näin yksioikoista, mutta silti suositus: Poistettava.
httpd (WWW)
httpd hoitaa WWW-palvelut. Suositus: Poistettava; ATK-osasto tarjoaa kotisivut käyttäjille.
lpd (Tulostuspalvelut)
lpd hoitaa tulostuspalvelut. Suositus: Jos sinulle riittää tulostus ATK-osaston Unixeista, poistettava. Muuten pidettävä huoli, että käytössä on uusin versio.
snmpd (Verkonhallinta)
snmpd kertoilee ulospäin esim. koneen erinäisiä verkkoasetuksia. Suositus: Poistettava.

Poistaminen

Red Hat 4.2:ssa ja vanhemmissa mennään koneeseen rootiksi ja poistetaan X:ssä pyörivän control-panelin SysV runlevel editorilla kaikista runleveleistä ao. palveluun liittyvät käynnistystiedostot.

Mikäli X:ää ei ole käytettävissä, poistetaan käsin /etc/rc.d/rc3.d/ ja /etc/rc.d/rc5.d/ -hakemistoista ao. käynnistystiedosto, jonka nimi on muotoa S??palvelu, jossa ?-merkit ovat jokin numero (pieninumeroisin palvelu käynnistetään ensin) ja palvelu kyseisen palvelun nimi. Sama keino tehoaa useimpiin muihinkin distribuutioihin.

Red Hat 5.0:ssa ja myöhemmissä on tekstitilassa toimiva runlevel editor, /usr/sbin/ntsysv. Käytä sitä.

/etc/hosts.deny ja /etc/hosts.allow

Näillä tiedostoilla voit kontrolloida, mitkä koneet saavat käyttää oman koneesi palveluita. /etc/hosts.deny sisältää niiden koneiden nimet, joilta palveluita kielletään ja /etc/hosts.allow puolestaan niiden joille jokin palvelu sallitaan. Huomaa, että tämä ei vaikuta itsenäisinä prosesseina pyöriviin palveluihin (sshd, usein sendmail ja httpd ym.).

Suosittelumme on aika yksinkertainen: Koneen palveluiden käyttöä ei pitäisi sallia lainkaan Helsingin yliopiston ulkopuolelta. Siihen päästään seuraavanlaisilla suodattimilla:

/etc/hosts.deny

ALL: ALL

/etc/hosts.allow:

ALL: LOCAL .helsinki.fi
portmap: 128.214.0.0/255.255.0.0 193.166.0.0/255.255.0.0

Mikäli on poikkeuksellista tarvetta päästää koneelle muita kuin *.helsinki.fi-domainin koneita, voi niiden nimet lisätä välilyönneillä erotettuna /etc/hosts.allow:iin ensimmäisen rivin loppuun.


Palaute Opastus || Yliopiston kotisivulle atk-osasto Edelliselle tasolle