常见问题常见问题   搜索搜索   会员列表会员列表   团队团队   注册注册    个人资料个人资料   登录查看您的站内信件登录查看您的站内信件   登录登录 

請教ipfw

 
发表新文章   回复文章    FreeBSD China -> 技术交流
阅读上一个主题 :: 阅读下一个主题  
作者 留言
yes298
道童


注册时间: 2007-12-13
文章: 311

文章发表于: Thu 2008-05-08 17:58:13    发表主题: 請教ipfw 引用并回复

公司有一台FreeBSD v7.0 + Lighttpd的Web Server,
连接100M的独立专线, 尚未开放给人浏览,
只我一人联机上去作测试, 用HTTP下载1G的档案,
一直都能维持在1.1MB/S左右, (客户端只有10M上网速度), 速度很正常 …

但当打开含图片的静态页面, 有时感觉很慢, 等很久才能显示图片,
或者有时还无法显示图片, 而该页面都只是二张100K ~ 300K的图片 …

后来把ipfw改为allow all, 以上现象就消失了, 这肯定和ipfw有关了,
现贴出 ipfw list 的结果, 请各位大大指点一二, 是否与setup keep-state 有关呢?

Web Server IP: 11.22.33.44
ISP DNS IP: 55.66.77.88


代码:
00001 allow ip from any to any via lo0
00004 check-state

00010 deny log logamount 10 ip from any to any ipoptions rr in via em0
00011 deny log logamount 10 ip from any to any ipoptions ts in via em0
00012 deny log logamount 10 ip from any to any ipoptions ssrr in via em0
00013 deny log logamount 10 ip from any to any ipoptions lsrr in via em0
00014 deny log logamount 10 tcp from any to any in tcpflags syn,fin in via em0
00015 deny log logamount 10 ip from 192.168.0.0/16 to any in via em0
00016 deny log logamount 10 ip from 172.16.0.0/12 to any in via em0
00017 deny ip from 10.0.0.0/8 to any in via em0
00018 deny log logamount 10 ip from 127.0.0.0/8 to any in via em0
00019 deny ip from 0.0.0.0/8 to any in via em0
00020 deny log logamount 10 ip from 169.254.0.0/16 to any in via em0
00021 deny log logamount 10 ip from 192.0.2.0/24 to any in via em0
00022 deny log logamount 10 ip from 204.152.64.0/23 to any in via em0
00023 deny log logamount 10 ip from 224.0.0.0/3 to any in via em0
00024 deny log logamount 10 tcp from any to any frag via em0
00025 deny log logamount 10 tcp from any to any established in via em0

00060 allow udp from 11.22.33.44 to 55.66.77.88 dst-port 53 out via em0 keep-state
00070 allow udp from 11.22.33.44 to any dst-port 123 out via em0 keep-state
00071 allow icmp from 11.22.33.44 to any icmptypes 8 out via em0 keep-state
00072 allow icmp from any to 11.22.33.44 icmptypes 0 in via em0
00073 deny log logamount 10 icmp from any to any via em0

00080 allow tcp from any to 11.22.33.44 dst-port 25,80 in via em0 setup keep-state
00081 allow tcp from 11.22.33.44 25,80 to any out via em0 keep-state

00185 allow tcp from 11.22.33.44 to any dst-port 20,21,25,80,81,443,465,953,8080 out via em0 setup keep-state
00186 allow udp from 11.22.33.44 to any dst-port 20,21 out via em0 keep-state
00189 deny log logamount 10 ip from any to any
65535 deny ip from any to any

_________________
熱心幫助他人, 即是幫助自己 ...
對新手, 盡可能去扶持一下, 又有何妨呢?

非常鄙視那些有點技術,就自以為是, 沾沾自喜的人, 不幫人也罷, 還出言諷刺新手, 別忘了, 你亦曾為新手 ...
返回页首
阅览会员资料 发送站内信件
yes298
道童


注册时间: 2007-12-13
文章: 311

文章发表于: Fri 2008-05-09 13:53:22    发表主题: 引用并回复

请指点, 谢谢 ~
_________________
熱心幫助他人, 即是幫助自己 ...
對新手, 盡可能去扶持一下, 又有何妨呢?

非常鄙視那些有點技術,就自以為是, 沾沾自喜的人, 不幫人也罷, 還出言諷刺新手, 別忘了, 你亦曾為新手 ...
返回页首
阅览会员资料 发送站内信件
kingwkb
半仙


注册时间: 2007-01-18
文章: 10

文章发表于: Fri 2008-05-09 14:57:32    发表主题: 引用并回复

freebsd 跑apache mysql php,没必要用墙吧
返回页首
阅览会员资料 发送站内信件
Cyberman
半仙


注册时间: 2008-04-12
文章: 5

文章发表于: Fri 2008-05-09 16:04:56    发表主题: 借楼主的帖子说一个自己的疑问 引用并回复

