IPTables:発信MySQL接続を許可しますが、着信接続は許可しません


10

外部ソースからmysqlへの接続を許可しないサーバーがあります。私のデータベースと接続はすべてlocalhostで行われます。iptablesのデフォルトポリシーは、指定していないポートの接続をドロップすることです(現在、iptableルールでポート3306が指定されていないため、このポートへのすべての接続がドロップされます)。

それで問題ありませんが、今度はAmazon RDSの外部にあるmysqlデータベースに接続したいと思います。

ポート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のデータベースに接続できるようにするが、サーバー上のデータベースへの外部接続を制限するにはどうすればよいですか?

また、Amazon RDSインスタンスのIPアドレスは定期的に変更される可能性があることにも注意してください。


2
Amazonから静的IPを取得し、インバウンド/出力接続にそのIPのみを許可するホワイトリストをセットアップしますか?
Peter

回答:


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

これは、ステートエンジンが行うこととまったく同じです。さまざまな基準(たとえば、プロトコル、送信元ポート)を満たすトラフィックを許可しますが、既存の接続connectionを定義しているため)の一部でもあります。TCP SYN要するに、ローカルのポートから宛先ポート3306の特定の外部IPアドレスへの発信パケットは、IPアドレスとポート番号の特定の組み合わせの状態テーブルエントリを作成し、同じ組み合わせのトラフィックのみを返すということです。アドレスとポートは、その接続の間だけ許可されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.