Zabezpečení Unix - Unix security
Zabezpečení Unix se týká prostředků pro zajištění na Unix nebo unixový operační systém . Zabezpečeného prostředí je dosaženo nejen koncepcí návrhu těchto operačních systémů, ale také bdělými uživatelskými a administrativními postupy.
Koncepty designu
Oprávnění
Základní funkcí zabezpečení v těchto systémech jsou oprávnění systému souborů . Všechny soubory v typickém unixovém souborovém systému mají nastavená oprávnění umožňující odlišný přístup k souboru.
Oprávnění k souboru se běžně nastavují pomocí příkazu chmod a vidí se pomocí příkazu ls . Například:
-r-xr-xr-x 1 root wheel 745720 Sep 8 2002 /bin/sh
Unixová oprávnění umožňují přístup různých uživatelů k souboru. Různé skupiny uživatelů mají různá oprávnění k souboru.
Pokročilejší unixové souborové systémy zahrnují koncept seznamu řízení přístupu, který umožňuje udělování oprávnění více uživatelům nebo skupinám. K udělení oprávnění dalším jednotlivým uživatelům nebo skupinám lze použít seznam řízení přístupu . Například:
/pvr [u::rwx,g::r-x,o::r-x/u::rwx,u:sue:rwx,g::r-x,m::rwx,o::r-x]
V tomto případě, který pochází z příkazu chacl v operačním systému Linux , je uživateli sue uděleno oprávnění k zápisu do adresáře /pvr .
Skupiny uživatelů
Uživatelé v operačních systémech ve stylu Unixu často patří do spravovaných skupin se specifickými přístupovými oprávněními. To umožňuje uživatelům být seskupeni podle úrovně přístupu, který mají k tomuto systému. Mnoho implementací Unixu přidává další vrstvu zabezpečení tím, že pro přístup k příkazu vyžaduje, aby byl uživatel členem skupiny oprávnění uživatele kola .
su
Rootový přístup
Většina systémů Unix a unixových systémů má účet nebo skupinu, která uživateli umožňuje získat úplnou kontrolu nad systémem, často známou jako root účet. Pokud přístup k tomuto účtu získá nežádoucí uživatel, dojde k úplnému narušení systému. Kořenový účet je však nezbytný pro administrativní účely a z výše uvedených bezpečnostních důvodů se root účet používá jen zřídka pro každodenní účely ( běžněji se používá program sudo ), takže použití účtu root lze pozorněji sledovat.
Kořenový přístup „jak by měl být“ si mohou představit ti, kteří jsou obeznámeni s příběhy Supermana, pomocí následující analogie :
- Používání root účtu je něco jako být Supermanem; běžný uživatel správce je spíše jako Clark Kent. Aby se zachránili lidé, stává se Clark Kent Supermanem jen tak dlouho, jak je to nutné. Poté se vrátí ke svému „převleku“. Rootový přístup by měl být používán stejným způsobem. Přestrojení Clarka Kenta ho však ve skutečnosti neomezuje, protože stále dokáže využívat své super schopnosti. To je analogické s použitím programu sudo.
Uživatelské a administrativní techniky
Unix má mnoho nástrojů, které mohou při správném používání uživateli a správci zlepšit zabezpečení.
Hesla
Výběr silného hesla a jeho řádné hlídání jsou pravděpodobně nejdůležitější věci, které může uživatel pro zlepšení zabezpečení Unixu udělat. V systémech Unix jsou základní informace o uživatelích uloženy pod souborem /etc/passwdTento soubor sleduje uživatele registrované v systému a jejich hlavní definice. Hesla, přesněji řečeno hash hesla, lze také uložit na stejné místo. Záznamy v /etc/passwdzabírají přesně jeden řádek a mají následující podobu:
nickname:password_hash:UserID:GroupID:Complete_Name:home_dir:shell_bin
Příkladem může být:
xfze:$$1zuW2nX3sslp3qJm9MYDdglEApAc36r/:1000:100:Daniel Ernesto Ortiz Costa:/home/xfze:/bin/bash
Vzhledem k tomu, že všichni uživatelé musí mít přístup ke čtení, aby /etc/passwdmohli provádět mnoho běžných úkolů ( ls -l /homepoužije se například /etc/passwdk mapování UID na přihlašovací jména), mohl si kdokoli přečíst také hash hesel ostatních uživatelů. K vyřešení tohoto problému byl soubor /etc/shadowvytvořen pro uložení hash hesel, přičemž pouze root má přístup pro čtení. V rámci stínování hesel je 2. pole ( hash hesla ) nahrazeno znakem 'x', který systému říká, aby prostřednictvím /etc/shadowsouboru získal odpovídající heslo uživatele .
/etc/shadowSoubor často obsahuje pouze hodnoty v prvních dvou oblastech:
xfze:$$1zuW2nX3sslp3qJm9MYDdglEApAc36r/:::::
Zbývající pole v /etc/shadowsouboru zahrnují:
- Minimální počet dní mezi změnami hesla
- Maximální počet dní do změny hesla
- Počet dní varování před zadáním hesla je třeba změnit
- Když se účet stane nepoužitelným, je třeba změnit počet dní po zadání hesla
- Datum (vyjádřené jako počet dní od 1. ledna 1970 ), kdy platnost účtu vyprší
Tato pole lze použít ke zlepšení zabezpečení Unixu vynucením zásad zabezpečení heslem.
Uživatelé a účty
Správci by měli staré účty okamžitě odstranit.
Údržba softwaru
Patching
Operační systémy, stejně jako veškerý software, mohou obsahovat chyby, které je třeba opravit, nebo je lze vylepšit přidáním nových funkcí. Oprava operačního systému bezpečným způsobem vyžaduje, aby software pocházel z důvěryhodného zdroje a nebyl změněn, protože byl zabalen. Mezi běžné metody ověřování, že nebyly změněny opravy operačního systému, patří použití kryptografického hashu , jako je kontrolní součet na bázi MD5 , nebo použití médií pouze pro čtení.
Z hlediska zabezpečení není konkrétní metoda balení, jako je formát RPM Package Manager původně z Red Hat Linux , tak důležitá jako použití funkcí, které zajišťují integritu samotné opravy.
Distribuce zdrojů
Distribuce zdrojů zahrnují možnost prozkoumat v kódu podezřelý obsah. Nevýhodou, chybí -li doprovodná kryptografická hodnota hash, je, že uživatel musí být schopen provést bezpečnostní analýzu kódu sám.
Balíčky RPM
Distribuce Linuxu, které pro poskytování základních funkcí a aktualizací softwaru používají formát RPM Package Manager, využívají k zajištění integrity obsahu MD5 a GPG . Hodnoty hash jsou zabaleny se souborem RPM a ověřeny při instalaci balíčku.
Balíčky Debianu
Distribuce Linuxu, které pro poskytování základních funkcí a aktualizací softwaru používají formát balíku Debian .deb, využívají k zajištění integrity obsahu podpisy GPG . Podpis se vypočítá, když je balíček vytvořen, a ověří se později, když je balíček nainstalován.
Ostatní prodejci a distribuce
Bez ohledu na dodavatele nebo distribuci by všechny distribuce softwaru měly poskytovat mechanismus pro ověření, že je software legitimní a nebyl změněn, protože byl původně zabalen.
Služby
V systému by neměl být instalován ani konfigurován nepotřebný systémový software. Software, který již není vyžadován, by měl být pokud možno zcela odstraněn.
- Zjistěte, jaké služby běží
- netstat -na
- lsof
- nmap
- sockstat -4 ( FreeBSD )
Příkazy inetd a xinetd fungují jako super servery pro různé síťové protokoly, jako je rlogin , telnet a ftp .
Vypnutí nepotřebných služeb
- pomocí aktualizace-rc.d v Debianu
- pomocí chkconfig na Red Hat Linux
- pomocí /etc/rc.conf a /usr/local/etc/rc.d na FreeBSD (zmínka /etc/rc.local)
- pomocí aktualizace RC na Gentoo Linux
Tento přístup se obvykle nazývá proaktivní zabezpečení . Existují některé operační systémy, které jsou ve výchozím nastavení zabezpečené . Mimo jiné jsou bezplatné příchutě BSD ( FreeBSD , NetBSD a OpenBSD ) proaktivně bezpečné. Například výstup netstatu na pracovní stanici NetBSD 3.0 jasně popisuje tuto techniku:
$ 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
Následující příklad ze systému BSD
$ sockstat -4
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
root sendmail 569 4 tcp localhost.smtp *.*
root sshd 593 4 tcp *.ssh *.*
Ukazuje, že na tomto počítači pouze služba SSH naslouchá rozhraní veřejné sítě počítače. sendmail poslouchá pouze rozhraní zpětné smyčky . Přístup ke službě může být dále omezen pomocí brány firewall .
Souborové systémy
Zabezpečení systému souborů
Zabezpečení systému souborů v systémech podobných UNIX a Unix je založeno na 9 bitech oprávnění, nastavených bitech ID uživatele a skupiny a lepivém bitu , celkem 12 bitů. Tato oprávnění platí téměř stejně pro všechny objekty souborového systému, jako jsou soubory, adresáře a zařízení.
9 povolení bitů je rozděleno do tří skupin po třech bitech. První skupina popisuje oprávnění vlastníka souboru, druhá skupina popisuje oprávnění skupiny přidružené k vlastníkovi souboru nebo adresáři, který soubor obsahuje, a třetí skupina popisuje oprávnění spojená s jakýmkoli procesem, který nemá stejného uživatele ID jako soubor. Každá skupina tří bitů obsahuje bit indikující, že je povolen přístup pro čtení, zápis nebo spouštění. V případě adresářů je přístup ke spuštění interpretován jako oprávnění k vyhledání názvu souboru v adresáři.
Nastavené bity ID uživatele a sady ID skupiny, obvykle zkráceně set-UID, respektive set-GID , se používají ke změně identity procesu, který spouští soubor s jedním nebo oběma těmito bity nastavenými. Soubor s nastaveným bitem oprávnění set-UID způsobí, že proces, který tento soubor spustí, dočasně přepne efektivní ID uživatele na ID vlastníka souboru. Soubor s nastaveným bitem oprávnění set-GID způsobí, že proces, který tento soubor spustí, dočasně přepne efektivní ID skupiny na ID skupiny souborů. Proces se pak může střídat mezi skutečným ID uživatele nebo skupiny, které zdědil ze souboru, a skutečným ID uživatele nebo skupiny, které zdědil, když se uživatel přihlásil do systému. To poskytuje mechanismus, pomocí kterého může proces omezit vlastní přístupová práva na ty oblasti kódu, které tato přístupová práva vyžadují. Toto je forma bezpečnostní techniky známé jako oddělení oprávnění a vylepšuje zabezpečení programu omezením nechtěných nebo nežádoucích akcí procesů.
Adresář s nastaveným bitem oprávnění set-GID způsobí, že nově vytvořený soubor bude mít počáteční hodnotu skupiny souborů stejnou jako skupina souborů v adresáři. To poskytuje mechanismus, kterým subsystém, jako je poštovní subsystém systému, může vytvářet soubory, které mají společnou hodnotu skupiny souborů, takže procesy set-GID v rámci tohoto subsystému jsou pak schopny číst nebo zapisovat soubor.
Sticky bit , formálně známý jako uložení textu na odkládací bitu, odvozuje svůj název od svého původního účelu. Původně lepivý bit způsobil, že se úvodní obrázek paměti procesu uložil jako souvislý obraz na diskovou jednotku, která byla použita k ukládání stránek skutečné paměti, když nebyly používány. Tím se zlepšil výkon běžně prováděných příkazů tím, že byl úvodní obrázek paměti okamžitě k dispozici. Moderní systémy UNIX již tuto funkci nevykonávají, když je bit nastaven, ale název byl přesto zachován. V případě souborů může systém použít lepicí bit k označení stylu zamykání souborů, které se má provést. V případě adresářů lepivý bit brání jakémukoli procesu kromě toho, který má oprávnění superuživatele nebo efektivního ID uživatele vlastníka souboru, odstranit soubor v tomto adresáři. Sticky bit se nejčastěji používá na veřejně zapisovatelné adresáře, jako jsou různé dočasných pracovních prostorů adresářů v systému.
Root squash
Root squash je speciální mapování identity vzdáleného superuživatele (root) při použití autentizace identity (místní uživatel je stejný jako vzdálený uživatel). Pod root squash je uid 0 klienta (root) mapován na 65534 (nikdo). Je to především funkce NFS, ale může být k dispozici i na jiných systémech.
Root squash je technika, jak se vyhnout eskalaci oprávnění na klientském počítači pomocí suid spustitelných souborů Setuid . Bez root squash může útočník generovat binární soubory suid na serveru, které jsou prováděny jako root na jiném klientovi, i když klientský uživatel nemá oprávnění superuživatele. Proto chrání klientské počítače před jinými škodlivými klienty. Nechrání klienty před nebezpečným serverem (kde root může generovat binární soubory suid), ani nechrání soubory žádného jiného uživatele než root (protože škodliví klienti se mohou vydávat za jakéhokoli uživatele).
SELinux
SELinux je sada rozšíření jádra pro přesnější řízení přístupu, která striktně definuje, zda a jak lze omezeným procesem přistupovat k souborům, složkám, síťovým portům a dalším zdrojům. Tento systém se používá spíše k omezení procesů (databáze, server) než k lidským uživatelům. Může také omezit procesy, které běží jako root. Jiné distribuce používají srovnatelné alternativy jako AppArmor .
Viry a skenery virů
Unixové operační systémy jsou imunní vůči většině virů Microsoft Windows, protože binární soubory vytvořené pro běh ve Windows obecně neběží na jiných platformách. Mnoho instalací podobných Unixu však poskytuje klientům systému Microsoft Windows služby ukládání souborů, například pomocí softwaru Samba , a může se nechtěně stát úložištěm virů uložených uživateli. Je běžné, že servery Unix fungují jako agenti přenosu pošty, a v důsledku toho je často instalováno skenování virů e -mailů. ClamAV virů je k dispozici ve formě zdrojového kódu a může být použita ke skenování souborové systémy Unix na přítomnost virů, které infikují jiné operační systémy.
Existují viry a červi, kteří se zaměřují na operační systémy podobné Unixu. Ve skutečnosti první počítačový červ - červ Morris - zacílil na unixové systémy.
Firewally
Síťový firewall chrání systémy a sítě před síťovými hrozbami, které existují na opačné straně brány firewall. Brány firewall mohou blokovat přístup k přísně interním službám, nežádoucím uživatelům a v některých případech filtrovat síťový provoz podle obsahu.
iptables
iptables je aktuální uživatelské rozhraní pro interakci s funkcemi netfilteru jádra Linuxu . Nahradil ipchains . Jiné operační systémy podobné Unixu mohou poskytovat své vlastní nativní funkce a existují i jiné brány firewall s otevřeným zdrojovým kódem . Podrobnější informace o iptables jsou obsaženy jinde. Je zde stručná diskuse, která popisuje, jak lze iptables použít ke konfiguraci brány firewall systému Linux.
netfilter poskytuje filtr paketů s úplným stavem, který lze konfigurovat podle síťového rozhraní , protokolu , zdrojové a/nebo cílové adresy , zdrojového a/nebo cílového portu a stavu paketu. Síťový paket prochází několika řetězci mezi časem, kdy je přijat síťovým rozhraním, a časem, kdy je hostitelem přijat nebo předán jinému hostiteli. Společné řetězce jsou INPUT , OUTPUT a FORWARD . INPUT řetěz je překročen pro všechny pakety, jak jsou přijímány síťové rozhraní, bez ohledu na to, zda mají být přijímány hostitelským nebo předána do jiného hostitele. OUTPUT řetěz je překročen pro všechny pakety, jak jsou přenášeny prostřednictvím síťového rozhraní. VPŘED řetěz je překročena, aby tyto pakety jsou směrovány přes hostitele z jednoho síťového rozhraní do druhého, jako je tomu v případě multi tomuto systému (systém s více než jedné fyzické síťové rozhraní).
Každý z integrovaných řetězců má výchozí zásadu, která definuje, jaká akce je provedena pro paket, který dosáhne konce řetězce. Procházení paketů končí, když pravidlo odpovídá paketu a má akci PŘIJMOUT , DROP , ODMÍTNOUT nebo NÁVRAT .
Nejjednodušší firewall iptables se skládá z pravidel pro každou požadovanou službu, za nimiž následuje pravidlo, které označuje, že všechny pakety, které dosáhnou tohoto pravidla, budou zahozeny. Systém, který například umožňoval pouze příchozí provoz e -mailů, by měl pravidlo, které přijímalo připojení na portu SMTP , a poté zrušilo ostatní. Bylo by vyžadováno pravidlo, které by naznačovalo, že všechna povolená připojení byla také povolena, aby odchozí připojení přijímala odpovědi z jiných systémů.
VSTUPNÍ řetězec
Následující příklad ukazuje jednoduchý paketový filtr pro řetězec INPUT pro výše popsaný příklad:
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
Přidání explicitní akce DROP zajišťuje, že jsou pakety zahozeny, pokud se výchozí politika řetězce INPUT omylem změní na ACCEPT .
VÝSTUPNÍ řetězec
Je zde menší potřeba pro OUTPUT řetězce a výchozí politiku z OUTPUT lze bezpečně nastaven na řetězu ACCEPT . V některých případech může být žádoucí, aby brána firewall omezila určitá odchozí připojení na určitou sadu schválených systémů. Toto je známé jako filtrování výstupů a může být použito k zabránění úniku virů z brány firewall do jiných systémů. Například může být zásadou sítě omezit připojení odchozích e-mailů na jeden autorizovaný e-mailový server jako způsob boje proti nevyžádané poště . Toho lze dosáhnout následujícím příkladem:
Chain OUTPUT (policy ACCEPT)
pkts bytes target prot opt in out source destination
0 0 DROP tcp—any any !server anywhere tcp dpt:smtp
V tomto příkladu není nutné zahrnout žádná další pravidla, protože výchozí zásadou pro řetězec VÝSTUP je PŘIJMOUT . Toto pravidlo předpokládá, že hostitel, který funguje jako brána firewall, nebude odesílat e -maily samotné, například na e -mailový server. To je dobrý předpoklad, protože systém brány firewall obvykle obsahuje minimální množství systémového kódu potřebného k tomu, aby fungoval jako brána firewall.
Více omezující OUTPUT řetězec by měl obsahovat tolerantní ( ACCEPT ) údaje týkající se těchto služeb, které mohou být přístupné mimo bránu firewall a poté restriktivní ( DROP politiky) pro samotného řetězu.
Všeobecné
Zabezpečená síťová komunikace:
Čichání paketů:
Útoky:
- Muž uprostřed útoku
- LAND , ping smrti , balíček vánočních stromků , Denial of service et al.
- Softwarové nástroje založené na heslech/heslech/krádežích útoků na systém. Jako ty založené na strace/krovu/tusc/dtrace/SystemTap.
Pokročilý
- rootkity , moduly jádra, chkrootkit
- využívat detaily, přetečení vyrovnávací paměti , lokální vs vzdálené
Podrobnosti o službě
- bannery
- SMTP - spam
- Sendmail - verze záhlaví nápovědy pro bannery atd.
- Systém doménových jmen - reverzní mapování dnssec
Reference
Všeobecné
- Praktický UNIX a zabezpečení internetu, Simson Garfinkel a Gene Spafford, O'Reilly & Associates, 2003.
externí odkazy
- Unix Security Model pro správu webového serveru Robert K. Moniot 2000
- Architektonický přehled zabezpečení sítě UNIX Robert B. Reinhardt 1993
- Bezpečnostní papíry Unixu