HARDENING · RASPBERRY PI 5 · LINUX
La mia configurazione server
Architettura e misure di sicurezza del server Raspberry Pi 5 che ospita servizi web e mail.
La configurazione segue un approccio multilivello contro brute-force, SQL injection, malware e minacce 0-day: firewall, WAF, IDS/IPS, autenticazione forte, controllo dell’integrità e monitoraggio.
Profilo tecnico
Hardware
Raspberry Pi 5 + storage NVMe
Sistema operativo
Debian / Raspberry Pi OS Hardened
Stack
Nginx + PHP-FPM, Nextcloud, Roundcube, WordPress, Postfix/Dovecot
Rapporto di riferimento
13 settembre 2025
ARCHITETTURA DI SISTEMA
Un server compatto, segmentato e monitorato
L’infrastruttura combina servizi web, cloud e posta con più livelli di difesa.
Hardware e storage
- Raspberry Pi 5
- Storage NVMe
- Dischi di backup montati in sola lettura quando previsto
Servizi principali
- Nginx + PHP-FPM
- Nextcloud e Roundcube
- WordPress
- Postfix / Dovecot
Sicurezza multilivello
- UFW + GeoIP
- ModSecurity
- Suricata IDS/IPS
- Fail2ban e AppArmor
Backup
- Backup settimanali
- Timeshift
- Supporti protetti da scritture non necessarie
MISURE DI SICUREZZA
Hardening applicato
Accesso SSH
- Porta non standard: 318
- Accesso root disabilitato
- Accesso limitato a utenti specifici
- Fail2ban contro brute-force SSH
Port 318
PermitRootLogin no
PasswordAuthentication yes
AllowUsers utentenome
Firewall UFW
- Policy predefinita: deny
- Aperte solo le porte necessarie
- Rate limit per SSH e Nginx
- GeoIP: Europa e USA
- Aggiornamento giornaliero liste VPN e Tor
ufw default deny incoming
ufw allow 1024/tcp
ufw allow 80,443/tcp
ufw enable
Fail2ban
- Jail: sshd, postfix, dovecot, Nextcloud, WordPress, Roundcube e nginx-*
- Ban permanente con sblocco manuale
- Notifiche Telegram per ban e unban
- Report periodici ogni 4 ore
[nextcloud]
enabled = true
port = http,https
filter = nextcloud
bantime = -1
maxretry = 3
ModSecurity
- OWASP CRS attivo in paranoia 2
- Regole personalizzate per WordPress e Nextcloud
- Integrazione con Fail2ban per ban automatici
SecRuleEngine On
SecRequestBodyAccess On
SecResponseBodyAccess Off
SecDefaultAction "phase:1,log,deny,status:403"
Suricata IDS/IPS
- Modalità IDS con af-packet
- Limite RAM: 512 MB
- Feed Emerging Threats (et/open)
- Alert Telegram con riepilogo periodico
af-packet:
- interface: eth0
cluster-id: 99
cluster-type: cluster_flow
defrag: yes
Kernel hardening
Parametri sysctl per ridurre superficie d’attacco e comportamenti di rete non necessari.
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
AIDE · integrità file
- Database aggiornato settimanalmente
- Report email sui file modificati
- Esecuzione automatizzata tramite cron
TESTING
Controlli di validazione
SSH
Test del login root: deve fallire.
Brute-force
Test su WordPress e Nextcloud: l’indirizzo deve essere bloccato da Fail2ban.
SQL injection
Test su WordPress: la richiesta deve essere intercettata da ModSecurity.
IDS
Test ICMP verso il Raspberry Pi: Suricata deve produrre un alert.
RISCHI RESIDUI
Valutazione e mitigazioni
Minacce 0-day
Mitigazione tramite WAF ModSecurity e rilevamento IDS Suricata.
DoS / DDoS
Mitigazione tramite rate limiting e restrizioni GeoIP.
Rischio interno
Ridotto tramite monitoraggio, ban persistenti e controlli operativi.
ESEMPI DI LOG
Monitoraggio operativo
Fail2ban
2025-09-13 10:44:39,580 fail2ban.actions [191336]: NOTICE [sshd] Ban 185.220.101.1
Suricata · fast.log
09/13/2025-10:50:11.123456 [**] [1:1000001:1] ICMP test alert [**]
[Classification: Generic ICMP event] [Priority: 3]
{ICMP} 1.2.3.4 -> 192.168.1.10
Questa pagina descrive la configurazione riportata nel Security Hardening Report del 13 settembre 2025.
Vuoi approfondire la configurazione o un progetto server?
Scrivimi: possiamo parlare di sviluppo, infrastrutture Linux, sicurezza, codice aperto e formazione.
