Hai un dominio .IT? Ti regaliamo il .EU!

Security First

Come nascondere la versione di Nginx e Apache su Linux e Unix

4 minuti lettura
Nascondere versione Nginx e Apache NEWS
Nascondere versione Nginx e Apache NEWS


Se hai un web server con installato Nginx o Apache, negli headers o nelle pagine di errore il sistema mostra la versione installata del software: una vulnerabilità che potrebbe essere sfruttata in caso di attacchi per accedere alla macchina e alle relative informazioni.

È possibile nascondere sia la versione di Nginx che di Apache sui server Linux e Unix in modo che non sia di pubblico dominio.

Cos’è e come funziona Nginx

Nginx è un web server open source che, ad oggi, è utilizzato non solo come server ma anche come proxy inverso, cache HTTP e bilanciatore di carico. Altre caratteristiche sono il supporto FastCGI, WebSockets e gestione di file statici, file indice a autoindicizzazione.
Il software, realizzato da Igor Sysoev e rilasciato nel 2004, spesso riesce a superare le prestazioni dei competitor, specialmente in caso di contenuto statico o di richieste simultanee. Infatti, invece di creare un nuovo processo per ogni richiesta web, Nginx utilizza un approccio asincrono basato sugli eventi, riuscendo a controllare più processi worker via un unico processo master.

Procedura per Nginx

Di default, la versione di Nginx viene mostrata negli headers di risposta a una chiamata HTTP o a seguito di un errore generato dal server Nginx stesso.

Mostrare la versione corrente di Nginx usando la CLI

Nginx mostrerà la versione nelle pagine errore negli headers di risposta del server.

Possiamo verificarla usando il seguente comando:

curl -I https://your-domain
curl -I https://web.shellrent.com

Otteniamo:

HTTP/1.1 200 OK
Server: nginx/1.10.3
Content-Type: text/html; charset=utf-8
Content-Length: 11460
Connection: keep-alive
Vary: Accept-Language, Origin, Cookie
Content-Language: en
X-API-Total-Time: 0.028s
Strict-Transport-Security: max-age=15768000

Ecco l’output dalla pagina di errore HTTP/502 che mostra la versione di Nginx.

Come nascondere la versione di Nginx e Apache su Linux e Unix

Nascondere la versione di Nginx con la direttiva server_tokens

Dobbiamo impostare su off la direttiva server_tokens per nascondere la versione del server Nginx sui sistemi Linux e Unix. Modifica il tuo file nginx.conf usando un editor di testo come vim/nano:

nano /etc/nginx/nginx.conf

Possiamo impostare la direttiva server_tokens esclusivamente sulle sezioni di configurazione http, server o location. Di seguito un esempio con la sezione http:

server_tokens off;

Ecco cosa vedremo:

http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 30;
types_hash_max_size 2048;

server_tokens off; 
reset_timedout_connection on; 

# Limit Request 
limit_req_status 403; 
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; 

# Proxy Settings 
# set_real_ip_from        proxy-server-ip; 
# real_ip_header          X-Forwarded-For; 
fastcgi_read_timeout 300; 
client_max_body_size 100m;

        Effettua un test e un reload della configurazione di Nginx con i seguenti comandi:

nginx -t
nginx -s reload

 Verifica che la versione di Nginx sia nascosta

Usiamo il comando curl come segue:

curl -I https://your-domain
curl -I https://web.shellrent.com

Verrà comunque riportato il web server, ma senza versione.

HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html; charset=utf-8
Content-Length: 11460
Connection: keep-alive
Vary: Accept-Language, Origin, Cookie
Content-Language: en
X-API-Total-Time: 0.028s
Strict-Transport-Security: max-age=15768000

Ora, Chrome conferma che abbiamo nascosto con successo la versione di Nginx.

Come nascondere la versione di Nginx e Apache su Linux e Unix

Altri possibili valori assegnabili alla direttiva server_tokens

La sintassi è come segue:

server_tokens on | off | build | string;

Il valore di default sui sistemi Linux, *BSD e UNIX:

server_tokens on;

Rimuovere la versione dagli headers del server e dalle pagine errore

Possiamo modificare i seguenti valori per abilitare o disabilitare la visibilità della versione di Nginx:

  1. on: mostra il numero della versione.
  2. off: nasconde il numero della versione.
  3. build: Funziona solo dalla versione 1.11.10. Mostra il nome della build oltre che il numero di versione.
  4. string: funziona solo con sottoscrizioni commerciali, a partire dalla versione 1.9.13. E’ possibile utilizzare una stringa personalizzata sulle pagine di errore e sul campo “Server” degli headers di risposta. Una stringa vuota disabilita interamente il campo “Server” negli headers.

Customizzare il numero della versione di Nginx

