CentOS FTP Server防火墙设置策略
安装与启动firewalld
CentOS 7及以上版本默认使用firewalld作为防火墙管理工具。若未安装,可通过sudo yum install firewalld安装;安装完成后启动服务并设置开机自启:sudo systemctl start firewalld && sudo systemctl enable firewalld。
开放FTP核心端口
FTP协议依赖两个核心端口:21端口(控制连接,用于发送命令)和20端口(数据连接,用于传输文件)。需通过以下命令永久开放:
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=20/tcp。
开放被动模式端口范围
被动模式(PASV)下,FTP服务器会随机开放一个动态端口范围用于数据传输。需提前在vsftpd配置文件(/etc/vsftpd/vsftpd.conf)中设置端口范围(如pasv_min_port=50000、pasv_max_port=50050),然后在防火墙中开放该范围:
sudo firewall-cmd --permanent --add-port=50000-50050/tcp。
应用配置并验证
执行sudo firewall-cmd --reload使设置生效。可通过sudo firewall-cmd --list-all查看已开放的端口和服务,确认ftp服务及指定端口已正确添加。
设置FTP目录上下文
若SELinux处于Enforcing模式(默认),需调整FTP用户主目录的上下文,允许FTP服务访问。执行以下命令(将/home/ftpuser替换为实际用户主目录):
sudo chcon -Rv --type=public_content_t /home/ftpuser。
启用FTP相关SELinux布尔值
sudo setsebool -P ftp_home_dir on。sudo setsebool -P allow_ftpd_full_access on。限制访问IP
使用firewalld的白名单功能,仅允许特定IP或网段访问FTP服务。例如,允许192.168.1.0/24网段访问:
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ftp" accept'。
关闭SELinux(可选)
若无需SELinux的额外安全保护,可将其设置为Permissive模式(仅记录警告,不阻止操作):
编辑/etc/sysconfig/selinux文件,将SELINUX=enforcing改为SELINUX=permissive,然后执行sudo setenforce 0。
修改默认端口
为避免自动化工具扫描,默认的21端口可修改为非标准端口(如2121)。需在vsftpd配置文件中添加listen_port=2121,并开放新端口:
sudo firewall-cmd --permanent --add-port=2121/tcp。
使用SSL加密(可选)
为提升数据传输安全性,可配置vsftpd使用SSL/TLS。生成证书后,在vsftpd配置文件中添加:
ssl_enable=YES、ssl_cert_file=/etc/pki/tls/certs/vsftpd.crt、ssl_key_file=/etc/pki/tls/private/vsftpd.key,并重启服务。