看了显示开始我感觉如下有些问题:
00014 deny log logamount 10 tcp from any to any in tcpflags syn,fin in via em0

因为感觉它会阻止外面发起的连接,但测试了一下发现不是这么回事。我以FTP测试的,原来是用limit src-addr设置的(包含了keep-state),后来考虑到有可能是check-state的动态规则还没搞明白,就把它放在check-state之前了,并且把FTP改为双向的allow,不使用keep-state,结果还是不会阻止FTP连接。难道是我理解错了?我一直以为ipfw是first-fit的,难道是best-fit?我记得它手册中好像不是这样说的。一般来说best-fit是比较耗资源的。

我们服务器是用的Apache+PHP,防火墙设置比楼主简单多了,只是禁止ping入,然后允许WEB+SSH+FTP,目前还没有发现有什么问题。
用防火墙不管怎么说都会带来效率问题吧,只是互联网上无良人太多了,还是防着点好。如果不是当时时间太急了(我以前可是一点都没用过FreeBSD,只用过Linux,而且很少),当时想把Apache也重新编译把服务器的名称改掉,然后把PHP文件后缀也换一个名字。

另外还有一个问题,哪位知道ifpw show结果在编号和动作之前的两个数字(33、4080)是什么含义?从测试感觉应该和通过的数据包有关,但在Handbook和Man里面都没看到说明:
00200 33 4080 allow tcp from any to me dst-port 80 in setup keep-state
返回页首
阅览会员资料 发送站内信件
yes298
道童


注册时间: 2007-12-13
文章: 311

文章发表于: Fri 2008-05-09 16:25:47    发表主题: 引用并回复

将以下2句放在最前面, 并将rule NO改为001 和 002, 原来的001改为003,
在用Vista IE7的客户端联机过去, 感觉顺畅许多, 只是一开始联机较慢, 用WinXP
IE6则没有一开始联机慢的问题 …
但以上做法好像不怎么好, 亦不是标准的做, 一般是应该先将Deny rules放在最前,
之后才是allow rules, 再是deny all …
请各位高手大大们, 指点一二, 谢谢 …

00080 allow tcp from any to 11.22.33.44 dst-port 25,80 in via em0 setup keep-state
00081 allow tcp from 11.22.33.44 25,80 to any out via em0 keep-state

_________________
熱心幫助他人, 即是幫助自己 ...
對新手, 盡可能去扶持一下, 又有何妨呢?

非常鄙視那些有點技術,就自以為是, 沾沾自喜的人, 不幫人也罷, 還出言諷刺新手, 別忘了, 你亦曾為新手 ...
返回页首
阅览会员资料 发送站内信件
Cyberman
半仙


注册时间: 2008-04-12
文章: 5

文章发表于: Fri 2008-05-09 21:28:19    发表主题: 引用并回复

具体原来我还不清楚,不过我感觉你对于IPFW的理解上有一些问题。从Handbook及测试的结果看,它是一个Inclusive Firewall,而且是First Fit,以规则号为顺序,找到一个能匹配数据包的就不再往后找了,没有显式地充许通过的是拒绝。

至于我前面的疑问,刚才测试了一下搞清楚了,tcpflags后面的spce中逗号分隔的TCP标识是相与的条件。原来只禁止过外出的RST,还没有注意到这一点。现在我不太清楚楼主这一条是为了做到什么:
00014 deny log logamount 10 tcp from any to any in tcpflags syn,fin in via em0

好像TCP中SYN和FIN不会同时出现吧?

放在最前面是最新匹配的,当然会快了。不过前面这些规则如何导致非常慢我也不是很清楚了,你可以用ipfw show看一看,刚才测试了一下感觉编号后面的数字是匹配上规则的进出数据包的总和。
返回页首
阅览会员资料 发送站内信件
Cyberman
半仙


注册时间: 2008-04-12
文章: 5

文章发表于: Sat 2008-05-10 11:36:32    发表主题: 引用并回复

刚才看了一下rc.conf的说明说SYN/FIN往往用于OS视别,不过禁止它的话会导致有些正常的应用也出问题。而另外有一个地方说对于WEB Server不应该禁止它,不知道是不是这个原因导致的?你可以测试一下。
返回页首
阅览会员资料 发送站内信件
从以前的文章开始显示:   
发表新文章   回复文章    FreeBSD China -> 技术交流 论坛时间为 北京时间
1页/共1

 
转跳到:  
不能发布新主题
不能在这个论坛回复主题
不能在这个论坛编辑自己的文章
不能在这个论坛删除自己的文章
不能在这个论坛发表投票


Powered by phpBB 2022cc © 2003 Opensource Steps; © 2003-2007 The FreeBSD Simplified Chinese Project
Powered by phpBB © 2001, 2005 phpBB Group
The FreeBSD China Project 网站: 中文计划网站 社区网站
The FreeBSD China Project 版权所有 (C) 1999 - 2003 网页设计版权 著作权和商标