LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2587|回复: 5

写一点ipfilter的心得!

[复制链接]
发表于 2004-1-6 15:48:55 | 显示全部楼层 |阅读模式
首先,编译内核,添加如下两行:
options IPFILTER
options IPFILTER_LOG
##另外有:options IPFILTER_DEFAULT_BLOCK,但是我个人认为没有什么用处。
然后,修改你的/etc/rc.conf文件,添加:
####################################
gateway_enable="YES"
ipfilter_enable="YES"
ipfilter_program="/sbin/ipf"
ipfilter_rules="/etc/ipf.rules"
ipfilter_flags=""
##起动包过滤功能
ipnat_enable="YES"
ipnat_program="/sbin/ipnat"
ipnat_rules="/etc/ipnat.rules"
ipnat_flags="CF"
##起动地址翻译功能
ipmon_enable="YES"
ipmon_program="/sbin/ipmon"
ipmon_flags="-Ds"
##起动日志记录功能
######################################
然后在/etc目录下建立ipf.rules ipnat.rules两个文件

((((继续(((((((
 楼主| 发表于 2004-1-6 16:07:23 | 显示全部楼层

((((((

在/etc下面建立的两个文件就是ipfilter的规则文件现在开始修改规则文件
先说 :我的外网卡:rl0  *.*.*.45/24
         我的内网卡:dc0 192.168.0.1/24
先是 ipf.rules:
block in quick all with short  #丢弃短小的包
block in quick all with ipopts #丢弃自身带有路由功能的包
pass in quick on lo0
pass out quick on lo0 all       #在本地回环上面,一律通过
###############
#然后给自己的网卡分组#
###############
block in   quick on dc0 all head 100  #如果分组100没有允许,则BLOCK
block out quick on dc0 all head 150  #如果分组150没有允许,则BLOCK
block in   quick on  rl0  all head 200  #如果分组200没有允许,则BLOCK
block out quick on  rl0  all head 250  #如果分组250没有允许,则BLOCK
#在内网卡的IN为分组100
#在内网卡的OUT为分组150
#在外网卡的IN为分组200
#在外网卡的OUT为分组250
####################
#首先编辑内网卡的IN规则
####################
pass in quick proto tcp from 192.168.0.0/24 to any keep state group 100
pass in quick proto udp from 192.168.0.0/24 to any keep state group 100
pass in quick proto icmp from 192.168.0.0/24 to any keep state group 100
psss in quick proto esp from 192.168.0.0/24 to any keep state keep flags group 100
pass in quick proto gre from 192.168.0.0/24 to any keep state group 100
#分别允许tcp,udp,icmp,esp(ipsec),gre(pptp)协议通过.
#################################################
.
.
.
按照类似规则,编辑其他分组
.
.
.
#################################################
#最后,应有阻止10.0.0.0/8 127.0.0.0/8 172.16.0.0/12 192.168.0.0/16的规则
block in quick from 10.0.0.0/8 to any group 200
block in quick from 127.0.0.0/8 to any group 200
block in quick from 172.16.0.0/12 to any group 200
block in quick from 192.168.0.0/16 to any group 200
#################################################
#最终明确阻止
blocl in quick all
block out quick all
#################################################

(((((继续(((((
 楼主| 发表于 2004-1-6 16:17:02 | 显示全部楼层

(((

然后,看ipnat.rules规则
#############
map rl0 192.168.0.0/24 -> *.*.*.45/32 proxy port ftp ftp/tcp
#作用是对有写需要主动端口的ftp的代理
map rl0 192.168.0.0/24 -> *.*.*.45/32 portmap tcp/udp 10000:65000
map rl0 192.168.0.0/24 -> *.*.*.45/32  #对icmp协议的转换
rdr rl0 *.*.*.45 port -> 192.168.0.2 port 80  
#对于内网提供web服务的端口映射,其他比如ftp,dns抗议参照这个来设定
###########################################
到此,利用ipfilter来完成防火墙的设定完成。

或许我有什么大方不对的,请各位大哥指点了 !!小弟谢谢了!
 楼主| 发表于 2004-1-6 16:50:02 | 显示全部楼层

下面是我的一点心得

我觉得,首先 ,要规划好自己的网络 ,一般拥有两个if(或许你有第三个DMZ),但是原理是一样的 ,首先,分组自己的IF,在没个分组里面,设置自己的规则,这样,就不是那样的混乱,先通过,最后,一切阻止,这是一般的作法,可是有的时候,你要这样作,先阻止,然后通过一切,但最终的目的都是一样的 。
然后规划自己要向外提供的服务,这就需要ipnat.rules规则来详细的划分,如果你有第三块网卡,那么可以为自己提供非军事区口,可是到最终的原理还是一样的 ,一个map,一个rdr,这个文件其实没有太多可以控制的东西。

防火墙最大的作用就是访问控制,简单点说,就是ipf.rules中的规则你设置的如何。
在pass,block里面,象flags s/safp 等的参数,可是我现在还没有用到,所以,他的具体用法我还不太清楚,用实践的话,在给大家提供。
############
最终还有几条命令:ipnat ,ipf ,他们的具体使用可以看man,可是如果你要看当前的状态表的话,那么 #ipfstat -t 一定回满足你的要求的。
发表于 2004-1-6 22:12:04 | 显示全部楼层
再写一篇如何用ipfilter做网关的文章吧。大家都期待这样的好文章能多一些。
 楼主| 发表于 2004-1-7 09:12:41 | 显示全部楼层

这个其实就是一个带防火墙的网关!

如果你仅仅是需要进行过滤,那么应该说是使用ipfilter来实现网桥,那么建议你参看这篇文章http://www.cnfug.org/journal/2/03.html
(我不知道是不是对你的话产生误解了)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表