「iptables DNSを許可する」の版間の差分
提供: セキュリティ
行36: | 行36: | ||
-A INPUT -p udp -j DROP | -A INPUT -p udp -j DROP | ||
-A OUTPUT -p udp -j DROP | -A OUTPUT -p udp -j DROP | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === DNS サービスを許可する === | ||
+ | |||
+ | [[Domain Name System|DNS]] を外部に公開する例です。 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | -A INPUT -p tcp --dport 53 -j ACCEPT | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | [[iptables]] の設定ファイルの例です。ssh 22とdomain 53を許可しています。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | *filter | ||
+ | :INPUT DROP [0:0] | ||
+ | :FORWARD DROP [0:0] | ||
+ | :OUTPUT ACCEPT [0:0] | ||
+ | -A INPUT -i lo -j ACCEPT | ||
+ | -A INPUT -p tcp --dport 22 -j ACCEPT | ||
+ | -A INPUT -p tcp --dport 53 -j ACCEPT | ||
+ | -A OUTPUT -o lo -j ACCEPT | ||
+ | COMMIT | ||
</syntaxhighlight> | </syntaxhighlight> | ||
2013年8月17日 (土) 21:57時点における版
iptables でポートをいろいろ塞ぐと DNS 問い合わせをブロックしてしまうことがあります。
概要
DNS 問い合わせは、UDP が利用されます。 そのため、iptables で domain (53ポート) の通信が通らないと外部のDNS サーバーを利用した 名前解決 ができなくなります。
使い方
DNSクライアントとして問い合わせをする
ここでの前提は、iptables を設定するホストが Domain Name System のサーバーとして機能するのではなく、DNS のクライアントとして動作する、ということです。
ステート を利用して、通信を許可できます。
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
ステートを使わずにDNSクライアントとして問い合わせをする
iptables の下記設定を追加します。
-A INPUT -p udp --sport 53 -j ACCEPT -A OUTPUT -p udp --dport 53 -j ACCEPT
UDP トラフィックをすべて遮断し、 53 だけ許す例です。
-A INPUT -p udp --sport 53 -j ACCEPT -A OUTPUT -p udp --dport 53 -j ACCEPT -A INPUT -p udp -j DROP -A OUTPUT -p udp -j DROP
DNS サービスを許可する
DNS を外部に公開する例です。
-A INPUT -p tcp --dport 53 -j ACCEPT
iptables の設定ファイルの例です。ssh 22とdomain 53を許可しています。
*filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -i lo -j ACCEPT -A INPUT -p tcp --dport 22 -j ACCEPT -A INPUT -p tcp --dport 53 -j ACCEPT -A OUTPUT -o lo -j ACCEPT COMMIT