Tengo un servidor que no permite conexiones a mysql desde fuentes externas: todas mis bases de datos y conexiones tienen lugar en localhost. La política predeterminada de iptables es eliminar conexiones para cualquier puerto que no especifique (actualmente no tengo el puerto 3306 especificado en mis reglas de iptable, por lo que todas las conexiones a este puerto se descartan).
Eso está bien, pero ahora me gustaría conectarme a una base de datos mysql ubicada externamente en Amazon RDS.
El puerto 3306 se puede abrir al mundo exterior de la siguiente manera:
iptables -t filter -A INPUT -p tcp --sport 3306 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
Esto me permite conectarme a la base de datos en Amazon RDS, sin embargo, también permite conexiones remotas a bases de datos en mi servidor.
¿Qué debo hacer para permitir que mi servidor se conecte a la base de datos en Amazon, pero restringir las conexiones externas a las bases de datos en mi servidor?
También tenga en cuenta que la dirección IP de mi instancia de Amazon RDS puede cambiar periódicamente, creo.
Respuestas:
Aproveche el motor de estado:
o en versiones posteriores de iptables
Esto es exactamente lo que el motor de estado debe hacer: permitir el tráfico que cumple varios criterios (p. Ej., Protocolo, puerto de origen) pero que también forma parte de una conexión existente (ya que define la conexión ). El resultado es que el
TCP SYN
paquete saliente a una dirección IP externa particular en el puerto de destino 3306, desde un puerto efímero local, creará una entrada en la tabla de estado para esa combinación particular de direcciones IP y números de puerto, y solo devolverá el tráfico con la misma combinación de se permitirán direcciones y puertos a través de, y solo durante la duración de esa conexión.fuente