Ad esempio, gli utenti con una sottoscrizione commerciale (Nginx Plus) possono impostarlo come segue per alterare la versione del server e nome:

server_tokens "Powered_by_Shellrent";

Eseguiamo il reload della configurazione di Nginx:

nginx -t
nginx -s reload

Facciamo un test usando il comando curl:

curl -I http://127.0.0.1/
HTTP/1.1 200 OK
Server: Powered_by_Shellrent
Content-Type: text/html; charset=utf-8
Content-Length: 11460
Connection: keep-alive
Vary: Accept-Language, Origin, Cookie
Content-Language: en
X-API-Total-Time: 0.028s
Strict-Transport-Security: max-age=15768000

Nascondere la versione è “Security by obscurity”

“Security by obscurity” è uno dei metodi di difesa più semplici e veloci da applicare. Tuttavia, non dovrebbe essere la vostra prima scelta.

È necessario porre molta attenzione alla sicurezza del codice, installare un firewall (specialmente un WAF – Web Application Firewall, es. ModSecurity).  Non c’è motivo per esporre la versione di Nginx, PHP o Python perché potrebbe essere un’utile fonte di informazioni per chi volesse effettuare un attacco. Ricorda: i sistemi operativi Linux/Unix, web apps/Nginx devono essere sicuri a prescindere che la loro versione sia esposta o meno.

Come sempre, puoi consultare la documentazione Nginx.

Procedura per Apache

Come per Nginx è possibile nascondere la versione di Apache sui server Linux e Unix modificando i parametri di configurazione ServerTokens e ServerSignature.

La direttiva ServerSignature permette l’aggiunta di una linea di footer che mostra il nome del server e la versione in documenti generati server-side come messaggi di errore, mod_proxy, list di directory, output di mod_info ecc.

Può essere impostata a off (default) e quindi sopprimere la linea di footer.

Se impostata a on aggiunge una linea con il numero versione e il ServerName del VirtualHost che serve i contenuti.

Se impostata a EMail aggiunge al footer un riferimento al mailto: al ServerAdmin relativo al VirtualHost.

La direttiva ServerTokens determina se il campo “server” negli headers di risposta contengono una descrizione del sistema operativo del server e informazioni relative ai moduli di Apache.

La direttiva può avere i seguenti valori e delle informazioni d’esempio in risposta al client:

  • ServerTokens   Full (or not specified)
    Informazioni inviate al client: Server: Apache/2.4.2 (Unix) PHP/4.2.2 MyMod/1.2
  • ServerTokens   Prod[uctOnly]
    Informazioni inviate al client: Server: Apache
  • ServerTokens   Major
    Informazioni inviate al client: Server: Apache/2
  • ServerTokens   Minor
    Informazioni inviate al client: Server: Apache/2.4
  • ServerTokens   Min[imal]
    Informazioni inviate al client: Server: Apache/2.4.2
  • ServerTokens   OS
    Informazioni inviate al client: Server: Apache/2.4.2 (Unix)


Nota: Dalla versione di Apache 2.0.44 la direttiva ServerTokens controlla anche le informazioni fornite dalla direttiva ServerSignature.

Modifichiamo quindi la configurazione di Apache:

nano /etc/apache2/apache2.conf       # sistemi Debian/Ubuntu
nano /etc/httpd/conf/httpd.conf      # sistemi RHEL/CentOS

E aggiungiamo le seguenti righe:

ServerTokens Prod
ServerSignature Off

Salviamo il file ed effettuiamo un restart di apache con il comando:

service apache2 restart             # sistemi Debian/Ubuntu
service httpd restart  # sistemi RHEL/CentOS

Come sempre, puoi consultare la documentazione Apache.

Foto Manager Elena Parise
103 articoli

Note sull'autore
Marketing Assistant - Appassionata di scrittura e social media, crede fortemente nell’influenza positiva del digitale e della comunicazione nella vita quotidiana. In Shellrent supporta le imprese nell’identificazione delle soluzioni più adatte in materia di hosting, cloud e infrastrutture IT.
Articoli
Articoli correlati
Security First

Cosa possono fare gli hacker dopo aver violato una casella email

3 minuti lettura
La posta elettronica è ancora oggi un mezzo indispensabile in ambito professionale per comunicare in modo rapido, condividere documenti e tracciare le…
Security First

Best practice per la sicurezza su Shellrent

8 minuti lettura
La complessità e la continua evoluzione delle minacce online rappresentano una sfida quotidiana che richiede un approccio consapevole e proattivo a 360°….
Security First

Attacchi informatici: le vulnerabilità più sfruttate nel 2023

3 minuti lettura
Il 2023 si è confermato un anno critico per la sicurezza informatica, con un’ondata di attacchi informatici che ha colpito aziende e…