Portál AbcLinuxu, 5. května 2025 23:23
by ta pravidla sly shrnout do par vet, nebo se pletu?Pletete se. Neexistuje nic jako „obecná bezpečnost“, bezpečnost se vždy týká konkrétní situace a záleží na kontextu. Proto neexistuje žádný univerzální návod „jak nastavit LAMP bezpečně“. Ostatně kdyby nějaké takové obecné zabezpečení existovalo, bylo by to výchozí nastavení těch aplikací. Určitě používejte aktuální verze všech aplikací, nastavte bezpečná hesla. Nejkritičtějším místem ale budou ty nainstalované aplikace. Pokud se útočník skrze nějakou aplikaci dostane do systému, dostane se tím i do těch sousedních aplikací. Ale nejen to. Pokud dokáže pod tím účtem www-data spouštět svůj kód, stane se útočník lokálním uživatelem. A zabezpečit počítač proti útokům lokálního uživatele je úplně jiná liga než pouhé zabezpečení proti vzdálenému útoku. Také bezpečnostních chyb, které může zneužít lokální uživatel, je statisticky daleko více.
Aha takze mi vlastne vubec nepomuze, mit pro kazdeho virtualhosta extra pristup do DB, protoze kdyz se dostane na uroven wwwdata, tak si proste projde okolni adresare a stahne soubory conf.php, kde ta pristupova data ma jak na taliri, je tak?Ano.
Takze vlastne nejaka extra snaha o izolaci php aplikaci je marna, pokud jedna bude derava, ostatni jsou pristupne taky.Můžeš mít pro různé věci fastcgi procesy pod různými uživateli s tím, že adresáře s ostatními weby nebudou pro ně čitelné. Co se stane, když útočník získá toho uživatele… děj se vůle boží. Osobně by mě zajímalo, jak tohle dělají velké hostingy.
No na hostingu ma podle mne kazdy ucet pristup jen do sveho adresare a kazdy ma svou databazi a sveho uzivatele.Pak je problém jak jsem říkal já a Filip Jirsák - zabezpečit systém přes lokálním uživatelem je ještě těžší.
To se spousti xKrat apache?Ne, proč? Apache jenom servíruje statické soubory, tam snad není moc co řešit. Chceš sandboxovat PHP, a to jde buď tak, že spustíš pro každého uživatele fastcgi server, nebo ho používáš jako klasické CGI (což je pomalé).
Neni v php nebo apache nejaka direktiva, ktera zakazuje skriptu pristup mimo, nebo nad svuj pracovni adresar?Podle všeho je PHP tak děravé, že tohle omezit nemůže. Pokoušel se o to ten safe_mode a nefungovalo to tak moc, že to radši zahodili.
V podstate tam nejake omezeni byt musi, protoze jako klient hostingu se skriptem nedostanu nad svuj pracovni adresar k vedlejsimu klientovi.Jak kde. Zkoušel jsi tam nahrát třeba nějaký PHP shell?
Pockej, lokalni uzivatel se ale prece skrze php skript nemuze dostat do systemu, ne? Pokud nemam vubec nainstalovany funkce typu shell_exec, atd.No právě, pokud tam nemáte žádnou funkci nebo jejich kombinaci, která by umožnila spustit kód. O to se pokoušeli přímo autoři PHP jako o
safe_mode
, a nikdy se jim to nepodařilo.
Ale vhodnym nastavenim PHP snad muzu minimalizovat sanci, ze mi nekdo verejne znamou chybou zastarale opensource php aplikace rozlozi server na prvocisla.Můžete tak PHP nastavovat, ale nikdo vám na to nedá návod krok za krokem, protože vždy záleží na prostředí, v jakém to PHP běží. Na druhou stranu to také není tak, že ať uděláte sebevíc, stejně první člověk, který se na daný web podívá, hned získá roota. Každopádně bych se snažil co nejvíc omezit na straně operačního systému, kde ty bezpečnostní mechanismy přeci jen fungují docela spolehlivě. Tj. každou aplikaci spouštět pod samostatným účtem, ten aby měl minimální práva k zápisu i ke čtení, ideálně aby nemohl spouštět žádné jiné programy. Do databáze také každá aplikace svůj účet, který bude mít oprávnění jen k tomu, co aplikace potřebuje, atd.
LoadModule suexec_module lib/apache/mod_suexec.so ##nezapomenout "globlani nastaveni apache aby nebezel pod rootem,... User http Group http
Značka VIRTUALHOST není povolena! (lol) Takže posílam bez,.. no prostě to má být virtuálhost
ServerName myhost ServerAlias www.myhost DocumentRoot /home/www/vhosts/myhost/htdocs SuexecUserGroup myhost myftp php_admin_value open_basedir /home/www/vhosts/myhost/htdocs php_admin_value upload_tmp_dir /home/www/vhosts/myhost/tmpnejaka dokumentace http://httpd.apache.org/docs/current/suexec.html#usage
Značka VIRTUALHOST není povolena! (lol)Ale tak admin webserveru by mohl umět escapovat HTML ;) < > se escapuje pomocí < a >
SuexecUserGroup myhost myftp SuexecUserGroup myhost httpJak to pak je s opravnenim jednotlivych slozek? Jaky ma byt group a user? Group http a user host? A povolit cteni a zapis cele skupine, nebo jen uzivateli?
petr@ubuntuserver:~$ ps aux | grep apache www-data 2866 0.0 0.4 366128 10100 ? S 06:44 0:00 /usr/sbin/apache2 -k start www-data 2867 0.0 1.7 393748 36456 ? S 06:44 0:00 /usr/sbin/apache2 -k start www-data 2868 0.0 0.4 365840 8996 ? S 06:44 0:00 /usr/sbin/apache2 -k start www-data 2869 0.0 0.4 365864 9244 ? S 06:44 0:00 /usr/sbin/apache2 -k start www-data 2870 0.0 0.4 365840 8996 ? S 06:44 0:00 /usr/sbin/apache2 -k start www-data 3879 0.0 0.4 365864 9780 ? S 08:36 0:00 /usr/sbin/apache2 -k start www-data 3880 0.0 0.4 365620 9000 ? S 08:36 0:00 /usr/sbin/apache2 -k start petr 7174 0.0 0.0 9492 900 pts/0 S+ 14:49 0:00 grep --color=auto apache root 23867 0.0 0.8 365404 17548 ? Ss Dec26 0:03 /usr/sbin/apache2 -k startproc tam je ten root? Muze to byt proto, ze mam v systemu webmina a on si spousti svou instanci?
Safemode and open_basedir are flawed by design and will always have security holes like this one (or all the local exploits we demonstrated). The security of your server setup should therefore NEVER rely on these directives.Hustééé
Takze utocnikovi vlastne staci, kdyz nekam propasuje svuj script podobny tomuto php filemanageru a muze si s linuxovym strojem delat co chce, resp. co mu dovoli user www-dataNejenom může, ono se to tak běžně děje :) To se nám takhle na webu objevil záhadný skript navíc… A on to phpfm.
s dobře naprogramovanou aplikací … nebo chyba v PHP aplikaciNo právě. Vždyť i masově nasazované redakční systémy jako WordPress, Drupal nebo Joomla se předhánějí, kdo bude mít dřív nějakou bezpečnostní chybu. Jak potom asi vypadají aplikace, které nejsou tak sledované? Bohužel v PHP komunitě je bezpečnost evidentně dlouhodobě velmi podceňovaná, o čemž svědčí jak dlouholeté pokusy o čtverhrané kolečko v podobě
safe_mode
, než konečně přiznali, že to nikdy nefungovalo a fungovat nemůže, nebo „pokrokové“ diskuse o tom, jak správně escapovat data pro SQL, místo toho, aby se programátorům neustále vtloukalo do hlavy, že uživatelský vstup do SQL příkazu nikdy, opravdu nikdy nepatří, a vždy se předává pomocí bindingu parametrů. Nesouhlasím s těmi, kdo na základě programovacího jazyku šmahem odsoudí nějaký program, ale ta záplava novinek, v jaké další PHP aplikaci byla opět nalezena zranitelnost SQL injection, je pozoruhodná. Takže pokud má tazatel nějaké aplikace, které na tom serveru prostě mají běžet, a nic bližšího o nich neví, měl by bohužel být připraven na nejhorší.
Takže pokud má tazatel nějaké aplikace, které na tom serveru prostě mají běžet, a nic bližšího o nich neví, měl by bohužel být připraven na nejhorší.No právě... když si napíšu aplikaci o dvou řádcích, kde nepoužívám ani DB, bát se nemusím, ale jakmile nainstaluji blbý wordpress, nemám klidné spaní. Myslel jsem, že na aplikaci, kde se publikuje jedna tabulka z databáze není co zkur... ale nasazení WP mi otevřelo oči. Dělal jsem na tom dvoustránkové weby a plácal se do stehen, jak je to easy a rychlé. Dnes mi připadá, že se raději vrátím zpět ke statickým stránkám, protože ty můžu spustit a zapomenout, WP je miminko, o které se člověk musí téměř denně starat. Resumé tedy je, že pokud použiju suexec a nadefinuji si unikátní uživatele pro moje "kritické" projekty a potom třeba jednoho na pokusy, měl bych být relativně v suchu a pokusná, děravá aplikace by neměla ohrozit mé kritické projekty, je tak?
Dnes mi připadá, že se raději vrátím zpět ke statickým stránkám, protože ty můžu spustit a zapomenout,Podle mne na nic co ma vnejsi konektivitu admin nemuze spustit a zapomenout. V cemkoliv se muze objevi chyba. Pokud pouzivam WP tak potrebuji mit proces, jak v casovem intervalu radove hodin reagovat na zverejnenou chybu a opravu. Ale stejne to potrebuji mit i na primo apache. je fakt ze apache ma mene zranitelnosti nez WP, ale musim to mit poreseno.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.