軟體防火牆
iptables
,它可以理解為是一個客戶端代理,透過iptables
的代理,將使用者配置的安全策略執行到對應的安全框架
中,這個安全框架稱之為netfilter
。netfilter
,位於核心空間,它倆共同組成了Linux的軟體防火牆,一般用來代替昂貴的硬體防火牆,實現資料包過濾,網路地址轉換等。
iptables是將配置好的規則交給核心層的netfilter網路過濾器來處理
filrewalld服務是將配置好的防火牆規則交給核心層的nftables網路過濾器處理
這倆工具二選一即可,都只是命令列工具,
iptables是什麼
iptables是開源的基於資料包過濾的防火牆工具。
Iptables使用場景
1
、主機防火牆(
filter
表的
INPUT
鏈)。
2
、區域網共享上網(nat表的POSTROUTING鏈)。半個路由器,NAT功能。
3
、埠及IP對映(nat表的PREROUTING鏈),硬防的NAT功能。
4
、IP一對一對映。
netfilter 中五個勾子函式和報文流向
Netfilter在核心中選取五個位置放了五個
hook
(勾子)
function
(INPUT、OUTPUT、FORWARD、
PREROUTING、POSTROUTING),而這五個hook function向用戶開放,使用者可以透過一個命令工具
(iptables)向其寫入規則
由資訊過濾表(
table
)組成,包含控制IP包處理的規則集(rules),規則被分組放在鏈(chain)上
1
)流入本機:PREROUTING--> INPUT --> 使用者空間程序
2
)流出本機:使用者空間程序--> OUTPUT --> POSTROUTING
3
)轉發:PREROUTING -->FORWARD -->POSTROUTING
鏈chain:
1
)內建鏈:每個內建鏈對應於一個鉤子函式
2
)自定義鏈:用於對內建鏈進行擴充套件或補充,可實現更靈活的規則組織管理機制;只有HOOK鉤子呼叫自定義鏈時,才生效
五個內建鏈chain
INPUT
,OUTPUT,FORWARD,PREROUTING,POSTROUTING
五個表
table
:
filter
,nat,mangle,raw,security
1
)
filter
:過濾規則表,根據預定義的規則過濾符號條件的資料包,預設表
2
)nat:network
address
translation地址轉換規則表
3
)mangle:修改資料標記位規則表
4
)raw:關閉啟用的連線跟蹤機制,加快封包穿越防火牆速度
5
)security:用於強制訪問控制(MAC)網路規則,由Linux安全模組(如SELINUX)實現

