centos

CentOS FTP Server的防火墙设置策略

小樊
50
2025-10-26 01:55:35
栏目: 智能运维

CentOS FTP Server防火墙设置策略

一、基础防火墙配置(以firewalld为例)

  1. 安装与启动firewalld
    CentOS 7及以上版本默认使用firewalld作为防火墙管理工具。若未安装,可通过sudo yum install firewalld安装;安装完成后启动服务并设置开机自启:sudo systemctl start firewalld && sudo systemctl enable firewalld

  2. 开放FTP核心端口
    FTP协议依赖两个核心端口:21端口(控制连接,用于发送命令)和20端口(数据连接,用于传输文件)。需通过以下命令永久开放:
    sudo firewall-cmd --permanent --add-port=21/tcp
    sudo firewall-cmd --permanent --add-port=20/tcp

  3. 开放被动模式端口范围
    被动模式(PASV)下,FTP服务器会随机开放一个动态端口范围用于数据传输。需提前在vsftpd配置文件(/etc/vsftpd/vsftpd.conf)中设置端口范围(如pasv_min_port=50000pasv_max_port=50050),然后在防火墙中开放该范围:
    sudo firewall-cmd --permanent --add-port=50000-50050/tcp

  4. 应用配置并验证
    执行sudo firewall-cmd --reload使设置生效。可通过sudo firewall-cmd --list-all查看已开放的端口和服务,确认ftp服务及指定端口已正确添加。

二、SELinux策略调整(若启用)

  1. 设置FTP目录上下文
    若SELinux处于Enforcing模式(默认),需调整FTP用户主目录的上下文,允许FTP服务访问。执行以下命令(将/home/ftpuser替换为实际用户主目录):
    sudo chcon -Rv --type=public_content_t /home/ftpuser

  2. 启用FTP相关SELinux布尔值

    • 允许FTP用户访问其主目录:sudo setsebool -P ftp_home_dir on
    • 允许FTP服务器完全访问(如上传/下载文件):sudo setsebool -P allow_ftpd_full_access on

三、高级安全增强建议

  1. 限制访问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'

  2. 关闭SELinux(可选)
    若无需SELinux的额外安全保护,可将其设置为Permissive模式(仅记录警告,不阻止操作):
    编辑/etc/sysconfig/selinux文件,将SELINUX=enforcing改为SELINUX=permissive,然后执行sudo setenforce 0

  3. 修改默认端口
    为避免自动化工具扫描,默认的21端口可修改为非标准端口(如2121)。需在vsftpd配置文件中添加listen_port=2121,并开放新端口:
    sudo firewall-cmd --permanent --add-port=2121/tcp

  4. 使用SSL加密(可选)
    为提升数据传输安全性,可配置vsftpd使用SSL/TLS。生成证书后,在vsftpd配置文件中添加:
    ssl_enable=YESssl_cert_file=/etc/pki/tls/certs/vsftpd.crtssl_key_file=/etc/pki/tls/private/vsftpd.key,并重启服务。

0
看了该问题的人还看了