定義された特定のサブネットを除いて、Webサーバーへのすべてのトラフィックをブロックしようとしています。私は多くの投稿をチェックし、私のiptablesが正しく設定されていると思いましたが、何らかの理由でルールセットで定義したサブネットの外部からサイトにアクセスできます。私が間違っていることを教えてくれる人はいますか?ルール3を削除すると、サイトに完全にアクセスできなくなると判断しました。ウェブサイト自体は10.10.0.0/16にあります。
Chain INPUT (policy DROP 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT all -- any any 10.10.0.0/16 anywhere
2 0 0 ACCEPT all -- any any 172.30.0.0/16 anywhere
3 0 0 ACCEPT all -- lo any anywhere anywhere
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT all -- any lo anywhere anywhere
目標は、ホワイトリストに登録されているさまざまなパブリックIPを追加し、特定の人だけがアクセスできるようにWebサイトをロックすることです。
次のルールを追加します。
iptables -I INPUT -i lo -j ACCEPT
iptables -I OUTPUT -o lo -j ACCEPT
iptables -I INPUT -s 10.10.0.0/16 -j ACCEPT
iptables -I INPUT -s 172.30.0.0/16 -j ACCEPT
iptables -P INPUT DROP
ベストアンサー1
これルールの順序iptablesに問題があります。以下を使用してiptables -A
ルールをリンクしています。最後にルールセット。ただし、iptables -I
行番号を指定しないと、ルールセットの上にルールが挿入されます。したがって、ルールは予想される順序で評価されません。
以下は、以下に基づいて機能する必要がある構成の例です。この投稿。重複を避ける前にルールを更新してください。
iptables -P FORWARD DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 10.10.0.0/16 -j ACCEPT
iptables -A INPUT -s 172.30.0.0/16 -j ACCEPT
# add some more whitelisting rules here
iptables -P INPUT DROP # Drop everything we don't accept
3番目のルールが重要です。
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
そうしないと、サーバーはDNS要求などの開始接続に応答しません。
しかし、iptablesはIPv4では機能しますが、IPv6では機能しないため、サーバーがIPv6をサポートしている場合、クライアントは次のように接続できます。IPv6。これは、IPアドレスではなくホスト名を介して接続し、ホスト名がサーバーの有効なIPv6アドレスとして解決される場合に可能です。あなたも知っていますが、多くの人は、iptablesが実際にIPv6トラフィック(および攻撃)をフィルタリングできることをまだ知りません。ip6tables
お客様の設定に適している場合は、同様のルールも追加します。