SFTP服务器防火墙配置指南
SFTP(SSH File Transfer Protocol)基于SSH协议传输数据,默认使用22端口。配置防火墙的核心是允许SSH连接,并根据需求限制访问IP、端口范围或用户权限,以下是具体步骤:
无论使用何种防火墙工具,第一步需确保SSH(22端口)开放,这是SFTP正常工作的前提。
sudo ufw allow ssh命令,允许SSH连接;若需明确端口,可使用sudo ufw allow 22/tcp。启用防火墙:sudo ufw enable,查看状态:sudo ufw status确认规则生效。sudo firewall-cmd --permanent --add-service=ssh永久添加SSH服务,sudo firewall-cmd --reload重新加载配置使规则生效。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)。仅允许特定IP访问SFTP,减少非法尝试风险。
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。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。通过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主动模式),需开放对应端口范围。
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPTrich-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。sudo ufw status;CentOS(Firewalld):sudo firewall-cmd --list-all;iptables:sudo iptables -L -v。sftp your_username@server_ip命令,输入密码或密钥(若配置了密钥认证),确认能正常连接并传输文件。ssh-keygen -t rsa -b 4096),将公钥复制到服务器~/.ssh/authorized_keys文件中,禁用密码认证(PasswordAuthentication no),提升身份验证安全性。/var/log/auth.log(Ubuntu/Debian)或/var/log/secure(CentOS/RHEL)中的SSH登录记录,及时发现异常尝试。