免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4360 | 回复: 11
打印 上一主题 下一主题

请看我写的规则有错吗,为什么总不能实现效果呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-01 19:39 |只看该作者 |倒序浏览
达人看看我写的IPFW规则,为什么不能实现效果呢,在客户端网页总是打不开,晕啊,急

#!/bin/sh
##########Parameter#########
cmd="/sbin/ipfw add"

########flush all rules##########
/sbin/ipfw -f flush

##########Allow all via loopback############
$cmd 00300 allow all from any to any via lo0

##############FTP Service##############
$cmd 00500 allow tcp from any to any 21 in setup keep-state

##############SSH Service##############
$cmd 00600 allow tcp from any to any 22 in setup keep-state

#############Email Service#############
$cmd 00700 allow tcp from any to any 22 in setup keep-state
$cmd 00800 allow tcp from any to any 110 in setup keep-state

###############WWW Service##############
$cmd 900 allow tcp from any to me 80 in
$cmd 950 allow tcp from any to me 443 in

###############Mysql#############
$cmd 1200 allow tcp from any to any 3306 in setup keep-state

##########Allow me to anywhere#############
$cmd 02400 allow all from me to any out via r10

#Block and log everything
$cmd 60100 deny all from any to me

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
2 [报告]
发表于 2007-09-01 20:25 |只看该作者
##############SSH Service##############
$cmd 00600 allow tcp from any to any 22 in setup keep-state

#############Email Service#############
$cmd 00700 allow tcp from any to any 22 in setup keep-state


这句话好象重复,应该是25吧。

###############WWW Service##############
$cmd 900 allow tcp from any to me 80 in


只让数据进,不让它出去可以吗?至少要加上一个keep-state才行。

###############Mysql#############
$cmd 1200 allow tcp from any to any 3306 in setup keep-state


你连mysql都放行了?这么强悍?


建议一:
#Block and log everything
$cmd 60100 deny all from any to me


改为记录,然后仔细分析一下,你倒底把哪些包给deny掉了。

建议二:服务器上,别用keep-state,否则,你会死的很快的。

最后,一个链接,希望能给你些帮助。http://blog.chinaunix.net/u1/38866/showart_339691.html

论坛徽章:
0
3 [报告]
发表于 2007-09-02 18:04 |只看该作者
唉,我真是被IPFW搞得吐血,我先前写的脚本是可以的,SSH,WEB,FTP都可以,唯独MySQL不行,重写之后(就是上面的那个),所有的都不行了,现在的是我根据官方手册重写的,居然还是不行,真是狂吐血啊,现在先不管优化这个规则了,通了就行,呵呵,lsstarboy说得对,mysql不应该这么开放在网上,其实SSH也是,但先通了再说,这是我的脚本:
#!/bin/sh
########Common Setup########
cmd="/sbin/ipfw -q add"
my_ip="172.16.10.3"
nc_out="r10"
dns="172.168.10.20"

$cmd 600 check-state

##########Allow DNS Search############
$cmd 700 allow tcp from any to $dns 53 out via $nc_out setup keep-state
$cmd 750 allow udp from any to $dns 53 out via $nc_out keep-state
$cmd 800 allow tcp from $dns 53 to me in via $nc_out setup keep-state
$cmd 850 allow udp from $dns 53 to me in via $nc_out keep-state

$cmd 1000 allow tcp from any to any 21,22,25,80,110,443,3306 out via $nc_out setup keep-state

#Block and log everything that trying to get out
${cmd} 2000 deny log all from any to any out via $nc_out

$cmd 3000 allow tcp from any to me 21,22,80,110,443,3306 in via $nc_out setup limit src-addr 30

# deny and log all packets that fell through to see what they are
$cmd 09999 deny log all from any to any