security---> raw---> mangle---> nat---> filter
1
)當一個數據包進入網絡卡時,資料包首先進入PREROUTING鏈,核心根據資料包目的IP判斷是否需要轉送出去
2
)如果資料包是進入本機的,資料包就會沿著圖向下移動,到達
INPUT
鏈。資料包到達
INPUT
鏈後,任何程序都會收到它。本機上執行的程式可以傳送資料包,這些資料包經過OUTPUT鏈,然後到達POSTROUTING鏈輸出
3
)如果資料包是要轉發出去的,且核心允許轉發,資料包就會向右移動,經過FORWARD鏈,然後到達POSTROUTING鏈輸出
[root@localhost ~]
# iptables -vnL
Chain INPUT (policy ACCEPT
0
packets,
0
bytes)
pkts
bytes
target prot opt in out source destination
Chain FORWARD (policy ACCEPT
0
packets,
0
bytes)
pkts
bytes
target prot opt in out source destination
Chain OUTPUT (policy ACCEPT
0
packets,
0
bytes)
pkts
bytes
target prot opt in out source destination
[root@localhost ~]
# iptables -vnL -t filter
Chain INPUT (policy ACCEPT
24
packets,
1600
bytes)
pkts
bytes
target prot opt in out source destination
Chain FORWARD (policy ACCEPT
0
packets,
0
bytes)
pkts
bytes
target prot opt in out source destination
Chain OUTPUT (policy ACCEPT
14
packets,
1784
bytes)
pkts
bytes
target prot opt in out source destination
1)要實現哪種功能:判斷新增在哪張表上
2)報文流經的路徑:判斷新增在哪個鏈上
3)報文的流向:判斷源和目的
4)匹配規則:業務需要
1
)內建處理動作:ACCEPT,
DROP
,REJECT,SNAT,DNAT,MASQUERADE,MARK,LOG...;其中最常用的只有,允許:ACCEPT,拋棄:
DROP
,拒絕:REJECT
2
)自定義處理動作:自定義chain,利用分類管理複雜情形;規則要新增在鏈上,才生效;新增在自定義鏈上不會自動生效。
3
)白名單:只有指定的特定主機可以訪問,其它全拒絕
4
)黑名單:只有指定的特定主機拒絕訪問,其它全允許,預設方式
[
root@localhost ~
]
# systemctl disable --now firewalld
iptables 用法說明
iptables [-t
table
] {-A|-C|-D} chain rule-specification
iptables [-t
table
] -I chain [rulenum] rule-specification
iptables [-t
table
] -R chain rulenum rule-specification
iptables [-t
table
] -D chain rulenum
iptables [-t
table
] -S [chain [rulenum]]
iptables [-t
table
] {-F|-L|-Z} [chain [rulenum]] [options...]
iptables [-t
table
] -N chain
iptables [-t
table
] -X [chain]
iptables [-t
table
] -P chain target
iptables [-t
table
] -E old-chain-name new-chain-name
rule-specification = [matches...] [target]
match
= -m matchname [per-
match
-options]
target = -j targetname [per-target-options]
iptables [
-
t
table
] SUBCOMMAND chain [
-
m matchname [
per-match-
options]]
-
j targetname [
per-
target
-
options]
-N:new, 自定義一條新的規則鏈
-E:重新命名自定義鏈;引用計數不為0的自定義鏈不能夠被重新命名,也不能被刪除
-X:delete,刪除自定義的空的規則鏈
-P:Policy,設定預設策略;對filter表中的鏈而言,其預設策略有:ACCEPT:接受, DROP:丟棄
檢視類:
-L:list,列出指定鏈上的所有規則,本選項需置後
-n:numberic,以數字格式顯示地址和埠號
-v:verbose,詳細資訊
-vv:更詳細
-x:exactly,顯示計數器結果的精確值,而非單位轉換後的易讀值
--line-numbers:顯示規則的序號
-S selected,以iptables-save命令格式顯示鏈上規則
規則管理類:
-A:append,追加
-I:insert,插入,要指明插入至的規則編號,預設為第一條
-D:delete,刪除
1)指明規則序號
2)指明規則本身
-R:replace,替換指定鏈上的指定規則編號
-F:flush,清空指定的規則鏈
-Z:zero,置零
iptables的每條規則都有兩個計數器
1)匹配到的報文的個數
2)匹配到的所有報文的大小之和
[
root@localhost ~
]
# iptables -F OUTPUT
常用組合
-vnL
-vvnxL --line-numbers
[root
@localhost~
]# iptables
-
vnL
Chain INPUT (policy ACCEPT
177
packets,
12622
bytes)
pkts bytes target prot opt
inout
source destination
Chain FORWARD (policy ACCEPT
0
packets,
0
bytes)
pkts bytes target prot opt
inout
source destination
Chain OUTPUT (policy ACCEPT
106
packets,
9596
bytes)
pkts bytes target prot opt
inout
source destination
[root
@localhost~
]# iptables
-
vnL
--line-numbers
Chain INPUT (policy ACCEPT
1606
packets,
3268
K bytes)
num pkts bytes target prot opt
inout
source destination
1221824
ACCEPT
all-- lo * 0.0.0.0/0 0.0.0.0/0
22120
REJECT
all-- * * 172.31.0.18 0.0.0.0/0 reject-with icmp-port-unreachable
3160
REJECT
all-- * * 172.31.0.7 0.0.0.0/0 reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT
0
packets,
0
bytes)
num pkts bytes target prot opt
inout
source destination
Chain OUTPUT (policy ACCEPT
1338
packets,
98490
bytes)
num pkts bytes target prot opt
inout
source destination
1
)基本:通用的,PARAMETERS
2
)擴充套件:需載入模組,
MATCH
EXTENTIONS
REJECT
:
--reject-with:icmp-port-unreachable預設
RETURN
:返回呼叫鏈
REDIRECT:埠重定向
LOG:記錄日誌,dmesg
MARK:做防火牆標記
DNAT:目標地址轉換
SNAT:源地址轉換
MASQUERADE:地址偽裝
自定義鏈
[!]
-s,
--sourceaddress[/mask][,...]
:源IP地址或者不連續的IP地址
[!]
-d,
--destinationaddress[/mask][,...]
:目標IP地址或者不連續的IP地址
[!]
-
p
,
--protocol
protocol:指定協議,可使用數字如
0
(
all
)
protocol: tcp, udp, icmp, icmpv6, udplite,esp, ah, sctp, mh or“all“
參看:/etc/protocols
[!] -i, --in-interface name:報文流入的介面;只能應用於資料報文流入環節,只應用於INPUT、
FORWARD、PREROUTING鏈
[!] -o, --out-interface name:報文流出的介面;只能應用於資料報文流出的環節,只應用於
FORWARD、OUTPUT、POSTROUTING鏈
準備好一個可以訪問的網站頁面
[root@localhost ~]
# yum install -y httpd;echo 172.31.0.17 > /var/www/html/index.html;systemctl start httpd
沒有新增iptables規則時其他機器可以訪問
[root@localhost ~]
# curl 172.31.0.17
172.31
.
0
.
17
iptables設定
[root@localhost ~]
# iptables -vnL
Chain INPUT (policy ACCEPT
365
packets,
25579
bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT
0
packets,
0
bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT
215
packets,
23508
bytes)
pkts bytes target prot opt in out source destination
[root@localhost ~]
# iptables -A INPUT -s 172.31.0.18,172.31.0.7 -j REJECT
[root@localhost ~]
# iptables -I INPUT -i lo -j ACCEPT
新增完iptables規則後,只有本機可以訪問,被規則限制的ip不能訪問
[root@localhost ~]
# curl 127.0.0.1
172.31
.
0
.
17
[root@localhost ~]
# curl 172.31.0.17
curl: (
7
) Failed
connect
to
172.31
.
0
.
17
:
80
; Connection refused
[root@sz-kx-centos8 ~]
# curl 172.31.0.17
curl: (
7
) Failed to
connect
to
172.31
.
0
.
17
port
80
: Connection refused
[root@localhost ~]
# iptables -
AINPUT
-s
172.31
.
0.1
-j ACCEPT
[root@localhost ~]
# iptables -
AINPUT1
-s
172.31
.
0.18
-j DROP
[root@localhost ~]
# iptables -
AINPUT
-s
172.31
.
0.0
/
16
-j REJECT
[root@localhost ~]# iptables -I INPUT
3
-s
172.31
.
0.100
-j ACCEPT
[root@localhost ~]# iptables -vnL
--line-numbers
Chain INPUT (policy ACCEPT
0
packets,
0
bytes)
num pkts bytes target prot opt
inout
source destination
1221824
ACCEPT
all-- lo * 0.0.0.0/0 0.0.0.0/0
240532145
ACCEPT
all-- * * 172.31.0.1 0.0.0.0/0
300
ACCEPT
all-- * * 172.31.0.100 0.0.0.0/0
42120REJECTall-- * * 172.31.0.18 0.0.0.0/0 reject-with icmp-port-unreachable
5160REJECTall-- * * 172.31.0.7 0.0.0.0/0 reject-with icmp-port-unreachable
6402473REJECTall-- * * 172.31.0.0/16 0.0.0.0/0 reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT
0
packets,
0
bytes)
num pkts bytes target prot opt
inout
source destination
Chain OUTPUT (policy ACCEPT
51
packets,
5936
bytes)
num pkts bytes target prot opt
inout
source destination
[
root@localhost ~
]
# iptables -D INPUT 3
[
root@localhost ~
]
# iptables -R INPUT 4 -s 172.31.0.7 -j ACCEPT
[
root@localhost ~
]
# iptables -F
[root@localhost ~]
# iptables -
PINPUT
DROP
# 實現效果如下:
[root@localhost ~]
# iptables -vnL
Chain
INPUT
(policy ACCEPT
48
packets,
4965
bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT
0
packets,
0
bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT
40
packets,
5824
bytes)
pkts bytes target prot opt in out source destination
[root@localhost ~]
# iptables -
AINPUT
-
i
lo -j ACCEPT
[root@localhost ~]
# iptables -
AINPUT
-s
172.31
.
0.17
-j ACCEPT
[root@localhost ~]
# iptables -
AINPUT
-s
172.31
.
0.1
-j ACCEPT
[root@localhost ~]
# iptables -
AINPUT
-s
172.31
.
0.1
-j REJECT
[root@localhost ~]
# iptables -
PINPUT
DROP
[root@localhost ~]
# iptables -vnL
Chain
INPUT
(policy DROP
0
packets,
0
bytes)
pkts bytes target prot opt in out source destination
00
ACCEPT
all
-- lo *
0.0
.
0.0
/
00.0
.
0.0
/
0
00
ACCEPT
all
-- * *
172.31
.
0.170.0
.
0.0
/
0
1036840
ACCEPT
all
-- * *
172.31
.
0.10.0
.
0.0
/
0
00
REJECT
all
-- * *
172.31
.
0.10.0
.
0.0
/
0
reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT
0
packets,
0
bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT
21
packets,
2152
bytes)
pkts bytes target prot opt in out source destination
規則最佳化最佳實踐
1.
安全放行所有入站和出站的狀態為ESTABLISHED狀態連線,建議放在第一條,效率更高
2.
謹慎放行入站的新請求
3.
有特殊目的限制訪問功能,要在放行規則之前加以拒絕
4.
同類規則(訪問同一應用,比如:http ),匹配範圍小的放在前面,用於特殊處理
5.
不同類的規則(訪問不同應用,一個是http,另一個是mysql ),匹配範圍大的放在前面,效率更
高
6.
應該將那些可由一條規則能夠描述的多個規則合併為一條,減少規則數量,提高檢查效率
7.
設定預設策略,建議白名單(只放行特定連線)
iptables -P,不建議,容易出現“自殺現象”
規則的最後定義規則做為預設策略,推薦使用,放在最後一條
iptables儲存規則
# 儲存規則
[root@localhost ~]
# iptables-save > /home/iptables.ruls
# 執行匯入儲存的規則
[root@localhost ~]
# iptables-restore < /home/iptables.ruls
寫入開機啟動配置
[root@localhost ~]
# vim /etc/rc.d/rc.local
iptables-restore <
/home/ip
tables.ruls
# 加執行許可權
[root@localhost ~]
# chmod +x /etc/rc.d/rc.local
# 安裝
[
root@localhost ~
]
# yum install iptables-services
新增到配置檔案裡面
[
root@localhost ~
]
# iptables-save > /etc/sysconfig/iptables
啟動
[
root@localhost ~
]
# systemctl start iptables
設定開機啟動
[
root@localhost ~
]
# systemctl enable --now iptables
擴充套件模組的使用幫助:
CentOS
7
,
8
:
man
iptables
-extensions
CentOS
6
:
man
iptables
tcp 協議的擴充套件選項
[!]--source-port
,
--sport
port
[:port]
:匹配報文源埠,可為埠連續範圍
[!]--destination-port
,
--dport
port
[:port]
:匹配報文目標埠,可為連續範圍
[!]--tcp-flagsmask
comp
mask
需檢查的標誌位列表,用,分隔 , 例如 SYN,ACK,FIN,RST
comp 在
mask
列表中必須為
1
的標誌位列表,無指定則必須為
0
,用,分隔tcp協議的擴充套件選項
--tcp-flags
SYN,ACK,FIN,RST SYN 表示要檢查的標誌位為SYN,ACK,FIN,RST四個,其中SYN必
須為
1
,餘下的必須為
0
,第一次握手
--tcp-flags
SYN,ACK,FIN,RST SYN,ACK 第二次握手
#錯誤包
--tcp-flagsALLALL
--tcp_flagsALLNONE
udp 協議的擴充套件選項
[!]--source-port
,
--sport
port
[:port]
:匹配報文的源埠或埠範圍
[!]--destination-port
,
--dport
port
[:port]
:匹配報文的目標埠或埠範圍
icmp 協議的擴充套件選項
[!] --icmp-
type
{
type
[/code]|typename}
type
/code
0
/
0echo
-reply icmp應答
8
/
0echo
-request icmp請求
[root@localhost ~]
# iptables -
AINPUT
-s
172.31
.
0.7
-
p
tcp
--dport21
:
23
-j REJECT
[root@localhost ~]
# iptables -
AINPUT
-s
172.31
.
0.7
-
p
icmp
--icmp-type8
-j REJECT
# 在序號
3
插入一條允許固定ip訪問
80
埠
[root@localhost ~]
# iptables -
IINPUT3
-s
172.31
.
0.7
-
p
tcp
--dport80
-j ACCEPT
[root@localhost ~]
# iptables -
AINPUT
-s
172.31
.
0.18
-
p
icmp
--icmp-type8
-j REJECT
multiport擴充套件
#指定多個源埠
[!]--source-ports
,
--sports
port
[,port|,port:port]
...
# 指定多個目標埠
[!]--destination-ports
,
--dports
port
[,port|,port:port]
...
#多個源或目標端
[!]--ports
port
[,port|,port:port]
...
[root@localhost ~]
# iptables -
AINPUT
-s
172.31
.
0.18
-
p
tcp -m multiport
--dports80
,
22
,
21
-j REJECT
iprange擴充套件
[!]--src-rangefrom[-to]
源IP地址範圍
[!]--dst-rangefrom[-to]
目標IP地址範圍
[root@localhost ~]
# iptables -
AINPUT
-m iprange
--src-range172.31
.
0.1
-
172.31
.
0.7
-j REJECT
mac擴充套件
[!]--mac-source
XX:XX:XX:XX:XX:XX
[root@localhost ~]
# iptables -
AINPUT
-m mac
--mac-source00
:
0
c:
29
:
43
:
04
:
9
b -j REJECT
string擴充套件
--algo {bm|kmp} 字串匹配檢測演算法
bm:Boyer-Moore
kmp:Knuth-Pratt-Morris
--from offset 開始偏移
--to offset 結束偏移
[!]
--string pattern 要檢測的字串模式
[!]
--hex-string pattern要檢測字串模式,16進位制格式
[root@localhost ~]
# iptables -
A
OUTPUT -
p
tcp
--sport80
-m string
--algo
bm
--from62--string
"google" -j REJECT
time擴充套件
根據將報文到達的時間與指定的時間範圍進行匹配
--datestartYYYY[-MM[-DD[Thh[:mm[:ss]
]]]] 日期
--datestopYYYY[-MM[-DD[Thh[:mm[:ss]
]]]]
--timestarthh
:
mm[:ss]
時間
--timestophh
:
mm[:ss]
[!]--monthdaysday[,day...]
每個月的幾號
[!]--weekdaysday[,day...]
星期幾,
1
–
7
分別表示星期一到星期日
--kerneltz
:核心時區(當地時間),不建議使用,
CentOS7
版本以上系統預設為
UTC
注意:
centos6
不支援
kerneltz
,
--localtz
指定本地時區(預設)
[root@localhost ~]
# iptables -
AINPUT
-s
172.31
.
0.0
/
16
-d
172.31
.
0.17
-
p
tcp
--dport80
-m
time--timestart16
:
00
--timestop
16
:
10
-j REJECT
connlimit擴充套件
--connlimit-upto N
#連線的數量小於等於N時匹配
--connlimit-above N
#連線的數量大於N時匹配
[root@localhost ~]
# iptables -
AINPUT
-
p
tcp
--dport80
-m connlimit
--connlimit-above2
-j REJECT
limit擴充套件
--limit-burst number
#前多少個包不限制
--
limit#[/second|/minute|/hour|/day]
[root@localhost ~]
# iptables -
AINPUT
-
p
icmp
--icmp-type8
-m limit
--limit10
/minute
--limit-burst5
-j ACCEPT
[root@localhost ~]
# iptables -
AINPUT
-
p
icmp -j REJECT
state擴充套件
NEW
:新發出請求;連線追蹤資訊庫中不存在此連線的相關資訊條目,因此,將其識別為第一次發
出的請求
ESTABLISHED:
NEW
狀態之後,連線追蹤資訊庫中為其建立的條目失效之前期間內所進行的通訊
狀態
RELATED:新發起的但與已有連線相關聯的連線,如:ftp協議中的資料連線與命令連線之間的關
系
INVALID:無效的連線,如flag標記不正確
UNTRACKED:未進行追蹤的連線,如:raw表中關閉追蹤
[
root@localhost ~
]
# cat /proc/net/nf_conntrack
[root@localhost ~]
# iptables -
AINPUT
-m state
--state
ESTABLISHED -j ACCEPT
[root@localhost ~]
# iptables -
AINPUT
-m state
--state
NEW -j REJECT
[root@localhost ~]
# iptables -
AINPUT
-s
172.31
.
0.18
-m state
--state
NEW -j REJECT
連線數測試案例:
# 連線數給一個最少的數值
[
root@localhost ~
]
# echo 1 > /proc/sys/net/netfilter/nf_conntrack_max
# 檢視日誌
[
root@localhost ~
]
# tail -f /var/log/messages
May
816
:
34
:
27
localhost kernel: nf_conntrack: table full, dropping packet
May
816
:
34
:
28
localhost kernel: nf_conntrack: table full, dropping packet
...
# 建議修改適當加大連線數
[
root@localhost ~
]
# echo 655350 > /proc/sys/net/netfilter/nf_conntrack_max
Target
自定義鏈, ACCEPT,
DROP
, REJECT,
RETURN
,LOG,SNAT,DNAT,REDIRECT,MASQUERADE
LOG:非中斷target,本身不拒絕和允許,放在拒絕和允許規則前,並將日誌記錄在
/
var
/
log
/
messages系
統日誌中
--log-level level 級別: debug,info,notice, warning, error, crit, alert,emerg
--log-prefix prefix 日誌字首,用於區別不同的日誌,最多29個字元
[root
@localhost~
]# iptables
-
A INPUT
-
s
172.31.0.0/16-
p tcp
-
m multiport
--dports 80,21:23 -m state --state NEW -j LOG --log-prefix "new connections: "
檢視日誌
[root
@localhost~
]# tail
-
f
/
var
/
log
/
messages
May
815
:
34
:
30
localhost systemd: Started Vsftpd ftp daemon.
May
816
:
01
:
01
localhost systemd: Started Session
470ofuser
root.
full
, dropping packet
May
816
:
55
:
20
localhost kernel:
new
connections:
IN=
eth0
OUT=
MAC
=00
:
0
c:
29
:
51
:
72
:d9:
00
:
0
c:
29
:
43
:
04
:
9
b:
08
:
00
SRC
=172.31.0.18
DST
=172.31.0.17
LEN
=60
TOS
=0x00
PREC
=0x00
TTL
=64
ID
=60599
DF PROTO
=
TCP SPT
=35722
DPT
=80WINDOW=29200
RES
=0x00
SYN URGP
=0
規則最佳化最佳實踐
1.
安全放行所有入站和出站的狀態為ESTABLISHED狀態連線,建議放在第一條,效率更高
2.
謹慎放行入站的新請求
3.
有特殊目的限制訪問功能,要在放行規則之前加以拒絕
4.
同類規則(訪問同一應用,比如:http ),匹配範圍小的放在前面,用於特殊處理
5.
不同類的規則(訪問不同應用,一個是http,另一個是mysql ),匹配範圍大的放在前面,效率更
高
6.
應該將那些可由一條規則能夠描述的多個規則合併為一條,減少規則數量,提高檢查效率
7.
設定預設策略,建議白名單(只放行特定連線)
iptables -P,不建議,容易出現“自殺現象”
規則的最後定義規則做為預設策略,推薦使用,放在最後一條
iptables儲存規則
# 儲存規則
[root@localhost ~]
# iptables-save > /home/iptables.ruls
# 執行匯入儲存的規則
[root@localhost ~]
# iptables-restore < /home/iptables.ruls
寫入開機啟動配置
[root@localhost ~]
# vim /etc/rc.d/rc.local
iptables-restore <
/home/ip
tables.ruls
# 加執行許可權
[root@localhost ~]
# chmod +x /etc/rc.d/rc.local
# 安裝
[
root@localhost ~
]
# yum install iptables-services
新增到配置檔案裡面
[
root@localhost ~
]
# iptables-save > /etc/sysconfig/iptables
啟動
[
root@localhost ~
]
# systemctl start iptables
設定開機啟動
[
root@localhost ~
]
# systemctl enable --now iptables