O bezpecnosti a tak...
Ivan Doležal
ivan.dolezal at vsb.cz
Sun Nov 2 16:02:30 CET 2003
Dobrý den,
1. Zaobírám se myšlenkou pohrávat si více s jailem, k čemuž mě přivedl
například článek http://www.onlamp.com/lpt/a/4139 . Jaký je ale
praktický přínos vězení? V době, kdy se člověk snaží běžet všechny
služby na efemérních portech, každou pod extra uživatelem a posléze je
přesměrovávat pomocí paketových filtrů, jen aby je nemusel startovat
jako root, kdy naše organizace oficiálně zrušila všechny FTP servery,
kdy železo na přiměřeně výkonný server je tak levné, že je podle mě
robustnější extra nainstalovat pět strojů a každý může mít jádro přesně
k obrazu aplikace (narážím např. na povolení bpf), přinese mi jail něco
zajímavého navíc?
Mějme například stroj ve vnitřní síti otevřený do Internetu a na něm
aplikaci, která operuje zevnitř i vně místní sítě (třeba SOCKS server).
Útočník zvnějšku způsobí v aplikaci buffer overflow. Preventivní účinek
jailu bych si pak představoval v tom, že při porušení aplikace spadne
celý jail, čímž se útočníkovi ihned zabrání v dalším průniku. Je něco
takového možné? Pokud ne jailem, poradíte mi něco jiného (gcc s
něčím-jako-Propolice, kterým by ale šlo přeložit nové aplikace)?
2. Zaujalo mě, že ve FreeBSD jsou v sysctl k mání hodnoty...
net.inet.ip.portrange.reservedhigh: 1023
net.inet.ip.portrange.reservedlow: 0
...kterými lze vypnout nutnost startovat různé špatně napsané aplikace s
rootovskými privilegii.
Osobně soudím, že před deseti lety, kdy unixový server byl zpravidla
stroj za milióny se stovkami uživatelů a organizace měla k internetu
připojený jeden takový, pečlivě oprašovaný, mělo svůj půvab, když na
privilegovaných portech běžely pouze ty služby, které spustil Velký Root
(nějaký přiměřeně vysoce postavený zodpovědný technik). V dnešní době,
kdy je pod stoly mnoha uživatelů mnoho Linuxů a na nich služby, o
kterých uživatelé ani nevědí, mi to ale připadá jako archaismus, který
nutí u nedbale zabezpečovaných počítačů zbytečně eskalovat práva k
programu, jenom proto, aby měl právo přístupu k jakémusi portu.
Lidé z OpenBSD (o jejichž kompetenci nemám důvod pochybovat) to
pokládají za chybný přístup
http://www.netsys.com/openbsd-misc/2003/06/msg00672.html . Chtěl jsem si
proto pro zajímavost udělat obrázek o tom, jestli takovou možnost někdo
z vás používá nebo naopak vědomě nepoužívá, protože ji rovněž pokládá za
nebezpečnou. Co je podle vás větší zlo? Získat možnost být "root" u
špatně napsaných aplikací (a posléze si nabindovat své "zlé" aplikace)
nebo získat práva obyčejného uživatele (a posléze si nabindovat svou
jednu "zlou" aplikaci)?
Jak "dobře" lze napsat aplikace, které se bindují na privilegované porty
a posléze si snižují svá privilegia? Když se podívám na běžně spuštěného
Apache, vždycky vidím jednu instanci, která běží jako root...
$ps axuw | grep httpd
root 19852 0.0 3.7 17320 9624 ?? Ss Wed06PM 2:51.68
/usr/local/sbin/httpd
www 19853 0.0 3.4 18720 8776 ?? I Wed06PM 0:07.44
/usr/local/sbin/httpd
www 19854 0.0 3.3 18664 8712 ?? I Wed06PM 0:03.37
/usr/local/sbin/httpd
...
ISC BIND dokáže běžet podle ps pouze jako pan "named". Přesto je BIND
pokládán za nebezpečnou aplikaci č.1 http://www.sans.org/top20/ .
Pokud se budete za dlouhých podzimních večerů nudit, zkuste mi odpovědět :-)
Děkuji za pozornost,
Ivan Doležal
More information about the Users-l
mailing list