{"id":331,"date":"2012-10-15T15:38:20","date_gmt":"2012-10-15T13:38:20","guid":{"rendered":"http:\/\/clark.tipistrani.it\/?p=331"},"modified":"2012-10-17T16:36:10","modified_gmt":"2012-10-17T14:36:10","slug":"hardening-apache2-php","status":"publish","type":"post","link":"http:\/\/clark.tipistrani.it\/?p=331","title":{"rendered":"Hardening PHP"},"content":{"rendered":"<p>\u00c8\u00a0 arrivato il momento di fare un po di\u00a0 hardening di php sulla macchina che ospita il crm.<br \/>\nRipeto la sicurezza sicura non esiste, ma si pu\u00f2 rendere la vita difficile a chi non ha\u00a0 niente di meglio di fare, un buon modo per farlo \u00e8 rispondere a &#8220;monosillabi&#8221; o se possibile non rispondere proprio alle domande di un malintenzionato per capire l&#8217;ambiente in cui gira l&#8217;applicativo, infatti la prima fase di un attacco \u00e8 la raccolta di informazioni, come ad esempio che sistema operativo ospita in questo caso il sito, che versione di apache, di php, di mysql, etc che sono informazioni molto utili per sfruttare vulnerabilit\u00e0 note o meno note di questi applicativi.<br \/>\nIn \/etc\/php5\/apache2\/ c&#8217;\u00e8 il file php.ini che mi interessa modificare.<br \/>\nLa prima direttiva che andremo a modificare e a portare a Off \u00e8\u00a0<strong>expose_php<\/strong> questa direttiva se abilitata da delle info su php negli header che il server manda al client e non esiste un solo valido motivo al mondo per fornire informazioni su cosa sta girando su una macchina ad un potenziale attacker.<br \/>\n[orig] expose_php = On<br \/>\n[mod] expose_php = Off<br \/>\nPer lo stesso motivo setto ad Off le direttive <strong>display_errors<\/strong> e\u00a0 <strong>display_startup_errors<\/strong>, in quanto potrebbero dare informazioni sia sulla struttura interna del\u00a0 programma che della struttura del database sottostante.<br \/>\n[orig] display_errors = On<br \/>\n[mod] display_errors = Off<br \/>\n[orig] display_startup_errors = On<br \/>\n[mod] display_startup_errors = Off<br \/>\nLa direttiva <strong>enable_dl<\/strong> permette di caricare moduli aggiuntivi nel sistema, runtime, da script. In tal modo potrebbe esser caricato un modulo che modifichi il comportamento di Apache stesso, portando a superare le direttive del <code>php.ini<\/code>, quindi va portata a Off.<br \/>\n[orig] enable_dl = On<br \/>\n[mod] enable_dl = Off<br \/>\n[orig] allow_url_fopen = On<br \/>\n[mod] allow_url_fopen = Off<br \/>\nGiusto come ultimo passo diciamo a PHP dove pu\u00f2&#8217; lavorare indicando un unica directory con la direttiva:<br \/>\n<strong>open_basedir = \/var\/www\/crm.myfirm.com<\/strong><\/p>\n<p>Quindi giusto per completare l&#8217;opera andiamo a modificare il nostro virtual-host in \/etc\/apache2\/sites-enable\/crm.myfirm.com aggiungendo la direttiva:<br \/>\n<strong>php_admin_value open_basedir \/var\/www\/crm.myfirm.com<\/strong><br \/>\n<strong><br \/>\n<\/strong>Fatta questa ultima operazione sono ragionevolmente sicuro di aver fatto quanto in mio potere per complicare la vita a chi volesse curiosare da queste parti.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00c8\u00a0 arrivato il momento di fare un po di\u00a0 hardening di php sulla macchina che ospita il crm. Ripeto la sicurezza sicura non esiste, ma si pu\u00f2 rendere la vita difficile a chi non ha\u00a0 niente di meglio di fare, un buon modo per farlo \u00e8 rispondere a &#8220;monosillabi&#8221; o se possibile non rispondere proprio [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,7,6],"tags":[],"class_list":["post-331","post","type-post","status-publish","format-standard","hentry","category-linux","category-sistemi-operativi","category-work"],"_links":{"self":[{"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=\/wp\/v2\/posts\/331","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=331"}],"version-history":[{"count":24,"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=\/wp\/v2\/posts\/331\/revisions"}],"predecessor-version":[{"id":341,"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=\/wp\/v2\/posts\/331\/revisions\/341"}],"wp:attachment":[{"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=331"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=331"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}