Come bloccare il traffico internet in ingresso e autorizzare quello interno
Quello che vuoi fare è un classico caso di firewall + differenziazione tra traffico interno ed esterno. La soluzione dipende un po’ da dove gira il server (Linux immagino), ma il concetto è questo:
- Da Internet (esterno) → apri solo alcune porte
- Dalla LAN (192.168.1.0/24) → consenti tutto
Ti faccio un esempio concreto con iptables (ancora molto usato) e poi ti accenno anche a ufw se vuoi qualcosa di più semplice.
🔧 Soluzione con iptables
1. Imposta policy di default restrittiva
Blocchi tutto in ingresso:
iptables -P INPUT DROP
2. Permetti traffico locale e già stabilito
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
3. Consenti TUTTO dalla rete interna
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
👉 Questo è il punto chiave: la LAN bypassa le restrizioni
4. Apri solo alcune porte verso l’esterno
Esempio: SSH, HTTP, HTTPS
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
5. (Opzionale) Log dei pacchetti bloccati
iptables -A INPUT -j LOG --log-prefix "DROP: "
🧠 Risultato finale
| Origine | Porte accessibili |
|---|---|
| Internet | Solo 22, 80, 443 |
| LAN 192.168.1.x | Tutte |
🔥 Alternativa più semplice: UFW
Se usi Ubuntu/Debian:
Default deny
ufw default deny incoming
Permetti LAN
ufw allow from 192.168.1.0/24
Apri porte pubbliche
ufw allow 22
ufw allow 80
ufw allow 443
Attiva
ufw enable
⚠️ Nota importante
- Se il server è dietro router/NAT, devi anche configurare il port forwarding
- Se hai Docker, Kubernetes o servizi che aprono porte → potrebbero bypassare iptables
Verifica con:
ss -tulnp
👍 Consiglio pratico
Se vuoi, dimmi:
- che OS usi (Ubuntu, Debian, CentOS, ecc.)
- se hai Docker o servizi particolari
e ti preparo una configurazione perfetta e persistente (con nftables o systemd) 👍