如何将服务的 IP 列入白名单以仅允许某些子网使用?我是否使用 IPTables 或是否有更简单的方法(如 IPWrappers)是否必须注册服务才能使用 IPWrappers(hosts.allow)
答案1
如果你的 vsftpd 已经编译了 tcp_wrappers 支持,那么你可以在打开 vsftpd 配置选项时使用它
tcp_wrappers=yes
如果启用,并且 vsftpd 编译时支持 tcp_wrappers,传入连接将通过 tcp_wrappers 访问控制。此外,还有一种基于每个 IP 的配置机制。如果 tcp_wrappers 设置了 VSFTPD_LOAD_CONF 环境变量,则 vsftpd 会话将尝试加载此变量中指定的 vsftpd 配置文件。
你可以检查你的 vsftpd 是否已经编译了 libwrap 支持,如下所示
ldd /usr/sbin/vsftpd | grep wrap
libwrap.so.0 => /lib64/libwrap.so.0 (0x00002ae164bb6000)
答案2
最简单的方法是使用 iptables:
iptables -A INPUT -s 1.2.3.0/24 -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -s 4.5.6.0/24 -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j DROP
允许来自 1.2.3.0/24 和 4.5.6.0/24 的访问,并禁止来自其他所有人的访问。
不要忘记保存 iptables 配置(取决于你的 Linux 发行版),这样它在重启后仍然有效。