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