ども、何かと長文な馬場崎です。 丁度今、僕の管理している小さなネットワークに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 __/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/