确保CentOS系统和vsftpd软件为最新版本,及时修复已知安全漏洞:
sudo yum update -y
sudo yum install vsftpd -y
编辑/etc/vsftpd/vsftpd.conf文件,调整以下核心配置:
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES # 若用户主目录需写入,设置为YES(否则设为NO)
max_login_attempts=3
account_lock=YES
/etc/vsftpd/user_list文件指定允许/拒绝的用户(userlist_enable=YES、userlist_deny=NO表示仅允许列表内用户登录)。ls_recurse_enable=NO
ascii_download_enable=NO
使用firewalld限制FTP服务访问,仅允许受信任IP或端口:
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=1024-1048/tcp
sudo firewall-cmd --reload
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
加密数据传输,防止密码和文件内容被窃取:
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.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
调整SELinux策略,限制vsftpd的权限:
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
通过PAM(Pluggable Authentication Modules)和账户策略强化登录安全:
passwd命令或chage工具)。/etc/pam.d/vsftpd文件,添加以下行(限制登录尝试次数)。auth required pam_tally2.so deny=3 unlock_time=300
启用日志记录,定期检查可疑活动:
vsftpd.conf中设置:xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
tail命令实时查看登录和传输记录,或通过logwatch工具生成日报。sudo tail -f /var/log/vsftpd.log
虚拟用户仅能访问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
/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
anonymous_enable=NO
local_enable=NO
guest_enable=YES
guest_username=virtual_user
pam_service_name=vsftp.vu
通过以上步骤,可显著提升CentOS上vsftpd服务器的安全性,防范常见攻击(如匿名访问、暴力破解、数据泄露)。需根据实际需求调整配置,并定期进行安全审计。