====== 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"