- PR -

教えてください。。【 iptablesの設定 】

1
投稿者投稿内容
localhost
会議室デビュー日: 2005/05/26
投稿数: 12
投稿日時: 2005-05-26 19:25
はじめてLinuxでDNSサーバ兼WEBサーバを構築しています。
-> Fedora Core3
-> bind-9
-> apache-1.3.33(訳あってこのVer.です。)

SSHは使います。(現在試験稼動中です。)

iptableを落とすとちゃんとdigも引けるしWEBコンテンツも表示されるのですが、
iptableを起動すると外からこのサーバで管理しているドメインのdigも引けませんし、
もちろんHPも正しく表示されません。(主に"アクセスする権限がない"と弾かれます。)
オライリーのDNS&BINDを買ってきて読んではみたものの今ひとつ分かりません。
ご存知の方がいらっしゃいましたら、ご指摘・ご指南頂ければ幸いです。
よろしくお願いします。<(_ _)>

/etc/sysconfig/iptables
--
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:oUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -p udp -m udp --sport 80 -j ACCEPT
-A FORWARD -j RH-Firewall-1-INPUT
-A OUTPUT -pudp -m udp --dport 53 -j ACCEPT
-A OUTPUT -pudp -m udp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p ipv6-crypt -j ACCEPT
-A RH-Firewall-1-INPUT -p ipv6-auth -j ACCEPT
-A RH-Firewall-1-INPUT -d 244.0.0.251 -p udp --dport 5353 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISH -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
--

[ メッセージ編集済み 編集者: localhost 編集日時 2005-05-26 19:27 ]

[ メッセージ編集済み 編集者: localhost 編集日時 2005-05-26 20:14 ]
NT
会議室デビュー日: 2005/05/20
投稿数: 7
投稿日時: 2005-05-26 22:06
自分も初心者ですが、最近ファイヤーウォールを立ち上げるためにiptablesを
使ったので、参考までにちょっとだけ。

>-A INPUT -p udp -m udp --sport 53 -j ACCEPT
>-A INPUT -p udp -m udp --sport 80 -j ACCEPT
>-A FORWARD -j RH-Firewall-1-INPUT
>-A OUTPUT -pudp -m udp --dport 53 -j ACCEPT
>-A OUTPUT -pudp -m udp --dport 80 -j ACCEPT

-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A FORWARD -j RH-Firewall-1-INPUT
-A OUTPUT -p udp -m udp --sport 53 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
にしたら、DNSとHTTPはOKだと思われます。

あとログをとって、どんなアクセスが着てるか調べてはいかがでしょうか?
そうすれば、何を通せばいいかわかると思われます。
cn009
ベテラン
会議室デビュー日: 2004/05/13
投稿数: 72
投稿日時: 2005-05-27 01:29
私は /etc/sysconfig/iptables の書式をよく知らないのですが、
ルールやチェインの操作は上から順に実行されるのでしょうか?
以下ではそのようであると仮定して話を進めます。

INPUT ではまず、RH-Firewall-1 チェインに飛びます。
そして、RH-Firewall-1 チェインのルールを順に評価していき、
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
によって、それ以前のルールにマッチしなかったパケットが全てマッチします。

ACCEPT、DROP、REJECT ターゲットにマッチした場合はそのパケットの評価は終了します。
そのため
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -p udp -m udp --sport 80 -j ACCEPT
のルールは評価されることがありません。

RH-Firewall-1 チェインを作って使いたいなら、順番を変えないといけません。

# 個人的にはINPUT、FORWARD チェインのポリシーを DROP にして、
# 必要なものだけを ACCEPT or REJECT するのをお勧めしますけど。
## IDENT には tcp-reset を使って REJECT とか・・・

:oUTPUT ACCEPT [0:0]
は OUTPUT のポリシーが ACCEPT ということでしょうか?
だとすると、ACCEPT だけのルールを作るのは意味がないです。

-A INPUT -p udp -m udp --sport 53 -j ACCEPT
は DNS の戻りパケットを許可するということだと思いますが、
UDP でも戻りパケットは ESTABLISHED にマッチするので
明示的に許可する必要が無かったと思います。

