如何配置Linux防火墻規(guī)則 iptables基礎(chǔ)配置教程

配置linux防火墻規(guī)則需先查看當(dāng)前規(guī)則,使用sudo iptables -l -n -v;可選擇清除現(xiàn)有規(guī)則sudo iptables -f和-x;設(shè)置默認(rèn)策略拒絕所有并按需放行;添加常用服務(wù)規(guī)則如允許回環(huán)訪(fǎng)問(wèn)、已建立連接、sshhttp/https端口;最后保存規(guī)則并確保開(kāi)機(jī)生效。

如何配置Linux防火墻規(guī)則 iptables基礎(chǔ)配置教程

配置linux防火墻規(guī)則,其實(shí)并不復(fù)雜,但得清楚自己要放行什么、阻擋什么。iptables 是 Linux 系統(tǒng)中非常基礎(chǔ)且強(qiáng)大的防火墻工具,雖然現(xiàn)在有 nftables 逐漸替代的趨勢(shì),但在很多老系統(tǒng)和一些嵌入式環(huán)境中,它仍然在廣泛使用。掌握基本的 iptables 配置,能讓你更靈活地控制服務(wù)器的安全策略。

如何配置Linux防火墻規(guī)則 iptables基礎(chǔ)配置教程


1. 查看當(dāng)前防火墻規(guī)則

在動(dòng)手修改之前,先看看當(dāng)前的規(guī)則是什么樣的:

如何配置Linux防火墻規(guī)則 iptables基礎(chǔ)配置教程

sudo iptables -L -n -v
  • -L 表示列出規(guī)則;
  • -n 顯示 IP 和端口而不是域名和服務(wù)名;
  • -v 顯示詳細(xì)信息,比如數(shù)據(jù)包數(shù)量等。

你可能會(huì)看到一鏈(chain)和規(guī)則(rules),比如 input, FORWARD, OUTPUT 這三個(gè)默認(rèn)鏈。大多數(shù)時(shí)候我們只需要調(diào)整 INPUT 鏈,也就是進(jìn)入本機(jī)的數(shù)據(jù)包。


2. 清除現(xiàn)有規(guī)則(可選)

如果你是剛配置,或者想從頭開(kāi)始,可以清空已有規(guī)則:

如何配置Linux防火墻規(guī)則 iptables基礎(chǔ)配置教程

sudo iptables -F sudo iptables -X
  • -F 是 flush,清空所有規(guī)則;
  • -X 刪除用戶(hù)自定義的鏈。

?? 注意:清空規(guī)則后如果沒(méi)有及時(shí)設(shè)置新的允許規(guī)則,可能會(huì)把自己關(guān)在外面,尤其是遠(yuǎn)程服務(wù)器。建議操作前先添加一條允許 SSH 的規(guī)則。


3. 設(shè)置默認(rèn)策略:拒絕所有,再按需放行

這是比較安全的做法:

sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT ACCEPT
  • INPUT 默認(rèn)拒絕,只允許特定流量進(jìn)來(lái);
  • FORWARD 拒絕,除非你在做路由器或NAT;
  • OUTPUT 接受,讓本機(jī)主動(dòng)發(fā)出的請(qǐng)求沒(méi)問(wèn)題。

接下來(lái)就是一個(gè)個(gè)添加允許的規(guī)則了。


4. 添加常用服務(wù)規(guī)則

允許本地回環(huán)訪(fǎng)問(wèn)(很重要)

sudo iptables -A INPUT -i lo -j ACCEPT

這條規(guī)則允許本機(jī)內(nèi)部通信,很多服務(wù)都依賴(lài)這個(gè)接口

允許已建立連接的流量通過(guò)

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

這樣可以讓已經(jīng)建立的連接繼續(xù)通信,比如你訪(fǎng)問(wèn)網(wǎng)頁(yè)時(shí)返回的數(shù)據(jù)就能順利回來(lái)。

允許SSH訪(fǎng)問(wèn)(別把自己鎖在外面)

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

如果改過(guò)SSH端口,記得把 –dport 22 改成你的實(shí)際端口號(hào)。

允許HTTP/HTTPS訪(fǎng)問(wèn)

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

網(wǎng)站服務(wù)常用的端口,需要開(kāi)放才能被訪(fǎng)問(wèn)到。


5. 保存并開(kāi)機(jī)生效

不同發(fā)行版保存方式略有不同,以 centos/RHEL 為例:

sudo service iptables save

ubuntu 可以用 iptables-save 命令保存到文件,并在啟動(dòng)時(shí)加載:

sudo iptables-save > /etc/iptables/rules.v4

或者寫(xiě)個(gè)腳本在開(kāi)機(jī)時(shí)自動(dòng)執(zhí)行。


基本上就這些。
剛開(kāi)始配的時(shí)候容易漏掉某些規(guī)則,比如忘記允許 established 連接,結(jié)果連不上服務(wù)器;或者沒(méi)開(kāi) loopback 導(dǎo)致本地服務(wù)出問(wèn)題。
只要一步步來(lái),理解每個(gè)規(guī)則的作用,就能避免踩坑。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊15 分享