Bezpečnost LinuxuLiteratura |
Upozornění pro čtenáře:
Tento text si neklade za cíl být úplný a po všech
stránkách aktuální, neboť v tomto tématu více než v jakémkoliv jiném platí, že
teď je už pozdě. Berte ho jako námět k zamyšlení a jako malinkou sbírku snad
nejdůležitějších typů jak se lépe postarat o co nejmenší zranitelnost svého
Linuxu.
Zabezpečení počítače před tím aby lokalní uživatelé, vlastníci legálního
účtu, nezískali rootovské práva.
Většina "hackerů" tvrdí, že pokud se na
nějaký stroj dostanou jako obyčejný uživatel, je získání rootovských práv, a
tedy neomezený přístup k celému systém, už hračkou. Vemme si z toho tedy
ponaučení a snažme se jim to poněkud stížít.
Jedním ze základních naviků, který by každý uživatel Linuxu měl mít, je
tvorba poměrně složitých hesel. Délka by měla být alespoň 7 znaků a obsahovat
alespoň 2 mimo abecední znaky jako čísla či speciální znaky (+,?.@#$%^&*).
Ve standardních distribucích se rozeznávají hesla do délky 8 znaků, ale lze
nainstalovat software, který umí toto omezení prakticky zrušit. Z osobních
zkušeností doporučuji zkusit svůj passwd či shadow soubor prolomit
pomocí programu crack (toho
času ve verzi 5.0), který používá kromě metody hrubé síly i poměrně
propracovanou slovníkovou metodu. Člověk se dost často diví, co všechno je
schopen rozluštit. Na otázku jak si pak má člověk takto složitá hesla pamatovat,
existuje několik odpovědí. Jednou z nich je například podle rozložení písmen na
klávesnici, anebo lépe pomoci prvních písmen slov nějaké říkanky či
básničky.
Jako samozřejmost by se už dalo skoro brát přesun hesel z
passwd souboru do shadow, ve kterém nemá kromě roota nikdo právo
číst zakódovaná hesla. Toto je už ve všech nových distribucích Linuxu splněno.
Je vhodné jednou za čas projít celý hard disk počítače a nechat si vypsat všechny SUID root programy. To jsou takové programy, které pokud spustí normalní uživatel, umožní mu po dobu běhu programu získat rootovská práva. Pokud je v takovémto programu chyba, je možné s jeho pomocí třeba spustit rootovský shell. Je záhodno u těch programů, které bezpodmíněčně nemusí zůstat SUID root, zrušit S bit. Jedná se například o programy ping, traceroute, lpr, hodně programů pro X-windows. Při prvním průchodu by se mělo SUID programy srovnat s Linux Security FAQ či s příspěvky do Linux-alert konference, kde naleznete většinu upozornění na staré a již dobře známe chyby.
Tyto programy jsou podobným nebezpečím jako programy, které jsou SUID root.
Většina daemonů beží pod uživatelem root - jako příklad mohu uvést
sendmail, telnetd, httpd, ftpd. Pokud se v těchto
programech nalezne závažná skulinka, jako se tomu již stalo mnohokrát, umožní to
pronikajícímu získat rootovský přístup na daný stroj. Proto je vhodné i za cenu
poměrně velkých nákladů, u všech těchto programů pravidelně updatovat verze,
abychom riziko omezili na minimum.
U většiny těchto chyb se využíva tzv.
"buffer overflow", kdy se program nepodíva zda má při zápisu do paměti dostatek
místa a něco zapíše do oblasti kam by normálně nemohl. To se může využít
například ke spuštění rootovského bashe.
Zabezpečení počítače před tím aby ostatní uživatelé Internetu nemohli ohrozit
domácí stroj.
Toto by mělo být primárním cílem všech sysopů a administrátorů.
Pokud se Vám podaří vybudovat ochranou téměř neprůstupnou zeď okolo Vašeho
systému, o to větší šance je, že potencionální průzkumníky to odradí od dalšího
snažení a raději vezmou za vděk snažším cílem.
V /etc/inetd.conf je přehled programů, které se spouští pomocí inetd
daemonu. Je vhodné z tohoto přehledu vyeliminovat všechny služby o kterých víte
že se bez nich obejdete - většinou to bývají všechny programy jako
in.fingerd, in.nnptd, ntalk, in.rshd,
in.rlogind, ...
Dále pak vypustit všechny nepotřebné démony z
/etc/rc.d/* jako například remot procedure call - NFS,
rpc.mountd, ...
Pomocí tcpd a jeho konfiguračních souborů
/etc/hosts.* omezit množinu počítačů, které u vás mohou danou službu
používat. Přesný formát naleznete na manuálové stránce man 5 host_access.
Jako příklad zde uvádím formát souboru /etc/hosts.deny:
in.ftpd: ALL EXCEPT LOCAL, .mff.cuni.cz, .feld.cvut.cz in.telnetd: ALL EXCEPT ss1000.ms.mff.cuni.czkterý má za následek to, že služba ftp je přístupná pouze pro lokální uživatele a stroje z domén mff.cuni.cz a feld.cvut.cz a telnet pouze pro stroj ss1000. Jako další malý krůček je možno měnit porty na kterých se hlásí jednotlivé služby - v /etc/services - kde můžete třeba telnet posunout na úplně jiný port než standardní 23.
Je třeba pozvolna přecházet na zabezpečené služby, například kryptovanou
komunikaci na principu veřejných klíčů. Jako příklad by mohl sloužit secure
shell (ssh), který umožňuje ještě větší konfort než telnet a přitom nehrozí
prozrazení hesla ani dat, které přes ssh putují, neboť celá session je kódovaná.
Obdobně lze použít secure copy (scp) místo ftp.
Pokud nemůžeme či
nechceme použít ssh nabízí se nám jako alternativa OTP (one time
password), který sice nekryptuje celou komunikaci, ale pouze heslo při
loginu.
U sendmailu, programu pro příjem elektronické pošty, je vhodné omezit
množinu programů, které se mohou při příjmu spustit. To zabezpečíme pomocí
smrsh (sendmail restricted shell). V /etc/sendmail.cf musíme
uvést:
Mprog, P=/usr/local/bin/smrsh, F=lsDFMoeu, S=10/30, R=20/40, D=$z:/, T=X-Unix, A=sh -c $ua vytvoříme adresář /var/adm/sm.bin do kterého dáme symbolické linky na programy jimž dovolíme spuštění.
Sniffry jsou velmi nebezpečné programy, které jsou většinou zahrnuty do některého z daemonů (dost často syslogd), aby mohli nenápadně běžet na hacknutém stroji. Čmuchal sedí na ethernetové kartě, kterou si otevře v promiskuitním režimu a může tudíž poslouchat všechen traffic, který ethernetem projde (ze všech počítačů, které jsou na stejném segmentu ethernetu). Většinou se odchytáva několik prvních packetů každé ftp či telnet session, ve kterých se skrývají nezakódovaná hesla spolu s uživatelskými jmény. Ale tímto způsobem lze získat i mnoho jiných důležitých dat. V poslední době se této možnosti brání ISP hromadným nasazováním switchů do počítačových sítí, což umožňuje aby na jednom segmentu byl pouze jeden počítač - tj. není co odposlouchávat. Ovšem ne každý ISP má dostatek financí, aby mohl kompletně změnit strukturu své sítě...
LSOF je velmi šikovný program, který vám pomůže v mnoha situacích. Dokáže zjistit, které soubory, zařízení či síťová spojení jsou v danou chvíli aktivní a které programy je používají. Stojí za to jednou za čas prozkoumat zda aktivní procesy nemají otevřený podezřelý TCP port, či zda neukládají něco do divného souboru. Tento program je volně k dispozici na ftp://vic.cc.purdue.edu/pub/tools/unix/lsof.
Správný sysop by měl alespoň jednou týdně projít všechny logy a podívat se po podezřelých pokusech o konexe z vnejšku. Většinu údajů najdete ve /var/adm/messages či /var/adm/syslog anebo /var/adm/debug, /var/adm/xferlog. Pokud se vám například bude zdát, že v syslogu máte poněkud málo informací, prozkoumejte radějí zda syslogd je shodný s instalovanou verzí. Je to totiž velmi často převlečený sniffer. Občas taky stojí za to podívat se do domovských adresářů uživatelů a projít si třeba soubory ~/.bash_history - dost často je to velmi poučné čtení :-).
Na Internetu jsou dvě hlavní konference o bezpečnosti na Linuxu - obě dvě
vedené pod křídly RedHatu: Linux-alert
a Linux-security.
Přihlásit se do těchto konferencí můžete například na této stránce.
Linux-alert je moderovaná konference a je do ní postováno pouze velmi málo
e-mailů (cca 1-2 měsíčně, takže se nemusíte bát, že budete zahlceni), ale za to
se jedná o důležitá zdělení. Linux-security je otevřenější konferencí s živějším
obsahem.
Několik organizací jako AUSCERT (Australian Computer
Emergency Response Team), CERT
(Computer Emergency Response Team), CIAC (Computer Incident Advisory
Capability) vydává při objevení nebezpečných chyb svá doporučení, která se dají
rozdělit do dvou částí - rychlé řešení, které se může použít okamžitě a
dlouhodobé řešení (například patch, který je kdyspozici až později).
No
přejděme od oficiálních a uznávaných zdrojů informací k poněkud méně váženým.
Například na stránkach MaMedie
naleznete několik fór jako "CzERT" či "Hacking aneb proč žádat roota o konto",
kde se občas mihnou zajímavosti. Anebo se můžete podívat k našim bývalým kolegům
na Slovensko na hack.box.sk, kde naleznete
velké množství velmi poučných utilit, jako sniffry, upravené logy, čističe,
hledače hesel, redirektory, atd. Další takovou stránku naleznete na www.security.sk.
Pokud byste měli nějaké připomínky k tomuto tématu, případně chtěli něco
doplnit, či Vám něco nebylo jasné, neváhejte se na mě obrátit.
Váš Petr Mitošinka