У меня есть сервер, который не позволяет подключаться к 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 может периодически меняться.
Ответы:
Воспользуйтесь преимуществом государственного двигателя:
или в более поздних версиях iptables
Это именно то, что должен делать механизм состояний: разрешать трафик, который соответствует различным критериям (например, протокол, порт источника), но также является частью существующего соединения (поскольку оно определяет соединение ). В результате исходящий
TCP SYN
пакет на конкретный внешний IP-адрес на порте назначения 3306 от локального временного порта создаст запись таблицы состояний для этой конкретной комбинации IP-адресов и номеров портов и вернет трафик только с той же комбинацией Адреса и порты будут разрешены через и только на время этого соединения.источник