注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

曾国藩的博客

 
 
 

日志

 
 

企业 iptables 防火墙配置案例  

2013-02-22 15:38:39|  分类: 网络/系统架构/版 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://www.net527.cn/a/caozuoxitong/Linux/2012/0321/22180.html

netfilter/iptables这个玩 意儿似乎很复杂一直没太搞懂它的原理,所以从给公司配置服 务器开始就从未使用过它,让同事们共享上网时才用了一下它的伪装,当时也只是从网上看到了那行 iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE,仍然不知道它究竟都干了些什么。最近觉得QQ这个东西的确有些影响同事们工作,所以下决心摸索一下iptables,看看能不能提 供一下生产力。

我的网络情况:linux服务器既是上网的拨号服务器,同时也是公司的web server、mail server、ftp server等,域名动态解析,同时它与公司其它windows客户端构成了一个局域网,内网IP为192.168.0.1(eth1接口),外网网卡 (eth0接口),拨号接口为ppp0,网内其它计算机的IP也都是192.168.0网段。192.168.0.2到192.168.0.16为公司工 作人员(公司比较小,只有10来个人),192.168.0.240到192.168.0.243这几个IP是我和其它两个同事在用,需要实现的目标是外 网只能访问服务器的www、mail、ftp、tomcat这几个服务、内网192.168.0.2到192.168.0.16这个IP段的同事们上班时 间只能上外网的www、mail、ftp、tomcat并禁止使用QQ、192.168.0.240到192.168.0.243这个IP段的同事们可以 无限制上网。下面是我的脚本内容。

work_firewall.sh:
# Display start message
echo "Starting iptables rules..."
# 设置变量
IPT=/sbin/iptables
INTERNET_SERVER=192.168.0.1
IP_ME="127.0.0.1"
IP_SPEC_RANGE="192.168.0.240/30"
IP_WORK_RANGE="192.168.0.2/28"
IP_ALL="192.168.0.0/24"
# 清除所有规则
$IPT -F
$IPT -t nat -F
# 重置所有链默认设置
$IPT -P INPUT DROP
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
# 1. 限制internet对web服务器的访问
# (1) 允许自己无限制访问自己
$IPT -A INPUT -s $IP_ME -j ACCEPT
# (2) 允许访问www服务
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT
# (3) 允许访问ftp服务
$IPT -A INPUT -p tcp --dport 20 -j ACCEPT
$IPT -A INPUT -p tcp --dport 21 -j ACCEPT
# (4) 允许访问mail服务
$IPT -A INPUT -p tcp --dport 110 -j ACCEPT
$IPT -A INPUT -p tcp --dport 143 -j ACCEPT
$IPT -A INPUT -p tcp --dport 25 -j ACCEPT
# (5) 允许访问tomcat服务
$IPT -A INPUT -p tcp --dport 8080 -j ACCEPT
# 2. 允许工作人员通过局域网访问服务器
$IPT -A INPUT -s $IP_SPEC_RANGE -j ACCEPT
$IPT -A INPUT -s $IP_WORK_RANGE -j ACCEPT
# 3. 允许特殊IP无限制上网
$IPT -t nat -A PREROUTING -s $IP_SPEC_RANGE -j ACCEPT
# 4. 对工作范围内IP限制部分上网功能
# (1) 允许访问DNS和ECHO
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p udp --dport 53 -j ACCEPT
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p udp --dport 42 -j ACCEPT
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p udp --dport 7 -j ACCEPT
# (2) 禁止QQ的TCP登录
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 219.133.38.5 -p tcp -j DROP
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 218.18.95.165 -p tcp -j DROP
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 218.17.209.23 -p tcp -j DROP
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 218.18.95.153 -p tcp -j DROP
# (3) 禁止MSN登录
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 207.46.104.20 -j DROP
# (4) 允许访问www
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p tcp --dport 80 -j ACCEPT
# (5) 允许访问ftp
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p tcp --dport 20 -j ACCEPT
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p tcp --dport 21 -j ACCEPT
# (6) 允许访问mail
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p tcp --dport 110 -j ACCEPT
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p tcp --dport 143 -j ACCEPT
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p tcp --dport 25 -j ACCEPT
# (7) 允许访问tomcat
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d 0/0 -p tcp --dport 8080 -j ACCEPT
# (8) 禁止访问其它服务
$IPT -t nat -A PREROUTING -s $IP_WORK_RANGE -d ! $IP_ALL -j DROP
# 5. 共享上网
$IPT -t nat -A POSTROUTING -o ppp+ -j MASQUERADE
# 显示结束信息
echo "Completed iptables rules."

 

网上讲解iptables命令如何使用的文章已经数不胜数了,但真正要理解它的工作原理还是不太容易,也许是自己太笨周六那天竟然午饭都 没吃苦苦思索了整整一天才慢慢有所领悟。netfilter/iptables共有三组规则表:filter、nat和mangle。filter表用于 一般的信息包过滤,如我的网络中192.168.0.1服务器自己访问internet资源时或者外网访问服务器本身时使用filter表规则;nat表 用于转发的信息包过滤,如我的局域网内客户端需要通过服务器访问外网时就需要用到nat表规则;mangle表用于高级路由,我此次没有用到,因此也没有 深究,有空了再看看^_^。filter表包括INPUT链、OUTPUT链和FORWARD链;nat表包括PREROUTING链、 POSTROUTING链和OUTPUT链;mangle表包括PREROUTING链和OUTPUT链。filter表为默认规则表。

表名

功能

filter 用于一般的信息包过滤,包括INPUT链、OUTPUT链和FORWARD链,如我的网络中192.168.0.1服务器自己访问internet资源时或者外网访问服务器本身时使用filter表规则
nat 用于转发的信息包过滤,包括PREROUTING链、POSTROUTING链和OUTPUT链,如我的局域网内客户端需要通过服务器访问外网时就需要用到nat表规则
mangle 用于高级路由,包括PREROUTING链和OUTPUT链

上面的脚本先清除了所有链的所有规则并重置了默认设置,其中INPUT链默认不接受外来访问服务器的任何数据包,接着第1步开放了服务器的80、 20、21、110、143、25和8080端口,第2步允许局域网内的192.168.0.2到192.168.0.16及192.168.0.240 到192.168.0.243的客户端访问服务器,第3步允许192.168.0.240及192.168.0.243无限制访问外网,第4步允许 192.168.0.2到192.168.0.16访问外网的80、20、21、110、143、25、8080及DNS和echo,第5步局域网内客户 端共享上网。

  评论这张
 
阅读(538)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018