iptablesを使用してパブリックIPからのサーバーへのアクセスをブロックする

iptablesを使用してパブリックIPからのサーバーへのアクセスをブロックする

サーバーが 2 台あり、1 台を(名前は web ) 用に、もう 1 台を (名前は db ) 用にhttp構成しました。phpmysql

これら両方のサーバーには、パブリック IP とプライベート IP があります。次のようなルールを設定したいと考えました。

  1. webサーバーのsshポートを に変更します1234。(この変更はすでに で行いました/etc/ssh/sshd_config)
  2. web80、443、1234 を除くパブリック インターフェイスへのすべての要求をブロックします。
  3. パブリック インターフェイスへのすべての要求をブロックしますdb
  4. dbプライベート インターフェイスからの 22 と 3306 を除く、プライベート インターフェイスへのすべての要求をブロックしますweb

webプライベートIP: 192.168.0.110

dbプライベートIP: 192.168.0.111

そこで、iptables 用にこれらのルールを作成しました。

上のfirewall.shdb

#!/bin/bash
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 192.168.0.110 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.0.110 -p tcp --dport 3306 -j ACCEPT

firwall.shのweb

#!/bin/bash
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 1234 -j ACCEPT

しかし、これらのルールを実行すると、サーバーへの接続が完全に失われ、これら 2 つのサーバーは相互に通信できなくなります。

私の問題はどこにあるのでしょうか?

関連情報