IPTables: Permitir conexões MySQL de saída, mas não conexões de entrada

IPTables: Permitir conexões MySQL de saída, mas não conexões de entrada

Eu tenho um servidor que não permite conexões com o MySQL de fontes externas - todos os meus bancos de dados e conexões ocorrem no host local. A política padrão do iptables é descartar conexões para quaisquer portas que eu não especifique (atualmente não tenho a porta 3306 especificada em minhas regras de iptable, portanto, todas as conexões com esta porta serão descartadas).

Tudo bem, mas agora gostaria de me conectar a um banco de dados mysql localizado externamente no Amazon RDS.

A porta 3306 pode ser aberta ao mundo exterior da seguinte forma:

iptables -t filter -A INPUT -p tcp --sport 3306 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT

Isso me permite conectar-me ao banco de dados no Amazon RDS, mas também permite conexões remotas com bancos de dados no meu servidor.

O que preciso fazer para permitir que meu servidor se conecte ao banco de dados na Amazon, mas restrinja as conexões externas aos bancos de dados no meu servidor?

Lembre-se também de que o endereço IP da minha instância do Amazon RDS pode mudar periodicamente, acredito.

Responder1

Aproveite o mecanismo de estado:

iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT

ou em versões posteriores do iptables

iptables -t filter -A OUTPUT -p tcp --dport 3306 -j ACCEPT
iptables -t filter -A INPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT

É exatamente para isso que o mecanismo de estado existe:permitir tráfego que atenda a vários critérios(por exemplo, protocolo, porta de origem)mas também faz parte de uma conexão existente(como defineconexão). O resultado é que o TCP SYNpacote de saída para um endereço IP externo específico na porta de destino 3306, de uma porta efêmera local, criará uma entrada na tabela de estados para aquela combinação específica de endereços IP e números de porta, e retornará apenas o tráfego com a mesma combinação de endereços e portas serão permitidos e somente durante essa conexão.

informação relacionada