在Linux系統下配置防火墻以允許SFTP(SSH File Transfer Protocol)連接,通常涉及以下幾個步驟。以下以iptables
和firewalld
兩種常見的防火墻管理工具為例進行說明。
iptables
配置防火墻允許SSH端口(默認22)
SFTP依賴于SSH,因此首先需要確保SSH端口是開放的。
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
允許SFTP數據傳輸端口范圍
默認情況下,SFTP使用與SSH相同的端口(22)。如果你使用了動態端口范圍,可以允許該范圍內的端口。例如,允許端口范圍1024到65535:
sudo iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT
注意: 如果你的系統配置了特定的防火墻規則,確保這些規則不會與SSH端口沖突。
保存iptables規則
不同的Linux發行版保存iptables規則的方法可能不同。例如,在Debian/Ubuntu上可以使用iptables-persistent
:
sudo apt-get install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload
在CentOS/RHEL上,可以使用service
命令:
sudo service iptables save
重啟防火墻服務(如有必要)
sudo systemctl restart iptables
firewalld
配置防火墻firewalld
是許多現代Linux發行版(如CentOS 7及以上、Fedora、RHEL 7及以上)默認的動態防火墻管理工具。
啟動并啟用firewalld服務
sudo systemctl start firewalld
sudo systemctl enable firewalld
允許SSH端口(默認22)
sudo firewall-cmd --permanent --add-service=ssh
重新加載firewalld配置
sudo firewall-cmd --reload
(可選)允許特定端口范圍
如果需要允許特定的端口范圍用于SFTP數據傳輸,可以使用rich rules
:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="你的IP地址" port protocol="tcp" port="1024-65535" accept'
sudo firewall-cmd --reload
注意: 將
你的IP地址
替換為允許訪問的實際IP地址,以增強安全性。
驗證防火墻規則
查看當前的防火墻狀態和規則:
sudo firewall-cmd --list-all
使用密鑰認證:盡量使用SSH密鑰對進行身份驗證,避免使用密碼認證,提高安全性。
限制SSH用戶權限:通過配置sshd_config
,限制可以SFTP訪問的用戶,并禁止其執行shell訪問。
編輯/etc/ssh/sshd_config
,添加或修改以下配置:
Match User your_sftp_user
ChrootDirectory /home/your_sftp_user
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
然后重啟SSH服務:
sudo systemctl restart sshd
監控SSH/SFTP連接:定期檢查SSH和SFTP的日志文件(通常位于/var/log/auth.log
或/var/log/secure
),監控異?;顒?。
通過以上步驟,你應該能夠在Linux系統下成功配置防火墻以支持SFTP連接,同時確保系統的安全性。