温馨提示×

vsftp在centos上如何防止攻击

小樊
49
2025-11-01 11:21:30
栏目: 网络安全

1. 更新系统与软件包

确保CentOS系统和vsftpd软件为最新版本,及时修复已知安全漏洞:

sudo yum update -y
sudo yum install vsftpd -y

2. 配置vsftpd.conf安全参数

编辑/etc/vsftpd/vsftpd.conf文件,调整以下核心配置:

  • 禁用匿名访问:防止未授权用户获取服务器文件。
    anonymous_enable=NO
    
  • 限制本地用户权限:仅允许本地用户登录,启用写入权限(根据需求调整)。
    local_enable=YES
    write_enable=YES
    
  • 启用chroot jail:将用户限制在自己的主目录,避免访问系统其他目录。
    chroot_local_user=YES
    allow_writeable_chroot=YES  # 若用户主目录需写入,设置为YES(否则设为NO)
    
  • 限制登录尝试次数:防止暴力破解,连续失败3次后锁定账户。
    max_login_attempts=3
    account_lock=YES
    
  • 限制用户列表:通过/etc/vsftpd/user_list文件指定允许/拒绝的用户(userlist_enable=YESuserlist_deny=NO表示仅允许列表内用户登录)。
  • 禁用不必要的功能:关闭递归目录列表(防止DoS攻击)、ASCII模式下载(节省CPU资源)。
    ls_recurse_enable=NO
    ascii_download_enable=NO
    

3. 配置防火墙规则

使用firewalld限制FTP服务访问,仅允许受信任IP或端口:

  • 开放必要端口:默认FTP端口(21)、被动模式端口范围(如1024-1048)。
    sudo firewall-cmd --permanent --add-port=21/tcp
    sudo firewall-cmd --permanent --add-port=1024-1048/tcp
    sudo firewall-cmd --reload
    
  • 限制访问源:仅允许特定IP段访问FTP服务(示例:允许192.168.1.0/24)。
    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ftp" accept'
    sudo firewall-cmd --reload
    

4. 启用TLS/SSL加密

加密数据传输,防止密码和文件内容被窃取:

  • 生成SSL证书(若无现有证书):
    sudo mkdir -p /etc/ssl/certs
    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/certs/vsftpd.pem -out /etc/ssl/certs/vsftpd.pem
    
  • 配置vsftpd使用SSL:在vsftpd.conf中添加以下参数:
    ssl_enable=YES
    force_local_data_ssl=YES
    force_local_logins_ssl=YES
    ssl_tlsv1=YES
    ssl_sslv2=NO
    ssl_sslv3=NO
    rsa_cert_file=/etc/ssl/certs/vsftpd.pem
    rsa_private_key_file=/etc/ssl/certs/vsftpd.pem
    

5. 使用SELinux增强安全性

调整SELinux策略,限制vsftpd的权限:

  • 允许FTP访问用户主目录
    sudo setsebool -P ftp_home_dir 1
    
  • 禁止匿名用户写入(若允许匿名访问,需谨慎):
    sudo setsebool -P allow_ftpd_anon_write 0
    
  • 锁定敏感目录:使用chattr命令防止系统关键目录被修改(如/etc/bin)。
    sudo chattr +i /etc/passwd
    sudo chattr +i /etc/shadow
    

6. 防止暴力破解

通过PAM(Pluggable Authentication Modules)和账户策略强化登录安全:

  • 设置强密码策略:要求用户使用包含大小写字母、数字和特殊字符的密码,定期更换(通过passwd命令或chage工具)。
  • 启用PAM限制:编辑/etc/pam.d/vsftpd文件,添加以下行(限制登录尝试次数)。
    auth required pam_tally2.so deny=3 unlock_time=300
    

7. 监控与日志审计

启用日志记录,定期检查可疑活动:

  • 开启传输日志:在vsftpd.conf中设置:
    xferlog_enable=YES
    xferlog_file=/var/log/vsftpd.log
    xferlog_std_format=YES
    
  • 监控日志文件:使用tail命令实时查看登录和传输记录,或通过logwatch工具生成日报。
    sudo tail -f /var/log/vsftpd.log
    

8. 使用虚拟用户(可选,更高安全性)

虚拟用户仅能访问FTP服务,无法登录系统,进一步提升安全性:

  • 生成虚拟用户口令库:创建文本文件(如/etc/vsftpd/account.txt),格式为“用户名+密码”(每行一个),然后生成数据库文件。
    echo -e "ftpuser1\npassword1\nftpuser2\npassword2" > /etc/vsftpd/account.txt
    db_load -T -t hash -f /etc/vsftpd/account.txt /etc/vsftpd/account.db
    chmod 600 /etc/vsftpd/account.db
    
  • 配置PAM认证:创建/etc/pam.d/vsftp.vu文件,内容如下:
    auth required pam_userdb.so db=/etc/vsftpd/account
    account required pam_userdb.so db=/etc/vsftpd/account
    
  • 设置虚拟用户目录:创建专用目录并限制权限(如/ftpsite)。
    sudo useradd -d /ftpsite -s /sbin/nologin virtual_user
    sudo mkdir -p /ftpsite
    sudo chown virtual_user:virtual_user /ftpsite
    sudo chmod 700 /ftpsite
    
  • 修改vsftpd.conf:启用虚拟用户认证,禁用本地用户登录(若仅需虚拟用户)。
    anonymous_enable=NO
    local_enable=NO
    guest_enable=YES
    guest_username=virtual_user
    pam_service_name=vsftp.vu
    

通过以上步骤,可显著提升CentOS上vsftpd服务器的安全性,防范常见攻击(如匿名访问、暴力破解、数据泄露)。需根据实际需求调整配置,并定期进行安全审计。

0