[ 本帖最后由 iamacnhero 于 2007-9-2 18:07 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-09-02 18:10 |只看该作者
也看了ipfw.log,首先53就通不过,不知道为什么,我不是放行了吗?

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
5 [报告]
发表于 2007-09-02 21:17 |只看该作者
很多问题我也不太清楚,再提几个可能出现问题的地方:
1、最前面一定要加上一行:ipfw -q flush

2、既然已经keep-state了,800和850两条就可以去掉了,实际上,只有750一条就可以了。
  
3、服务器,最好别用keep-state,连接数一多,就很容易出问题。

4、1000规则有问题:只匹配out的setup包,如果不是setup包,那么就不匹配,当客户机访问你的机器时,由于你机器回复包不是setup,所以,不匹配本规则而被deny掉,以至于连tcp的三次握手也不可能建立起来。所以应该再加上一句:
  $cmd 1001 allow tcp from any to any 21,22,25,80,110,443,3306 out via $nc_out keep-state
   其它地方和1000一样,就是把setup去掉。原因:作为服务器,一般很少有setup的包。基本上都是回复包。实际上,你看一下log里面,就可以看到的。

5、3000规则没有加keep-state,正好和2000之间留了一个真空,就是回复包。
  如果此条加上keep-state,就可以不用1001条了。

6、53端口应该通了,把ipfw.log的内容放出来看一下,是不是去向不对?dns的地址应该和/etc/resolv.conf里面的地址相同。

7、ftp的话,最起码应该把20端口加上。只留21端口是不行的。

[ 本帖最后由 lsstarboy 于 2007-9-2 22:24 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2007-09-02 23:26 |只看该作者
呵呵,在办公室熬到9点,总算写得比较通了,明天贴出来,高手就不用看了,供我们这些初用BSD不久的新手看看,也多谢lsstarboy兄!:wink:

论坛徽章:
0
7 [报告]
发表于 2007-09-03 14:50 |只看该作者
一个可用的IPFW脚本,比较简单,限制不多
#!/bin/sh

################Common#################
cmd="/sbin/ipfw -q add"
my_ip="xxx.xxx.xxxx.xxx"
nc_in="r11"
nc_out="r10"
dns1="xxx.xxx.xxx.xxx"
#dns2="xxx.xxx.xxx.xxx"

#################Rules#######################
#flush all rules
/sbin/ipfw -q -f flush

#Allow all via loopback to loopback
$cmd 500 allow all from any to any via lo0

$cmd 600 check-state

###################DNS######################
$cmd 700 allow tcp from me to $dns1 53 out
$cmd 750 allow udp from me to $dns1 53 out
$cmd 800 allow tcp from $dns1 53 to me in
$cmd 850 allow udp from $dns1 53 to me in

###############FTP,SSH,WWW,and etc.################
$cmd 01000  allow tcp from any to any 20,21,22,80,443
$cmd 01500  allow tcp from any 20,21,22,80,443 to any

##############limit to link mysql########################
$cmd 2000 allow tcp from me to xxx.xxx.xxx.0/24 3306 out
$cmd 2500 allow tcp from xxx.xxx.xxx.0/24 3306 to me in

#####################SNMP#####################
$cmd 01000  allow udp from any to any 161,162
$cmd 01500  allow udp from any 161,162 to any

#deny and log all packets that fell through to see what they are
$cmd 09999 deny log all from any to any

[ 本帖最后由 iamacnhero 于 2007-9-3 14:56 编辑 ]

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
8 [报告]
发表于 2007-09-03 17:41 |只看该作者
楼主很有耐心,值得学习。

1000-2500 中最好加上via $if,那样更细一些。

论坛徽章:
0
9 [报告]
发表于 2007-09-03 20:08 |只看该作者
唉,正被人逼着呢, ,没办法。
其实这样设置FTP会比较慢,因为FTP在被动模式下,会使用随机端口,所以改成下面两句:
###########################FTP##############################
$cmd 01600  allow all from any to any 20,21,50000-50900
$cmd 01700  allow all from any 20,21,50000-50900 to any

其中50000-50900是在vsftp中设置的随机端口范围

论坛徽章:
0
10 [报告]
发表于 2007-09-03 21:13 |只看该作者
不过还是有一点问题,使用FTP工具上下载一点没问题,但一使用IE调用FTP上下载(用的是PHP),就总是不稳定,有时可以下载,有时就不会,我真是没辙啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP