IPTables - 特定の範囲のトラフィックのみを許可

IPTables - 特定の範囲のトラフィックのみを許可

定義された特定のサブネットを除いて、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お客様の設定に適している場合は、同様のルールも追加します。

おすすめ記事