web-dev-qa-db-ja.com

iptablesとipsetを使用してホワイトリストを設定する方法

ポート53、80、および443でホワイトリストからの接続のみを受け入れようとしています。

これが私のiptablesファイルです

# Generated by iptables-save v1.4.21 on Thu Feb 25 18:28:29 2016
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8071:8079 -j ACCEPT
-A INPUT -p udp -m udp --dport 6881 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 9001 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 9030 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 587 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1194 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -m set --match-set whitelist src -j ACCEPT
-A INPUT -p udp -m tcp --dport 53 -m set --match-set whitelist src -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m set --match-set whitelist src -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 443 -m set --match-set whitelist src -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -j ACCEPT
COMMIT
# Completed on Thu Feb 25 18:28:29 2016
# Generated by iptables-save v1.4.21 on Thu Feb 25 18:28:29 2016
*nat
:PREROUTING ACCEPT [97277:5398468]
:INPUT ACCEPT [96665:5304148]
:OUTPUT ACCEPT [107653:6493517]
:POSTROUTING ACCEPT [107653:6493517]
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Thu Feb 25 18:28:29 2016

次のようなipsetホワイトリストを設定しました。

create whitelist hash:net family inet hashsize 1024 maxelem 65536
add whitelist a.a.a.a
add whitelist b.b.b.b

私の/etc/network/if-pre-up.d/iptablesスクリプト私は次のものを持っています:

#!/bin/sh
/sbin/ipset restore < /etc/ipset.whitelist.conf
/sbin/iptables-restore < /etc/iptables.rules

理由はわかりませんが、iptablesファイルのホワイトリストルールのコメントを解除すると、ポート22を介してもサーバーにアクセスできなくなり、影響を受けないはずです。

私はここで何が間違っているのですか?

1
chovy

Iptablesファイルにエラーがあり、実行すると、その行で停止する可能性があります。次の行では、UDPプロトコルを使用していますが、TCPモジュールと一致しています:
-A INPUT -p udp -m tcp --dport 53 -m set --match-set whitelist src -j ACCEPT

代わりに、この行でTCPプロトコルを使用してみてください:
-A INPUT -p tcp -m tcp --dport 53 -m set --match-set whitelist src -j ACCEPT

5
Nedry