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

10

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

Это нормально, но теперь я хотел бы подключиться к базе данных 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 может периодически меняться.

MrCarrot
источник
2
Получить статический IP-адрес от Amazon, а затем настроить белый список, разрешающий только этот IP-адрес для входящих / исходящих соединений?
Питер

Ответы:

17

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

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-адресов и номеров портов и вернет трафик только с той же комбинацией Адреса и порты будут разрешены через и только на время этого соединения.

Безумный Шляпник
источник