2014-06-17 09:06:40 +0000 2014-06-17 09:06:40 +0000
15
15

iptablesで80,443以外の全てのポートをブロックするには?

全てのポート(in,out)をブロックするのは簡単ですが、「except」という言葉があると難しいです。条件を満たすルールを知らない。

PS: 私はこの質問が新しいものではないことを知っています。しかし、実際には、私は何の助けを見つけることができませんでした。だから、私を助けてくださいpls!

回答 (3)

25
25
25
2014-06-18 01:46:30 +0000

第一に ! は NOT 記号です。

iptables -A INPUT -p tcp -m tcp -m multiport ! --dports 80,443 -j DROP

2つ目は、あなたが書いたルールが期待した結果にならない可能性があります。80番ポートでの接続に対するレスポンスを含めて、すべてを落としてしまいます。したがって、あなたはそれに接続することはできません Web サーバーの目的のために言う。

これらのルールでは、関連接続とESTABLISHED接続を許可しているので、もしそれが実際にあなたがやろうとしていることであれば、ウェブサーバは機能するはずです。

iptables -A INPUT -p tcp -m tcp -m multiport --dports 80,443 -j ACCEPT
<insert further allowed list here>
iptables -A INPUT -m conntrack -j ACCEPT --ctstate RELATED,ESTABLISHED
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j DROP
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -j DROP
5
5
5
2014-06-17 09:12:54 +0000
# Set the default policy of the INPUT chain to DROP
iptables -P INPUT DROP

# Accept incomming TCP connections from eth0 on port 80 and 443
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT

これで必要なものが得られるはずです。

3
3
3
2014-06-17 09:11:51 +0000

デフォルトのアクションを DROP に設定し、80 と 443 を許可する例外ルールを作成します。

# Setting default policies:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Exceptions to default policy
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # HTTP
iptables -A INPUT -p tcp --dport 443 -j ACCEPT # HTTPS

iptables はマッチするものが見つかるまで「例外」のリストを調べます。そして、-j パラメータで指定されたアクションを実行します (この場合は ACCEPT)。一致するものが見つからない場合、デフォルトのポリシーにフォールバックしてパケットをドロップします。

注意 この回避策では、どのサブドメインもロックアウトされます。例えば、この方法では www.mydomain.com では問題なく動作していますが、サブドメインである www.sub.mydomain.com は DNS エラーで開かなくなります。

関連する質問

6
10
5
37
4