Povesteam cu cineva despre securizarea unui server de web si am pregatit o lista de sugestii.
Daca ar fi serverul meu, as face urmatoarele lucruri:
1. m-as uita saptamanal daca nu au aparut versiuni noi la aplicatiile pe care le-am instalat (cpanel, phpbb, wordpress...)
cel mai bine este sa te inscrii la mailinglist-urile proiectelor respective si sa fii anuntat instant cand a aparut un security fix.
2. as pune o parola puternica la toate serviciile de administrare (cpanel, mysqladmin, ...)
http://strongpasswordgenerator.com/
3. mai bune, as restrictiona accesul la aceste servicii doar pentru anumite adrese de IP (din firewall, e simplu).
sa am access numai de pe IP-urile folosite de mine.
4. as muta ssh pe un alt port. daca ramane pe portul 22 toate lumea il ataca si la un moment dat poate au noroc.
5. as inchide toate porturile care nu sunt necesare.
Pentru un server de web sunt necesare doar 80, 443 (eventual 53 - DNS si 25 - SMTP - mail)
Eventual, daca am porturi pe care vreau sa le folosesc din cand in cand de pe alte ip-uri:
folosesc port knocking http://www.portknocking.org/ pentru porturile alea.
idea de baza aici este ca se definesc niste secvente de event-uri in urma carora se deschid/inchid porturi.
eventurile pot sa fie knock-uri in firewall (de ex. trimiti un pachet pe portul 3 pe urma pe 5 pe urma, ...)
cand seventa corespunde, deschid portul. cand nu mai am nevoie de el, il inchid.
6. configureaza apache sa nu arate continutul directoarelor
http://www.ducea.com/2006/06/26/apac...ctory-indexes/
incredibil de multe probleme apar din chestia asta.
7. as instala mod_security si l-as configura sa logheze post-urile.
asta poate sa ocupe mult loc dar merita. daca ai probleme vezi tot ce a facut atacatorul.
http://www.modsecurity.org/ - mod_security este un foarte bun application firewall si chiar daca ai aplicatii vulnerabile face sa fie foarte greu de exploatat vulnerabilitatiile. (chiar imposibil in unele cazuri)
8. as instala php cu patch-ul Suhosin
http://www.hardened-php.net/
9. as configura php.ini-ul (chestiile de baza)
http://www.conftool.net/en/technical...ity_hints.html
http://www.php.net/magic_quotes
magic_quotes_gpc = On
register_globals = Off
disable_functions = show_source, system, shell_exec, passthru, phpinfo, proc_open, proc_nice
allow_url_fopen = Off
allow_url_include = Off
display_errors = Off
open_basedir = "/var/www"
10. as folosi un Host-based intrusion detection system (gen tripwire, samhain, aide)
http://en.wikipedia.org/wiki/Host-ba...tection_system
http://sourceforge.net/projects/tripwire/
http://sourceforge.net/projects/aide
astea sunt simplu de folosit. la configurezi sa indexeze un director si pe urma regulat sa verifice daca sunt schimbari in structura
(a aparut un fisier nou, s-a modificat continutul la alt fisier). poti sa prinzi instant deface-uri, cand cineva uploadeaza un shell, ...
se pot configura sa-ti trimita email cand apar modificari. foarte folositoare.
11. as activa selinux
poate sa te salveze intr-o multime de cazuri de 0day-uri
https://wiki.ubuntu.com/SELinux
12. si in final si as folosi AppArmor
https://wiki.ubuntu.com/AppArmor
sau systrace (pentru OpenBSD)
http://www.citi.umich.edu/u/provos/systrace/
AppArmor e o chestie super geniala. Idea originala a pornit din OpenBSD de la systrace.
Se defineste un fisier/profil pentru fiecare aplicatie, unde se specifica exact ce poate sa faca aplicatia respectiva (scrie in fisierul asta, deschide portul asta, ...)
Pentru aplicatiile de baza (apache, ssh) sunt deja definite profile care pot fi refolosite.
Daca apare un 0day, exploit-ul nu poate sa faca nimic pentru ca este restrictionat.
Cam atat pentru moment.
Niciun comentariu:
Trimiteți un comentariu