Bezpečnosť v Unixe

Bezpečnosť v Unixe znamená spôsoby zabezpečenia unixového alebo Unix-like operačného systému. Bezpečné prostredie je dosiahnuté nielen návrhom dizajnu týchto operačných systémov, ale aj pomocou pozorných užívateľských a administrátorských praktík.
Koncept dizajnu.
Prístupové práva.
Jedným zo základných znakov v týchto systémoch je systém prístupových práv. Všetky súbory v Unix-ových súborových systémoch môžu dovoľovať rôzny prístup k súborom na základe určených prístupových práv.
Prístupové práva pre súbor sú zvyčajne nastavované pomocou príkazu chmod a zobrazované cez príkaz ls. Napríklad:
 -r-xr-xr-x 1 root wheel 745720 Sep 8 2002 /bin/sh
Unix-ové práva povoľujú prístup k súboru rôznym používateľom. Rôzne "skupiny používateľov" majú rôzne prístupové práva k súboru.
Zložitejšie Unix-ové súborové systémy obsahujú "Access Control List" (zoznam kontroly prístupu), koncept, ktorý umožňuje udeľovať práva viacerým užívateľom alebo skupinám. "Access Control List" môže byť použitý na udelenie práv ďalším jednotlivým užívateľom alebo skupinám. Napríklad:
 /pvr [u::rwx,g::r-x,o::r-x/u::rwx,u:peter:rwx,g::r-x,m::rwx,o::r-x]
V tomto príklade, ktorý pochádza z príkazu chacl v Linux-ových operačných systémoch, užívateľovi peter sú udelené zapisovacie práva na zložku /pvr. 
Skupiny používateľov.
Užívatelia pod Unix-ovými operačnými systémami často patria do skupín so špecifickými prístupovými právami. Toto umožňuje zoskupovať užívateľov podľa toho, aké veľké práva majú mať v systéme. Veľa Unix-ových implementácií pridáva ďalšiu úroveň ochrany vyžadovaním členstva užívateľa vo"wheel" user privileges group, ak chcú spúšťať príkaz su.
Problémy.
Väčšina Unix-ových a Unix-like systémov má účet alebo skupinu, ktorá umožňuje užívateľovi kompletnú kontrolu nad systémom. Takýto účet sa nazýva root. Ak prístup k takémuto účtu získa nechcený používateľ, znamená to úplný prienik do systému. Účet root je ale nevyhnutný pre administrovanie systému, a pre spomenuté bezpečnostné dôvody je málokedy používaný pre každodenné potreby (častejšie sa používa program sudo). Takto sa používanie tohto účtu dá precíznejšie monitorovať.
Kto pozná Supermana, môže si predstaviť ako by malo vyzerať používanie root-a cez nasledujúcu analógiu:
Užívateľské a administratívne techniky.
Unix má veľmi veľa nástrojov, ktoré dokážu zlepšiť bezpečnosť, ak sú vhodne použité užívateľmi či administrátormi.
Heslá.
Výber silného hesla a jeho stráženie sú pravdepodobne najdôležitejšie veci, ktoré môže užívateľ urobiť pre zvýšenie bezpečnosti Unix-u. V Unix-ových systémoch, najdôležitejšie údaje o hesle sú uložené v súbore /etc/passwd. Tento súbor udržuje prehľad o užívateľoch a ich hlavných nastaveniach. Heslá, resp. hash-e hesiel môžu byť tiež uložené na rovnakom mieste. Záznamy v /etc/passwd každý zaberajú presne jeden riadok a majú nasledujúcu formu:
 nickname:hash_hesla:UserID:GroupID:kompletné_meno:domovský_adresár:shell_bin
Napríklad: 
 xfze:$1$zuW2nX3sslp3qJm9MYDdglEApAc36r/:1000:100:José Carlos D. S. Saraiva:/home/xfze:/bin/bash
Keďže všetci užívatelia musia mať práva na čítanie tohto súboru (aby systém vedel skontrolovať prihlasovacie heslo), vznikol jeden bezpečnostný problém: hocikto vedel prečítať tento súbor a získať hash-e hesiel ostatných užívateľov. Preto bol pre uchovávanie hash-ov hesiel vytvorený súbor /etc/shadow , na ktorý mal práva na čítanie iba root. Pri utajovaní hesiel, druhá položka v riadku v súbore /etc/passwd (hash hesla) je nahradená 'x' ktoré hovorí systému, aby našiel príslušné heslo cez súbor /etc/shadow.
Súbor /etc/shadow zvyčajne obsahuje iba prvé dve hodnoty:
 xfze:$1$zuW2nX3sslp3qJm9MYDdglEApAc36r/:::::
