User Tools

Site Tools


Sidebar

cn:ccr:security:howto:nginx-reverse-proxy

NGINX Reverse Proxy

Per proteggere adeguatamente servizi web "legacy" (cioè servizi web che non possono essere facilmente aggiornati) che possono usare solo cifrature deboli o addirittura deprecate, può aiutare un server web che faccia da proxy.

Qui di seguito la configurazione di un server web NGINX messa a protezione di un servizio di tipo shell-in-a-box su un server CentOS 7.9.2009

Installazione di NGINX

Il pacchetto per CentOS è disponibile nel repository EPEL

yum install -y epel-release
yum install -y nginx

La configurazione è nei vari files presenti in /etc/nginx ed in /etc/nginx/conf.d

Il file /etc/nginx/conf.d/shellinabox.conf contiene le seguenti:

server {
    listen 80;
    server_name login.le.infn.it;
    return 301 https://$server_name$request_uri;

    access_log   /var/log/nginx/access-login.le.infn.it.log;
    error_log    /var/log/nginx/error-login.le.infn.it.log;

}

server {
    listen         443 ssl http2;
    server_name    login.le.infn.it;
    
    access_log   /var/log/nginx/access-login.le.infn.it.log;
    error_log    /var/log/nginx/error-login.le.infn.it.log;
    
    ssl_certificate  "/etc/pki/tls/certs/login.le.infn.it-chain.crt";
    ssl_certificate_key "/etc/pki/tls/private/login.le.infn.it.key";
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:!SHA1:!SHA256:!SHA384:!DSS:!aNULL';
    ssl_prefer_server_ciphers on;
    
    location / {
        proxy_pass http://127.0.0.1:4443;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

A questo punto basta istruire il server "legacy" ad ascoltare sulla porta 4443 della loopback, cosa che per il servizio shell-in-a-box, si configura nel segiuente modo (per la versione di shellinaboxd presente in EPEL la configurazione è in /etc/sysconfig/shellinaboxd)

# Shell in a box daemon configuration
# For details see shellinaboxd man page

# Basic options
USER=shellinabox
GROUP=shellinabox
CERTDIR=/var/lib/shellinabox
PORT=4443
OPTS="--localhost-only --css white-on-black.css --disable-ssl --disable-ssl-menu -s /:LOGIN -s /who:nobody:nogroup:/:w -s /le-passwd:nobody:nogroup:/:/usr/local/bin/le_kpasswd.sh -s /kpasswd:nobody:nogroup:/:/usr/local/bin/run_kpasswd.sh"
cn/ccr/security/howto/nginx-reverse-proxy.txt · Last modified: 2022/11/02 16:41 by enrico@infn.it