vine-users ML アーカイブ



[vine-users:063516] Re: iptables の設定法について

  • From: Seiichirou Babasaki <mindgear@xxxxxxxxxxxx>
  • Subject: [vine-users:063516] Re: iptables の設定法について
  • Date: Wed, 17 Dec 2003 18:11:43 +0900
ども、何かと長文な馬場崎です。

丁度今、僕の管理している小さなネットワークに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
__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/__/