配置FTP服务器的安全性是非常重要的,以防止未经授权的访问和数据泄露。以下是一些常见的安全配置步骤和建议,适用于大多数Linux FTP服务器软件,如vsftpd、ProFTPD和Pure-FTPd。
确保所有FTP用户都使用强密码。强密码应包含字母、数字和特殊字符,并且长度至少为8个字符。
匿名访问可能会带来安全风险。除非有特殊需求,否则应禁用匿名访问。
编辑/etc/vsftpd/vsftpd.conf文件:
anonymous_enable=NO
编辑/etc/proftpd/proftpd.conf文件:
<Anonymous ~ftp>
User nobody
Group nogroup
UserAlias anonymous ftp
DirectoryAlias /home/ftp ftp
</Anonymous>
然后注释掉或删除这些行以禁用匿名访问。
使用SSL/TLS加密FTP连接可以防止数据在传输过程中被窃听。
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
/etc/vsftpd/vsftpd.conf文件:ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/proftpd.pem -out /etc/ssl/private/proftpd.pem
/etc/proftpd/proftpd.conf文件:TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol all -SSLv2 -SSLv3
TLSRSACertificateFile /etc/ssl/private/proftpd.pem
TLSRSACertificateKeyFile /etc/ssl/private/proftpd.pem
确保防火墙只允许FTP控制连接(通常是端口21)和数据连接(通常是端口20)。
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 990 -j ACCEPT # FTPS控制连接
sudo iptables -A INPUT -p tcp --dport 989 -j ACCEPT # FTPS数据连接
sudo iptables -P INPUT DROP
将FTP用户限制在其主目录中,可以防止他们访问系统中的其他文件。
编辑/etc/vsftpd/vsftpd.conf文件:
chroot_local_user=YES
allow_writeable_chroot=YES
编辑/etc/proftpd/proftpd.conf文件:
<Directory /home/ftp>
ChrootEveryone yes
AllowOverwrite no
</Directory>
定期更新FTP服务器软件以修补已知的安全漏洞,并定期审计服务器配置和日志文件以检测异常活动。
通过以上步骤,可以显著提高Linux FTP服务器的安全性。请根据具体需求和环境调整配置。