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"