Sicurezza su Joomla 2.5.x e 3.0.x

Prime azioni per la protezione del vostro CMS Joomla 1.5.x, 2.5.x e 3.0.x

Elenco i passi per ottenere il minimo di sicurezza perchè possiate tenere lontano malintenzionati dagli attacchi più conosciuti quali brute force (attacchi di forza bruta) e per attacchi basici xss su bancadati con nomenclature standard.

Queste misure possono essere prese in qualunque momento ma è sempre meglio prenderle immediatamente durante l’installazione.

I primi 3 punti garantisco una sicurezza minimale ma purtroppo non arrivano a garantire una sicurezza sufficiente, sopratutto se si tratta di hacker esperti.

  1. Durante l’installazione o anche dopo aver installato joomla 2.5.x oppure 3.0.x assegnate un nome utente che non sia Admin, Administrator e che non sia troppo corta oppure che contenga una parola di dizionario. Propongo alcuni esempi corretti: TuoNomeFantasiaENickName, TuoNick9342 (il secondo esempio ha una complessità maggiore, sarà quindi preferenziale utilizzarlo).
  2. La password del vostro cms dovrebb’essere più lunga di 8 fino anche a 30 caratteri fra lettere e numeri es: He4sIxm9qWvc (questo esempio ha già una buona complessità e lunghezza)
  3. i nomi delle tabelle non devono essere nominate con l’ex standard di joomla es: jos_ e questo fortunatamente è già stato corretto con le versioni nuove di joomla sia la 2.5.x che la 3.0.x

Spostamento del file di configurazione

Il passo successivo è quello di spostare il file configuration.php in una cartella che non è esposta al pubblico es:

/home/nomeacconto/public_html > qua vengono pubblicati i files che a lato pubblico. (spazi web di cPanel)

/vhosts/nomedominio/httpdocs > qua vengono pubblicati i files disponibili dal mondo intero. (spazio web di Plesk).

Per non esporre i files di configurazione al pubblico possiamo creare una cartella all’interno del nostro acconto es: /home/nomeacconto/cartelladifantasia e copiare il file configuration.php nella cartella appena creata “cartelladifantasia”.

Di seguito è indispensabile modificare due files di modo che Joomla possa trovare il percorso del file di configurazione:

/includes/defines.php e /administrator/includes/defines.php (entrambi i files sono identici) e ne riprendo una parte:
// No direct access.
defined(‘_JEXEC’) or die;

/**
* Joomla! Application define.
*/

//Global definitions.
//Joomla framework path definitions.
$parts = explode(DIRECTORY_SEPARATOR, JPATH_BASE);

//Defines.
define(‘JPATH_ROOT’, implode(DIRECTORY_SEPARATOR, $parts));

define(‘JPATH_SITE’, JPATH_ROOT);
define(‘JPATH_CONFIGURATION’, ‘/home/nomeacconto/cartelladifantasia/’);
define(‘JPATH_ADMINISTRATOR’, JPATH_ROOT . ‘/administrator’);
define(‘JPATH_LIBRARIES’, JPATH_ROOT . ‘/libraries’);
define(‘JPATH_PLUGINS’, JPATH_ROOT . ‘/plugins’ );
define(‘JPATH_INSTALLATION’, JPATH_ROOT . ‘/installation’);
define(‘JPATH_THEMES’, JPATH_BASE . ‘/templates’);
define(‘JPATH_CACHE’, JPATH_BASE . ‘/cache’);
define(‘JPATH_MANIFESTS’, JPATH_ADMINISTRATOR . ‘/manifests’);
come proposto in questo codice è possibile dare il percorso corretto all’altezza di JPATH_CONFIGURATION, basta adattare il vostro percorso secondo la tipologia di pannello di controllo che disponete per avere il percorso relativo corretto.

Spostamento dei file di log e temporanei

Il passo successivo è quello di spostare la cartella dei temporanei solitamente presente in /tmp (rispetto alla cartella pubblica) e la cartella dei logs presente in /logs (rispetto alla cartella pubblica).

