「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