>> Dne 18. 10. 2010 16:22 napsal Viktor:
Od klienta mám prosbu o doplnění následujícího textu k produktům na stránkách: 4090 / 4091 / 4092, nijak to neumíme v Buxusu nahrát. Ani přímým přepisem ani přeformátováním přes Notepad atd.“LECHUZA-PON je substrát pro pokojové a kontejnerové rostliny. Představuje - zejména ve spojení s LECHUZA zavlažovacím setem - ideální alternativu k běžným substrátům. LECHUZA PON ukládá dodané živiny, které se uvolňují podle potřeb jednotlivých rostlin a akumuluje až 40% objemu vody zároveň s optimálním objemem vzduchových pórů. LECHUZA PON podporuje provzdušňování kořenů a optimálně dávkuje přísun vody.”
(Viktor)
>> Dne 19. 10. 2010 9:37 napsal Boris:
Při postování dat ve skriptu /buxus/... detekuje mod_security SQL injection (možná falešný poplach) na následující regexp:SecRule REQUEST_FILENAME|ARGS "\b(?:user_(?:(?:object|table|user)s|password|group)|a(?:tt(?:rel|typ)id|ll_objects)|object_(?:(?:nam|typ)e|id)|pg_(?:attribute|class)|column_(?:name|id)|substr(?:ing)?|table_name|mb_users|rownum)\b"
Definice ARGS z dokumentace pro tento modul:
ARGS is a collection and can be used on its own (means all arguments including the POST Payload), with a static parameter (matches arguments with that name), or with a regular expression (matches all arguments with name that matches the regular expression).
Tedy v tomto případě kontroluje i úplně všechny POST parametry vůči tomuto regulárnímu výrazu.
(Boris)
>> Dne 19. 10. 2010 9:55 napsal Viktor:
Ahoj,3hod. zjišťování proč se některé stránky ukládají a některé ne a potom zase i ty, co ne, se najednou uloží, jsme díkybohu úspěšně zakončili.
Problém byl na jednom webu, kde běžně používají slovo substrát, což je ale podle výše uvedené podmínky v ModSecurity velmi podobné sql příkazu substr a substring a tak to znemožnilo.
Na hydroflóře jsme tedy povolili slovo substrát, ale to je jen takový rychlofix. Asi by bylo dobré ten ModSecurity skript trochu upravit např., že ne všechna slova začínající substr, ale která jsou přesně ta! A pod.
Dík za dobré nastavení toho.
(Viktor)
>> Dne 2010-10-19 10:38 napsal Boris:
Vtip je v tom, že ne my jsme autoři těch pravidel, je jich sumárně kolem 1MB dat, v každé verzi jsou jiné (vždy se to přizpůsobuje novým zjištěním atd. a snaží se to vyhovět nejširší možné škále web aplikací od velkých java systémů až po jednoúčelové cgi skripty). (Boris)To, že ModSecurity někdy zachytí to, co nemá ("false positive") je samozřejmě daň za to, že to máte bezpečné (a skutečně to dokáže odchytit 70-80% všech input validation útoků, které se na aplikaci potom nedostanou).
Toto ale není jen problém mod_security ale jakéhokoliv webového aplikačního firewallu, který funguje na podobných principech. Pro nás to jen znamená, že každou Buxus instanci je třeba jen důkladně otestovat s mod_security v snaze odstranit jakékoli takové chyby.
Na ModSecurity bych tedy nenadával - v jeho konfiguraci se dá udělat výjimka během pár sekund - stačí to jen odhalit (když dostanete chybu 400, jak psal Boris, tak je to téměř vždy tento problém). (Pavol)
Říkal jsem už a i v naší ui42 wiki to je zmíněno, že téměř vždy, když dostáváte chybu 400, je za tím ModSecurity a dosud jsme to relativně zvládali.
Podle oficiální dokumentace se to dělá také tak, že mod_security global options se nastaví jednou (kam a co se loguje, jaký web server předstíráme, kolik pustí maximálně dat na POST a podobně) a potom jsou tam obrovské sady pravidel, které si člověk zapíná / vypíná /
whitelistuje url / customizuje. (Boris)
Přesně tak. A když to neuděláte během testovací provozu, tak to pak musíte doladit během produkční...(Pavol)
(V tomto případě se ten web připravuje na spuštění, takže je to více-méně testovací provoz.)
Na některých webech s Buxusem jsou zapnutá téměř všechna pravidla, vše je tam v pořádku - je to vždy věcí daného konkrétního webu.
Tedy shrnu to všechno, ModSecurity není jen jednoduchý skript, je to asi nejkomplexnější modul v Apache s obrovskou sadou filtrovacích pravidel, které ne každému webu (ne to každému webu v Buxusu) vyhovují v plné míře. (Boris)
Je ale i velmi účinný (žádný lepší WAF ve světě opensource neexistuje) -
samotná pravidla najdete na:
http://sourceforge.net/projects/mod-security/files/modsecurity-crs/0-CURRENT/
Případně je možné komerčně zakoupit tyto:
http://www.gotroot.com/mod_security+rules (Pavol)
Výhoda mod_security je, že je zdarma (komerční produkty od
F5 jako BIGIP stojí řádově desetitisíce eur a také je třeba přizpůsobovat).(Boris)
Poměr cena/výkon v případě ModSecurity je samozřejmě nejlepší (což asi není
problém, když komerční řešení pro jeden webový server stojí desetitisíce
eur). (Pavol)
HTTP 400 je v našem případě téměř vždy odpověď ochrany ModSecurity, tak mi vždy dejte
vědět (jak to dosud také vždy bylo, řešili jsme to už na několika našich serverech.)
Jediné úplně univerzální řešení je jen vypnout tento modul úplně :-)
(Boris)
>> Dne 2010-10-19 17:34 napsal Martin:
Samozřejmě při psaní tohoto příspěvku na blog jsem zažil to samé, co na začátku avizoval klient - nepodařilo se mi na první pokus vložit text se slovem substrát...(Martin)