ども、何かと長文な馬場崎です。
丁度今、僕の管理している小さなネットワークにiptableを導入しているところで、僕も初心者ですが、何かの参考になればと思って投稿します。
=========================================================
ネットワーク A ※ 僕の管理
[192.168.10.0/255.255.255.0]
|
|――― eth1 ―――|== 192.168. 10.254
| ファイヤウォール |
| VineLinux2.6r3並 |
| Squidで透過proxy |
| Iptables(Webmin) |
|――― eth0 ―――|== 10.200. 43.100
|
[10.200.***.***/255.255.255.0]
ネットワーク B ※ 上位のLAN
=========================================================
何冊かの書籍を読み比べた結果、firewall 役のマシンは上位ネットワークの一部として設定する方がベターだと判断しまして、まず、上位ネットワークの一員として hosts やeth0 の設定を完了しています。
人事異動のことも考慮にいれて(笑)、極力Webminで設定を行いました。
小回りを効かせたいときは ssh でログインして mc と内蔵エディタで。
■ webmin で iptables を設定しますと、最初に /etc/sysconfig/iptables が作成されます。
# 以降はコメントですが、webmin がジェネレートするとき、手動で加えたコメントは消えます
============================ /etc/sysconfig/iptables =============================
# mangle テープル --- 特に設定することは無いらしいです
*mangle
:PREROUTING ACCEPT [102:12834] #ポリシーの設定部分 標準で許可(以下同じ)
:INPUT ACCEPT [102:12834]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [102:12834]
:POSTROUTING ACCEPT [102:12834]
COMMIT
# mangle はここまで
# nat テーブル --- マスカレードはこのテーブルで
*nat
:PREROUTING DROP [0:0] #ポリシーは破棄に設定(以下同じ)
:POSTROUTING DROP [3:1378]
:OUTPUT DROP [3:1378]
-A POSTROUTING -o eth0 -j MASQUERADE
# eth0 へ出ていくものは全部マスカレード
# manによるとsnatを使うべきらしいです
-A PREROUTING -p tcp -i eth0 --dport 80 -j REDIRECT --to-port 3128
# squid の透過proxyのための設定
# eth0 から入ってくる tcp プロトコルの port80(http)を全部3128(squid)へ投げる
COMMIT
# nat はここまで
# filter テーブル --- 標準以外のチェインももちろん設定できます
*filter
:INPUT DROP [102:12834] #入力チェインポリシーは破棄
:FORWARD DROP [0:0] #通過チェインポリシーは破棄
:OUTPUT DROP [102:12834] #出力チェインポリシーは破棄
# このfirewallマシンは通常で中継のみを担当し、自身へのアクセスは
# ループバックのみで運用しますので、設定するのは FORWARD のみです。
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # 状態が「接続中」は通す
-A FORWARD -p icmp -i eth1 -j ACCEPT # eth1 側からの ping を通す
-A FORWARD -p udp -i eth1 --dport 53 -j ACCEPT # eth1 側からの dns を通す
-A FORWARD -p udp -o eth1 --dport 53 -j ACCEPT # eth1 側への dns を通す
-A FORWARD -p tcp -i eth1 --dport 80 -j ACCEPT # eth1 側からの http を通す
-A FORWARD -p tcp -o eth1 --dport 80 -j ACCEPT # eth1 側への http を通す
-A FORWARD -p tcp -i eth1 --dport 23 -j ACCEPT
# eth1 側からの ssh を通す eth0 からは設定しない
-A FORWARD -p tcp -i eth1 --dport 110 -j ACCEPT # eth1 側からの pop3 を通す
-A FORWARD -p tcp -o eth1 --dport 110 -j ACCEPT # eth1 側への pop3 を通す
-A FORWARD -p tcp -i eth1 --dport 25 -j ACCEPT
# eth1 側からの smtp を通す eth0 からは設定しない
-A FORWARD -p tcp -i eth1 --dport 20:21 -j ACCEPT # eth1 側からの ftp を通す
-A FORWARD -p tcp -o eth1 --dport 20:21 -j ACCEPT # eth1 側への ftp を通す
-A FORWARD -p tcp -i eth1 --dport 119 -j ACCEPT # eth1 側からの news を通す
-A FORWARD -p tcp -o eth1 --dport 119 -j ACCEPT # eth1 側への news を通す
-A FORWARD -p tcp -i eth1 --dport 443 -j ACCEPT # eth1 側からの ssl(https) を通す
-A FORWARD -p tcp -o eth1 --dport 443 -j ACCEPT # eth1 側への ssl(https) を通す
-A FORWARD -p tcp -i eth1 --dport 563 -j ACCEPT # eth1 側からの nntp を通す
-A FORWARD -p tcp -o eth1 --dport 563 -j ACCEPT # eth1 側への nntp を通す
-A FORWARD -p tcp -i eth1 --dport 1025:65535 -j ACCEPT
# 様々なインターネットサービスのために eth1 側からの 1024〜65535までを通過させる
-A FORWARD -p tcp -o eth1 --dport 1025:65535 -j ACCEPT
# 様々なインターネットサービスのために eth1 側への 1024〜65535までを通過させる
COMMIT
# filter はここまで
============================ /etc/sysconfig/iptables =============================
※仮にこのマシンでSAMBAを動かす場合、filter テーブルのINPUTとOUTPUTチェインに135〜139までの記述が必要になります。
※ firewall越えのマシンで smbプロトコルでの接続を許可する場合は、 FORWARD チェインに記述が必要です。
※上記の設定では、firewallマシンはまるでネットワーク上に存在し無いかのように振る舞います。
たとえばネットワークAからBへのpingは通りますが、このマシンへのpingは届きません。
※ このマシンのwebminを eth1 側に解放する場合、INPUTとOUTPUTチェインに 443とVineのWebminが使う10000をほがす(方言)、いえ開ける設定が必要でした。SWAT を使うなら901も。しかし、頻繁に使うものではないので、メンテナンスの必要が生じたときは filter のポリシーを一時的に ACCEPT にするか、実際にマシンのところへ出向いて行うようにしています。
=========================================================
[補] このファイルをコマンドから適用させるには
# /etc/ini.d/iptables restart
を使います。初期化と必要なモジュールの読み込みを行ってくれます。
[補] 現在のテーブルを確認するには
# iptables -L
またはテーブルを指定して
# iptables -L -t nat # (NATテーブルを表示)
=========================================================
僕自身もそれほど設定に明るいわけでもありませんし、良いテキストも知らないのですが Tanaka さんの設定には FORWARD チェインが欠けているように見えます。
また、インターネットサービスのいくつかは実際のデータ転送に 1025 以降の任意のポートを使うものがあり、それも 開けておかないと実際のデータ転送ができないようです。
[テキスト] 「ポート設定のなんとか」という本(すいません、職場に置いてきました)にQuickTimeやRealPlayerが使うポートについて載っていました。探せばネットのどこかに一覧があると思います。もちろん、あえて塞ぐというのもありです。
一つ気になるのは……
> (4) すべて削除して,INPUT,OUTPUT, FORWARDのデフォルトポリシーをACCEPTのみにしても
> やはり,sshとかはつながらない.
すべて ACCEPT なら繋がるはずですが、この時の リストはどうなっていますでしょうか?
--
__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/
ZON or MaruArt. >>> Babasaki Seiichirou (Japanese.)
E-Mail Address
mindgear@xxxxxxxxxxxx or mindgear@xxxxxxxxxxxxxx
__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/