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.