周海漢 /文
2010-3-25
http://blog.csdn.net/ablo_zhou
爲了安全起見,web服務器,數據庫,計費等有重要內容的機器,可能是藏在防火牆後面的,甚至沒有外網地址。在此,我們假定需要給一臺只有內網地址的web服務器設置linux網關,讓外網可以訪問web,但又屏蔽其他端口的訪問。
iptables是linux 2.4以上內核自帶的防火牆,可以用於阻擋非法的端口和IP訪問,也可以用於做網關設備,配置NAT/防火牆,做port forward.
iptables 的邏輯,由表tables,鏈chains,規則rules組成。根據報文頭進行相應的處理。系統接受到包時,底層路由根據目的地分發。如果目的地是本機,則進入INPUT鏈。本機處理完,再進入OUTPUT鏈,發送出去。如果目的地不是本機,則進入FORWARD鏈,符合規則,則轉發出去。
設備設置:
web site ip port: 192.168.12.50 80 (windows IIS server or linux apache)
gateway public ip(eth0): 210.211.22.20, private ip(eth1): 192.168.12.10 (centos 5.2)
現在我們希望訪問http://210.211.22.20 即可訪問http://192.168.12.50:80.
1.gateway上設置允許IP轉送:
vi /etc/sysctl.conf
設置:
net.ipv4.ip_forward = 1
執行
sysctl -p
應該看到
net.ipv4.ip_forward = 1
2.gateway上設置iptables
設置完畢,執行service iptables save
此時,從外網訪問http://210.211.22.20已經可以看到內網的網頁。
3.舉一反三,根據需要,可以將端口設置爲數據庫的1433或ftp的20,21,smtp和pop的25,110等,協議和轉發需要稍有改動和調試。
例如,設置mssql數據庫的代理。
4.設置好iptables,將不允許的訪問全部禁止。