《The BOOK Of PF》中文版 —— 12. 新风格的FTP: ftp-proxy
发表于 : 2010-07-13 9:22
如果你是用的OpenBSD 3.9或更新版本的PF, 使用的就是这个新的ftp-proxy版本。
新的ftp-proxy通过一组锚与规则集相互配合应用, 通过将这些锚插入或这些规则里被剔除,这个proxy就可以处理你的FTP通讯。和它的前任一样,这个新的ftp-proxy的用户手册也很提供了详尽的实例。说明:这个版本适用于OpenBSD 3.9或更新的版本以及其它操作系统上相应的版本。
如果你是从一个ftp-proxy的老版本升级到新版本, 请将 inetd.conf 文件中的ftp-proxy这行删除并且要么重新启动inetd或当你不再需要它时直接禁用inetd。接下来, 通过将下面这行加入到 /etc/rc.conf.local 或者 /etc/rc.conf来启用ftp-proxy:
代码: 全选
ftpproxy_flags=""
代码: 全选
# /usr/sbin/ftp-proxy
在文件 pf.conf 里, 你需要在NAT部分定义两个锚(anchor):
代码: 全选
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
这两个是必不可少的, 即便你不使用NAT。如果你是从前一个ftp-proxy版本升级的, 你的规则集应该已经包含了适当的重定向规则。如果没有, 加上它:
代码: 全选
rdr pass on $int_if proto tcp from any to any port ftp -> 127.0.0.1 \
port 8021
关于过滤规则, 加上一个锚(anchor)以便植入代理:
代码: 全选
anchor "ftp-proxy/*"
最后, 添加一个 pass 规则以便放行代理的出站通讯:
代码: 全选
pass out proto tcp from $proxy to any port 21 keep state
这个例子描述了怎样简单地设置一个规则集让内网的客户端可连接到外部的FTP服务器。这个基本的配置应该适用于多数FTP客户端和服务器的组合。实际应用中,也许你还需要调整代理以适应其服务器或客户端两边的一些特例, 所以更详尽的ftp-proxy配置,请查阅该代理软件的不同选项。
如果你需要PF来保护一个FTP服务器以及ftp-proxy, 你可以研究一下如何在一个特定的端口上使用特定的重定向或放行规则集来以reverse模式(使用 -R 选项) 运行一个单独的ftp-proxy。