「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

関連項目