尽管ipf对ftp服务的支持不甚完美,但是从3.3.3以后的版本对ftp客户软件的支持已经比较完善。就像ftp服务一样,ftp客户应用也有两个传输模式:主动和被动。 8.3 内核参数 有一些内核参数是建立ipf所必需的,还有一些让我们可以方便的了解建立防火墙的信息。其中主要的一项是打开ip转发,否则ipf几乎什么也做不了,因为ip栈不会真的路由数据包。 freebsd: netbsd: solaris: freebsd: netbsd: solaris: openbsd: freebsd: netbsd: solaris:
IP Filter Based Firewalls HOWTO
8.2.2 运行ftp客户程序
从防火墙的观点来看,ftp最简单的传输模式是被动模式。假设你对所有外出的tcp连接keep state,被动传输就可以正常工作了。如果你还没有这样做的话可以使用下面的规则:
pass out proto tcp all keep state
主动模式有一点麻烦,主动模式使服务器打开第二个连接与客户机进行数据交换。当它们之间有防火墙时就会出现问题。为了解决这个问题,ipfilter包含了一个ipnat代理,这个代理临时在防火墙上打开一个洞,使得ftp服务器可以顺利的连接客户机。甚至是你没有使用ipnat来做地址转换,这个代理也是有效的。下面这条规则加入ipnat的配置文件当中(ep0是外网接口):
map ep0 0/0 -> 0/32 proxy port 21 ftp/tcp
关于ipfilter内部代理的细节,请看3.6
ip转发:
openbsd:
net.inet.ip.forwarding=1
net.inet.ip.forwarding=1
net.inet.ip.forwarding=1
ndd -set /dev/ip ip_forwarding 1
端口调整:
openbsd:
net.inet.ip.portfirst = 25000
net.inet.ip.portrange.first = 25000 net.inet.ip.portrange.last = 49151
net.inet.ip.anonportmin = 25000 net.inet.ip.anonportmax = 49151
ndd -set /dev/tcp tcp_smallest_anon_port 25000
ndd -set /dev/tcp tcp_largest_anon_port 65535
其它有用的参数:
openbsd:
net.inet.ip.sourceroute = 0
net.inet.ip.directed-broadcast = 0
net.inet.ip.sourceroute = 0
net.inet.ip.directed-broadcast = 0
net.inet.ip.sourceroute=0
net.ip.aclearcase/" target="_blank" >ccept_sourceroute=0
net.inet.ip.allowsrcrt=0
net.inet.ip.forwsrcrt=0
net.inet.ip.directed-broadcast=0
net.inet.ip.redirect=0
ndd -set /dev/ip ip_forward_directed_broadcasts 0
ndd -set /dev/ip ip_forward_src_routed 0
ndd -set /dev/ip ip_respond_to_echo_broadcast 0
另外,freebsd有一些sysctl变量:
net.inet.ipf.fr_flags: 0
net.inet.ipf.fr_pass: 514
net.inet.ipf.fr_active: 0
net.inet.ipf.fr_tcpidletimeout: 864000
net.inet.ipf.fr_tcpclosewait: 60
net.inet.ipf.fr_tcplastack: 20
net.inet.ipf.fr_tcptimeout: 120
net.inet.ipf.fr_tcpclosed: 1
net.inet.ipf.fr_udptimeout: 120
net.inet.ipf.fr_icmptimeout: 120
net.inet.ipf.fr_defnatage: 1200
net.inet.ipf.fr_ipfrttl: 120
net.inet.ipf.ipl_unreach: 13
net.inet.ipf.ipl_inited: 1
net.inet.ipf.fr_authsize: 32
net.inet.ipf.fr_authused: 0
net.inet.ipf.fr_defaultauthage: 600