windows xp sp2 內建的防火牆的無法擋 ICMP
windows 2003 的我不知道,應該和 xp的是同一款
原則上,如果使用 windows ,另外安裝一套防火牆軟體是必要的
快速且經濟的解決方法有兩個:
1.
直接使用別人寫好的 iptables shell script
如此便不需要懂 iptables 詳細語法,把變數套一套就可以用了
先下載這個:
http://www.flag.com.tw/news/F5340-script.zip
解開後
裡頭 CH3 目錄裡中的 firewall 是單機防火牆
CH4 目錄中的 gw-firewall 是閘道防火牆
我不知道你的伺服器環境是怎樣,不過應該用單機防火牆就可以了
修改 frewall 的變數項目 (紅色字是解說)
語法:
# 設定禁止連線的 IP, 可使用空白分隔多個 IP, 也可以使用網段的寫法
BADIPS=""
填上你不希望連入伺服器的 IP
# 設定不可能出現的私有 IP, 請依照您的環境自行刪減網段
IMPOSSIBLE_IPS="10.0.0.0/8 172.16.0.0/12 192.168.0.0/16"
私人網段有 CLASS A,B,C 三個網段,填上你不希望可以連入伺服器的網段,或留空
# 允許對內連線的 TCP 通訊埠
IN_TCP_PORTALLOWED="22 80 443"
填上允許對內 TCP 連線的 port,號碼之間以空白格開
# 允許對內連線的 UDP 通訊埠
IN_UDP_PORTALLOWED="53"
填上允許對內 UDP 連線的 port
# 允許對內連線的 ICMP 類型
IN_ICMP_ALLOWED=""
填上允許對內的 ICMP 封包 type,直接留空即可
# 是否採用雙向管制, 限制由內向外的連線。若設定為 "0" 表示不管制,
# 設定為 "1" 則管制對外連線
EGRESS="1"
字面上的意思,是否要管制「伺服器主機對外面的連線」,1是啟動這個功能
# 當採用雙向管制時, 允許對外連線的 TCP 通訊埠
OUT_TCP_PORTALLOWED=""
如果不希望伺服器亂傳封包出去,留空即可
# 當採用雙向管制時, 允許對外連線的 UDP 通訊埠
OUT_UDP_PORTALLOWED=""
# 當採用雙向管制時, 允許對外連線的 ICMP 類型
OUT_ICMP_ALLOWED=""
# 是否記錄所有 iptables 丟棄的封包
DROPLOG="0"
是否要存 log 記錄檔?除非想要分析,建議填 0不要紀錄,因為log 檔會暴增,吃爆硬碟。
# 是否要下載 DShield.org 的黑名單, 針對名單上的網段進行封鎖
DSHIELD="0"
隨人喜好
改完後,把檔案傳到 Linux 主機的 /usr/local/bin 目錄
chmod +x firewall ,加上可執行權限
在 /etc/rc.d/rc.local 中,加入一行:
/usr/local/bin/firewall start ,以便一開機就執行
若要馬上執行,刷新 iptables 規則
可打:/usr/local/bin/firewall start
注意後面要加 start 參數才會生效
不加的話,執行後畫面會出現.....的字樣
並於 7秒後會洗掉所有 iptales 規則
此設計是用於 ssh 遠端連線時,先行測試用
以免錯誤的設定,防火牆擋到自己
如果擋到自己,畫面就不會有...,但7秒後仍會洗掉規則
註.
ICMP 就是 ping 那些「網路偵測指令」的封包
如果擋了 ICMP ,伺服器就無法PING到了
網路偵測那些指令也會說沒回應,因為全被擋掉了
但是各項網路服務都可以正常使用
2.
第二種方法,是在網路源頭那邊,前端加一台硬體防火牆
如此伺服器本身就算不帶防火牆也無所謂了
硬體防火牆,可以直接買市面上現成的
或是用一台中古電腦
裝上 Coyote 或 IPCOP 等免費防火牆軟體,當硬體防火牆使用
書籤