Le dritte dal Datacenter

Mettere in sicurezza un server PHP: disabilitare le funzioni più rischiose

Il linguaggio PHP è uno dei più rischiosi dal punto di vista della sicurezza, in quanto … se da un lato permette ad un’ampia gamma di applicazioni WEB di funzionare, dall’altro include una serie di funzioni predefinite (attive sulla maggioranza degli hosting) che possono permettere ad un attaccante di compromettere il server, caricare file arbitrari e via dicendo.

Bisogna specificare da subito che i pericoli maggiori per un sito in PHP derivano essenzialmente dall’abuso di due funzioni specifiche:

  • la prima è la funzione eval(), che permette di eseguire arbitrariamente qualsiasi porzione di codice contenuta nel suo argomento;
  • la seconda è la funzione base64_encode(), che serve a decodificare una stringa in base 64.

Altre funzioni che possono costituire un rischio concreto per la sicurezza sono le seguenti:

  • system,passthru,exec,popen,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate;
  • shell_exec,escapeshellcmd;
  • define_syslog_variables,posix_uname,posix_getpwuid,apache_child_terminate,posix_kill,posix_mkfifo;
  • posix_setpgid,posix_setsid,posix_setuid,escapeshellarg,posix_uname,ftp_exec,ini_alter;
  • ini_restore,inject_code,syslog,openlog,define_syslog_variables,apache_setenv,eval,phpAds_XmlRpc;
  • phpAds_remoteInfo,phpAds_xmlrpcEncode,phpAds_xmlrpcDecode,xmlrpc_entity_decode,fp,fput.

Di seguito vengono quindi riportati una serie di suggerimenti utili alla luce di quanto visto.

  1. Mettere in sicurezza WordPress, nello specifico, è molto importante perchè è diffusissimo da qualche anno a questa parte e la sua struttura, di fatto, è ben nota agli hacker: una delle cose più diffuse che si effettuano è quella di effettuare il cosiddetto “hardening” facendo uso di opportune aggiunte al file .htaccess ed installando un paio di plugin di sicurezza.
  2. Aggiungere un file vuoto index.php alla directory dei plugin – ma anche a tutte quelle che non si desidera far vedere esternamente, ovviamente esclusa la root del filesystem – per evitare che l’attaccante possa visionarli, rimuovere le informazioni sulla versione di WordPress attuale dal markup HTML e bloccare qualsiasi tentativo di query injection attraverso URL.
  3. In generale è inoltre convieniente, nelle versioni dei siti che siano release o comunque non più in fase di sviluppo, eliminare qualsiasi plugin o modulo non utilizzato, così come i temi (specialmente se scaricati da siti non ufficiali) in quanto si possono lasciare aperte delle potenziali backdoor che l’attaccante potrebbe sfruttare.
  4. Un’altra opzione disponibile è quella di installare un modulo aggiuntivo come Suhosin, il quale impedisce nella pratica alle due funzioni eval() e base64_decode() di funzionare. Questo potrebbe creare qualche problema nel funzionamento degli ordinari CMS, quindi il provvidimento dovrebbe essere attuato solo in alcuni casi.
  5. In certi casi le funzioni “pericolose” viste in precedenza possono essere disabilitate aggiungendo questa riga alla configurazione del vostro file PHP.ini (ovviamente limitatevi ad inserire quelle che ritenete possano costituire un rischio, in caso di problemi sul sito rimuovete un modulo alla volta fino a far funzionare il tutto senza problemi):
    disable_functions =
    exec,passthru,shell_exec,system,proc_open,popen,curl_exec,
    curl_multi_exec,parse_ini_file,show_source
  6. In caso di attacco ricevuto, è bene disporre sempre di un backup aggiornato (che dovreste ricordarvi di programmare per tutti i vostri siti almeno una volta a settimana) e soprattutto dovreste ricordare di cambiare periodicamente tutte le password.
Nota: per richiedere supporto personalizzato potete ricorrere alla nostra assistenza specialistica.

Lascia un commento

Back to top button