温馨提示×

SFTP服务器如何配置防火墙

小樊
38
2025-10-31 23:47:00
栏目: 云计算

SFTP服务器防火墙配置指南
SFTP(SSH File Transfer Protocol)基于SSH协议传输数据,默认使用22端口。配置防火墙的核心是允许SSH连接,并根据需求限制访问IP、端口范围或用户权限,以下是具体步骤:

一、基础配置:允许SSH连接(所有系统通用)

无论使用何种防火墙工具,第一步需确保SSH(22端口)开放,这是SFTP正常工作的前提。

  • Ubuntu/Debian(使用UFW)
    运行sudo ufw allow ssh命令,允许SSH连接;若需明确端口,可使用sudo ufw allow 22/tcp。启用防火墙:sudo ufw enable,查看状态:sudo ufw status确认规则生效。
  • CentOS/RHEL(使用Firewalld)
    运行sudo firewall-cmd --permanent --add-service=ssh永久添加SSH服务,sudo firewall-cmd --reload重新加载配置使规则生效。
  • iptables(传统工具)
    运行sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT允许22端口的TCP连接;保存规则(Debian/Ubuntu用sudo iptables-save > /etc/iptables/rules.v4,CentOS用sudo service iptables save)。

二、进阶配置:限制访问范围(提升安全性)

1. 限制访问IP地址

仅允许特定IP访问SFTP,减少非法尝试风险。

  • iptables
    先允许目标IP(如192.168.1.100)访问22端口:sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT;再拒绝其他所有IP的22端口访问:sudo iptables -A INPUT -p tcp --dport 22 -j DROP
  • firewalld(Rich规则)
    使用rich-rule限制源IP,如允许192.168.1.0/24网段访问:sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept';重载配置:sudo firewall-cmd --reload

2. 限制SFTP用户/组

通过SSH配置限制可访问SFTP的用户或组,避免未授权用户使用。
编辑/etc/ssh/sshd_config文件,添加以下内容:

Match User sftpuser1,sftpuser2  # 仅允许sftpuser1和sftpuser2使用SFTP
    ForceCommand internal-sftp    # 强制使用SFTP,禁止shell访问
    ChrootDirectory /home/%u      # 将用户根目录限制为其主目录(增强安全性)
    AllowTcpForwarding no         # 禁止端口转发
    X11Forwarding no              # 禁止X11转发

或限制用户组(如sftpgroup):

Match Group sftpgroup
    ForceCommand internal-sftp
    ChrootDirectory /home/%u

保存后重启SSH服务:sudo systemctl restart sshd(CentOS/RHEL)或sudo systemctl restart ssh(Ubuntu/Debian)。

三、可选配置:调整端口范围(应对特殊需求)

若修改了SSH端口或需要允许动态端口(如SFTP主动模式),需开放对应端口范围。

  • iptables
    假设SSH端口改为2222,动态端口范围为1024-65535,运行:
    sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
    sudo iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT
  • firewalld
    使用rich-rule允许端口范围:
    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port protocol="tcp" port="2222" accept'
    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port protocol="tcp" port="1024-65535" accept'
    重载配置:sudo firewall-cmd --reload

四、验证配置有效性

  • 检查防火墙规则
    Ubuntu/Debian(UFW):sudo ufw status;CentOS(Firewalld):sudo firewall-cmd --list-all;iptables:sudo iptables -L -v
  • 测试SFTP连接
    在客户端使用sftp your_username@server_ip命令,输入密码或密钥(若配置了密钥认证),确认能正常连接并传输文件。

安全建议(补充)

  • 优先使用密钥认证:生成SSH密钥对(ssh-keygen -t rsa -b 4096),将公钥复制到服务器~/.ssh/authorized_keys文件中,禁用密码认证(PasswordAuthentication no),提升身份验证安全性。
  • 定期检查日志:监控/var/log/auth.log(Ubuntu/Debian)或/var/log/secure(CentOS/RHEL)中的SSH登录记录,及时发现异常尝试。

0