-A INPUT -p udp -m udp --sport 80 -j ACCEPT
は UDP ではなく、TCP の間違いでしょうか?
でも RH-Firewall-1 チェインにもそれらしきものがありますし。
RH-Firewall-1 チェインを作ったことで混乱されていませんか?
NT
会議室デビュー日: 2005/05/20
投稿数: 7
投稿日時: 2005-05-27 09:25
訂正・・・、cn009さんのおっしゃってた通りですね。
RH-Firewall-1 チェイン以外はいらないような気がします。
あと下の行をREJECTの前に入れればよさそうな・・・
-A RH-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
あとACCEPTのルールを書くなら、INPUT・FORWARD等の設定はDROPにしたほうがいいですね。 
localhost
会議室デビュー日: 2005/05/26
投稿数: 12
投稿日時: 2005-05-27 11:17
NT様、cn009様
ご返答いただき本当にありがとうございます!

実は今回初めてiptable(Firewall)なるものを触っているのですが、まだまだ理解度が
低く、本やWEBで情報を探しては設定を試みたのですが未だ模索しております。
初心者ですが何卒引き続きご指南いただけますようお願い申し上げます。<(_ _)>

お二人からの教えを元に私なりに書き換えてみました。
解釈が間違っていたらお手数ですが再度ご指摘ください。
--
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0] //もしくはこの三行はいりませんか?
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p ipv6-crypt -j ACCEPT
-A RH-Firewall-1-INPUT -p ipv6-auth -j ACCEPT
-A RH-Firewall-1-INPUT -d 244.0.0.251 -p udp --dport 5353 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISH -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
--

よろしくお願い致します。
localhost
会議室デビュー日: 2005/05/26
投稿数: 12
投稿日時: 2005-05-27 11:53
NT様、cn009様

私の先ほどの投稿後に、下記内容に変更し、現在dig,WEBコンテンツの表示ともに
問題なく確認が出来ました!!\(^0^)/
ほんっっっとうにありがとうございました♪♪♪

再度お伺いしたいのですが、セキュリティ上これで問題ないでしょうか?
何かご指摘がありましたら是非ともお聞かせください。
よろしくお願い致します。
--
*filter
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p ipv6-crypt -j ACCEPT
-A RH-Firewall-1-INPUT -p ipv6-auth -j ACCEPT
-A RH-Firewall-1-INPUT -d 244.0.0.251 -p udp --dport 5353 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISH -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
--

> -A INPUT -p udp -m udp --sport 80 -j ACCEPT
> は UDP ではなく、TCP の間違いでしょうか?
すみません・・・記述ミスでした。
cn009
ベテラン
会議室デビュー日: 2004/05/13
投稿数: 72
投稿日時: 2005-05-28 13:02
RH-Firewall-1 チェインではなく RH-Firewall-1-INPUT チェインでしたね。(^_^;

2005-05-27 11:17 の
> :INPUT DROP [0:0]
> :FORWARD DROP [0:0]
> :OUTPUT DROP [0:0] //もしくはこの三行はいりませんか?
ですが、OUTPUT のポリシーは ACCEPT のままでも悪くはないと思います。
DROP にすると、非rootアカウントが盗られたときに踏み台にされる可能性を低く出来ますが、
少なくとも戻りパケットを許可するルールを設定しないといけません。

2005-05-27 11:53 の設定ですが、ポリシー設定らしき部分を消されましたか。
http://www.linux.or.jp/JF/JFdocs/packet-filtering-HOWTO-7.html
によると、デフォルトのポリシーは ACCEPT だそうです。
OUTPUT のポリシーが ACCEPT になったので、戻りパケットを送れるようになり
外部からDNS、Webが見えるようになったのでしょうね。

ふと思ったのですが、そのマシンはルータとして使われるのですか?
ルータとして使うなら、SSH、FTP、HTTP、DNS等への通信を一律に許可するのは
あまりよくないと思います。
ルータとして使わないなら、FORWARD は全て DROP で構わないです。
1

スキルアップ/キャリアアップ(JOB@IT)