Sto ospitando servizi HTTP e HTTPS speciali sulle porte 8006 e 8007 rispettivamente. Uso iptables per "attivare" il server; cioè per instradare le porte HTTP e HTTPS in arrivo:
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8006 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8007 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8006
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8007
iptables -A OUTPUT -t nat -d 127.0.0.1 -p tcp --dport 80 -j REDIRECT --to-ports 8006
iptables -A OUTPUT -t nat -d 127.0.0.1 -p tcp --dport 443 -j REDIRECT --to-ports 8007
Funziona come un fascino. Tuttavia, vorrei creare un altro script che disabilita nuovamente il mio server; cioè ripristinare iptables nello stato in cui si trovava prima di eseguire le righe sopra. Tuttavia, faccio fatica a capire la sintassi per rimuovere queste regole. L'unica cosa che sembra funzionare è un flush completo:
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
Ma ciò eliminerà anche altre regole di iptables indesiderate.
-I
invece che-A
per leACCEPT
linee. Questo perché in genere l'ultima riga (adINPUT
esempio per la catena) è unDROP
oREJECT
e vuoi che la tua regola venga prima di quella.-A
mette la nuova regola dopo l'ultima regola, mentre la-I
mette all'inizio.