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