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

10

Eu tenho um servidor que não permite conexões ao 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 as conexões de todas as portas que eu não especificar (atualmente não tenho a porta 3306 especificada nas minhas regras de iptable, para que todas as conexões com essa porta sejam descartadas).

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

A porta 3306 pode ser aberta para o mundo externo da seguinte maneira:

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 ao banco de dados no Amazon RDS, mas também permite conexões remotas aos bancos de dados no meu servidor.

O que preciso fazer para permitir que meu servidor se conecte ao banco de dados na Amazon, mas restringir 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.

MrCarrot
fonte
2
Obter um IP estático da Amazon e configurar uma lista de permissões que permita apenas esse IP para conexões de entrada / saída?
Peter Peter

Respostas:

17

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 isso que o mecanismo de estado existe para fazer: permitir tráfego que atenda a vários critérios (por exemplo, protocolo, porta de origem), mas também faça parte de uma conexão existente (como define a conexão ). O resultado é que o TCP SYNpacote de saída para um endereço IP externo específico na porta de destino 3306, a partir de uma porta efêmera local, criará uma entrada da tabela de estado para essa combinação específica de endereços IP e números de porta e retornará tráfego apenas com a mesma combinação de endereços e portas serão permitidos através e somente pela duração dessa conexão.

Chapeleiro Louco
fonte