[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:28167] [Summary] routing on Debian with ipchains



柴田(あ)です。

とても古い話ですが、一応解決したのでご報告申し上げます。

From: masy@xxxxxxxxxxxxxxxx
Subject: [debian-users:25655] Re: routing with Debian
Date: Mon, 4 Dec 2000 10:57:54 +0900

> 小野澤です。

ご無沙汰しております。


> shibata> > IP: ICMP masquerading
> shibata> > これが必要になると思いますが、入ってますかね ?
> shibata> 
> shibata> これよんだ瞬間に思い出しましたが、 firewall に
> shibata> するにはカーネルの再構築が必要ですね。
> 
> install したままの Kernel でも module は用意されているでしょうから
> そいつを load すれば良いと思います。
> 
>  /lib/modules/2.2.17/ipv4/
> 
> あたりを見てみてください。
> (2.2.18 かしら?)

2.2.18 にて再構築しました。
ただ、そういう問題ではなく、 ipchains の問題であることが
わかり、最近再び手をつけて約一ヶ月モガいて松田陽一さんや碇さんの
協力にて下記スクリプトを作成して希望通りの状態になりました。

 
> JF の Linux IP Masquerade mini HOWTO あたりを参考にされてはいかがでしょうか。
>   http://www.linux.or.jp/JF/JFdocs/IP-Masquerade.html

かなり読み込んだつもりだったのですが、結局あまり理解の
助けにはなりませんでした。
http://tlec.linux.or.jp/docs/ipchains.html
を当方の環境に合わせて変更して使えるようになりました。
ほとんど上記の ppp0 を eth0 相当にして使っている
だけの状態ですので、ご自分の環境に合わせるには
/sbin/ifconfig の結果を確認されてインターフェースの
部分と ip アドレスの部分を書き換えるとつかえるように
なるハズです。


その際には松田さんにはビシバシとご指摘いただいた
おかげでなんとなく理解したつもりになりましたが、
先人の理解力の高さには感服せずにはおられません。
関係の皆様のご協力にこの場を借りて感謝いたします。

 
> あと、僕は使ったことないので何をしてくれるのかよくわからないのですが、
> ipmasq って package があります。

これなんですけど、とってもタコい状態にしてくれるので、
使用をあきらめました。
なんか使い方もよくわからないのです。

で、こちらをお読みの方にも参考になるかもしれませんが、
一応上記松田陽一さんが作成されたドキュメント URL の
改変版を下記に添付いたしますので、参考にどうぞ。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
#!/bin/sh
#
# eth0 : 172.16.10.15/16  : Over 172.16.0.2 is internet-line.
# eth1 : 192.168.10.3/24  : inner net
#
# 組み込み済みチェインの初期化

     /sbin/ipchains -F input
     /sbin/ipchains -F output
     /sbin/ipchains -F forward
     /sbin/ipchains -F eth0-in
     /sbin/ipchains -F eth0-out

# 組み込み済みチェインのポリシー変更
# output チェインを DENY にすると、ローカルネットワークから外に出る
# 全てのアクセスを列挙しなければならないので、敢えて ACCEPT にする

     /sbin/ipchains -P input DENY
     /sbin/ipchains -P forward DENY
     /sbin/ipchains -P output ACCEPT

# 組み込み済みチェインにルールを追加

# システム起動時に portmap がループバックインターフェース経由で動作
# するので、 input チェインを DENY にする際にはこの定義は必須。

     /sbin/ipchains -A input -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT

# ローカルネットワーク内から発する接続は全て ACCEPT 。

     /sbin/ipchains -A input -s 192.168.10.0/24 -d 0/0 -j ACCEPT

# ローカルネットワーク内から外への forward は全て MASQ 。

     /sbin/ipchains -A forward -s 192.168.10.0/24 -d ! 192.168.10.0/24 -j MASQ

# eth0-in チェインを作成
/sbin/ipchains -N eth0-in

# eth0-in チェインを定義
/sbin/ipchains -A input -i eth0 -j eth0-in

# eth0-out チェインを作成
/sbin/ipchains -N eth0-out

# eth0-out チェインを定義
/sbin/ipchains -A output -i eth0 -j eth0-out

# フラグメントを DENY してログ記録。
/sbin/ipchains -A eth0-in -s 0/0 -d 172.16.10.15 -f -j DENY -l

# IP偽装対策、ローカル IP は eth0 から来る筈がないので、 DENY してログ記録。
/sbin/ipchains -A eth0-in -s 10.0.0.0/8 -j DENY -l
#/sbin/ipchains -A eth0-in -s 172.16.0.0/12 -j DENY -l
/sbin/ipchains -A eth0-in -s 192.168.0.0/16 -j DENY -l
/sbin/ipchains -A eth0-in -s 0.0.0.0/8 -j DENY -l
/sbin/ipchains -A eth0-in -s 127.0.0.0/8 -j DENY -l
/sbin/ipchains -A eth0-in -s 169.254.0.0/16 -j DENY -l
/sbin/ipchains -A eth0-in -s 192.0.2.0/24 -j DENY -l
/sbin/ipchains -A eth0-in -s 224.0.0.0/4 -j DENY -l
/sbin/ipchains -A eth0-in -s 240.0.0.0/4 -j DENY -l

# ローカル IP が外に洩れない様にする。
#/sbin/ipchains -A eth0-out -s 0/0 -d 10.0.0.0/8 -j DENY -l
#/sbin/ipchains -A eth0-out -s 0/0 -d 172.16.10.15 -j DENY -l
/sbin/ipchains -A eth0-out -s 0/0 -d 192.168.0.0/16 -j DENY -l

# SMB プロトコルが外に洩れない様にする。
/sbin/ipchains -A eth0-out -s 0/0 -d 0/0 137:139 -p udp -j DENY
/sbin/ipchains -A eth0-out -s 0/0 -d 0/0 137:139 -p tcp -j DENY

# ローカルネットワーク内に Windows2000 があれば以下の設定も。
/sbin/ipchains -A eth0-out -s 0/0 -d 0/0 445 -p tcp -j DENY
/sbin/ipchains -A eth0-out -s 0/0 -d 0/0 445 -p udp -j DENY

# ssh を ACCEPT
/sbin/ipchains -A eth0-in -p tcp -s 0/0 -d 172.16.10.15 ssh -j ACCEPT

# www を ACCEPT
/sbin/ipchains -A eth0-in -p tcp -s 0/0 -d 172.16.10.15 www -j ACCEPT

# auth を REJECT
/sbin/ipchains -A eth0-in -p tcp -s 0/0 -d 0/0 auth -j REJECT

# 上記以外の tcp syn パケットを DENY してログを取る。
/sbin/ipchains -A eth0-in -s 0/0 -d 172.16.10.15 -p tcp -y -j DENY -l

# 上記以外の tcp syn パケット以外を ACCEPT
/sbin/ipchains -A eth0-in -s 0/0 -d 172.16.10.15 -p tcp ! -y -j ACCEPT

echo syn_accept

# DNS 参照の udp パケットを ACCEPT
# より望ましくはソースアドレスをプロバイダが提供する DNS サーバに
# し、 tcp も許可すべきでしょう。
/sbin/ipchains -A eth0-in -s 0/0 domain -d 172.16.10.15 -p udp -j ACCEPT

# ntp 参照の udp パケットを ACCEPT
# より望ましくはソースアドレスをプロバイダが提供する ntp サーバに
# すべきでしょう。
/sbin/ipchains -A eth0-in -p udp -s 0/0 ntp -d 172.16.10.15 -j ACCEPT

# 必要な ICMP パケットを ACCEPT
# echo-request と echo-reply は ping に必要
# destination-unreachable は 全ての tcp/udp トラフィックに必要
# time-exceeded は traceroute に必要
/sbin/ipchains -A eth0-in -p icmp -s 0/0 echo-reply -d 0/0 -j ACCEPT
/sbin/ipchains -A eth0-in -p icmp -s 0/0 destination-unreachable -d 0/0 -j ACCEPT
/sbin/ipchains -A eth0-in -p icmp -s 0/0 echo-request -d 0/0 -j ACCEPT
/sbin/ipchains -A eth0-in -p icmp -s 0/0 time-exceeded -d 0/0 -j ACCEPT

# 上記以外の全てのパケットを DENY してログを取る。
/sbin/ipchains -A eth0-in -j DENY -l

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

で、上記を実行したあとの状態

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
$ sudo /sbin/ipchains -n -L
Password:
Chain input (policy DENY):
target     prot opt     source                destination           ports
ACCEPT     all  ------  127.0.0.0/8          127.0.0.0/8           n/a
ACCEPT     all  ------  192.168.10.0/24      0.0.0.0/0             n/a
eth0-in    all  ------  0.0.0.0/0            0.0.0.0/0             n/a
Chain forward (policy DENY):
target     prot opt     source                destination           ports
MASQ       all  ------  192.168.10.0/24      !192.168.10.0/24       n/a
Chain output (policy ACCEPT):
target     prot opt     source                destination           ports
eth0-out   all  ------  0.0.0.0/0            0.0.0.0/0             n/a
Chain eth0-in (1 references):
target     prot opt     source                destination           ports
DENY       all  ---fl-  0.0.0.0/0            172.16.10.15          n/a
DENY       all  ----l-  10.0.0.0/8           0.0.0.0/0             n/a
DENY       all  ----l-  192.168.0.0/16       0.0.0.0/0             n/a
DENY       all  ----l-  0.0.0.0/8            0.0.0.0/0             n/a
DENY       all  ----l-  127.0.0.0/8          0.0.0.0/0             n/a
DENY       all  ----l-  169.254.0.0/16       0.0.0.0/0             n/a
DENY       all  ----l-  192.0.2.0/24         0.0.0.0/0             n/a
DENY       all  ----l-  224.0.0.0/4          0.0.0.0/0             n/a
DENY       all  ----l-  240.0.0.0/4          0.0.0.0/0             n/a
ACCEPT     tcp  ------  0.0.0.0/0            172.16.10.15          * ->   22
ACCEPT     tcp  ------  0.0.0.0/0            172.16.10.15          * ->   80
REJECT     tcp  ------  0.0.0.0/0            0.0.0.0/0             * ->   113
DENY       tcp  -y--l-  0.0.0.0/0            172.16.10.15          * ->   *
ACCEPT     tcp  !y----  0.0.0.0/0            172.16.10.15          * ->   *
ACCEPT     udp  ------  0.0.0.0/0            172.16.10.15          53 ->   *
ACCEPT     udp  ------  0.0.0.0/0            172.16.10.15          123 ->   *
ACCEPT     icmp ------  0.0.0.0/0            0.0.0.0/0             0 ->   *
ACCEPT     icmp ------  0.0.0.0/0            0.0.0.0/0             3 ->   *
ACCEPT     icmp ------  0.0.0.0/0            0.0.0.0/0             8 ->   *
ACCEPT     icmp ------  0.0.0.0/0            0.0.0.0/0             11 ->   *
DENY       all  ----l-  0.0.0.0/0            0.0.0.0/0             n/a
Chain eth0-out (1 references):
target     prot opt     source                destination           ports
DENY       all  ----l-  0.0.0.0/0            192.168.0.0/16        n/a
DENY       udp  ------  0.0.0.0/0            0.0.0.0/0             * ->   137:139
DENY       tcp  ------  0.0.0.0/0            0.0.0.0/0             * ->   137:139
DENY       tcp  ------  0.0.0.0/0            0.0.0.0/0             * ->   445
DENY       udp  ------  0.0.0.0/0            0.0.0.0/0             * ->   445
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−



-- 
SHIBATA Akira            既往は咎めず
shibata@xxxxxxxxxxxxxx   Let bygones be bygones