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.

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 vowheel user privileges group, ak chcú spúšťať príkaz su.

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.

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ý.

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ý.