Unix biztonság - Unix security
A Unix biztonság a Unix vagy Unix-szerű operációs rendszer biztosításának eszközeire vonatkozik . A biztonságos környezet nemcsak ezen operációs rendszerek tervezési koncepciójával érhető el, hanem éber felhasználói és adminisztrációs gyakorlatokkal is.
Tervezési koncepciók
Engedélyek
Ezekben a rendszerekben alapvető biztonsági szolgáltatás a fájlrendszer -engedélyek . Egy tipikus Unix fájlrendszer minden fájlja rendelkezik engedélyekkel, amelyek lehetővé teszik a fájlokhoz való különböző hozzáférést.
A fájlok engedélyei általában a chmod paranccsal állíthatók be, és az ls paranccsal láthatók . Például:
-r-xr-xr-x 1 root wheel 745720 Sep 8 2002 /bin/sh
A Unix jogosultságok lehetővé teszik különböző felhasználók számára, hogy hozzáférjenek egy fájlhoz. A különböző felhasználói csoportok különböző jogosultságokkal rendelkeznek egy fájlhoz.
A fejlettebb Unix fájlrendszerek tartalmazzák a Beléptetési lista koncepciót, amely lehetővé teszi több felhasználó vagy csoport engedélyeinek megadását. Egy Access Control List lehet használni, hogy adjon engedélyt további egyéni felhasználók vagy csoportok számára. Például:
/pvr [u::rwx,g::r-x,o::r-x/u::rwx,u:sue:rwx,g::r-x,m::rwx,o::r-x]
Ebben a példában, ami a chacl parancsot a Linux operációs rendszer, a felhasználó sue nyújtják írási jogosultsága a / PVR könyvtárat.
Felhasználói csoportok
A Unix stílusú operációs rendszerek alatti felhasználók gyakran meghatározott hozzáférési jogosultságokkal rendelkező felügyelt csoportokba tartoznak. Ez lehetővé teszi a felhasználók csoportosítását a rendszerhez való hozzáférés szintje szerint. Sok Unix -implementáció további biztonsági réteget biztosít, mivel megköveteli, hogy a felhasználó a parancs eléréséhez tagja legyen a kerék felhasználói jogosultságok csoportjánaksu .
Gyökér hozzáférés
A legtöbb Unix és Unix-szerű rendszer rendelkezik fiókkal vagy csoporttal, amely lehetővé teszi a felhasználó számára a rendszer teljes körű ellenőrzését, gyakran root fiókként. Ha ehhez a fiókhoz nem kívánt felhasználó fér hozzá, az a rendszer teljes megsértését eredményezi. A root fiókra azonban adminisztratív célokra szükség van, és a fenti biztonsági okokból a root fiókot ritkán használják mindennapi célokra (a sudo programot gyakrabban használják), ezért a root fiók használata jobban megfigyelhető.
A gyökérhozzáférést "ahogy kell" a Superman történeteit ismerők vizualizálhatják a következő analógia segítségével :
- A root fiók használata inkább olyan, mint Superman; a rendszergazda rendszeres felhasználója inkább Clark Kentre hasonlít. Clark Kent csak addig lesz Superman, amíg szükséges, hogy megmentse az embereket. Ezután visszatér az "álcájához". A root hozzáférést ugyanúgy kell használni. A Clark Kent -álcázás azonban nem igazán korlátozza őt, hiszen továbbra is képes használni szuperhatalmát. Ez analóg a sudo program használatával.
Felhasználói és adminisztrációs technikák
A Unix számos olyan eszközzel rendelkezik, amelyek javíthatják a biztonságot, ha a felhasználók és a rendszergazdák megfelelően használják őket.
Jelszavak
Az erős jelszó kiválasztása és megfelelő védelme valószínűleg a legfontosabb dolog, amit a felhasználó tehet a Unix biztonságának javítása érdekében. Unix rendszerekben a felhasználókra vonatkozó alapvető információkat a fájl tárolja. /etc/passwdEz a fájl nyomon követi a rendszerben regisztrált felhasználókat és azok fő definícióit. A jelszavak, pontosabban a jelszó kivonata ugyanabban a helyen tárolható. A bejegyzések /etc/passwdpontosan egy sort foglalnak el, és a következő formában vannak:
nickname:password_hash:UserID:GroupID:Complete_Name:home_dir:shell_bin
Egy példa lehet:
xfze:$$1zuW2nX3sslp3qJm9MYDdglEApAc36r/:1000:100:Daniel Ernesto Ortiz Costa:/home/xfze:/bin/bash
Mivel minden felhasználó számára kell olvashatja a /etc/passwdfájlt, hogy nem sok a közös feladatok ( ls -l /homefogja használni /etc/passwd, hogy feltérképezzük UIDs a bejelentkezési neveket például), bárki is olvassa el a jelszó hash a többi felhasználó. A probléma megoldásához a fájlt /etc/shadowúgy hozták létre, hogy tárolja a jelszó kivonatokat, csak a root jogosult olvasási hozzáféréssel. A jelszó árnyékolása alatt a második mezőt ( jelszó kivonat ) egy „x” váltja fel, amely arra utasítja a rendszert, hogy a /etc/shadowfájlon keresztül lekérje a megfelelő felhasználó jelszavát .
A /etc/shadowfájl gyakran csak az első két mező értékeit tartalmazza:
xfze:$$1zuW2nX3sslp3qJm9MYDdglEApAc36r/:::::
A /etc/shadowfájl többi mezője a következő :
- A jelszóváltoztatások közötti minimális napszám
- A jelszó megváltoztatásához szükséges maximális napok száma
- A jelszó előtt megadott figyelmeztetési napok számát meg kell változtatni
- A jelszót követő napok számát meg kell változtatni, amikor a fiók használhatatlanná válik
- A számla lejárati dátuma (az 1970. január 1 -je óta eltelt napok számában kifejezve )
Ezek a mezők felhasználhatók a Unix biztonságának javítására jelszavas biztonsági házirend érvényesítésével.
Felhasználók és fiókok
Az adminisztrátoroknak azonnal törölniük kell a régi fiókokat.
Szoftver karbantartás
Foltozás
Az operációs rendszerek, mint minden szoftver, tartalmazhatnak javításra szoruló hibákat, vagy új funkciókkal bővíthetők. Az operációs rendszer biztonságos javítása megköveteli, hogy a szoftver megbízható forrásból származjon, és ne változtassa meg a csomagolás óta. Gyakori módszerek annak ellenőrzésére, hogy az operációs rendszer javításai nem változtak-e, többek között a kriptográfiai kivonat , például az MD5- alapú ellenőrző összeg, vagy a csak olvasható adathordozó használata.
Biztonsági szempontból az adott csomagolási módszer, például az RPM Package Manager formátum, amely eredetileg a Red Hat Linux -tól származik , nem olyan fontos, mint a javítás integritását biztosító szolgáltatások használata.
Forráseloszlások
A forráselosztások magukban foglalják a kód gyanús tartalom vizsgálatának lehetőségét. A hátránya, ha nincs hozzá tartozó kriptográfiai kivonatolási érték, az, hogy a felhasználónak képesnek kell lennie a kód biztonsági elemzésére.
RPM csomagok
A Linux disztribúciók, amelyek RPM Package Manager formátumot használnak az alapfunkciók és a szoftverfrissítések biztosításához, az MD5 és a GPG felhasználásával biztosítják a tartalom integritását. A kivonatértékek az RPM fájlhoz vannak csomagolva, és a csomag telepítésekor ellenőrzik.
Debian csomagok
A Linux disztribúciók, amelyek Debian .deb csomagformátumot használnak az alapfunkciók és a szoftverfrissítések biztosításához , GPG aláírásokat használnak a tartalom integritásának biztosítása érdekében. Az aláírás kiszámításra kerül a csomag létrehozásakor, és később, a csomag telepítésekor ellenőrzik.
Más gyártók és forgalmazók
Eladótól vagy forgalmazástól függetlenül minden szoftverforgalmazásnak mechanizmust kell biztosítania annak ellenőrzésére, hogy a szoftver törvényes -e, és nem módosították -e az eredeti csomagolás óta.
Szolgáltatások
A felesleges rendszerszoftvert nem szabad telepíteni vagy konfigurálni a rendszerre. A már nem szükséges szoftvereket, ha lehetséges, teljesen el kell távolítani.
- Határozza meg, hogy milyen szolgáltatások futnak
- netstat -na
- lsof
- nmap
- sockstat -4 ( FreeBSD )
Az inetd és xinetd parancsok szuperkiszolgálóként működnek a különféle hálózati protokollok, például az rlogin , a telnet és az ftp számára .
A szükségtelen szolgáltatások kikapcsolása
- az update-rc.d használatával a Debianon
- alkalmazásával chkconfig a Red Hat Linux
- a /etc/rc.conf és /usr/local/etc/rc.d használatával a FreeBSD -n (említse meg az /etc/rc.local)
- az rc-update használatával Gentoo Linux rendszeren
Ezt a megközelítést általában proaktív biztonságnak nevezik . Vannak olyan operációs rendszerek, amelyek alapértelmezés szerint biztonságosak . Többek között az ingyenes BSD ízek ( FreeBSD , NetBSD és OpenBSD ) proaktívan biztonságosak. Például a Netstat kimenete egy NetBSD 3.0 munkaállomáson világosan körvonalazza ezt a technikát:
$ netstat -a
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost.smtp *.* LISTEN
tcp 0 0 *.ssh *.* LISTEN
Active Internet6 connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp6 0 0 localhost.smtp *.* LISTEN
tcp6 0 0 *.ssh *.* LISTEN
Active UNIX domain sockets
Address Type Recv-Q Send-Q Inode Conn Refs Nextref Addr
c0d10d80 dgram 0 0 0 c0cd8680 0 c0cb7000 -> /var/run/log
c0cb7000 dgram 0 0 0 c0cd8680 0 0 -> /var/run/log
c0cd8680 dgram 0 0 cb9639e8 0 c0d10d80 0 /var/run/log
A következő példa egy BSD rendszerből
$ sockstat -4
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
root sendmail 569 4 tcp localhost.smtp *.*
root sshd 593 4 tcp *.ssh *.*
Azt mutatja, hogy ezen a gépen csak az SSH szolgáltatás hallgatja a számítógép nyilvános hálózati interfészét . A sendmail csak a loopback felületet hallgatja . A szolgáltatás elérése tűzfal használatával tovább korlátozható .
Fájlrendszerek
Fájlrendszer biztonsága
A UNIX és a Unix-szerű rendszerek fájlrendszereinek biztonsága 9 engedélybiten, felhasználói és csoportazonosító biteken, valamint a ragadós biten alapul , összesen 12 biten. Ezek az engedélyek szinte minden fájlrendszer objektumra, például fájlokra, könyvtárakra és eszközökre vonatkoznak.
A 9 engedélybit három, egyenként három bitből álló csoportra van osztva. Az első csoport a fájltulajdonos jogosultságait, a második csoport a fájltulajdonoshoz vagy a fájlt tartalmazó könyvtárhoz társított csoport engedélyeit írja le, a harmadik csoport pedig minden olyan folyamathoz tartozó engedélyeket, amelyek nem ugyanazzal a felhasználóval rendelkeznek Azonosító fájlként. Minden három bites csoport tartalmaz egy bitet, amely jelzi az olvasási, írási vagy végrehajtási hozzáférést. A könyvtárak esetében a végrehajtási hozzáférés a fájlnevek keresésének engedélyezéseként értelmezhető a könyvtárban.
A beállított felhasználói azonosító és a csoportcsoportazonosító bitek, általában rövidített set-UID és set-GID , arra szolgálnak, hogy megváltoztassák annak a folyamatnak az azonosságát, amely végrehajtja azt a fájlt, amelynek egyik vagy mindkét bitje be van állítva. A set-UID jogosultságbittel beállított fájl hatására a fájlt végrehajtó folyamat ideiglenesen átváltja a tényleges felhasználói azonosítót a fájl tulajdonosára. Ha a fájl rendelkezik set-GID jogosultsági bitkészlettel, akkor a fájlt végrehajtó folyamat ideiglenesen átállítja a tényleges csoportazonosítót a fájlcsoportra. A folyamat ezután váltakozhat a fájlból örökölt tényleges felhasználói vagy csoportazonosító és a valódi felhasználói vagy csoportazonosító között, amelyet a felhasználó bejelentkezett a rendszerbe. Ez olyan mechanizmust biztosít, amellyel egy folyamat korlátozhatja a birtokában lévő hozzáférési jogokat azokra a kódrégiókra, amelyek megkövetelik ezeket a hozzáférési jogokat. Ez egyfajta biztonsági technika, amelyet privilégium -szétválasztásnak neveznek, és javítja a programok biztonságát azáltal, hogy korlátozza a folyamatok nem kívánt vagy nemkívánatos műveleteit.
A set-GID jogosultsággal rendelkező könyvtár azt eredményezi, hogy az újonnan létrehozott fájl kezdeti fájlcsoport-értéke megegyezik a könyvtár fájlcsoportjával. Ez olyan mechanizmust biztosít, amellyel egy alrendszer, például a rendszer levelezési alrendszere olyan fájlokat hozhat létre, amelyek közös fájlcsoport-értékkel rendelkeznek, így az adott alrendszeren belüli set-GID folyamatok képesek lesznek olvasni vagy írni a fájlt.
A ragadós bit , amelyet formálisan a swap bit mentési szövegének neveznek, az eredeti célból származik. Eredetileg a ragadós bit miatt a folyamat kezdeti memóriaképe szomszédos képként került tárolásra a lemezmeghajtón, amelyet valódi memóriaoldalak tárolására használtak, amikor nem használták őket. Ez javította a gyakran végrehajtott parancsok teljesítményét azáltal, hogy a kezdeti memóriaképet könnyen elérhetővé tette. A modern UNIX rendszerek a bit beállításakor már nem látják el ezt a funkciót, de a név ennek ellenére megmaradt. Fájlok esetében a rendszer a ragacsos bitet használhatja a végrehajtandó fájlzárolási stílus jelzésére . A könyvtárak esetében a ragadós bit megakadályozza, hogy bármely folyamat, kivéve a szuperfelhasználói jogosultságokkal rendelkező vagy a fájltulajdonos tényleges felhasználói azonosítójával rendelkező folyamatokat, törölje a fájlt az adott könyvtárból. A ragadós bitet leggyakrabban nyilvánosan írható könyvtárakban használják, például a rendszer különböző ideiglenes munkaterület -könyvtáraiban.
Gyökér tök
Gyökérjelet egy különleges feltérképezése a távoli rendszergazda (root) identitás használata esetén személyazonosság hitelesítés (helyi felhasználói megegyezik a távoli felhasználó). A gyökér squash alatt az ügyfél 0 -ás (root) azonosítója 65534 (senki) lesz. Ez elsősorban az NFS jellemzője, de más rendszereken is elérhető.
A gyökér squash egy technika, amellyel elkerülhető a privilégiumok fokozódása az ügyfélgépen a Setuid végrehajtható fájlokon keresztül . Gyökér squash nélkül a támadó önálló bináris fájlokat hozhat létre a kiszolgálón, amelyeket rootként hajt végre más ügyfélen, még akkor is, ha a kliens felhasználó nem rendelkezik superuser jogosultságokkal. Ezért védi az ügyfélgépeket más rosszindulatú ügyfelektől. Nem védi az ügyfeleket a rosszindulatú szerverekkel szemben (ahol a root önálló bináris fájlokat hozhat létre), és nem védi a rooton kívül más felhasználók fájljait (mivel a rosszindulatú ügyfelek bármely felhasználót megszemélyesíthetnek).
SELinux
A SELinux a kernelbővítmények összessége, amelyek pontosabban szabályozzák a hozzáférést, és szigorúan meghatározzák, hogy a fájlok, mappák, hálózati portok és más erőforrások hogyan és hogyan érhetők el a korlátozott eljárással. Ezt a rendszert többnyire a folyamatok (adatbázis, szerver) korlátozására használják, nem pedig az emberi felhasználókat. Korlátozhatja a rootként futó folyamatokat is. Más disztribúciók hasonló alternatívákat használnak, mint például az AppArmor .
Vírusok és víruskeresők
A Unix-szerű operációs rendszerek immunisak a legtöbb Microsoft Windows vírussal szemben, mivel a Windows rendszeren futó bináris fájlok általában nem futnak más platformokon. Sok Unix -szerű telepítés azonban fájl tárolási szolgáltatásokat nyújt a Microsoft Windows ügyfeleknek, például a Samba szoftver használatával , és akaratlanul is a felhasználók által tárolt vírusok tárházává válhatnak. Gyakran előfordul, hogy a Unix szerverek postaátviteli ügynökként működnek, és ennek következtében gyakran telepítik az e -mail víruskeresést. A ClamAV víruskereső forráskód formájában érhető el, és használható a Unix fájlrendszerek más operációs rendszereket megfertőző vírusok keresésére.
Vannak olyan vírusok és férgek, amelyek a Unix-szerű operációs rendszereket célozzák meg. Valójában az első számítógépes féreg - a Morris féreg - a Unix rendszereket célozta meg.
Tűzfalak
A hálózati tűzfal védi a rendszereket és a hálózatokat a tűzfallal szemben lévő hálózati fenyegetések ellen. A tűzfalak blokkolhatják a szigorúan belső szolgáltatásokhoz való hozzáférést, a nemkívánatos felhasználókat, és bizonyos esetekben tartalom szerint szűrhetik a hálózati forgalmat.
iptables
Az iptables a jelenlegi felhasználói felület a Linux kernel netfilter funkcióival való interakcióhoz . Ez váltotta ipchainst . Más Unix -hoz hasonló operációs rendszerek saját natív funkciókat biztosíthatnak, és léteznek más nyílt forráskódú tűzfaltermékek. Az iptablesről részletesebb információkat máshol talál. Rövid megbeszélés található itt annak leírására, hogy az iptables hogyan használható a Linux tűzfal konfigurálásához.
A netfilter egy állapot-teljes csomagszűrőt biztosít, amely konfigurálható a hálózati interfész , a protokoll , a forrás- és/vagy célcím , a forrás- és/vagy célport, valamint a csomag állapota szerint. Egy hálózati csomag több láncot is áthalad a hálózati interfész által történő fogadás és a fogadó között, vagy egy másik gazdagéphez történő továbbítás között. A közös láncok: BEMENET , KIMENET és ELŐRE . Az INPUT lánc minden csomag esetén áthalad, ahogy azokat egy hálózati interfész fogadja, függetlenül attól, hogy a gazda elfogadja vagy továbbítja egy másik gazdagépnek. Az OUTPUT lánc minden csomag esetében áthalad, amint azokat egy hálózati interfész továbbítja. A FORWARD lánc áthalad, mert azok a csomagok, amelyek a hálózati kiszolgálón keresztül kerülnek átirányításra egyik hálózati interfészről a másikra, például a többhomályos rendszer esetében (egynél több fizikai hálózati interfésszel rendelkező rendszer).
A beépített láncok mindegyikének van egy alapértelmezett házirendje, amely meghatározza, hogy milyen intézkedéseket kell végrehajtani a lánc végére érő csomagok esetében. A csomagok bejárása akkor ér véget, ha egy szabály megfelel a csomagnak, és az ACCEPT , DROP , REJECT vagy RETURN műveletekkel rendelkezik .
A legegyszerűbb iptables tűzfal szabályokat tartalmaz minden kívánt szolgáltatáshoz, majd egy szabályt, amely jelzi, hogy a csomag, amely eléri ezt a szabályt, elmarad. Egy olyan rendszer, amely csak például a bejövő e -mail forgalmat engedélyezte, rendelkezett volna egy szabállyal, amely elfogadta a kapcsolatokat az SMTP -porton, majd elvetett másokat. Szükség lenne egy olyan szabályra, amely azt jelzi, hogy minden létesített kapcsolat engedélyezett is, így a kimenő kapcsolatok más rendszerektől kapnak válaszokat.
INPUT lánc
A következő példa az INPUT lánc egyszerű csomagszűrőjét mutatja be a fent leírt példához:
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all—any any anywhere anywhere state ESTABLISHED
0 0 ACCEPT tcp—any any anywhere anywhere tcp dpt:smtp
0 0 LOG all—any any anywhere anywhere LOG level warning
0 0 DROP all—any any anywhere anywhere
Az explicit DROP művelet hozzáadása biztosítja, hogy a csomagokat el kell dobni, ha az INPUT lánc alapértelmezett házirendje véletlenül ACCEPT -re változik .
Kimeneti lánc
Kevesebb szükség van egy OUTPUT lánc és az alapértelmezett politikája az OUTPUT lánc nyugodtan lehet állítani, hogy ACCEPT . Bizonyos esetekben kívánatos lehet, hogy a tűzfal bizonyos kimenő kapcsolatokat csak bizonyos jóváhagyott rendszerekre korlátozzon. Ezt kilépési szűrésnek nevezik, és felhasználható annak megakadályozására, hogy a tűzfalon belüli vírusok más rendszerekbe meneküljenek. Például egy hálózat házirendje lehet, hogy a kimenő e-mail kapcsolatokat egyetlen engedélyezett e-mail szerverre korlátozza az e-mail spam elleni küzdelem érdekében . Ezt a következő példával lehet elérni:
Chain OUTPUT (policy ACCEPT)
pkts bytes target prot opt in out source destination
0 0 DROP tcp—any any !server anywhere tcp dpt:smtp
Ebben a példában nincs szükség más szabályok szerepeltetésére, mivel az OUTPUT lánc alapértelmezett házirendje az ACCEPT . Ez a szabály feltételezi, hogy a tűzfalként működő gazdagép nem fog e -mailt küldeni, például az e -mail szervernek. Ez jó feltételezés, mivel a tűzfal rendszerint a tűzfalként való működéshez szükséges minimális rendszerkódot tartalmazza.
Egy korlátozóbb OUTPUT lánc megengedő ( ACCEPT ) bejegyzéseket tartalmazna azokhoz a szolgáltatásokhoz, amelyekhez a tűzfalon kívül lehet hozzáférni, majd korlátozó ( DROP ) házirendet tartalmazna magára a láncra vonatkozóan.
Tábornok
Biztonságos hálózati kommunikáció:
- 7. réteg: GPG / PGP
- Rétegek 4,5: SSL / TLS / Stunnel / S / MIME
- 3. réteg: VPN , IPsec
- 2. réteg: PPTP
Csomag szaglás:
Támadás:
- Ember a középső támadásban
- LAND , a halál pingje , karácsonyfa csomag , szolgáltatásmegtagadás et al.
- Szoftvereszközökön alapuló jelszó/jelszó/kulcslopási támadások a rendszer ellen. Ilyenek például a strace/rácsos/tusc/dtrace/SystemTap alapúak.
Fejlett
- rootkitek , kernel modulok, chkrootkit
- részletek kihasználása, puffertúlcsordulás , helyi vs távoli
Szolgáltatás részletei
- bannerek
- SMTP - spam
- Sendmail - a bannerek segítenek a fejléc verziójában stb.
- Domain Name System - fordított leképezés dnssec
Hivatkozások
Tábornok
- Praktikus UNIX és Internet Security, Simson Garfinkel és Gene Spafford, O'Reilly & Associates, 2003.
Külső linkek
- A Unix biztonsági modell webszerver adminisztrációhoz Robert K. Moniot 2000
- A UNIX hálózati biztonságának építészeti áttekintése Robert B. Reinhardt 1993
- Unix biztonsági papírok