persistir el enrutamiento de puertos de 80 a 8080

23

Uso la instancia amazon EC2 que funciona a través de ubuntu. De manera predeterminada, de acuerdo con las restricciones de seguridad, no puedo vincular mi aplicación al puerto 80, así que solo lo ato al puerto 8080 y luego configuro la redirección de enrutamiento desde el puerto 80 al 8080 mediante el siguiente comando:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080

Pero descubrí que cuando reinicio el servidor, esta configuración ya no está activa hasta que invoco este comando nuevamente.

Entonces, mi pregunta es cómo habilitar el trabajo de redireccionamiento del puerto incluso si se reinicia el sistema.

Ph0en1x
fuente

Respuestas:

18

Puede agregar este comando /etc/rc.localpara que se ejecute automáticamente después de reiniciar.

nux
fuente
Ya lo hice, pero aún así gracias por la respuesta
Ph0en1x
bienvenido amigo, eso es un buen truco
nux
2
Esto funciona, pero la respuesta real es la respuesta de @ MeOMy a continuación.
Dirk Groeneveld
15

Utilice el comando iptables-save en su lugar. Las reglas de firewall nunca deben entrar en el script rc.local. rc.local es lo último que se ejecutará. Si se ha colocado una regla de bloqueo en rc.local, hay un pequeño período de tiempo en el que un atacante puede explotar una regla que no está en su lugar. Si bien es probable que no importe con esta situación, es mejor no tener un mal hábito que pueda morderlo más tarde.

MeOMia
fuente
1
ejecutó "sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080" y "sudo iptables-save". Pero el enrutamiento se restableció al reiniciar. ¿Entendí mal cómo hacer esto?
gromit190
2
La respuesta es incompleta. iptables-save > some-file-pathguarda las reglas y luego las restauraría a través de iptables-restore < some-file-pathin rc.local. O instale lo iptables-persistentque hace esto durante el arranque como servicio.
Thomas Ward
Me gustaría entender cómo hacer esto. Sea más específico, por favor
gromit190
4

Así es como nos enseña la documentación oficial de ipttable. Mira aquí

Agregue estas dos líneas en / etc / network / interfaces:
pre-up iptables-restore < /etc/iptables.rules post-down iptables-save > /etc/iptables.rules

La línea "post-down iptables-save> /etc/iptables.rules" guardará las reglas que se utilizarán en el próximo arranque.

Stavarengo
fuente
Felicitaciones por usar el método recomendado oficialmente y, en este caso, el método más simple, para completar esta tarea. Haría +2 si pudiera por usar el método KISS.
DeeJayh
0

Descubrí un conjunto de directorios en Ubuntu 16.04 /etc/networkque ejecutará scripts en varios momentos durante la inicialización y el apagado de la red:

if-down.d
if-post-down.d  
if-pre-up.d  
if-up.d
interfaces.d

Entonces descubrí que podía volcar la configuración como de costumbre:

$ sudo sh -c "iptables-save > /etc/iptables.rules"

Luego creé un archivo `/etc/network/if-pre-up.d/restore:

#!/bin/sh

iptables-restore < /etc/iptables.rules

... y lo marcó como ejecutable

$ sudo chmod 755 /etc/network/if-pre-up.d/restore
Mikebridge
fuente