vsftpd也具备控制特定IP地址或主机名的客户端访问的功能,这需要借助tcp_wrappers来实现。tcp_wrappers又称为TCP包装器,可通过读取/etc/hosts.allow和/etc/hosts.deny文件中的规则来控制客户端对特定服务的访问。tcp_wiappers按照一下顺序来检查和应用访问规则。
1.读取/etc/hosts.allow,如果明确允许访问,则允许访问且不再检查hosts.deny。
2.读取/etc/hosts.deny,如果明确拒绝访问,则拒绝指定客户端访问。
3.如果这两个文件中都没有列出客户端的IP地址或主机名,则允许客户端访问。
4.如果不存在这两个文件,或没有任何定义,则不应用tcp_wrappers访问控制。
这两个文件的语法格式为:
服务器程序列表:客户端列表:shell命令
以#打头的为注释行。对这两个文件的修改立即生效,不用重启相关服务。
在配置文件中使用选项tcp_wrappers来设置是否支持tcp_wrappers访问控制。默认设置为NO,不支持。但是默认配置文件中将该选项设置为YES,这样就可以编辑/etc/hosts.allow或/etc/hosts.deny文件,基于IP地址或主机名对客户端进行限制。
例如,要禁止10.61.14.170的客户端访问,可在/etc/hosts.deny文件中添加如下语句:
vsftpd:10.61.14.170:deny
要禁止10.61.14网段的访问,可以在/etc/hosts.deny文件中添加如下语句:
vsftpd:10.61.14.:deny
要允许10.61.14网段的访问,其他网段禁止访问,可以在/etc/hosts.allow文件中添加如下语句:
vsftpd:10.61.14.:allow
vsftpd:all:deny