Zvyšné hodnoty v súbore /etc/shadow obsahujú: 
Tieto hodnoty môžu byť použité na zvýšenie Unix-ovej bezpečnosti prinútením užívateľov zaoberať sa heslami.
Užívatelia a účty.
Administrátori by mali mazať staré účty okamžite.
Softvérová údržba.
Patchovanie.
Operačné systémy, tak ako každý softvér, môžu obsahovať chyby žiadajúce opravu alebo môžu byť vylepšované pridávaním nových funkcií. Bezpečné patchovanie operačného systému vyžaduje, aby softvér pochádzal z dôveryhodného zdroja a nebol pozmenený pred zabalením. Medzi bežné metódy overujúce, či patche pre operačné systémy neboli pozmenené, patrí použitie kryptografického hashu, ako napríklad MD5 suma, alebo použitie read-only média.
Z bezpečnostného uhla pohľadu, špecifické metódy balenia, ako napríklad RPM Package Manager formát pôvodne od Red Hat Linux nie sú až tak dôležité ako zabezpečenie integrity samotného patchu.
Distribúcia zdrojových kódov.
Distribúcia zdrojových kódov znamená možnosť prehľadať kód na podozrivý obsah. Mínusom ale je, že užívateľ musí byť schopný vykonať bezpečnostnú analýzu kódu sám. 
RPM balenia.
Linuxové distribúcie, ktoré používajú RPM Package Manager formát pre zabezpečenie základnej funkcionality a softvérových updatov, využívajú MD5 a GPG pre zabezpečenie integrity obsahu. Hodnoty hash-ov sú zabalené spolu so súbormi RPM a overované, keď je balík inštalovaný.
Debian balenia.
Linuxové distribúcie, ktoré používajú Debian .deb balíkový formát pre zabezpečenie základnej funkcionality a softvérových updatov, využívajú GPG podpisy pre zabezpečenie integrity obsahu. Podpis je vypočítaný, keď je balík vyrobený a neskôr overovaný, keď sa balík inštaluje.
Ostatní predajcovia a distribúcie.
Bez ohľadu na predajcu alebo distribúciu, všetky softvérové distribúcie by mali poskytovať mechanizmus na overenie, či je softvér legitímny, a či nebol modifikovaný od času, keď bol pôvodne zabalený.
Služby.
Nepotrebný systémový softvér by nemal byť inštalovaný ani konfigurovaný na systéme. Softvér, ktorý je ďalej nepotrebný by mal byť pokiaľ možno kompletne odstránený.
Príkazy inetd a xinetd sa správajú ako super-servery pre množstvo sieťových protokolov, napríklad ako rlogin, telnet a ftp.
Vypnutie nepotrebných služieb
Tento prístup je bežne nazývaný "proaktívna bezpečnosť". Existujú operačné systémy, ktoré sú "prirodzene bezpečné". Popri iných, voľné BSD distribúcie (FreeBSD, NetBSD, a OpenBSD) sú proaktívne bezpečné. Napríklad, výstup z netstat-u na NetBSD 3.0 pracovnej stanici jasne podčiarkuje túto techniku:
Nasledujúci príklad je z BSD systému
Ukazuje, že na tomto stroji iba služba SSH počúva na verejnom sieťovom rozhraní počítača. sendmail počúva iba na loopback rozhraní. Prístup k službe môže byť ďalej obmedzený použitím firewallu.
Súborové systémy.
Bezpečnosť súborových systémov.
Bezpečnosť súborových systémov v UNIX a Unix-like systémoch je založená na 9 bitoch, ktoré znamenajú prístupové práva, set user a group ID bitoch, a na sticky bite, čo spolu dáva 12 bitov. Tieto práva sa aplikujú rovnako takmer na všetky objekty súborového systému ako sú súbory, adresáre a zariadenia. 
9 prístupových bitov je rozdelených do troch skupín po troch bitoch. Prvá skupina popisuje práva vlastníka súboru, druhá skupina popisuje práva skupiny asociovanej s vlastníkom súboru alebo s adresárom, ktorý súbor obsahuje a tretia skupina popisuje práva asociované s procesom, ktorý nemá rovnaké user ID ako súbor. Každá skupina troch bitov obsahuje bity označujúce povolenie prístupu na čítanie, zapisovanie alebo spúšťanie. V prípade adresárov znamená právo na spúšťanie právo prezerať daný adresár. 
Set user ID a set group ID bity, bežne skracované ako "set-UID" a "set-GID", sú používané na zmenu identity procesu, ktorý spúšťa súbor, ktorý má nastavený jeden alebo oba tieto bity. Súbor s nastaveným prístupovým bitom "set-UID" spôsobí, že proces, ktorý súbor spustil dočasne zmení effective user ID na user ID vlastníka súboru. Súbor s nastaveným prístupovým bitom "set-GID" spôsobí, že proces, ktorý súbor spustil dočasne zmení effective group ID na group ID súboru. Proces potom môže meniť effective user alebo group ID, ktoré zdedil zo súboru, a medzi real user alebo group ID, ktoré zdedil, keď sa užívateľ prihlásil do systému. Toto predstavuje spôsob, akým proces môže limitovať prístupové práva, ktoré vlastní, voči častiam kódu (code regions), ktoré tieto prístupové práva vyžadujú. Toto je forma bezpečnostnej technológie nazývanej privilege separation (privilegované rozdeľovanie) a zvyšuje bezpečnosť programov limitovaním nechcených alebo neplánovaných činností procesu.
Adresár, ktorý má nastavený "set-GID" bit spôsobí, že novo vytvorené súbory budú mať počiatočnú hodnotu skupinu rovnakú ako je skupina adresára. Toto predstavuje spôsob, kde subsystém, napríklad mailový subsystém, môže vytvárať súbory, ktoré majú bežnú hodnotu skupiny, takže set-GID procesy v rámci subsystému sú potom schopné prečítať a zapísať do súboru.
"Sticky bit", formálne známy ako "save text on swap" bit, odvádza svoje meno od svojho pôvodného účelu. "Sticky bit" pôvodne znamenal, že pamäťový obraz (image) procesu bol uložený ako spojitý obraz na disku, ktorý bol používaný na uchovávanie reálnych pamäťových stránok, keď neboli používané. Toto zvyšovalo výkon bežne spúšťaných procesov, keďže počiatočný obraz pamäte bol ľahko dostupný. Moderné UNIX-ové systémy už ďalej nevykonávajú túto funkciu, ak je sticky bit nastavený, napriek tomu názov ostal. V prípade súborov, "sticky bit" môže byť použitý systémom na indikovanie spôsobu, akým má byť vykonané uzamknutie súboru. V prípade adresárov, "sticky bit" zabraňuje vymazanie súboru v rámci adresára hocijakému procesu, okrem procesu, ktorý má super-user (root) práva alebo má nastavené effective user ID ako má vlastník súboru. "Sticky bit" je najbežnejšie používaný vo verejne zapisovateľných adresároch, akými sú napríklad rôzne dočasné pracovné adresáre v systéme.
Vírusy a vírusové skenery.
Unix-like operačné systémy sú imúnne voči väčšine vírusov z prostredia Microsoft Windows, pretože "binárne súbory" vytvorené pre beh na Windows vo všeobecnosti nefungujú na iných platformách. Avšak veľa Unix-like zariadení pokskytuje ukladanie dát pre užívateľov Microsoft Windows, napríklad použitím Samba softvéru, a takto sa môžu tieto zariadenia neplánovane stať skladiskom vírusov uložených užívateľmi. Pre Unix-ové servery je bežné fungovanie ako Mail transfer agent, teda často je inštalovaný aj skener emailových vírusov. Vírusový skener ClamAV je dostupný vo forme zdrojového kódu a môže byť použitý na skenovanie Unix-ových súborových systémov na vírusy, ktoré napádajú iné operačné systémy. 
Existujú vírusy a červy, ktoré majú za cieľ Unix-like operačné systémy. Prvý počítačový červ - Morris worm bol namierený proti Unix-ovým systémom.
Firewall.
Firewall odvádza svoje meno z konštrukčných metód, v ktorých spevnená, ohňu-vzdorná vrstva je použitá na ochranu steny pred ohňom na opačnej strane steny. Podobne, sieťový firewall chráni systémy a siete pred sieťovými hrozbami, ktoré existujú na opačnej strane firewallu. 
iptables.
iptables je súčasný užívateľský interface pre interakciu s funkcionalitou netfilter (súčasť Linux-ového jadra). Nahradili ipchains. Ďalšie Unix like operačné systémy môžu poskytovať ich vlastnú natívnu funkcionalitu, takisto existujú ďalšie open source firewallové produkty. Nasledujú stručné poznámky o tom, ako môžu byť iptables použité na konfiguráciu Linux-ového firewallu.
netfilter poskytuje state-full paketový filter, ktorý môže byť konfigurovaný podľa sieťového rozhrania, protokolu, zdrojovej alebo cieľovej adresy, zdrojového alebo cieľového portu a podľa stavu paketu. Sieťový paket prechádza viacerými okruhmi medzi časom, kedy je prijatý sieťovým rozhraním a časom, kedy je akceptovaný hostom, alebo preposlaný inému hostovi. Bežné "okruhy" sú INPUT (vstup), OUTPUT (výstup) a FORWARD (ďalej). INPUT "okruhom" prechádzajú všetky pakety tak, ako sú prijaté sieťovým rozhraním, nezávisle od toho, či sú hostom prijímané alebo preposielané inému hostovi. OUTPUT "okruhom" prechádzajú všetky pakety posielané sieťovým rozhraním. FORWARD okruhom prechádzajú tie pakety, ktoré sú routované cez hosta z jedného sieťového rozhrania do iného, napríklad v prípade multi-homed systému (systém s viac ako jedným sieťovým rozhraním).
Každý zo vstavaných okruhov ma vlastnú implicitnú "politiku" ktorá definuje aké akcie sa uplatňujú voči paketu, ktorý sa dostane na koniec okruhu. Prechod paketu končí, keď sa "pravidlo" zhodne s paketom a má akciu ACCEPT (akceptuj), DROP (zahoď), REJECT (odmietni) alebo RETURN (vráť).
Najjednoduchší iptables firewall sa skladá z "pravidiel" pre každú požadovanú službu, nasledovaných pravidlom, ktoré indikuje, že pakety, ktoré dosiahli toto pravidlo su zahodené (dropped). Systém, ktorý iba povoľuje napríklad emailové prenosy bude mať pravidlo, ktoré akceptuje spojenia na SMTP porte, a potom zahadzuje ostatné. Bolo by vyžadované pravidlo, ktoré by indikovalo, že všetky započaté spojenia boli povolené, takže odchádzajúce spojenia by dostali odozvu z ostatných systémov. 
INPUT okruh.
Nasledujúci príklad ukazuje jednoduchý paketový filter INPUT okruh pre hore spomenutý prí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
Pridanie explicitnej DROP akcie uisťuje, že pakety, ktoré boli odhodené implicitnou politikou INPUT okruhu nebudú náhodou zmenené na ACCEPT.
OUTPUT okruh.
Je menšia potreba pre OUTPUT okruh a implicitná "politika" pre OUTPUT okruh môže byť bezpečne nastavená na ACCEPT. Niekedy môže byť žiaduce pre firewall aby limitoval určité odchádzajúce spojenia do množiny povolených systémov. Toto je známe ako egress filtering a môže byť použité v rámci firewallu na prevenciu úniku vírusov do iných systémov. Napríklad, politikou siete môže byť limitovanie odchádzajúcich emailových spojení na jediný autorizovaný emailový server (čo je jeden zo spôsobov boja s e-mailovým spamom). Toto môže byť dosiahnuté nasledujúcim príkladom:
 Okruh OUTPUT (politika ACCEPT)
 pkts bytes target prot opt in out source destination
 0 0 DROP tcp—any any !server anywhere tcp dpt:smtp
Nie je potrebné zahŕňať ďalšie pravidlá do tohto príkladu, keďže implicitná politika pre OUTPUT okruh je ACCEPT. Všimnite si, že toto pravidlo predpokladá, že host, ktorý sa správa ako firewall nebude posielať email sám, ale pošle ho emailovému serveru. Toto je dobrý predpoklad, keďže typicky firewall obsahuje minimum systémového kódu potrebného aby fungoval ako firewall.
Viac obmedzujúci OUTPUT okruh by obsahoval povoľujúce (ACCEPT) vstupy pre tie služby, ku ktorým môže byť pristupované zvonka firewallu a potom obmedzujúcu (DROP) politiku pre okruh samotný.
Všeobecne.
Bezpečná sieťová komunikácia:
Packet sniffing :
Útoky:
Referencie.
"Practical UNIX and Internet Security," Simson Garfinkel and Gene Spafford, O'Reilly &amp; Associates, 2003.