IPTables: разрешить исходящие соединения MySQL, но не входящие соединения

IPTables: разрешить исходящие соединения MySQL, но не входящие соединения

У меня есть сервер, который не разрешает подключения к mysql из внешних источников - все мои базы данных и подключения происходят на localhost. Политика iptables по умолчанию - сбрасывать соединения для любых портов, которые я не указал (в настоящее время в моих правилах iptables не указан порт 3306, поэтому все соединения к этому порту сбрасываются).

Это хорошо, но теперь я хотел бы подключиться к базе данных MySQL, расположенной снаружи на Amazon RDS.

Порт 3306 можно открыть для внешнего мира следующим образом:

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

Это позволяет мне подключаться к базе данных на Amazon RDS, однако также позволяет осуществлять удаленные подключения к базам данных на моем сервере.

Что мне нужно сделать, чтобы разрешить моему серверу подключаться к базе данных на Amazon, но ограничить внешние подключения к базам данных на моем сервере?

Также имейте в виду, что IP-адрес моего экземпляра Amazon RDS может периодически меняться.

решение1

Воспользуйтесь преимуществами движка состояний:

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

или в более поздних версиях 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

Именно для этого и существует механизм состояний:разрешить трафик, который соответствует различным критериям(например, протокол, исходный порт)но также является частью существующего соединения(как он определяетсвязь). В результате исходящий TCP SYNпакет на определенный внешний IP-адрес на порту назначения 3306 с локального эфемерного порта создаст запись в таблице состояний для этой конкретной комбинации IP-адресов и номеров портов, и только обратный трафик с той же комбинацией адресов и портов будет разрешен и только на время этого соединения.

Связанный контент