Per spostare queste due cartelle possiamo semplicemente cancellare la cartella tmp e logs dalla cartella pubblica e ricrearla in “cartelladifantasia” dovremo poi modificare il file di configurazione: configuration.php (che abbiamo spostato in “cartelladifantasia”) come in questo esempio:
<?php
class JConfig {
….
….
public $log_path = ‘/home/nomeacconto/cartelladifantasia/logs’;
public $tmp_path = ‘/home/nomeacconto/cartelladifantasia/tmp’;
….
….
?>
Questa modifica è possibile farla anche nella parte amministrativa di joomla nel menu Sito > Configurazione Globale > nella scheda sistema per la cartella logs mentre nella scheda Server per impostare la cartella /tmp dei files temporanei.

Quesi passi sono solo il minimo per tenere lontano script automatizzati che tentano di penetrare o di effettuare exploit sul proprio sito internet.

Non da ultimo bisogna sempre tenere aggiornato il CMS alle ultime versioni stabili e tutti i componenti, moduli e plugins che andrete ad utilizzare con Joomla in quanto vengono scoperti nuovi exploit e quindi corretti con le nuove versioni.

Per una sicurezza ancora maggiore all’interno della public_html (o htdocs) è già presente dopo l’installazione di joomla questo file ed è sufficiente rinominarlo da htaccess.txt a .htaccess che protegge ulteriormente dagli exploit più frequenti.

È anche possibile creare un file chiamato php.ini dove è possibile inserire le seguenti righe:
allow_url_fopen = OFF
disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open
Controllate che questi due file abbiano i permessi impostati su 644 e non superiori per evitare manomissioni non desiderate, meglio ancora se vengono impostate a 444.

Proteggete i vostri logfiles e file di configurazione:

è infine possibile proteggere files che sono molto sensibili e che non devono per nessuna ragione essere consultati dall’esterno, per questa ragione li proteggeremo con le direttive del file “.htaccess” che può essere creato all’interno della radice del nostro sito (es: /home/accontoutente/public_html) > secondo il tipo di provider di servizi hosting questo percorso può differire:
<FilesMatch “(defines.php|.htaccess|error_log|version.php)>
order allow,deny
deny from all
</FilesMatch>

 Disabilitare tutte le direttive ini_set() all’interno dei files php

Il 99% dei CMS tenta un “override” (ovvero una reimpostazione) del file di configurazione principale ini.php, quindi è possibile che troviate negli error_log della vostra cartella in public_html dei messaggi di errore che assomigliano ai seguenti:
PHP Warning: ini_set() has been disabled for security reasons in /home/vostroacconto/public_html/libraries/joomla/language/language.php on line 834
oppure:
ini_set() has been disabled for security reasons in /home/vostroacconto/public_html/libraries/joomla/session/session.php on line 100
PHP Warning: ini_set() has been disabled for security reasons in /home/vostroacconto/public_html/libraries/joomla/session/session.php on line 103
PHP Warning: ini_set() has been disabled for security reasons in /home/vostroacconto/public_html/libraries/joomla/session/session.php on line 831
è possibile risolvere questo problema anteponendo un doppio segno di backslash “//” oppure con il simbolo “@” chiocciola così da non applicare nessun override che su alcuni hosting provider non è permesso per ragioni di sicurezza:

Aprite il file con un editor di testo es: /libraries/joomla/session/session.php e modificatelo come da esempio seguente:
// Set default sessios save handler
//ini_set(‘session.save_handler’, ‘files’);
// Disable transparent sid support
//ini_set(‘session.use_trans_sid’, ‘0’);

// Sync the session maxlifetime
// ini_set(‘session.gc_maxlifetime’, $this->_expire);
Trovate queste righe al numero 100 – 103 ca. e 831

Anche nel file /libraries/joomla/language/language.php bisogna disabilitare l’override mettendo un doppio backslash davanti a ini_set: //ini_set

// Capture hidden PHP errors from the parsing.
$php_errormsg = null;
$track_errors = ini_get(‘track_errors’);
//ini_set(‘track_errors’, true);
In questo modo il file non tenta un override che non sono permessi in webserver di elevata sicurezza.

Note finali su ini_set:
Se trovate già un simbolo “@” non è necessario intervenire in quanto il provider di servizi ha già inserito questo simbolo in tutte le occorrenze ini_set.
Non dovete preoccuparvi se l’ini_set viene disabilitato in quanto non preclude alcuna funzionalità del vostro CMS in quanto questo sistema previene abusi da parte di script scritti male. Un buon hosting provider mette a disposizione già le direttive corrette senza che queste debbano subire alcun override o modifica per singolo sito.

In conclusione:

Con queste tecniche avrete raggiunto un buon livello di sicurezza che purtroppo però non è sufficiente ancora per attacchi più aggressivi da malintezionati esperti.

È sempre possibile dotarsi di componenti aggiuntivi per joomla per aumentarne la sicurezza es: RS Firewall

Questi componenti garantiscono un altissimo livello di sicurezza e permettono di raggiungere un elevatissimo livello di protezione che rende difficile l’exploit anche da parte di hacker/cracker più esperti.

Nonostante la sicurezza al 100% non esiste, si può comunque scoraggiare in maniera quasi definitiva anche l’hacker più ostinato.

Su https://www.4host.ch e su https://www.hostingedominio.com vengono garantiti i livelli di sicurezza più alti e sono costantemente aggiornati per nuovi exploit. Un buon hosting provider può essere decisivo in fatto di sicurezza oltre che mettono a disposizione di backup recuperabili fino a 3 mesi indietro gratuitamente.

2 commenti su “Sicurezza su Joomla 2.5.x e 3.0.x

  1. Amedar Consulting Group

    I think this is among the most significant information for me. And i am glad reading your article. But should remark on some general things, The site style is ideal, the articles is really nice : D. Good job, cheers

    • Amministratore @ mondo-it Autore articolo

      Hi,

      thanks for your opinion. I’m glad that is of any interest to you.
      What do you mean with “But should remark on some general things”?. Can you explain Please?
      Kind regards.

I commenti sono chiusi.