SFTP防火墙配置指南(基于Linux常见防火墙工具)
SFTP(SSH File Transfer Protocol)基于SSH协议传输数据,默认使用TCP 22端口。配置防火墙时,核心目标是允许该端口的入站连接,同时可通过规则限制访问IP、端口范围等,提升安全性。以下是具体配置步骤:
一、前置准备
-
确认SFTP服务状态:确保SSH服务(SFTP依赖SSH)已启动并运行。
sudo systemctl status sshd # CentOS/RHEL sudo systemctl status ssh # Debian/Ubuntu若未运行,使用
sudo systemctl start sshd启动并设置开机自启(sudo systemctl enable sshd)。 -
确认防火墙工具:Linux常见防火墙工具为
iptables(传统)和firewalld(动态管理,推荐)。通过以下命令确认:sudo systemctl status firewalld # 检查firewalld状态 sudo iptables -L -n # 检查iptables规则(若有输出则表示已安装)
二、使用firewalld配置SFTP防火墙规则(推荐)
firewalld是现代Linux发行版(如CentOS 7+、Fedora、RHEL 7+)的默认防火墙工具,支持动态规则管理和Zone概念,配置更灵活。
1. 基础配置:允许SFTP默认端口(22)
# 允许SSH服务(包含SFTP)通过防火墙(永久生效)
sudo firewall-cmd --permanent --add-service=ssh
# 重新加载firewalld以应用规则
sudo firewall-cmd --reload
2. 可选:限制访问IP(增强安全性)
若仅需特定IP访问SFTP,可使用rich规则(替代基础规则):
# 允许指定IP(如192.168.1.100)访问SFTP端口22
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'
# 拒绝其他所有IP访问SFTP端口(可选,需谨慎使用)
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port protocol="tcp" port="22" reject'
# 重新加载规则
sudo firewall-cmd --reload
3. 可选:修改SFTP端口(非默认22时)
若已将SSH/SFTP端口修改为其他端口(如2222),需允许新端口:
# 允许新端口(如2222)通过防火墙(永久生效)
sudo firewall-cmd --permanent --add-port=2222/tcp
# 重新加载规则
sudo firewall-cmd --reload
4. 验证规则
查看当前firewalld规则,确认SFTP端口已开放:
sudo firewall-cmd --list-all
输出应包含ssh服务或指定的端口(如22/tcp或2222/tcp)。
三、使用iptables配置SFTP防火墙规则(传统)
iptables是较老的防火墙工具,适用于需要精细控制流量的场景。
1. 基础配置:允许SFTP默认端口(22)
# 允许TCP 22端口的入站连接
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 设置默认策略(可选,增强安全性):拒绝所有其他入站连接
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# 保存规则(根据发行版选择)
sudo iptables-save | sudo tee /etc/iptables.rules # Debian/Ubuntu
sudo service iptables save # CentOS 6及以下
2. 可选:限制访问IP
# 允许指定IP(如192.168.1.100)访问22端口
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT
# 拒绝其他所有IP访问22端口
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
# 保存规则(同上)
3. 可选:允许端口范围(若SFTP使用动态端口)
若SFTP配置了动态端口范围(如1024-65535),需允许该范围:
sudo iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT
sudo iptables-save | sudo tee /etc/iptables.rules
4. 验证规则
查看当前iptables规则:
sudo iptables -L -n -v
确认ACCEPT规则中包含tcp dpt:22(或自定义端口)。
四、其他安全建议(配合防火墙使用)
-
禁用密码认证,使用密钥认证:编辑
/etc/ssh/sshd_config,设置:PasswordAuthentication no PubkeyAuthentication yes重启SSH服务:
sudo systemctl restart sshd。 -
限制SFTP用户权限:通过
sshd_config的Match指令,将用户限制在特定目录(chroot),禁止shell访问:Match User sftpuser ChrootDirectory /home/sftpuser ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no重启SSH服务。
-
监控连接日志:定期检查
/var/log/auth.log(Debian/Ubuntu)或/var/log/secure(CentOS/RHEL),排查异常登录行为。
通过以上步骤,可完成SFTP防火墙配置,确保安全的同时允许合法连接。需根据实际环境调整规则(如IP范围、端口),避免过度限制或暴露风险。