周海汉 /文

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,将不允许的访问全部禁止。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