このスレッドは解決済です(未解決に戻す場合はこちら)
<<戻る

こちらのサイトを参考にしたiptablesのシェルについて このメッセージに返信する
日時: 2011/09/05 01:39
名前: アスタクリス
URL:
はじめまして。

http://centossrv.com/iptables.shtml
上記リンクを参考にしてiptablesをCentOS5.6にて構築しております。
プロバイダより固定グローバルIPアドレス/32をもらい、ルーター配下のNAT環境で使用しています。

さて、参考リンク先の最初のスクリプト(iptables.sh)作成の部分で、
# デフォルトルール(以降のルールにマッチしなかった場合に適用するルール)設定
iptables -P INPUT DROP # 受信はすべて破棄
iptables -P OUTPUT ACCEPT # 送信はすべて許可
iptables -P FORWARD DROP # 通過はすべて破棄

とありますが、
iptables -P INPUT DROP # 受信はすべて破棄
をやってしまうと、スクリプトが最後まで完了するまではLAN内からを除き全てのグローバルIPアドレスからアクセスできなくなってしまう時間(15分程度)が発生してしまうように思います。

このスクリプトの最後の方で
# 上記のルールにマッチしなかったアクセスはログを記録して破棄
iptables -A INPUT -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES INPUT] : '
iptables -A INPUT -j DROP
iptables -A FORWARD -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES FORWARD] : '
iptables -A FORWARD -j DROP

を入れているので、冒頭の
iptables -P INPUT DROP
に関しては必要ないというより、あってはまずいように思うのですが、何か私が勘違いをしているかもしれませんので詳細を教えていただけないでしょうか。
正直、iptablesに関しては詳しくないのでほんと見当違いな事を言っていたら申し訳ありません。
記事編集 編集

Page: | 1 | 2 |

Re: こちらのサイトを参考にしたiptablesのシェルについて このメッセージに返信する
日時: 2011/09/05 11:18
名前: アスタクリス
URL:
ありがとうございます。

>すぐさま理解できるとは思いませんが、試しにご自分でルールを設定してみて理解するほうが
分かりやすいかもです。
まったくその通りで、今四苦八苦しながら勉強しています。

基本的にこちらのサイトの参考ポリシーに沿って、国単位のIPアドレスで拒否設定を入れており、5カ国程度のルールを入れているため、数千〜1万程度のルールがあります。
したがって、最初にデフォルトポリシーとして
iptables -P INPUT DROP # 受信はすべて破棄
を入れた後にリストファイルから数千のルールを追加した後、必要なHTTPDやPOP3などの許可ルールが入っていくようなので、その間HTTPDなどへのアクセスが外部からできなくなってしまっているように捉えられます。

そこで質問なのですが、
iptables -P INPUT DROP # 受信はすべて破棄
iptables -P OUTPUT ACCEPT # 送信はすべて許可
iptables -P FORWARD DROP # 通過はすべて破棄
のデフォルトルールを、

# 外部からのTCP/UDP53番ポート(DNS)へのアクセスを許可
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT

# 外部からのTCP80番ポート(HTTP)へのアクセスを許可
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

などの個別ACCEPTルール定義の直前に書くか、あるいは

# サーバー再起動時にも上記設定が有効となるようにルールを保存
/etc/rc.d/init.d/iptables save
の直前に書いても「デフォルトは全て拒否」が実現できるものでしょうか?

それが可能であればそのように変更して使いたいと思います。
記事編集 編集
Re: こちらのサイトを参考にしたiptablesのシェルについて このメッセージに返信する
日時: 2011/09/06 04:29
名前: stranger
URL: http://ja.528p.com/
iptables -I INPUT 1 -j DROP_COUNTRY

(-Iオプション 挿入番号を指定しないと先頭に設定を追加します 1 は省略可)

に変えれば 公開設定の後に DROP_COUNTRYの設定をすることも可能では?
要は INPUTチェーンの先頭にDROP_COUNTRYを組み込むこと

iptables -L INPUT -n -v
で先頭にDROP_COUNTRYが組み込まれているか確認

ちなみに-Aオプションは後尾に設定を追加します

追記
cidr.txtのなかで

