- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯網協會理事單位
- 安全聯盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
復雜的網絡環境中,服務器面臨著各種各樣的安全威脅。防火墻作為網絡安全的第一道防線,對于保護運行 Ubuntu 系統的服務器至關重要。通過合理配置防火墻規則,可以限制網絡訪問,阻止未經授權的連接,從而有效保護系統資源和數據安全。本文將深入研究 Ubuntu 系統中常用的防火墻命令及其操作方法,幫助 Shell 腳本工程師更好地利用防火墻維護系統安全。
Ubntu 防火墻概述
Ubuntu 系統默認使用的防火墻工具是ufw(Uncomplicated Firewall),它是基于iptables的一個前端工具,提供了一種簡單直觀的方式來管理防火墻規則。iptables是 Linux 內核中集成的一個功能強大的數據包過濾系統,ufw簡化了iptables的操作,使得普通用戶和系統管理員能夠更輕松地配置防火墻。
1.安裝
如果系統未預裝ufw,可以使用以下命令進行安裝:
sudo apt update
sudo apt install ufw
2.檢查狀態
使用以下命令查看ufw的狀態:
sudo ufw status
該命令會顯示防火墻是否啟用,以及當前的默認策略和已設置的規則。例如,輸出可能如下
Status: inactive
表示防火墻當前未啟用。
1.啟用
要啟用ufw,使用以下命令:
sudo ufw enable
啟用時,系統會提示確認操作,因為啟用防火墻可能會影響現有網絡連接。確認后,防火墻將開始按照預設規則過濾網絡流量。
2. 禁用:若要禁用ufw,可執行:
sudo ufw disable
禁用后,系統將不再對網絡流量進行防火墻規則的過濾。
1.設置默認允許策略
默認情況下,ufw的策略是拒絕所有傳入連接,允許所有傳出連接。如果希望設置默認允許傳入連接,可以使用以下命令:
sudo ufw default allow incoming
2.設置默認拒絕策略
若要恢復默認的拒絕傳入連接策略,執行:
sudo ufw default deny incoming
同樣,對于傳出連接,也可以使用類似命令設置默認策略:
sudo ufw default allow outgoing
sudo ufw default deny outgoing
設置默認策略時需謹慎,尤其是允許傳入連接的策略,可能會增加系統的安全風險。
1.允許特定端口
要允許特定端口的傳入連接,例如允許 SSH 服務(默認端口 22),可以使用:
sudo ufw allow 22
如果要允許特定端口范圍,如允許 8000 - 8005 端口的 TCP 連接:
sudo ufw allow 8000:8005/tcp
2.拒絕特定端口
拒絕某個端口的傳入連接,比如拒絕 8080 端口的 TCP 連接:
sudo ufw deny 8080/tcp
3.根據應用程序配置
ufw還支持根據應用程序名稱來配置規則。例如,要允許 Apache Web 服務器(假設已安裝并配置了相應的應用程序配置文件)
sudo ufw allow 'Apache'
4.刪除規則
若要刪除已添加的規則,可以使用規則編號。首先通過sudo ufw status numbered查看規則編號,然后使用delete選項刪除規則。例如,要刪除編號為 3 的規則:
sudo ufw delete 3
雖然ufw提供了便捷的防火墻管理方式,但對于更復雜的需求,直接操作iptables可能更合適。iptables通過鏈(chain)和規則(rule)來管理數據包的過濾。
1.鏈
iptables有四個內置鏈,分別是INPUT(處理傳入數據包)、OUTPUT(處理傳出數據包)、FORWARD(處理轉發數據包)和PREROUTING(在數據包到達路由決策之前處理)。
2.規則
規則定義了如何處理符合特定條件的數據包,包括匹配條件(如源 IP、目的 IP、端口號等)和動作(如接受、拒絕、丟棄等)。
1.允許特定 IP 訪問
允許192.168.1.100這個 IP 地址訪問本機的 SSH 服務(端口 22):
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT
這里-A表示在鏈的末尾追加規則,-p tcp指定協議為 TCP,-s指定源 IP,--dport指定目的端口,-j ACCEPT表示接受該數據包。
2. 拒絕特定 IP 訪問:拒絕10.0.0.1這個 IP 地址訪問本機的任何服務:
sudo iptables -A INPUT -s 10.0.0.1 -j DROP
-j DROP表示丟棄該數據包。
3. 保存與恢復規則:iptables的規則在系統重啟后默認不會保存。要保存當前的iptables規則,可以使用iptables -save命令將規則保存到文件,例如:
sudo iptables -save > /etc/iptables/rules.v4
對于 IPv6 的規則,可以使用類似命令保存到相應文件:
sudo ip6tables -save > /etc/iptables/rules.v6
在系統重啟后,可以通過以下命令恢復規則:
sudo iptables -restore < /etc/iptables/rules.v4sudo ip6tables -restore < /etc/iptables/rules.v6
作為 Shell 腳本工程師,常常需要將防火墻規則集成到腳本中,以實現自動化的系統配置和管理。
假設我們要編寫一個腳本,在系統初始化時配置防火墻規則,允許 SSH、HTTP 和 HTTPS 服務,并設置默認拒絕策略:
#!/bin/bash# 檢查ufw是否安裝,未安裝則安裝if! command -v ufw &> /dev/nullthen sudo apt update sudo apt install ufw -yfi# 啟用ufwsudo ufw enable# 設置默認策略sudo ufw default deny incomingsudo ufw default allow outgoing# 允許SSH、HTTP和HTTPS服務sudo ufw allow 22sudo ufw allow 80sudo ufw allow 443
以下腳本使用iptables實現允許特定子網訪問本機的 Web 服務(端口 80 和 443),并拒絕其他所有非必要的傳入連接:
#!/bin/bash# 清除現有規則sudo iptables -Fsudo iptables -X# 設置默認策略為DROPsudo iptables -P INPUT DROPsudo iptables -P OUTPUT DROPsudo iptables -P FORWARD DROP# 允許環回接口流量sudo iptables -A INPUT -i lo -j ACCEPTsudo iptables -A OUTPUT -o lo -j ACCEPT# 允許特定子網訪問Web服務sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 80 -j ACCEPTsudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 443 -j ACCEPT# 允許已建立和相關的連接sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTsudo iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
1.測試與備份
在進行任何防火墻配置更改之前,尤其是在生產環境中,一定要進行充分的測試。可以在測試環境中模擬各種網絡訪問場景,確保新的規則不會影響正常的業務運行。同時,備份當前的防火墻配置,以便在出現問題時能夠快速恢復。
2.最小權限原則
遵循最小權限原則配置防火墻規則。只允許必要的網絡訪問,避免開放過多的端口和服務,以降低系統的安全風險。
3.定期審查
隨著系統的運行和業務需求的變化,防火墻規則也需要定期審查和更新。及時刪除不再使用的規則,確保防火墻配置始終與實際需求相符。
隨著網絡安全威脅的不斷增加,合理配置防火墻規則已成為保護服務器系統安全的必要措施。通過使用ufw和iptables,系統管理員可以在Ubuntu環境下有效管理網絡訪問,限制潛在的風險。希望本文提供的防火墻配置方法和腳本示例能夠為Shell腳本工程師和系統管理員提供實用的參考,幫助他們構建更加安全的服務器環境。
藍隊云官網上擁有完善的技術支持庫可供參考,大家可自行查閱,更多技術問題,可以直接咨詢。同時,藍隊云整理了運維必備的工具包免費分享給大家使用,需要的朋友可以直接咨詢。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP