この文書の使用による損害/被害等、(たとえ、*.gov から苦情が来ようと)
一切責任を持ちませんので、あなたの責任において、ご使用ください。
また、この内容に記述してあるスクリプトは、テストしていませんので、
ご注意ください。
--------------------------
Linux で FireWall サーバを構築するには、
#なんで、いまさら 2.0.x かなぁ...とは、言わないでください。
1.KernelのConfigと、Compile
(RedHatや、これをベースにしたディストリビューションでは、必要ないと思いますが)
2.ipfw
3.ipfwadm
4.IP-Masquerade
5.IP-Route
6.IP-autofw
7.hosts/services ファイル
8.その他、アプリケーション
に関して(ほかにもあると思いますが)、それなりの知識が必要になります。
ただ、
Kernel のコンパイルや、ipfwadm/IP-Masquerade(NAT)に関しては、いろいろな方が、
いろいろな場所で、とても親切に説明されていると思いますので、(感謝
m(__)m)
そちらや、man を参照してください。
それでは、本題に入ります。
まず、ちゃんと通るか確認するためのFireWallポリシーでチェックしてみましょう。
------------------------------------------------------
#!/bin/sh
# My Host Internal : fw-i [iii.iii.iii.iii]
# My Host External : fw-e [eee.eee.eee.eee]
# Section 1 : ポリシーを全部消去
/sbin/ipfwadm -I -f
/sbin/ipfwadm -O -f
/sbin/ipfwadm -F -f
/sbin/ipfwadm -A -f
# Section 2 : 何でも通過させてしまう無意味(いや、意味有るかも)なFireWallに設定
# これでは、非常に危険なので、安全な場所以外にはつながないようにしましょう。
/sbin/ipfwadm -F -p accept
# End of Script
------------------------------------------------------
これを設定したら、
Host iii.iii.iii.nnn で、
ping iii.iii.iii.xxx
ping iii.iii.iii.iii
ping eee.eee.eee.eee
ping eee.eee.eee.xxx
ftp eee.eee.eee.yyy
等で、チェック。
あと、できるならば、
Host eee.eee.eee.nnn で
ping eee.eee.eee.xxx
ping eee.eee.eee.eee
ping iii.iii.iii.iii
ping iii.iii.iii.xxx
等で、チェック。
なんて感じで、ちゃんと通るか確認。
次に、ちゃんと通らないか確認するためのFireWallポリシー
-------------------------------------------------------------
#!/bin/sh
# My Host Internal : fw-i [iii.iii.iii.iii]
# My Host External : fw-e [eee.eee.eee.eee]
# Section 1 : ポリシーを全部消去
/sbin/ipfwadm -I -f
/sbin/ipfwadm -O -f
/sbin/ipfwadm -F -f
/sbin/ipfwadm -A -f
# Section 2 : 何も通過させない理想的なFireWallに設定
/sbin/ipfwadm -F -p deny
# End of Script
-------------------------------------------------------------
これを設定したら、
Host iii.iii.iii.nnn で、
ping iii.iii.iii.xxx
ping eee.eee.eee.xxx
ftp eee.eee.eee.yyy
等で、チェック。
あと、できるならば、
Host eee.eee.eee.nnn で
ping eee.eee.eee.xxx
ping iii.iii.iii.xxx
等で、チェック。
なんて感じで、全部通らないことを確認。
------------------------------------------
実際のスクリプトは、以下のようになると思います。
#!/bin/sh
# もし、あなたが、Expertではないのならば、
# 一気にやらず、ひとつづつ確認しながら設定することをお勧めします。
# My Host Internal : fw-i [iii.iii.iii.iii]
# My Host External : fw-e [eee.eee.eee.eee]
# Section 1 : ポリシーを全部消去
/sbin/ipfwadm -I -f
/sbin/ipfwadm -O -f
/sbin/ipfwadm -F -f
/sbin/ipfwadm -A -f
# Section 2 : 何も通過させない理想的なFireWallに設定
/sbin/ipfwadm -F -p deny
# Section 3 : 自分すらも、隠してしまう。
/sbin/ipfwadm -O -a deny -S iii.iii.iii.iii/32 -D 0.0.0.0/0
/sbin/ipfwadm -I -a deny -S 0.0.0.0/0 -D iii.iii.iii.iii/32
/sbin/ipfwadm -O -a deny -S eee.eee.eee.eee/32 -D 0.0.0.0/0
/sbin/ipfwadm -I -a deny -S 0.0.0.0/0 -D eee.eee.eee.eee/32
#もっと、ゆるいせってい(必要に応じて、加減をする)。
#/sbin/ipfwadm -I -P tcp -a deny -S 0.0.0.0/0 -D iii.iii.iii.iii/32
telnet
#/sbin/ipfwadm -I -P tcp -a deny -S 0.0.0.0/0 -D eee.eee.eee.eee/32
telnet
#/sbin/ipfwadm -I -P tcp -a deny -S 0.0.0.0/0 -D iii.iii.iii.iii/32
ftp
#/sbin/ipfwadm -I -P tcp -a deny -S 0.0.0.0/0 -D eee.eee.eee.eee/32
ftp
#/sbin/ipfwadm -I -P icmp -a deny -S 0.0.0.0/0 -D iii.iii.iii.iii/32
#/sbin/ipfwadm -I -P icmp -a deny -S 0.0.0.0/0 -D eee.eee.eee.eee/32
# Section 4 : 中からのPingくらいは通そうかな。
/sbin/ipfwadm -F -P icmp -b -a accept -S iii.iii.iii.0/24 -D 0.0.0.0/0
# Section 5 : FireWall ポリシーの設定
/sbin/ipfwadm -F -P tcp -b -a accept -S iii.iii.iii.20/32 -D eee.eee.eee.10/32
delegate8080
/sbin/ipfwadm -F -P tcp -b -a accept -S iii.iii.iii.0/24 -D 0.0.0.0/0
pop
/sbin/ipfwadm -F -P tcp -b -a accept -S iii.iii.iii.0/24 -D 0.0.0.0/0
ftp
/sbin/ipfwadm -F -P tcp -b -a accept -S eee.eee.eee.100/32 -D iii.iii.iii.0/24
time
/sbin/ipfwadm -F -P tcp -b -a accept -S iii.iii.iii.40/32 -D eee.eee.eee.9/32
smtp
/sbin/ipfwadm -F -P tcp -b -a accept -S eee.eee.eee.100/32 -D iii.iii.iii.40/32
smtp
/sbin/ipfwadm -F -P tcp -b -a accept -S iii.iii.iii.40/32 -D eee.eee.eee.9/32
ident
/sbin/ipfwadm -F -P tcp -b -a accept -S eee.eee.eee.100/32 -D iii.iii.iii.40/32
ident
/sbin/ipfwadm -F -P tcp -b -a accept -S iii.iii.iii.200/32 -D eee.eee.eee.9/32
telnet
/sbin/ipfwadm -F -P tcp -b -a accept -S iii.iii.iii.200/32 -D eee.eee.eee.10/32
telnet
# Section 6 : Accounting (ログをとるもの)設定
/sbin/ipfwadm -A out -S 0.0.0.0/0 -D iii.iii.0.0/16
/sbin/ipfwadm -A in -S 0.0.0.0/0 -D iii.iii.0.0/16
/sbin/ipfwadm -A out -S iii.iii.0.0/16 -D 0.0.0.0/0
/sbin/ipfwadm -A in -S iii.iii.0.0/16 -D 0.0.0.0/0
# End of Script
--------------------------------------------------------------------
FireWallに、完璧なものは有りませんし、Computer Virus には、歯が立ちません。
Linuxで構築できるFireWallもずいぶん良いものだと思いますが、完璧ではないことを
念頭に置いておいてください。