歡迎來到藍(lán)隊(duì)云技術(shù)小課堂,每天分享一個(gè)技術(shù)小知識(shí)。
在 Ubuntu 系統(tǒng)中配置 iptables 防火墻,實(shí)際上是通過一系列步驟來控制網(wǎng)絡(luò)流量的進(jìn)出,確保系統(tǒng)的安全性。下面我將詳細(xì)講解如何安裝、配置以及確保防火墻生效的過程。
1. 檢查是否安裝 iptables
首先,檢查系統(tǒng)中是否已經(jīng)安裝了 iptables:
whereis iptables
如果輸出了相關(guān)信息,說明已經(jīng)安裝了。如果沒有安裝,可以通過以下命令進(jìn)行安裝:
sudo apt-get install iptables
2. 編輯 iptables 策略
iptables 的規(guī)則可以通過編輯 /etc/iptables.rules 文件來進(jìn)行配置。在這個(gè)文件中,我們可以設(shè)置允許和拒絕的網(wǎng)絡(luò)流量。例如,常見的規(guī)則設(shè)置如下:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# 允許常用端口
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT # 允許 HTTP
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT # 允許 HTTPS
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT # 允許 SSH
# 允許本地回環(huán)接口
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
# 允許 ICMP 請(qǐng)求(即 ping)
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# 允許已建立連接的流量
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 其他未明確允許的流量一律拒絕
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
在上述規(guī)則中,我們開放了 HTTP (80)、HTTPS (443) 和 SSH (22) 端口,同時(shí)確保本地回環(huán)接口 (lo) 不受限制。此外,我們?cè)试S ICMP 請(qǐng)求(即 ping)并確保已建立的連接能夠正常通信。
3. 加載并生效規(guī)則
編輯完成規(guī)則文件后,可以通過以下命令加載并使規(guī)則生效:
sudo iptables-restore < /etc/iptables.rules
使用 iptables -L -n 命令可以查看當(dāng)前的防火墻規(guī)則,確認(rèn)配置是否生效。
4. 確保防火墻開機(jī)自啟
為了確保防火墻配置在系統(tǒng)重啟后自動(dòng)加載,我們需要做以下操作:
創(chuàng)建軟鏈接,確保防火墻規(guī)則在系統(tǒng)啟動(dòng)時(shí)加載:
sudo ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/
編輯 /lib/systemd/system/rc-local.service 文件,在 [Install] 部分添加以下內(nèi)容:
[Install]
WantedBy=multi-user.target
編輯并創(chuàng)建 /etc/rc.local 文件,添加防火墻啟動(dòng)命令:
sudo vi /etc/rc.local
在文件中加入:
iptables-restore < /etc/iptables.rules
給 /etc/rc.local 文件添加執(zhí)行權(quán)限:
sudo chmod +x /etc/rc.local
最后,啟用并啟動(dòng)服務(wù):
sudo systemctl start rc-local.service
sudo systemctl enable rc-local.service
5. 常見命令和操作
查看現(xiàn)有規(guī)則:
sudo iptables -L -n
清空現(xiàn)有規(guī)則并設(shè)置默認(rèn)策略:
sudo iptables -P INPUT ACCEPT
sudo iptables -F
sudo iptables -X
sudo iptables -Z
允許來自本地回環(huán)接口的數(shù)據(jù)包:
sudo iptables -A INPUT -i lo -j ACCEPT
開放常用端口:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允許 SSH
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允許 HTTP
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 允許 HTTPS
拒絕來自特定 IP 的請(qǐng)求:
sudo iptables -I INPUT -s 192.168.1.100 -j DROP
保存規(guī)則:
sudo service iptables save
藍(lán)隊(duì)云官網(wǎng)上擁有完善的技術(shù)支持庫(kù)可供參考,大家可自行查閱,更多技術(shù)問題,可以直接咨詢。同時(shí),藍(lán)隊(duì)云整理了運(yùn)維必備的工具包免費(fèi)分享給大家使用,需要的朋友可以直接咨詢。
更多技術(shù)知識(shí),藍(lán)隊(duì)云期待與你一起探索。