Gentoo Logo

1.  Yleinen lukusuojaus

Tavallisilla käyttäjillä ei pitäisi olla oikeutta lukea asetustiedostoja tai salasanoja. Hyökkääjä voi varastaa salasanat tietokannoista tai WWW-sivustoilta ja käyttää niitä sotkemiseen tai tuhoamiseen. Tästä syystä tiedostojen oikeuksien pitää olla oikein. Jos jotain tiedostoa tarvitsee käyttää vain rootin, sille pitää asettaa oikeuksiksi 0600 ja omistajaksi chownilla root.

1.  Yleinen ja ryhmäkirjoitussuojaus

Koodilistaus 1.1: Yleisesti kirjoitussuojaamattomien tiedostojen haku

# /usr/bin/find / -type f \( -perm -2 -o -perm -20 \) \
   -exec ls -lg {} \; 2>/dev/null >writable.txt
# /usr/bin/find / -type d \( -perm -2 -o -perm -20 \) \
   -exec ls -ldg {} \; 2>/dev/null >>writable.txt

Tämä komento tekee tiedoston, jossa on kaikki lueteltuina kaikki tiedostot, joihin joko kaikilla tai ryhmillä on kirjoitusoikeudet. Tarkista oikeudet ja poista yleinen kirjoitusoikeus kaikista komennolla /bin/chmod o-w.

1.  SUID/SGID-oikeudet

SUID- ja SGID-bitit antavat suoritettavan ohjelman oikeudet ajettavan tiedoston omistavan käyttäjän tai ryhmän oikeuksiksi vastaavasti. Näitä käytetään tyypillisesti kun ohjelmalla pitää olla rootin oikeudet toimiakseen. Tällaiset ohjelmat ovat alttiita paikallisille rootin oikeuksien väärinkäytölle, jos ne sisältävät turvallisuusaukkoja. Tällaisia tietoturvaongelmia tulee välttää niin paljon kuin suinkin mahdollista. Jos näitä ohjelmia ei käytetä, oikeudet kannattaa tiputtaa komennolla chmod 0 tai poistaa niitä vastaavat paketit järjestelmästä. Paketin voi selvittää komennolla equery, jos se puuttuu, sen saa käyttöönsä asentamalla emerge gentoolkit -komennolla. Muissa tapauksissa SUIDin saa pois komennolla chmod -s

Koodilistaus 1.1: Setuid-tiedostojen hakeminen

# /usr/bin/find / -type f \( -perm -004000 -o -perm -002000 \) \
   -exec ls -lg {} \; 2>/dev/null >suidfiles.txt

Tämä komento luo tiedoston jossa on lueteltuna SUID- ja SGID-bitilliset tiedostot.

Koodilistaus 1.1: Luettelo SUID-tiedostoista

/bin/su
/bin/ping
/bin/mount
/bin/umount
/var/qmail/bin/qmail-queue
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/crontab
/usr/bin/chage
/usr/bin/expiry
/usr/bin/sperl5.6.1
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/gpasswd
/usr/bin/procmail
/usr/bin/suidperl
/usr/lib/misc/pt_chown
/usr/sbin/unix_chkpwd
/usr/sbin/traceroute
/usr/sbin/pwdb_chkpwd

Oletusarvoisena Gentoo Linuxissa ei ole montaa SUID-tiedostoa (määrä toki riippuu siitä mitä on asennettu), mutta lopputulos muistuttanee jonkin verran edellä olevaa. Useimpia näistä tavan käyttäjät eivät tarvitse, vain pääkäyttäjä. SUIDin voi pudottaa pingistä, mountista, umountista, chfn:stä, chsh:sta, newgrp:stä, suidperlistä, pt_chownista ja traceroutesta komennolla chmod -s. Tiedostoista su, qmail-queue ja unix_chkpwd SUIDia ei saa pudottaa, sillä se estäisi su-komennon käytön ja sähköpostin toiminnan. Bittien poisto estää tavallisen käyttäjän mahdollisuuden saada rootin oikeudet ohjelmia hyväksikäyttämällä.

Tarvittavat SUID-tiedostot tyypillisellä järjestelmällä voisivat olla su, passwd, gpasswd, qmail-queue, unix_chkpwd ja pwdb_chkpwd. Jos käytössä on X, niitä on jonkin verran enemmän, sillä X käyttää SUIDia.

1.  SUID ja SGID sekä kovat linkit

Tiedostoja ei poisteta ennen kuin kaikki siihen osoittavat linkit on poistettu. Määritelmä saattaa kuulostaa oudolta, mutta esimerkiksi /usr/bin/perl olisi linkki, joka osoittaa inodeen, jossa tiedoston data on. Samaan dataan voi osoittaa miten monta linkkiä vain, ja kunnes kaikki on poistettu, tiedosto on olemassa.

Jos käyttäjillä on pääsy osioon, jossa ei ole nosuid- tai noexec-asetusta (esimerkiksi /tmp, /home tai /var/tmp voivat olla samalla osiolla), kannattaa varmistaa, että käyttäjät eivät linkitä SUID- tai SGID-ohjelmiin, niin että Portagen päivitysten jälkeen he voivat vielä ajaa niiden vanhempia versioita.

Varoitus: Jos Portage varoittaa jäljellä olevista kovista linkeistä, ja käyttäjä voi kirjoittaa osiolle, jolla SUID- tai SGID-ohjelma on, kannattaa tämä osio lukea tarkkaan. Joku käyttäjistä saattaa pyrkiä ehkäistä ohjelman päivittämistä. Jos käyttäjät eivät voi luoda SUID-tiedostoja tai voivat vain suorittaa ohjelmia dynaamisen lataimen avulla (eli osiolla on noexec-asetus), ei ongelmia pitäisi olla.

Huomaa: Käyttäjät eivät tarvitse ohjelmatiedoston lukuoikeutta linkittääkseen siihen, pelkkä lukuoikeus hakemistoon riittää.

Komennolla stat saa selville tiedostoon osoittavien linkkien määrän.

Koodilistaus 1.1: Statin käyttö

$ stat /bin/su
  File: `/bin/su'
  Size: 29350           Blocks: 64         IO Block: 131072 regular file
Device: 900h/2304d      Inode: 2057419     Links: 1
Access: (4711/-rws--x--x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2005-02-07 01:59:35.000000000 +0000
Modify: 2004-11-04 01:46:17.000000000 +0000
Change: 2004-11-04 01:46:17.000000000 +0000

Linkitetyt SUID- ja SGID-tiedostot voi hakea komennolla find.

Koodilistaus 1.1: Linkitettyjen SUID- ja SGID-tiedostojen haku

$ find / -type f \( -perm -004000 -o -perm -002000 \) -links +1 -ls

Viimeksi päivitetty 16. syyskuuta 2005

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.