插件窝 干货文章 如何限制Linux FTP Server访问

如何限制Linux FTP Server访问

限制 vsftpd 使用 用户 345    来源:    2025-05-08

限制Linux FTP服务器访问的方法

有多种方法可以限制Linux FTP服务器的访问权限,以下是几种常见的方法:

1. 使用vsftpd配置限制

对于vsftpd服务器,可以通过修改配置文件/etc/vsftpd.conf实现多种限制:

# 禁止匿名访问
anonymous_enable=NO

# 限制本地用户访问(仅允许指定用户)
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO  # 仅允许列表中的用户

# 限制用户不能离开其主目录
chroot_local_user=YES
allow_writeable_chroot=YES

# 限制IP访问
tcp_wrappers=YES

然后在/etc/hosts.allow/etc/hosts.deny中设置IP限制。

2. 使用iptables防火墙限制

# 只允许特定IP访问FTP
iptables -A INPUT -p tcp --dport 21 -s 192.168.1.100 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j DROP

# 允许被动模式端口范围
iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT

3. 使用PAM模块限制

编辑/etc/pam.d/vsftpd(或其他FTP服务的PAM配置):

# 限制用户组
auth required pam_listfile.so item=group sense=allow file=/etc/ftpallowedgroups onerr=fail

4. 使用TCP Wrappers

/etc/hosts.allow/etc/hosts.deny中添加规则:

# /etc/hosts.allow
vsftpd: 192.168.1.0/24

# /etc/hosts.deny
vsftpd: ALL

5. 使用SELinux限制

# 查看FTP相关SELinux设置
getsebool -a | grep ftp

# 根据需要设置布尔值
setsebool -P ftp_home_dir on

6. 限制用户权限

# 创建仅限FTP使用的用户
useradd -d /var/www/html -s /sbin/nologin ftpuser
passwd ftpuser

# 设置目录权限
chown -R ftpuser:ftpgroup /var/www/html
chmod 750 /var/www/html

7. 使用时间限制

可以通过/etc/security/time.conf限制用户登录时间:

# 限制用户ftpuser只能在工作日9-17点登录
vsftpd;ftpuser;*;!Wk0900-1700

注意事项

  1. 修改配置后需要重启FTP服务:

    systemctl restart vsftpd
    
  2. 确保防火墙规则不会阻止合法连接

  3. 对于生产环境,建议使用SFTP(SSH文件传输)代替FTP,因为FTP协议本身不加密

  4. 定期检查日志文件/var/log/vsftpd.log/var/log/messages监控访问情况

您需要根据具体的FTP服务器软件(vsftpd, proftpd, pure-ftpd等)和系统环境调整上述方法。