目錄
- 防火墻簡介
- iptables 與 firewalld
- iptables 基礎(chǔ)
3.1 鏈的概念
3.2 表的概念
3.3 鏈與表的關(guān)系
3.4 數(shù)據(jù)通過的流程- iptables 語法
- iptables nat表的應(yīng)用
1. 防火墻簡介
防火墻是一種應(yīng)用于網(wǎng)絡(luò)上的過濾機(jī)制闷盔,從保護(hù)對象上可分為:主機(jī)防火墻、網(wǎng)絡(luò)防火墻秒啦,從物理上可分為:硬件防火墻肌幽、軟件防火墻
-
保護(hù)對象上的分類:
- 主機(jī)防火墻:針對于單個(gè)主機(jī)進(jìn)行防護(hù)
- 網(wǎng)絡(luò)防火墻:往往部署于網(wǎng)絡(luò)邊界靴跛,對流入以及流出的流量進(jìn)行過濾
-
物理上的分類:
- 硬件防火墻:擁有經(jīng)過特別設(shè)計(jì)的硬件及芯片,性能高逢净、成本高
- 軟件防火墻:應(yīng)用軟件處理邏輯運(yùn)行于通用硬件平臺之上的防火墻,性能低智嚷、成本低
2. firewalld 與 iptables
2.1 異同點(diǎn)
相同點(diǎn):firewalld 與 iptables 都是 Linux 中防火墻的管理程序,但其實(shí)其角色主要為對于防火墻策略的管理纺且,真正的防火墻執(zhí)行者是位于內(nèi)核中的 Netfilter盏道。
-
不同點(diǎn):
- iptables 僅能通過命令行進(jìn)行配置;而 firewalld提供了圖形接口载碌,類似windows防火墻的操作方式
- iptables 每一個(gè)單獨(dú)更改意味著清除所有舊的規(guī)則猜嘱,并從 /etc/sysconfig/iptables 中讀取所有新的規(guī)則;而 firewalld 在有規(guī)則變動(dòng)后嫁艇,可以僅僅運(yùn)行規(guī)則中的不同之處朗伶,即在 firewalld 運(yùn)行時(shí)間內(nèi),改變設(shè)置時(shí)可以不丟失現(xiàn)行鏈接
- iptables 的配置文件在 /etc/sysconfig/iptables 中步咪;而 firewalld 的配置文件在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各種 XML 文件中
- iptables 沒有守護(hù)進(jìn)程论皆,并不能算是真正意義上的服務(wù);而 firewalld 有守護(hù)進(jìn)程
2.2 關(guān)閉 firewalld猾漫,開啟 iptables
2.2.1 關(guān)閉 firewalld
- 關(guān)閉 firewalld 服務(wù):
syctemctl stop firewalld
- 禁用 firewalld 服務(wù):
systemctl disable firewalld
2.2.2 開啟 iptables
- 安裝 iptables:
yum -y install iptables-services
- 啟用 iptables:
systemctl enable iptables
- 開啟 iptables:
systemctl start iptables
3. iptables 基礎(chǔ)
iptables 準(zhǔn)確來講并不是防火墻点晴,真正的防火墻是運(yùn)行于系統(tǒng)內(nèi)核中的 netfilter,而 iptables 僅僅是 netfilter 的代言人悯周,其所負(fù)責(zé)的主要功能便是與用戶交互粒督,獲取到用戶的要求,并轉(zhuǎn)化成 netfilter 可以接受的信息禽翼。
防火墻的實(shí)現(xiàn)機(jī)制
防火墻的核心處理機(jī)制是過濾屠橄,而說到過濾,就必須具有“條件 & 動(dòng)作”這兩個(gè)關(guān)鍵要素捐康,而在 iptables 中仇矾,這兩種要素分別叫做“rule & target”,可以理解成符合 rule 的流量將會(huì)去往 target解总。匹配規(guī)則的要素
防火墻的處理對象是網(wǎng)絡(luò)流量,而對于網(wǎng)絡(luò)流量來講姐仅,標(biāo)識流量的最重要的信息便是五元組花枫,包括:S_IP, S_PORT, D_IP, DI_PORT, TCP/UDP,iptables 常用的也往往是根據(jù)五元組中的某個(gè)或某些要素進(jìn)行過濾
舉個(gè)栗子
防火墻的主要功能是過濾掏膏,那我們不妨把防火墻看成是個(gè)社區(qū)的廢水處理廠劳翰,負(fù)責(zé)將社區(qū)的生活廢水收集起來,經(jīng)過多道工序的處理后馒疹,返還給社區(qū)佳簸。
鏈:既然是要處理廢水,那我們首先要在廢水處理的個(gè)別關(guān)鍵環(huán)節(jié)上設(shè)置集中處理的“處理鏈”,在“處理鏈”中放置各種不同的過濾網(wǎng)生均、膜以及化學(xué)配方听想。
表:即便是不同的處理鏈中,可能會(huì)用到一些相同的處理技術(shù)马胧,比如粗濾膜汉买、細(xì)濾膜,為了方便這些技術(shù)的復(fù)用佩脊,廢水處理廠將功能類似的處理技術(shù)封裝成集合蛙粘,這樣能夠更加方便地使用
3.1 鏈的概念
3.1.1 什么是鏈?
就是從報(bào)文進(jìn)入到報(bào)文離開這整個(gè)期間威彰,計(jì)算機(jī)處理報(bào)文的關(guān)鍵環(huán)節(jié)出牧。
就好比污水處理廠,污水進(jìn)入前得處理一下歇盼,進(jìn)入后得沉淀一下崔列,送回時(shí)又得進(jìn)行一些處理,那么這3個(gè)節(jié)點(diǎn)就是關(guān)鍵環(huán)節(jié)旺遮。
3.1.2 為何叫做鏈赵讯?
因?yàn)榉阑饓κ菍?bào)文進(jìn)行規(guī)則匹配,然后執(zhí)行相應(yīng)動(dòng)作耿眉。但在關(guān)鍵環(huán)節(jié)上边翼,往往不止一條規(guī)則,而是有大量的規(guī)則鸣剪,而且這些規(guī)則都是按順序排列的组底,待匹配的報(bào)文需要按順序一個(gè)一個(gè)規(guī)則的進(jìn)行匹配,直到匹配到一條規(guī)則為止筐骇,所以在每個(gè)關(guān)鍵環(huán)節(jié)上的匹配過程债鸡,就像是一條有順序的鏈。
好比污水處理廠铛纬,必須在個(gè)別關(guān)鍵環(huán)節(jié)部署處理措施厌均,比如在進(jìn)入廢水廠時(shí),先進(jìn)行一批處理告唆。處理可能包括粗濾棺弊、細(xì)濾等各種方式,而且各種方式不能隨意排列擒悬,必定是按照一定的順序依次進(jìn)行模她,比如先粗濾,再細(xì)濾懂牧。
3.1.3 iptables 有哪些鏈侈净?
記住,鏈其實(shí)就是報(bào)文處理的重要環(huán)節(jié),所以很容易就得出有以下兩個(gè)重要環(huán)節(jié):
- INPUT:進(jìn)入主機(jī)
- OUTPUT:離開主機(jī)
但還有一種復(fù)雜的情況畜侦,就是報(bào)文的目標(biāo)并不是本主機(jī)元扔,而只是借道本主機(jī),希望通過本主機(jī)去往下一臺主機(jī)夏伊。
就好比我們的這個(gè)污水處理廠只處理生活污水摇展,并不具備能力可以完全處理工業(yè)污水,但是政府又要求我們要對工業(yè)污水進(jìn)行一下簡單的處理溺忧,之后再傳送給工業(yè)污水處理廠咏连。那么就容易得出以下兩個(gè)重要環(huán)節(jié)(鏈):
- PREROUTING:路有前
- FORWARD:轉(zhuǎn)發(fā)
- POSTROUTING:路由后
3.2 表的概念
3.2.1 什么是表?
在每個(gè)鏈上都有一堆規(guī)則鲁森,但是部分規(guī)則是相似的祟滴,那我們把一些實(shí)現(xiàn)相同功能的規(guī)則放在一起,就能輕松的完成復(fù)用了歌溉。
好比污水處理廠垄懂,粗濾、細(xì)濾基本上是好多關(guān)鍵環(huán)節(jié)都要用到的痛垛,那何不將粗濾網(wǎng)與細(xì)濾網(wǎng)直接封裝到一根管子里草慧,要用的時(shí)候,直接整根管子接上去就能一次實(shí)現(xiàn)兩個(gè)功能匙头,豈不方便漫谷?
3.2.2 iptables 提供了哪些表?
- filter:負(fù)責(zé)過濾功能蹂析,內(nèi)核模塊 iptables_filter
- nat:負(fù)責(zé)進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換舔示,內(nèi)核模塊 iptable_nat
- mangle:拆解報(bào)文,進(jìn)行修改电抚,重新封裝惕稻,內(nèi)核模塊 iptable_mangle
- raw:關(guān)閉 nat 表上啟用的連接追蹤機(jī)制,內(nèi)核模塊 iptable_raw
- security:安全相關(guān)蝙叛?CentOS 7 里新增的表俺祠,暫且不介紹
ps. 運(yùn)維中常用的為 filter、nat
3.3 鏈與表的關(guān)系
現(xiàn)在應(yīng)該清楚:鏈?zhǔn)菆?bào)文流轉(zhuǎn)過程中的關(guān)鍵處理環(huán)節(jié)甥温,表是某一些相似規(guī)則的集合
3.3.1 鏈中的表
但是由于處理環(huán)節(jié)的分工不同锻煌,每個(gè)處理環(huán)節(jié)可能具有不同的表,讓我們看看5個(gè)環(huán)節(jié)中姻蚓,每個(gè)環(huán)節(jié)都有哪些表
3.3.2 表對應(yīng)的鏈
但是,實(shí)際使用中匣沼,往往是以“表”作為操作入口來對規(guī)則進(jìn)行定義的狰挡,所以比起知道某個(gè)鏈中存在哪些表,不如明確每種表能夠應(yīng)用于哪些鏈中,這樣能方便實(shí)際的使用加叁。
3.3.3 表的優(yōu)先級
由上可知倦沧,每個(gè)鏈中包含多個(gè)表。
但是還記得規(guī)則是有順序的嗎它匕?那問題來了展融,同一條鏈中,到底哪個(gè)表被先執(zhí)行呢豫柬?
3.4 規(guī)則的概念
之前已經(jīng)講過告希,規(guī)則主要包含兩部分,即“條件 & 動(dòng)作”
3.4.1 匹配條件
iptables 主要是通過網(wǎng)絡(luò)流量的五元組(某個(gè)或某些)來進(jìn)行匹配烧给,包括:
- S_IP:源 IP
- S_PORT:源端口
- D_IP:目的 IP
- D_PORT:目的端口
- TCP/UDP:四層協(xié)議
3.4.2 處理動(dòng)作
iptables 中稱為 target
- ACCEPT:允許數(shù)據(jù)包通過燕偶。
- DROP:直接丟棄數(shù)據(jù)包。不回應(yīng)任何信息础嫡,客戶端只有當(dāng)該鏈接超時(shí)后才會(huì)有反應(yīng)指么。
- REJECT:拒絕數(shù)據(jù)包。會(huì)給客戶端發(fā)送一個(gè)響應(yīng)的信息 榴鼎。
- SNAT:源 NAT伯诬,解決私網(wǎng)用戶用同一個(gè)公網(wǎng) IP 上網(wǎng)的問題。
- MASQUERADE:是 SNAT 的一種特殊形式巫财,適用于動(dòng)態(tài)的盗似、臨時(shí)會(huì)變的 IP 上。
- DNAT:目的 NAT翁涤,解決私網(wǎng)服務(wù)端桥言,接收公網(wǎng)請求的問題。
- REDIRECT:在本機(jī)做端口映射葵礼。
- LOG:在 /etc/log/messages 中留下記錄号阿,但并不對數(shù)據(jù)包進(jìn)行任何操作。
4. iptables 常用語法
使用 iptables 時(shí)鸳粉,最常用的就是對規(guī)則扔涧、表進(jìn)行“增刪改查”
4.1 查詢
4.1.1 Options
-
-L
:負(fù)責(zé)查詢的主要選項(xiàng) -
-n
:不進(jìn)行IP地址翻譯 -
-v
:顯示詳細(xì)信息,包括:命中規(guī)則的包數(shù)&字節(jié)數(shù)届谈、缺省策略的包數(shù)&字節(jié)數(shù)枯夜、入向接口, -
-t <TABLE>
:指定需要查看的表艰山,若不加該選項(xiàng)湖雹,默認(rèn)查詢 filter 表 -
--line
:顯示各鏈的規(guī)則行號
4.1.2 簡單查看
$ iptables -L
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
-
Chain
:所屬的鏈 -
(policy ACCEPT)
:該鏈的缺省規(guī)則 -
target
:對應(yīng)的處理動(dòng)作 -
prot
:對應(yīng)的協(xié)議 -
opt
:規(guī)則對應(yīng)的選項(xiàng) -
source
:對應(yīng)的源 IP 地址或網(wǎng)段 -
destination
:對應(yīng)的目的 IP 地址或網(wǎng)段
4.1.3 查看命中數(shù):-v
iptables -vL
$ iptables -vL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1305 102K ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
0 0 ACCEPT icmp -- any any anywhere anywhere
0 0 ACCEPT all -- lo any anywhere anywhere
1 52 ACCEPT tcp -- any any anywhere anywhere state NEW tcp dpt:ssh
7 1150 REJECT all -- any any anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT all -- any any anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 964 packets, 134K bytes)
pkts bytes target prot opt in out source destination
-
pkts
:命中規(guī)則的報(bào)文個(gè)數(shù) -
bytes
:命中規(guī)則的報(bào)文大總和 -
in
:規(guī)則對應(yīng)的入向接口 -
out
:規(guī)則對應(yīng)的出向接口
4.1.4 查看特定的表:-t <TABLE>
$ iptables -t filter -L
竟然發(fā)現(xiàn)跟 -L 顯示的一模一樣?
翻到前面曙搬,看看 filter 表可以在哪些鏈中使用摔吏?是不是正好就是 INPUT鸽嫂、FORWARD、OUTPUT 這三條鏈罢鹘病据某!
$ iptables -t filter -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
4.1.5 查看特定的鏈
iptables -L <CHAIN>
$ iptables -nvL INPUT
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1256 98520 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
1 52 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
6 921 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
4.1.6 顯示規(guī)則行號:--line
$ iptables -t filter -nvL --line-number
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 1542 121K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
4 1 52 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 11 1613 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 1142 packets, 153K bytes)
num pkts bytes target prot opt in out source destination
4.2 增加
4.2.1 Options
-
-I <CHAIN>
:insert,插入诗箍,排序在指定鏈的規(guī)則的首位 -
-I <CHAIN> #
:插入到指定鏈的第 # 號規(guī)則的位置 -
-A <CHAIN>
:append癣籽,追加,排序在指定鏈的規(guī)則的末尾 -
-s <S_IP>
:指定源 IP -
-j <ACTION>
:指定執(zhí)行的動(dòng)作滤祖,具體動(dòng)作類型見 3.4.2
4.2.2 插入規(guī)則到首位
$ iptables -nvL INPUT
Chain INPUT (policy ACCEPT 102 packets, 8892 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 12.12.12.12 0.0.0.0/0
0 0 LOG all -- * * 11.11.11.11 0.0.0.0/0 LOG flags 0 level 4
0 0 DROP all -- * * 10.10.10.10 0.0.0.0/0
$ iptables -t filter -I INPUT -s 1.1.1.1 -j DROP
$ iptables -nvL INPUT
Chain INPUT (policy ACCEPT 43 packets, 3020 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 1.1.1.1 0.0.0.0/0
0 0 ACCEPT all -- * * 12.12.12.12 0.0.0.0/0
0 0 LOG all -- * * 11.11.11.11 0.0.0.0/0 LOG flags 0 level 4
0 0 DROP all -- * * 10.10.10.10 0.0.0.0/0
4.2.3 插入規(guī)則到指定號碼
Chain INPUT (policy ACCEPT 279 packets, 21604 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 DROP all -- * * 1.1.1.1 0.0.0.0/0
2 0 0 ACCEPT all -- * * 12.12.12.12 0.0.0.0/0
3 0 0 LOG all -- * * 11.11.11.11 0.0.0.0/0 LOG flags 0 level 4
4 0 0 DROP all -- * * 10.10.10.10 0.0.0.0/0
$
$
$ iptables -I INPUT 3 -s 3.3.3.3 -j ACCEPT
$ iptables -nvL INPUT --line
Chain INPUT (policy ACCEPT 5 packets, 388 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 DROP all -- * * 1.1.1.1 0.0.0.0/0
2 0 0 ACCEPT all -- * * 12.12.12.12 0.0.0.0/0
3 0 0 ACCEPT all -- * * 3.3.3.3 0.0.0.0/0
4 0 0 LOG all -- * * 11.11.11.11 0.0.0.0/0 LOG flags 0 level 4
5 0 0 DROP all -- * * 10.10.10.10 0.0.0.0/0
4.2.4 追加到末位
$ iptables -nvL INPUT
Chain INPUT (policy ACCEPT 50 packets, 3592 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 1.1.1.1 0.0.0.0/0
0 0 ACCEPT all -- * * 12.12.12.12 0.0.0.0/0
0 0 ACCEPT all -- * * 3.3.3.3 0.0.0.0/0
0 0 LOG all -- * * 11.11.11.11 0.0.0.0/0 LOG flags 0 level 4
0 0 DROP all -- * * 10.10.10.10 0.0.0.0/0
$ iptables -A INPUT -s 255.255.255.255 -j ACCEPT
$ iptables -nvL INPUT
Chain INPUT (policy ACCEPT 36 packets, 2600 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 1.1.1.1 0.0.0.0/0
0 0 ACCEPT all -- * * 12.12.12.12 0.0.0.0/0
0 0 ACCEPT all -- * * 3.3.3.3 0.0.0.0/0
0 0 LOG all -- * * 11.11.11.11 0.0.0.0/0 LOG flags 0 level 4
0 0 DROP all -- * * 10.10.10.10 0.0.0.0/0
0 0 ACCEPT all -- * * 255.255.255.255 0.0.0.0/0
4.3 刪除
4.3.1 Options
-
-D <CHAIN> <DETAILS>
:根據(jù)規(guī)則的具體匹配條件與動(dòng)作進(jìn)行刪除 -
-D <CHAIN> #
:根據(jù)規(guī)則的編號進(jìn)行刪除 -
-F <CHAIN>
:清空指定鏈上的所有規(guī)則 -
-t <TABLE> -F
:清空某種表在所有鏈上的規(guī)則
4.3.2 根據(jù)規(guī)則的具體情況進(jìn)行刪除
跟添加時(shí)的命令幾乎一模一樣
$ iptables -nvL INPUT
Chain INPUT (policy ACCEPT 78 packets, 5684 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 1.1.1.1 0.0.0.0/0
0 0 ACCEPT all -- * * 12.12.12.12 0.0.0.0/0
0 0 ACCEPT all -- * * 3.3.3.3 0.0.0.0/0
0 0 LOG all -- * * 11.11.11.11 0.0.0.0/0 LOG flags 0 level 4
0 0 DROP all -- * * 10.10.10.10 0.0.0.0/0
0 0 ACCEPT all -- * * 255.255.255.255 0.0.0.0/0
$ iptables -D INPUT -s 1.1.1.1 -j DROP
$ iptables -nvL INPUT
Chain INPUT (policy ACCEPT 5 packets, 388 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 12.12.12.12 0.0.0.0/0
0 0 ACCEPT all -- * * 3.3.3.3 0.0.0.0/0
0 0 LOG all -- * * 11.11.11.11 0.0.0.0/0 LOG flags 0 level 4
0 0 DROP all -- * * 10.10.10.10 0.0.0.0/0
0 0 ACCEPT all -- * * 255.255.255.255 0.0.0.0/0
4.3.3 根據(jù)規(guī)則編號進(jìn)行刪除
$ iptables -nvL INPUT --line
Chain INPUT (policy ACCEPT 32 packets, 2417 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT all -- * * 12.12.12.12 0.0.0.0/0
2 0 0 ACCEPT all -- * * 3.3.3.3 0.0.0.0/0
3 0 0 LOG all -- * * 11.11.11.11 0.0.0.0/0 LOG flags 0 level 4
4 0 0 DROP all -- * * 10.10.10.10 0.0.0.0/0
5 0 0 ACCEPT all -- * * 255.255.255.255 0.0.0.0/0
$ iptables -D INPUT 5
$ iptables -nvL INPUT --line
Chain INPUT (policy ACCEPT 35 packets, 2784 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT all -- * * 12.12.12.12 0.0.0.0/0
2 0 0 ACCEPT all -- * * 3.3.3.3 0.0.0.0/0
3 0 0 LOG all -- * * 11.11.11.11 0.0.0.0/0 LOG flags 0 level 4
4 0 0 DROP all -- * * 10.10.10.10 0.0.0.0/0
4.3.4 清空
iptables -F <CHAIN> # 清空鏈下的所有規(guī)則
iptables -t <TABLE> -F # 清空某個(gè)表中筷狼、所有鏈上的規(guī)則
4.4 修改
說是修改,可能本以為只要在命令中輸入所需修改部分的內(nèi)容即可氨距,但其實(shí)不然桑逝。想要修改,必須要像添加時(shí)一樣輸全了匹配規(guī)則俏让,只是修改的部分進(jìn)行更改楞遏,所以也是麻煩,有時(shí)不如刪掉再寫一條來得干凈首昔。
4.4.1 Options
-
-R <CHAIN> #
:修改指定鏈中指定序號的規(guī)則
4.4.2 修改指定鏈中指定序號的規(guī)則
- 看一下當(dāng)前 INPUT 鏈的規(guī)則
$ iptables -nvL INPUT --line
Chain INPUT (policy ACCEPT 106 packets, 8413 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT all -- * * 12.12.12.12 0.0.0.0/0
2 0 0 ACCEPT all -- * * 3.3.3.3 0.0.0.0/0
3 0 0 LOG all -- * * 11.11.11.11 0.0.0.0/0 LOG flags 0 level 4
4 0 0 DROP all -- * * 10.10.10.10 0.0.0.0/0
- 將 3號規(guī)則改為 REJECT(僅鍵入待修改部分)
怎么剛一設(shè)置完就斷了寡喝?
$ iptables -R INPUT 3 -j REJECT
$
Socket error Event: 32 Error: 10053.
Connection closing...Socket close.
Connection closed by foreign host.
Disconnected from remote host(CentOS_7_1804_x64) at 17:23:56.
Type `help' to learn how to use Xshell prompt.
[E:\~]$
我們進(jìn) tty 看一下到底是怎么回事。怎么源 IP 變成 0.0.0.0 (相當(dāng)于 all)了勒奇,當(dāng)SSH 當(dāng)然就斷了预鬓!
這就是本節(jié)開始時(shí)所講的,并不是僅鍵入待修改的那部分信息即可赊颠,而需要完整的輸入整條規(guī)則格二,看看下面這個(gè)例子。
-
將 3 號規(guī)則改回原樣(全面輸入)
這回終于可以了
4.5 修改鏈的缺省動(dòng)作
4.5.1 Options
-
-P <CHAIN> <ACTION>
:修改指定鏈的缺省動(dòng)作
4.5.2 示例
- 看看當(dāng)前 INPUT 鏈的缺省動(dòng)作
$ iptables -nvL INPUT
Chain INPUT (policy ACCEPT 104 packets, 9184 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 12.12.12.12 0.0.0.0/0
0 0 ACCEPT all -- * * 3.3.3.3 0.0.0.0/0
0 0 ACCEPT all -- * * 11.11.11.11 0.0.0.0/0
0 0 DROP all -- * * 10.10.10.10 0.0.0.0/0
改為 DROP(又得掉線了)
$ iptables -P INPUT DROP
上 tty 去看一眼竣蹦,果然改成 DROP 了