vsftpd 与TCP_wrapper 结合限制用户的ip地址登录

本文详细解析了如何使用hosts.allow和hosts.deny配置文件来控制本地INET服务的访问权限,包括如何添加允许和拒绝的地址,并通过实例展示了配置vsftpd服务时的应用。

/etc/hosts.allow 定义允许的地址:
/etc/hosts.deny 定义拒绝的来源地址.

如下:
/etc/hosts.allow

[root@BJFS-PIM root .adminssh]# cat /etc/hosts.allow
#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the ‘/usr/sbin/tcpd’ server.
#
vsftpd :123.103.47.0/255.255.255.0 218.240.63.0/255.255.255.0 59.46.172.0/255.255.255.0 10.0.0.0/255.0.0.0 60.2.80.0/255.255.255.0 218.249.230.0/255.255.255.0 160.10.0.0/255.255.0.0 218.246.69.0/255.255.255.0 125.35.3.0/255.255.255.0:allow

/etc/hosts.deny如下:
#
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided
# by the ‘/usr/sbin/tcpd’ server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow. In particular
# you should know that NFS uses portmap!

vsftpd : ALL : DENY

将tcp_wrappers=yes添加至
/etc/vsftpd/vsftpd.conf 中
vi /etc/vsftpd/vsftpd.conf

tcp_wrappers=YES

重新启动vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]

<think>嗯,用户遇到了vsftpd重启后报错500 OOPS的问题,错误信息是“unrecognised variable tcp_wrapper”。我需要先弄清楚这个错误的原因。根据用户提供的引用,特别是引用[2]和引用[3],看起来tcp_wrappers的支持可能没有被正确编译进vsftpd用户可能在配置文件中启用了tcp_wrapper选项,但编译时没有包含相关支持。 首先,我应该检查vsftpd的配置文件,通常是/etc/vsftpd.conf。里面是否有tcp_wrapper=YES这样的设置?如果有,而编译时没有启用tcp_wrappers,就会导致这个错误。解决方案可能是修改配置文件,将该选项设为NO,或者重新编译vsftpd并启用tcp_wrappers支持。 根据引用[2],在编译vsftpd之前需要修改builddefs.h文件,定义VSF_BUILD_TCPWRAPPERS。所以,如果用户需要tcp_wrappers功能,就必须重新编译并启用这个选项。否则,禁用该配置选项可以暂时解决问题。 另外,用户提到重启电脑后出现这个错误,可能是在升级vsftpd或系统后,新版本的默认配置发生了变化。比如引用[4]提到新版本对安全性有更严格的要求,可能导致配置不兼容。需要确认用户是否最近更新了vsftpd,导致配置新版本不兼容。 总结可能的解决步骤:1. 检查配置文件中的tcp_wrapper设置;2. 若不需要tcp_wrappers,将其设为NO;3. 如果需要,重新编译vsftpd并启用支持;4. 检查其他相关配置,比如chroot的权限问题,如引用[4]提到的writable root问题,但当前错误可能此无关,不过用户可能同时遇到多个问题。 另外,用户可能混淆了tcp_wrappers的配置语法,比如在配置文件中是否正确使用了参数名。比如是否应该使用tcp_wrappers=YES而不是tcp_wrapper,可能存在拼写错误,需要检查拼写是否正确。 最后,确保用户重新启动vsftpd服务前,配置文件修改正确,并且没有语法错误,使用systemctl restart vsftpd或相应的命令重启服务。</think>### vsftpd重启后报错500 OOPS解决方案 #### 问题分析 报错`500 OOPS: unrecognised variable tcp_wrapper`表明vsftpd配置文件中包含了一个无法识别的变量`tcp_wrapper`。可能原因如下: 1. **编译时未启用tcp_wrapper支持**:vsftpd在编译时需要启用`tCP_WRAPPERS`功能才能识别相关配置参数[^2]。 2. **配置参数名称错误**:可能是拼写错误(如`tcp_wrapper`应为`tcp_wrappers`)。 3. **版本兼容性问题**:某些vsftpd版本可能废弃了此配置项。 --- #### 解决步骤 1. **检查配置文件语法** - 打开vsftpd配置文件(通常为`/etc/vsftpd.conf`): ```bash sudo vi /etc/vsftpd.conf ``` - 查找`tcp_wrapper`相关配置项,确认其拼写是否正确。正确参数名为`tcp_wrappers`,若不需要此功能可直接注释或删除该行: ```ini # tcp_wrappers=YES ``` 2. **重新编译vsftpd(如需tcp_wrapper支持)** - 若需保留tcp_wrapper功能,需重新编译vsftpd并启用支持: - 下载源码后,修改`builddefs.h`文件: ```c #define VSF_BUILD_TCPWRAPPERS // 取消此行注释或添加 ``` - 重新编译并安装: ```bash make && sudo make install ``` 3. **验证配置并重启服务** - 重启vsftpd前检查配置文件语法: ```bash sudo vsftpd /etc/vsftpd.conf ``` - 若无报错,重启服务: ```bash sudo systemctl restart vsftpd ``` --- #### 其他可能关联问题 若仍报错`500 OOPS: refusing to run with writable root inside chroot()`,需检查用户目录权限(参考引用[4]): ```bash sudo chmod a-w /home/ftpuser # 移除chroot目录的写权限 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值