Linux系統(tǒng)下防火墻配置的詳細指南
以下是 Linux 系統(tǒng)下防火墻配置的詳細指南,涵蓋 iptables
、ufw
、firewalld
等主流工具的使用方法和實戰(zhàn)場景!
1. 防火墻工具對比
工具 | 適用場景 | 特點 |
---|---|---|
iptables | 傳統(tǒng) Linux 系統(tǒng)(如 CentOS/RHEL) | 功能強大,規(guī)則靈活,但配置復雜 |
ufw | Ubuntu/Debian 等新發(fā)行版 | 圖形化界面,命令簡潔,適合新手 |
firewalld | RHEL/CentOS 8+/Fedora | 基于服務的動態(tài)防火墻,支持 NAT 和端口轉發(fā) |
2. iptables 基礎配置
2.1 查看規(guī)則
iptables -L -n -v # 查看所有規(guī)則(-n 不解析域名,-v 顯示詳細信息)
2.2 清空規(guī)則
iptables -F # 清空所有規(guī)則 iptables -t nat -F # 清空 NAT 表
2.3 基礎規(guī)則示例
# 允許 SSH(端口 22)入站 iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允許 HTTP/HTTPS(端口 80/443)入站 iptables -A INPUT -p tcp --dport 80,443 -j ACCEPT # 拒絕其他所有入站流量(默認策略) iptables -P INPUT DROP # 保存規(guī)則(根據(jù)系統(tǒng)選擇以下命令) iptables-save | sudo tee /etc/sysconfig/iptables # CentOS/RHEL iptables-save > /etc/iptables/rules.v4 # Ubuntu/Debian
2.4 高級功能
# 設置 NAT 規(guī)則(端口轉發(fā)) iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination :80 iptables -t nat -A POSTROUTING -j MASQUERADE # 限制 IP 訪問頻率(每分鐘最多 10 次) iptables -I INPUT -p tcp --dport 22 -m limit --limit 10/min -j ACCEPT
3. ufw(Uncomplicated Firewall)配置
3.1 啟用與禁用
sudo ufw enable # 啟用防火墻 sudo ufw disable # 禁用防火墻
3.2 規(guī)則配置
# 開放端口(默認策略為拒絕) sudo ufw allow 22/tcp # SSH sudo ufw allow 80,443/tcp # HTTP/HTTPS # 拒絕特定 IP(如 192.168.1.100) sudo ufw deny from 192.168.1.100 to any # 刪除規(guī)則 sudo ufw delete allow 22/tcp # 查看規(guī)則 sudo ufw status numbered # 顯示帶序號的規(guī)則
3.3 高級配置
# 限制 SSH 最大連接數(shù) sudo ufw limit 22/tcp # 默認:每分鐘 60 次,突發(fā) 10 次 # 設置默認策略(優(yōu)先級最低) sudo ufw default deny incoming # 入站默認拒絕 sudo ufw default allow outgoing # 出站默認允許
4. firewalld 配置
4.1 啟用與禁用
sudo systemctl start firewalld # 啟動服務 sudo systemctl enable firewalld # 設置開機自啟 sudo systemctl stop firewalld # 停止服務
4.2 查看與修改規(guī)則
# 查看所有活動區(qū)域規(guī)則 sudo firewall-cmd --list-all # 添加開放端口(永久生效) sudo firewall-cmd --zone=public --add-port=80/tcp --permanent # 臨時添加規(guī)則(重啟后失效) sudo firewall-cmd --zone=public --add-port=80/tcp # 刪除規(guī)則 sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent
4.3 高級功能
# 設置服務(預定義規(guī)則集) sudo firewall-cmd --zone=public --add-service=http --permanent # 添加富規(guī)則(復雜匹配) sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="22" protocol="tcp" accept' # 啟用 NAT 和路由 sudo firewall-cmd --zone=public --add-masquerade --permanent
5. 防火墻策略設計原則
- 最小化開放端口:僅開放必要服務(如 SSH、HTTP)。
- 默認拒絕策略:未明確允許的流量應默認拒絕。
- 分層防御:結合內(nèi)核防火墻(iptables)和 service-level 防火墻(firewalld)。
- 日志記錄:監(jiān)控可疑流量(如
--log
選項)。 - 定期審計:清理過期規(guī)則,更新策略。
6. 實戰(zhàn)場景
場景 1:Web 服務器防火墻配置
# 使用 ufw sudo ufw allow 80,443/tcp sudo ufw default deny incoming sudo ufw enable # 使用 firewalld sudo firewall-cmd --zone=public --add-service=http --permanent sudo firewall-cmd --zone=public --add-service=https --permanent
場景 2:SSH 安全加固
# 限制 IP 白名單(如允許 192.168.1.0/24 網(wǎng)段) sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 22 -j DROP # 使用 fail2ban 防止暴力破解 sudo apt install fail2ban sudo systemctl start fail2ban
7. 常見問題
規(guī)則未生效:
- 確保保存了規(guī)則(如
iptables-save
或firewall-cmd --permanent
)。 - 檢查是否有其他防火墻工具沖突(如同時運行
iptables
和ufw
)。
端口轉發(fā)失?。?/strong>
- 確認 NAT 規(guī)則正確(
iptables -t nat
)。 - 檢查系統(tǒng)轉發(fā)功能是否啟用:
sudo sysctl -w net.ipv4.ip_forward=1
服務無法訪問:
- 確認防火墻區(qū)域(如
public
)包含目標端口。 - 檢查 SELinux/AppArmor 是否攔截流量(需額外配置)。
附錄:工具選擇建議
- 新手:優(yōu)先使用
ufw
,命令簡單直觀。 - 生產(chǎn)環(huán)境:使用
firewalld
管理動態(tài)服務規(guī)則。 - 級需求:結合
iptables
處理復雜 NAT 和流量限制。
通過合理配置防火墻,可以有效保護服務器安全,同時保持服務的可用性!
到此這篇關于Linux系統(tǒng)下防火墻配置的詳細指南的文章就介紹到這了,更多相關Linux防火墻配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Linux bash:./xxx:無法執(zhí)行二進制文件報錯
這篇文章主要介紹了Linux bash:./xxx:無法執(zhí)行二進制文件報錯,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03PHP程序員玩轉Linux系列 lnmp環(huán)境搭建
這篇文章主要為大家詳細介紹了PHP程序員玩轉Linux系列文章,lnmp環(huán)境搭建教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04解決Linux Centos yum-config-manager --add-repo添
這篇文章主要介紹了解決Linux Centos yum-config-manager --add-repo添加倉庫添加錯誤問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04如何使用curl命令發(fā)送POST請求(帶token)
這篇文章主要介紹了如何使用curl命令發(fā)送POST請求(帶token),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04讓Apache 2支持.htaccess并實現(xiàn)目錄加密的方法
這篇文章主要介紹了讓Apache 2支持.htaccess并實現(xiàn)目錄加密的方法,文中給出了詳細的方法步驟,并給出了示例代碼,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-02-02