Hardening NNTP: Transitioning to TLS 1.3
Secure Usenet deployment on Debian 12 (Bookworm) with Implicit TLS and Process Isolation.
La sicurezza dei server News (INN2) è spesso trascurata. In questa guida, forzeremo l'uso di TLS 1.3, eliminando i protocolli legacy vulnerabili e isolando il processo nnrpd tramite systemd sandboxing.
01. PKI: Generazione certificati High-Entropy
Per supportare TLS 1.3 in modo ottimale, utilizziamo chiavi RSA a 4096 bit o, preferibilmente, ECDSA. Ecco come generare il certificato tramite Certbot:
Terminal Shell--rsa-key-size 4096 \
--must-staple \
-d news.virebent.art
02. TLS 1.3 & Cipher Suites Configuration
Configuriamo inn.conf. A differenza di TLS 1.2, in TLS 1.3 le suite di cifratura sono gestite internamente, ma dobbiamo assicurarci che INN2 punti ai path corretti e disabiliti la compressione per prevenire attacchi tipo CRIME.
tlskeyfile: /etc/news/ssl/privkey.pem
tlsprotocols: [ TLSv1.3 ]
tlsciphers13: [ TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 ]
tlscompression: false
Nota: Specificando solo TLSv1.3, i client più vecchi non potranno connettersi, garantendo il massimo livello di sicurezza.
03. Systemd Hardening (Port 563)
Creiamo un'istanza dedicata per NNTPS (Implicit TLS). Il file unit include direttive di sicurezza per limitare l'accesso al file system.
/etc/systemd/system/inn2-nntps.serviceExecStart=/usr/lib/news/bin/nnrpd -D -p 563 -S
# Sandboxing
ProtectSystem=strict
ProtectHome=yes
PrivateDevices=yes
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
ReadOnlyPaths=/etc/news/ssl/
04. Automazione e Permissions
INN2 non può leggere direttamente da /etc/letsencrypt. Usiamo uno script di deploy per mantenere i permessi 600.
# Copia e restrizione permessi
cp /etc/letsencrypt/live/news.virebent.art/privkey.pem /etc/news/ssl/
chown news:news /etc/news/ssl/privkey.pem
chmod 600 /etc/news/ssl/privkey.pem
systemctl restart inn2-nntps.service
Audit della connessione
Verifica che il protocollo negoziato sia effettivamente TLSv1.3: