-----原始郵件-----
寄件者: borchen.bbs@vlsi1.csie.ncku.edu.tw
<borchen.bbs@vlsi1.csie.ncku.edu.tw>
收件者: netman2000@crosswinds.net
<netman2000@crosswinds.net>
日期: 星期六, 1 一月 2000 PM 15:01
主旨: Re: ???????????? (?????O?n???]?w...)
>發信人: borchen (搖屁屁小水鴨)
>標 題: Re: 防火牆的疑問 (我不是要問設定...)
>日 期: Sat Jan 1 12:01:48 2000
>
>: 【原信件中提到】
>: 搖屁屁小水鴨 撰寫於文章 <3YFiJQ$ITn@vlsi1.iie.ncku.edu.tw>...
>:
只要有網絡界面的存在﹐您都可以使用火牆。只不過如果只有一個界面的話﹐其
>: forward 功能就沒有了﹐但基本的 input 和 output
還是可以設定的。
>
> 所以如果我拿貴站 所設定 簡單防火牆
的設定,將
> 有 forward 該行都拿掉 亦可?
如果您只有一個界面的話﹐看來有沒有 forward
都沒關係。拿掉不拿掉並不影響到界
面本身的設定。
我們要設定火牆﹐通常有三個 chains 要追蹤﹕
input﹐可以限制哪些封從這個界面傳入
output, 可以限制哪些封包從這個界面傳出
forward, 可以限制哪些封包從哪個界面傳到哪個界面。
雖然還不知道您所用的界面是什麼﹐如果只有一個的話﹐只設定
input 和 output 就
可以了﹐如﹕
# 允許本地網路﹕
ipchains -A input -i lo -j ACCEPT
ipchains -A output -i lo -j ACCEPT
ipchains -A input -i eth0 -j ACCEPT
ipchains -A output -i eth0 -j ACCEPT
(如果不設定 lo 的話﹐可能(不肯定﹐自己試試吧)本機的存儲不工作了)
# 限制傳入﹕
ipchains -A input -j DENY -i eth0 -s 203.75.73.150/29 -d
0.0.0.0/0
# 限制傳出﹕
ipchains -A output -j DENY -i eth0 -s 203.75.73.150/29 -d 0.0.0.0/0
#只允許回應封包傳入﹕
ipchains -A input -p TCP -j ACCEPT -i eth0 ! -y -s 0.0.0.0/0
....... 等等﹐諸如此類。
> 又,我去看過很多站的
防火牆範例,都是拿 虛擬 ip
> 來當內部區域網路的 ip,對於這個我似乎沒有太大的
這可能是他們使用 NAT (Network Address Tranlating)
技術﹐在火牆上用 ip aliase
傾聽外部的請求﹐再把請求重導向(redirect) 到內部地址用的。
> 意義,因為我是直接 用真實 ip 來當剛 linux
工作站
> ip
之用,不曉得拿你那邊的設定,必須要更改什麼地方?
> 以下識我在 rc.local 後方 加入的
設定,不曉得是否有誤?(參考自貴站)
> 我只去掉以下的設定:
> ipchains -P forward DENY
> # 如果您使用 SSH
的話﹐考慮開放下面句子
> #ipchains -A output -p TCP -j ACCEPT -i ppp0
-s $ALL ssh -t 0x01 0x10
> #ipchains -A output -p UDP -j ACCEPT -i ppp0
-s $ALL ssh -t 0x01 0x10
> #ipchains -A input -p TCP -j ACCEPT -i ppp0 !
-y -d $ALL ssh -t 0x01
0x10
> #ipchains -A input -p UDP -j ACCEPT -i ppp0
-d $ALL ssh -t 0x01 0x10
> 而以下是 /etc/sysconfig/network 設定:
> NETWORKING=yes
> FORWARD_IPV4=yes
> HOSTNAME=king.smallduck.t3c.net
> DOMAINNAME=smallduck.t3c.net
> #GATEWAY=203.75.73.145
> GATEWAYDEV=eth0
> 而以下是 /etc/sysconfig/network-scripts/ifcfg-eth0
設定:
> DEVICE=eth0
> IPADDR=203.75.73.150
> NETMASK=255.255.255.248
> NETWORK=203.75.73.144
> BROADCAST=203.75.73.151
> ONBOOT=yes
> BOOTPROTO=none
>
>
不曉得這樣的設定,是否有錯誤?是否能夠提點一二?
非常感謝...
您暫時用下面的 script
試試吧。如果您用在商業用途﹐請先聯絡 pgsery@swcp.com
以獲得許可。
#!/bin/sh
# Paul Sery, pgsery@swcp.com
#April 27, 1999
#
# Copyright (C) 1999 by Paul Sery
# Redistribution of this file is permitted under the terms of the GNU
# General Public License (GPL)
# Please look for updates to these rules at
http://www.swcp.com/~pgsery/RHBIZ
#
# ------------- 設定變數--------------
HI="1024:65535"
ALL="0.0.0.0/0"
PRIV_NET="203.75.73.144/29"
LOCAL_HOME="203.75.73.150/29"
IF="eth0"
# -------------清理------------------
ipchains -Fipchains -X
# 全部 DENY
ipchains -P input DENY
ipchains -P output DENY
ipchains -P forward DENY
# 允許本地網路
ipchains -A input -i lo -j ACCEPT
ipchains -A output -i lo -j ACCEPT
ipchains -A input -i eth0 -j ACCEPT
ipchains -A output -i eth0 -j ACCEPT
# 限制 界面 eth0
ipchains -A input -j DENY -i $IF -s $LOCAL_HOME -d $ALL
ipchains -A output -j DENY -i $IF -s $PRIV_NET -d $ALL
# 設定常用協定及優化處理
ipchains -A output -p TCP -j ACCEPT -i $IF -d $ALL telnet -t 0x01 0x10
ipchains -A output -p TCP -j ACCEPT -i $IF -d $ALL www -t 0x01 0x10
ipchains -A output -p TCP -j ACCEPT -i $IF -d $ALL ftp -t 0x01 0x10
ipchains -A output -p TCP -j ACCEPT -i $IF -d $ALL https -t 0x01 0x10
ipchains -A output -p TCP -j ACCEPT -i $IF -d $ALL ftp-data -t 0x01 0x08
ipchains -A output -p TCP -j ACCEPT -i $IF -d $ALL nntp -t 0x01 0x02
ipchains -A output -p TCP -j ACCEPT -i $IF -d $ALL pop-3 -t 0x01 0x02
ipchains -A output -p TCP -j ACCEPT -i $IF -d $ALL imap -t 0x01 0x02
ipchains -A output -p TCP -j ACCEPT -i $IF -d $ALL smtp -t 0x01 0x02
# 開放 DNS
ipchains -A output -p UDP -j ACCEPT -i $IF -d $ALL domain
ipchains -A input -p UDP -j ACCEPT -i $IF -s $ALL domain
# 如果您使用 SSH 的話﹐考慮開放下面句子
#ipchains -A output -p TCP -j ACCEPT -i $IF -s $ALL ssh -t 0x01 0x10
#ipchains -A output -p UDP -j ACCEPT -i $IF -s $ALL ssh -t 0x01 0x10
#ipchains -A input -p TCP -j ACCEPT -i $IF ! -y -d $ALL ssh -t 0x01 0x10
#ipchains -A input -p UDP -j ACCEPT -i $IF -d $ALL ssh -t 0x01 0x10
# 只允許回應封包進入
ipchains -A input -p TCP -j ACCEPT -i $IF ! -y -s $ALL
#允許 FTP
ipchains -A input -p TCP -j ACCEPT -i $IF -s $ALL ftp-data
# 設定 log
echo "ipchains.rules up at `date`" >> /var/log/ipchains.log
我一早就已經在“網絡基礎”中指出﹕設定火牆是一件非常複雜的事情﹐您需要慎密的
規劃和反復的測試。我不敢保證上面的 script
合您用﹐我建議您最好將每一行的意思
都讀懂了才好執行。
祝順利﹗
網中人