在CentOS系統上設置SFTP服務器的防火墻,通常需要確保SSH(因為SFTP是基于SSH的)端口(默認是22)是開放的。以下是一些基本步驟來配置防火墻以允許SFTP連接:
檢查防火墻狀態:
首先,你需要檢查防火墻是否已經安裝并且正在運行。CentOS 7及更高版本默認使用firewalld作為防火墻管理工具。
sudo systemctl status firewalld
如果防火墻沒有運行,你可以啟動它:
sudo systemctl start firewalld
開放SSH端口:
使用firewall-cmd命令來添加規則,允許TCP端口22上的流量。
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
--permanent參數表示這個規則會在系統重啟后依然有效。--reload參數用來重新加載防火墻配置,而不需要重啟防火墻服務。
確認規則已添加: 你可以使用以下命令來查看當前的防火墻規則,確認SSH服務已經被允許。
sudo firewall-cmd --list-all
在輸出中,你應該能看到ssh服務在services列表中。
(可選)開放特定IP: 如果你只想允許特定IP地址訪問SFTP服務器,可以使用以下命令:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="特定IP地址" port protocol="tcp" port="22" accept'
sudo firewall-cmd --reload
將特定IP地址替換為你想要允許的IP地址。
檢查SELinux設置: CentOS默認啟用了SELinux,它可能會阻止SFTP連接。你需要確保SELinux配置允許SFTP連接。你可以臨時將SELinux設置為寬容模式來測試是否是SELinux導致的問題:
sudo setenforce 0
如果這樣解決了問題,你需要調整SELinux策略來永久允許SFTP連接,而不是簡單地關閉SELinux。
重啟SSH服務: 為了確保所有的更改都已生效,你可以重啟SSH服務:
sudo systemctl restart sshd
完成以上步驟后,你的CentOS SFTP服務器應該可以通過防火墻接受連接了。記得在生產環境中謹慎配置防火墻規則,以確保系統的安全。