Caution |
サーバとして使うなら、きちんとフィルタを設定してから運用してください。 |
注意: # や % の意味が分からない人は 用語 を参照してください。
詳しくは、debian のマニュアルページ https://wiki.debian.org/iptables や https://wiki.debian.org/Firewalls を参照してください。
ちなみに iptables の設定は first match (最初に該当したルールを実行)です。
% sudo iptables -Lデフォルトは、こうなるはずです。
% sudo iptables -L [sudo] password for ユーザ名: Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
/etc/network/if-up.d/iptables を作成し、実行権限を設定してください。
設定例:
(1) localhost の通信は許可、 (2) 22/tcp (SSH) と 80/tcp (HTTP) を許可、 (3) 53/udp 53/tcp (DNS) を許可、 (4) ICMP を許可、 (5) 出ていく通信は許可するが、サーバ側へ来る通信は拒否。
[/etc/network/if-up.d/iptables] # (1) permit localhost iptables -A INPUT -i lo -j ACCEPT # (2) permit 22/tcp and 80/tcpm from anywhere iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT # (3) permit DNS iptables -A INPUT -p tcp --sport 53 -j ACCEPT iptables -A INPUT -p udp --sport 53 -j ACCEPT # (4) permit ICMP for debug iptables -A INPUT -p icmp -j ACCEPT # (5) deny all incoming by default, permit all output. iptables -P INPUT DROP iptables -P OUTPUT ACCEPT特に記述がないルールは、すべて最後の (3) に該当することに注意してください (first match)。
/etc/network/if-up.d/iptables に、以下の設定も追加してください。
[/etc/network/if-up.d/iptables] iptables -A INPUT -p tcp --dport 443 -j ACCEPT
追加したので、全体で、こんなかんじになります。
[/etc/network/if-up.d/iptables] # (1) permit localhost iptables -A INPUT -i lo -j ACCEPT # (2) permit {22,80,443}/tcp from anywhere iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT # (3) permit DNS iptables -A INPUT -p tcp --sport 53 -j ACCEPT iptables -A INPUT -p udp --sport 53 -j ACCEPT # (4) permit ICMP for debug iptables -A INPUT -p icmp -j ACCEPT # (5) deny all incoming by default, permit all output. iptables -P INPUT DROP iptables -P OUTPUT ACCEPT
必要なプロトコルは必要なだけ同様に追加していきます。
もっときちんとした 22/tcp のフィルタを考えてください。
192.168.10.0/24 からのみ SSH をうけつけるようにしてください。
TCP の ESTABLISHED な通信は、もっと早い段階で通過させてください。 上から二番目 (localhost の次)が望ましいでしょう。
state を使って書き直してみよう。
Copyright (C) 1993-2025 Ken'ichi Fukamachi mail:< fukachan at fml.org >