CN 2560
TW 319
KR 702
JP 1741

記事編集 編集
Re: こちらのサイトを参考にしたiptablesのシェルについて このメッセージに返信する
日時: 2011/09/05 20:50
名前: 新高校生
URL:
当たり前ですがDROP_COUNTRYのチェーンができて組み込まれるまで(15分ぐらい)は
特定の国のIPをdropすることはできません。

iptables.shは、通常、
cron.daily→iplist_check.sh(特定国のIPに変化があった場合に)→iptables.sh実行
という感じなので、たぶんですが、そう頻繁に実行されないです。(多くても日に一回)
(もちろんPCを起動する度に実行されるようなこともありません)
記事編集 編集
Re: こちらのサイトを参考にしたiptablesのシェルについて このメッセージに返信する
日時: 2011/09/06 17:02
名前: 新高校生
URL:
ここのサイトにあるiptables.shを見ると各種設定中はiptablesを止めてるんですね。
(僕は動的に逐次設定を追加してるのかと思ってました)

http://centossrv.com/iptables.shtml
のiptables.shですが

># ファイアウォール停止(すべてのルールをクリア)
>/etc/rc.d/init.d/iptables stop
>  ↓
>(各種設定諸々)
>  ↓
># サーバー再起動時にも上記設定が有効となるようにルールを保存
>/etc/rc.d/init.d/iptables save
>
># ファイアウォール起動
>/etc/rc.d/init.d/iptables start

スクリプトが動いてる間(15分ぐらい?)はiptablesが無効になってるということなのかも。
iptables -F
で設定を全クリアして逐次設定を追加した方がいい感じがします。なんとなく。
記事編集 編集
Re: こちらのサイトを参考にしたiptablesのシェルについて このメッセージに返信する
日時: 2011/09/07 18:55
名前: stranger
URL: http://ja.528p.com/
/etc/rc.d/init.d/iptablesはデーモンとして機能する理由ではありません

iptables stop は
flush_n_delete
set_policy ACCEPT
を実行します

set_policy()関数がスクリプトのなかで定義されています

flush_n_delete()関数がスクリプトのなかで定義されていて
iptables -F を実行しています

追記
psコマンドで調べれば、デーモンかどうか解かります
メモリ上にiptablesコマンドは常駐していませんよね
記事編集 編集
Re: こちらのサイトを参考にしたiptablesのシェルについて このメッセージに返信する
日時: 2011/09/07 19:12
名前: 新高校生
URL:
stranger様、ありがとうございました。
今やっと理解できました(w

/etc/rc.d/init.d/iptables stop は
設定をクリアして、すべてACCEPTにしているだけだと分かりました。
(デーモン自体は常に動いている)

追記ですが、デフォルト(IPTABLES_MODULES_UNLOAD="yes")
ではiptables stop をするとモジュールも取り外しています。
(iptables start で読み込んでいます)
記事編集 編集
Re: こちらのサイトを参考にしたiptablesのシェルについて このメッセージに返信する
日時: 2011/09/07 20:47
名前: 新高校生
URL:
デーモンじゃないってことですね・・・(^^;)
記事編集 編集
Re: こちらのサイトを参考にしたiptablesのシェルについて このメッセージに返信する
日時: 2011/09/11 14:18
名前: アスタクリス
URL:
よく考えると、デフォルトの動作として
iptables -P INPUT DROP # 受信はすべて破棄
をしていると、目的である「指定国のみ拒否」が実現されず「指定国の拒否」+「指定国の許可」をしてやらないといけないことに気がついたので、デフォルトで全てACCEPTしたうえで、「指定国の拒否」をすることで目的を実現できました。

私の勘違いのせいで質問がおかしかったかもしれないことをお詫びします。
ありがとうございました。
記事編集 編集

Page: | 1 | 2 |

件名※必須
名前※必須
URL
任意のパスワード (投稿後のコメント修正・削除時に使用)
画像認証※必須 投稿キー(画像で表示されている数字を入力)
コメント※必須

※質問を投稿後に自己解決された場合は、原因と行った対処を具体的に書き込み下さるよう、よろしくお願いします。

- WEB PATIO -