30. január 2014 - 13:30 poslal Peter Šantavý
- Abstrakt
Ako sme uvádzali na stránke Zabezpečenie počítača, bezpečnosť počítačov a informačných technológií vo všeobecnosti je komplexný a stály proces, ktorý sprevádza využívanie týchto technológií v každodennej praxi.
Nie inak je tomu i v prípade zabezpečenia webových stránok, ktoré sú v súčasnosti neustále pod drobnohľadom automatických skriptov a niekedy i sofistikovanejších, resp. priamo cielených útokov so zámerom kompromitovať (hacknúť) webové stránky.
Primárnym cieľom kompromitácie už nebýva pozmenenie úvodnej, resp. niektorej inej stránky webu (tzv. defacement), ale infiltrácia škodlivého kódu so širokým spektrom zneužitia - od rozposielania spamov, cez pokus o infiltráciu počítačov návštevníkov, ddos útokym, resp. inú integráciu do infraštruktúry botnetov,... až po úplne nové možnosti, akou je napr. pokus o využívanie systémovcýh zdrojov na ťažbu bitcoinov (tzv. bitcoin mining).
Vzhľadom na rastúce riziká spojené s kompromitáciou webových stránok a neustále kvantitatívne i kvalitatívne narastanie snáh o prienik na webové stránky by sme chceli uviesť niekoľko pravidiel a zásad pre bezpečné spravovanie webových stránok.
- Všeobecné zásady
1. šifrovaný ftp prístup k webpriestoru
Pre šifrovaný prístup je možné použiť ftp s podporou SSL/TLS šifrovania (ftpes) alebo zabezpečené webrozhranie. Ďalšie informácie sú uvedené na stránkach technických parametrov našich serverov.
2. prístup k webpriestoru len z dôveryhodných počítačov
Pre prístup je vhodné využívať počítače, ktoré nie sú kompromitované. U verejne dostupných počítačov (napr. internetová kaviareň) alebo počítačov priateľov treba rátať s tým, že môžu byť kompromitované a môže na nich dôjsť k úniku prihlasovacích údajov, resp. priamo infiltrácie škodlivého kódu na webové stránky.
3. zle nastavené práva pre jednotlivé súbory a zložky webpriestoru
V prípade zle nastavených prístupových práv k zložkám a súborom webu môže útočník priamo čítať dáta, ktoré by nemal mať prístupné, alebo zapisovať do súborov a zložiek, resp. meniť ich obsah alebo vykonávať ich spustenie.
Preto je dôležité mať nastavené správne prístupové práva pre zápis a čítanie, no taktiež pamätať na celkové nastavenie webpriestoru a modifikovať ho napríklad vhodným nastavením .htaccess.
4. deravý kód stránky
v html/php/js/... kóde webových stránok sa môžu vyskytovať chyby, ktorých dôsledkom je možné s väčším, či menším úsilím kompromitovať web. Preto treba v prípade vlastného kódu pri návrhu dbať o vyvarovanie sa bezpečnostých chýb a vykonať následnú validáciu kódu a v prípade použitia redakčných systémov aktualizovať redakčný systém minimálne v prípade vydania bezpečnostných opráv, resp. nových verzií.
- Zásady pre vlastný kód webových stránok
1. snažiť sa písať jednoduchý a prehľadný kód, o ktorom viete, čo skutočne vykonáva (kto má na viac, musí vedieť, čo koná;-).
2. vyhýbať sa funkciám, ktoré predstavujú potencionálne bezpečnostné riziko, alebo v rámci daného skriptovacieho jazyka sú označené ako zastaralé a do budúcnosti nepoužívané (obsolete).
3. ošetriť vstupy voči útokom XSS (cross-site scripting) a SQL injection.
Samozrejme je treba pri vývoji pamätať i na iné typy útokov (RFI, CRLF, CSRF, Base64, Code Injection a pod.).
4. využívať .htaccess
Súbor .htaccess je konfiguračný súbor na úrovni adresárov. Je podporovaný web servermi a umožňuje decentralizovanú správu konfigurácie servera pre daný adresár (de facto správanie webu). Použitie konkrétnych direktív v .htaccess môže zvýšiť bezpečnosť celého webu.
5. validovať výsledný kód html/xhtml validátorom.
6. preveriť bezpečnosť výsledného kódu (napr. niektorými doplnkami pre webové prehliadače, pomocou bezpečnostných a penetračných nástrojov a pod.).
- Zásady pre redakčné systémy
1. po vydaní novej verzie aktualizovať redakčný systém. V prípade vydania bezpečnostných aktualizácií ide o nutnosť!
V starých verziách redakčných systémov sa častokrát nachádzajú chyby, ktoré su zneužiteľné cez internet na prebranie úplnej kontroly nad celým webom. Aktuálne takýmito chybami z najpoužívanejších redakčných systémov trpia najmä staré verzie Joomla a Wordpress. Joomla a Wordpress sú v súčasnosti tiež najnapádanejšie a ich staré verzie aj najviac kompromitované redakčné systémy na internete.
2. používanie vhodných hesiel pre prístup do administrátorského rozhrania a využívanie 2FA/MFA
Administrátorské rozhrania redakčnách systémov sú cez internet ľahko dohľadateľné a vyťažované útokmi so skúšaním hesiel (brute force attack). Útoky sú realizované automaticky (skriptami), takže sú schopné vytrvalo a systematicky pracovať na odhalení slabého hesla.
Ak to daný systém umožňuje, odporúčame využívať dvoj, resp. viacfaktorové overovanie.
3. využiť bezpečnostné funkcie redakčného systému
Ak redakčný systém má implementované funkcie na zvýšenie bezpečnosti (obmedzenie prihlasovania do administrátorského rozhrania, obmedzenie pre súborový systém, vkladanie a validáciu dát a pod.), je vhodné ich využiť.
4. využívať na prístup k administratívnemu rozhraniu zabezpečený prístup
Miesto protokolu http:// využívať prístup cez https:// (t.j. TLS/SSL zabezpečenie).
5. vypnutie funkcií a modulov, ktoré nie sú používané
Kód, resp. chybné nastavenie každej aktívnej funkcie a modulu zvyšujú potenciálne riziko výskytu chyby, s pomocou ktorej môže byť web kompromitovaný.
6. používať len overené moduly a pluginy, resp. moduly z overených zdrojov
Modul/plugin, ktorého zdroj, resp. funkcionalita nie sú overené, môže v sebe obsahovať závažnú chybu, prípadne priamo škodlivý kód.
7. využívať .htaccess
Súbor .htaccess je konfiguračný súbor na úrovni adresárov. Je podporovaný web servermi a umožňuje decentralizovanú správu konfigurácie servera pre daný adresár (de facto správanie webu). V mnohých inštaláciách redakčných systémov sa vyskytuje, avšak nie je aktívny (existuje napr. vo forme htaccess.txt miesto .htaccess). Jeho použitie zvyčajne zvyšuje zabezpečenie redakčného systému.
8. pravidelne zálohovať
Pre prípad straty a poškodenia dát je potrebné, aby správca webu vykonával zálohovanie konfigurácie redakčného systému, používateľských dát a databáz.
9. použitie bezpečnostých modulov/pluginov
Viaceré redakčné systémy majú k dispozícii moduly, resp. pluginy, ktoré zvyšujú bezpečnosť redakčného systému, prihlasovania, prístupu k dátam, zneužitia ešte neopravených chýb v kóde a pod.
Napríklad niektoré moduly, ktoré zvyšujú bezpečnosť redakčného systému Wordpress, sú uvedené na blogu firmy Active 24 (ide o starú stránku, na webe je veľa zdrojov, ktoré uvádzajú novšie informácie o bezpečnostných moduloch pre rôzne CMS).