Nascondere le informazioni sensibili dei siti web

Condividi:

In questo articolo mostreremo come nascondere alcune informazioni che vengono fornite a causa delle configurazioni base dei vari software normalmente utilizzati per un sito web. Queste informazioni possono essere enumerate da un possibile aggressore per attuare un attacco informatico.

Versione di bind

Se stiamo utilizzando bind come server autoritativo per i nostri domini, è possibile raccogliere le informazioni circa la versione del server ed il sistema operativo utilizzato con una semplice query come questa, dove serverdns è l’indirizzo del nostro server bind

$ dig @serverdns version.bind chaos txt

...
;; ANSWER SECTION:
version.bind.           0       CH      TXT     "9.11.5-P4-5.1-Debian"
...

Per nascondere questa informazione, editiamo il file di configurazione di bind contenente la sezione options inserendo la direttiva version

options {
 
   // Nascondo versione di Bind
    version "42";

}

Fatto questo riavviamo bind

# systemctl restart bind9

Eseguiamo il test

$ dig @serverdns version.bind chaos txt

...
;; ANSWER SECTION:
version.bind.           0       CH      TXT     "42"
...
Versione di Apache

Nella configurazione base, apache inserisce informazioni sulla versione del server in calce a vari documenti e negli header http. Ci sono due direttive che permettono di includere queste informazioni:

  • ServerSignature: Permette di inserire nel footer di vari documenti la versione di apache
  • ServerTokens: Permette di inserire informazioni sul sistema operativo e sulla versione del server nel campo Server Response

Per rimuovere queste informazioni, basta editare il file di configurazione di apache inserendo queste due righe

# Nascondo informazioni su versione OS e Apache
ServerTokens Prod
ServerSignature Off

Riavviamo apache

# systemctl restart apache2
Versione di PHP

La configurazione base di PHP inserisce il campo X-Powered-By nell’ Header server HTTP response contenente informzioni sulla versione di PHP installata sul server.

Il file di configurazione attualmente caricato lo possiamo scoprite invocando php

# php -i | grep "Loaded Configuration File"
Loaded Configuration File => /etc/php/xxx/cli/php.ini

Effettuiamo una copia di backup del file ini

# cp /etc/php/xxx/cli/php.ini /etc/php/xxx/cli/php.ini.bkp

Ora editiamo il file ini, cerchiamo la direttiva expose_php e cambiamo On in Off

expose_php = Off

Riavviamo apache

# systemctl restart apache2

Le informazioni nell’header relative al nostri sito web

# lynx -head -mime_header https://dominio
HTTP/1.0 200 OK
Date: Sun, 10 May 2020 13:43:46 GMT
Server: Apache
Cache-Control: max-age=0, no-cache
Connection: close
Content-Type: text/html; charset=UTF-8
Versione di Nginx

Nginx inserisce le informazioni sulla versione ad esempio nei documenti relativi alle pagine di errore. Per rimuovere tali informazioni, editiamo il file di configurazione, cerchiamo la direttiva server_tokens che sarà commentata e decommendiamola

http {

  server_tokens off;

}

Riavviamo il proxy

# systemctl restart nginx