Linux防火牆

1、本章內容
防火牆的概念
iptables的基本認識
iptables的組成
iptables的基本語法
iptables之forward的概念
iptables之地址轉換法則
SNAT源地址轉換的具體實現
DNAT目標地址轉換的具體實現
firewalld介紹
firewalld配置命令
rich規則

2、安全技術
***檢測與管理系統(Intrusion Detection Systems):特點是不阻斷任何網絡訪問,量
化、定位來自內外網絡的威脅情 況,主要以提供報告和事後監督爲主,提供有針對性的指導
措施和安全決策依據。一般採用旁路部署方式;IDS
***防禦系統(Intrusion Prevention System):以透明模 工作,分析數據包的內容如:溢
出×××、拒絕服務×××、木 馬、蠕蟲、系統漏洞等進行準確的分析判斷,在判定爲×××行爲
後立即予以阻斷,主動而有效的保護網絡的安全,一般採用在線部署方式;IPS
防火牆( FireWall ):隔離功能,工作在網絡或主機邊緣, 對進出網絡或主機的數據包基
於一定的規則檢查,並在匹配某規則時由規則定義的行爲進行處理的一組功能的組件,基本
上的實現都是默認情況下關閉所有的通過型訪問,只開放允許訪問的策略;
注意:IPS是對應用層的數據進行分析,判斷數據是幹什麼的,而防火牆是比較底層的,基於規
則的檢查;企業防火牆一般是出不管,入就檢查;國外的網的訪問的防火牆是個例外;有的企業
還可以採用DMZ(非軍事化區),即2個防火牆中間的區域,可以放提供對外服務的郵件服務器

3、防火牆的分類
防火牆的分類
主機防火牆:服務範圍爲當前主機
網絡防火牆:服務範圍爲防火牆一側的局域網
硬件防火牆:在專用硬件級別實現部分功能的防火牆;另一 個部分功能基於軟件實現,
Checkpoint,NetScreen
軟件防火牆:運行於通用硬件平臺之上的防火牆的應用軟件
網絡層防火牆:OSI下面第三層 基於ip、端口號防止訪問QQ
應用層防火牆/代理服務器:代理網關,OSI七層 基於數據關鍵字防止訪問qq
注意:有防水牆是專門用來防止內部的×××的;應用層可以識別數據是幹什麼的,有圖片否等
4、網絡型防火牆
網絡層防火牆
包過濾防火牆
網絡層對數據包進行選擇,選擇的依據是系統內設置的過濾邏輯 ,被稱爲訪問控制列表
(ACL),通過檢查數據流中每個數據的源地址,目的地址,所用端口號和協議狀態等因
素,或他們的組合來確定是否允許該數據包通過
優點:對用戶來說透明,處理速度快且易於維護
缺點:無法檢查應用層數據,如病毒等

5、應用層防火牆
應用層防火牆/代理服務型防火牆(Proxy Service)
將所有跨越防火牆的網絡通信鏈路分爲兩段
內外網用戶的訪問都是通過代理服務器上的“鏈接”來實現
優點:在應用層對數據進行檢查,比較安全
缺點:增加防火牆的負載
現實生產環境中所使用的防火牆一般都是二者結合體
即先檢查網絡數據,通過之後再送到應用層去檢查

6、iptables的基本認識
Netfilter組件
內核空間,集成在linux內核中
擴展各種網絡服務的結構化底層框架
內核中選取五個位置放了五個hook(勾子) function(INPUT、 OUTPUT、FORWARD、
PREROUTING、POSTROUTING), 而這五個hook function向用戶開放,用戶可以通過一
個命令工具(iptables)向其寫入規則
由信息過濾表(table)組成,包含控制IP包處理的規則集( rules),規則被分組放在鏈
(chain)上
三種報文流向:
流入本機:PREROUTING --> INPUT-->用戶空間進程
流出本機:用戶空間進程 -->OUTPUT--> POSTROUTING
轉發:PREROUTING --> FORWARD --> POSTROUTING
注意:/boot/config-3.10.0-693.el7.x86_64文件記錄了Linux內核編譯安裝時哪些功能啓用了,哪
些功能沒有啓用;勾子是開發程序是留下的API開發接口,其他開發人員開發的程序可以通過這
個勾子控制之前程序的運行;5個勾子代表5條鏈子,即5個不同的檢查點;

由圖可知1爲PREROUTING,2爲INPUT,3爲OUTPUT,4爲FORWARD,5爲POSTROUTING

7、iptables的基本認識
防火牆工具
iptables
命令行工具,工作在用戶空間
用來編寫規則,寫好的規則被送往netfilter,告訴內核如何去處理信息包
firewalld
CentOS 7引入了新的前端管理工具
管理工具:
firewall-cmd 命令行
firewall-config 圖形 需要先開啓防火牆才能執行此命令

8、iptables的組成
iptables由四個表和五個鏈以及一些規則組成
四個表table:filter、nat、mangle、raw
filter表:過濾規則表,根據預定義的規則過濾符合條件的數據包
nat表:network address translation 地址轉換規則表
mangle:修改數據標記位規則表
Raw:關閉NAT表上啓用的連接跟蹤機制,加快封包穿越防火牆速度 不記錄地址的轉換
優先級由高到低的順序爲:raw-->mangle-->nat-->filter
五個內置鏈chain 鏈上判斷表
INPUT
OUTPUT
FORWARD
PREROUTING
POSTROUTING

9、Netfilter表和鏈對應關係

10、數據包過濾匹配流程

11、IPTABLES和路由
路由功能發生的時間點
報文進入本機後
• 判斷目標主機是否爲本機
是:INPUT
否:FORWARD
報文離開本機之前
• 判斷由哪個接口送往下一跳

12、內核中數據包的傳輸過程
內核中數據包的傳輸過程
當一個數據包進入網卡時,數據包首先進入PREROUTING鏈, 內核根據數據包目的IP判斷
是否需要轉送出去 ?
如果數據包就是進入本機的,數據包就會沿着圖向下移動,到達 INPUT鏈。數據包到達
INPUT鏈後,任何進程都會收到它。本機上運行的程序可以發送數據包,這些數據包經過
OUTPUT鏈, 然後到達POSTROUTING鏈輸出;
如果數據包是要轉發出去的,且內核允許轉發,數據包就會向右移動,經過FORWARD鏈,
然後到達POSTROUTING鏈輸出;

13、iptables規則
規則rule:根據規則的匹配條件嘗試匹配報文,對匹配成功的報文根據規則定義的處理動作作出
處理
匹配條件:默認爲與條件,同時滿足
基本匹配:IP,端口,TCP的Flags(SYN,ACK等)
擴展匹配:通過複雜高級功能匹配
處理動作:稱爲target,跳轉目標
內建處理動作:ACCEPT,DROP,REJECT,SNAT,DNAT MASQUERADE,MARK,LOG...
自定義處理動作:自定義chain,利用分類管理複雜情形
規則要添加在鏈上,才生效;添加在自定義上不會自動生效
鏈chain:
內置鏈:每個內置鏈對應於一個鉤子函數
自定義鏈:用於對內置鏈進行擴展或補充,可實現更靈活的規 則組織管理機制;只有Hook
鉤子調用自定義鏈時,才生效;相當於函數,供勾子進行調用;

14、iptables添加要點
iptables規則添加時考量點
要實現哪種功能:判斷添加在哪張表上
報文流經的路徑:判斷添加在哪個鏈上
報文的流向:判斷源和目的
匹配規則:業務需要
鏈上規則的次序,即爲檢查的次序,因此隱含一定的法則
同類規則(訪問同一應用),匹配範圍小的放上面
不同類規則(訪問不同應用),匹配到報文頻率較大的放上面
將那些可由一條規則描述的多個規則合併爲一個
設置默認策略
實驗環境準備:
Centos7:
systemctl stop firewalld.service
systemctl disable firewalld. service
Centos6:
service iptables stop;
chkconfig iptables off 意味着不用系統自帶的iptables策略,而是自己定義策略;並
不是將iptables功能關閉了;

15、iptables命令
man 8 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]

16、簡單示例
Fliter表中INPUT規則

iptables -A INPUT -s 172.18.62.60 -j DROP:-A指定鏈,-s指定源地址,-j指定執行動作
iptables -vnL:-v顯示詳細信息如處理多少包,-n以數字方式顯示,-L顯示列表
iptables -A INPUT -s 172.18.62.60 -j REJECT
17、iptables命令
規則格式:iptables [-t table] SUBCOMMAND chain [-m matchname [per-match-options]] -j
targetname [per-targetoptions]
-t table:
raw, mangle, nat, [filter]默認
SUBCOMMAND:
1、鏈管理:
-N:new, 自定義一條新的規則鏈
-X:delete,刪除自定義的空的規則鏈
-P:Policy,設置默認策略;對filter表中的鏈而言,其默認策略有:
ACCEPT:接受
DROP:丟棄
注意:設置修改策略前先備份策略,將它的還原做成幾分鐘的計劃任務,然後再修
改策略,如果修改得登錄不上遠程服務器了就等幾分鐘計劃任務執行,還原本來的
策略進行連接;
例子:iptables -P INPUT DROP
-E:重命名自定義鏈;引用計數不爲0的自定義鏈不能夠被重命名,也不能被刪除
實驗:自定義鏈
(1)創建並使用
iptables -N invalid_packets 創建一條新的鏈
iptables -E invalid_packets INVALID_PACKAGES 如果名字不合適可以進行重命名

iptables -A INVALID_PACKAGES -p tcp --tcp-flags ALL ALL -j REJECT 鏈中定義無效規
則;
iptables -A INVALID_PACKAGES -p tcp --tcp-flags ALL NONE -j REJECT 鏈中定義無效規
則;

iptables -A OUTPUT -j INVALID_PACKAGES 在輸出鏈調用新定義的鏈規則
iptables -I INPUT -j INVALID_PACKAGES 在輸入鏈調用新定義的鏈規則
(2)刪除新定義的鏈
iptables -D INPUT 1 刪除新舊鏈的聯繫
iptables -D OUTPUT 1 刪除新舊鏈的聯繫

iptables -F INVALID_PACKAGES 清除新定義鏈的規則

iptables -X INVALID_PACKAGES 刪除空的鏈
18、iptables命令
2、查看:
-L:list, 列出指定鏈上的所有規則,本選項須置後
-n:numberic,以數字格式顯示地址和端口號
-v:verbose,詳細信息
-vv 更詳細
-x:exactly,顯示計數器結果的精確值,而非單位轉換後的易讀值
--line-numbers:顯示規則的序號
常用組合:
--vnL
--vvnxL --line-numbers
iptables -D INPUT 1 刪除編號爲1的規則
-S selected, 以iptables-save 命令格式顯示鏈上規則,可以重定向進行存盤

19、iptables命令
3、規則管理:
-A:append,追加
-I:insert, 插入,要指明插入至的規則編號,默認爲第一條
例:iptables -I INPUT 1 -s 172.18.65.32 -j REJECT
iptables -I INPUT 3 -s 172.18.62.60 -p icmp -j ACCEPT
-D:delete,刪除
(1) 指明規則序號
(2) 指明規則本身
例子:iptables -D INPUT 3 刪除第3條記錄
-R:replace,替換指定鏈上的指定規則編號
例子:iptables -R INPUT 3 -s 192.168.27.1 -j REJECT
-F:flush,清空指定的規則鏈
例子:iptables -F OUTPUT
-Z:zero,置零
iptables的每條規則都有兩個計數器
(1) 匹配到的報文的個數
(2) 匹配到的所有報文的大小之和
chain:PREROUTING,INPUT,FORWARD,OUTPUT, POSTROUTING

20、iptables命令
匹配條件
基本:通用的,PARAMETERS
擴展:需加載模塊,MATCH EXTENTIONS 需要將安裝的模塊啓用
1、基本匹配條件:無需加載模塊,由iptables/netfilter自行提供
[!] -s, --source address[/mask][,...]:源IP地址或範圍 !表示取反
例子:iptables -A INPUT ! -s 172.18.62.60 -j REJECT
[!] -d, --destination address[/mask][,...]:目標IP地址或範圍
[!] -p, --protocol protocol:指定協議,可使用數字如0(all) protocol: tcp, udp, icmp,
icmpv6, udplite,esp, ah, sctp, mh or “all“ 參看:/etc/protocols
例子:iptables -I INPUT 4 -s 172.18.62.60 -p tcp -j ACCEPT
[!] -i, --in-interface name:報文流入的接口;只能應用於數據報文流入環節,只應用於
INPUT、FORWARD、PREROUTING鏈
例子:iptables -I INPUT 3 -i ens33,lo -j ACCEPT
[!] -o, --out-interface name:報文流出的接口;只能應用於數據 報文流出的環節,只應用於
FORWARD、OUTPUT、POSTROUTING鏈
例子:iptables -A OUTPUT -d 17.18.62.60 -j REJECT
注意:ping命令走的是icmp協議;iptables -I INPUT 3 -j REJECT此命令執行後ping不回來了??

21、iptables命令
2 擴展匹配條件:需要加載擴展模塊(/usr/lib64/xtables/*.so) ,方可生效
查看幫助 man iptables-extensions centos7上進行查詢擴展用法
(1)隱式擴展:在使用-p選項指明瞭特定的協議時,無需再用-m選項指明擴展模塊的擴展機制,不
需要手動加載擴展模塊
tcp協議的擴展選項
[!] --source-port, --sport port[:port]:匹配報文源端口,可爲端口範圍
例子:iptables -I INPUT 3 -s 172.18.62.60 -p tcp --dport 445 -j ACCEPT
iptables -I INPUT 3 -s 172.18.62.60 -p tcp --dport 139 -j ACCEPT 響應包
smbclient -L 172.18.62.61 samba客戶端進行訪問測試
[!] --destination-port,--dport port[:port]:匹配報文目標端口,可爲範圍
例子:iptables -I INPUT 3 -s 172.18.62.60 -p tcp --dport=22 -j ACCEPT
iptables -I INPUT 3 -s 172.18.62.60 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT 3 -s 172.18.62.60 -p tcp --dport 22:80 -j ACCEPT
[!] --tcp-flags mask comp mask 需檢查的標誌位列表,用,分隔
例如 SYN,ACK,FIN,RST comp 在mask列表中必須爲1的標誌位列表,無指定則必
須爲 0,用,分隔;

22、tcp協議的擴展選項
示例:
--tcp-flags SYN,ACK,FIN,RST SYN 表示要檢查 的標誌位爲SYN,ACK,FIN,RST四個,其中SYN必須爲1,餘下的必須爲0
--tcp-flags SYN,ACK,FIN,RST SYN,ACK 二次握手的情況
--tcp-flags ALL ALL 所有的標記位都爲1,無效,拒絕
--tcp_flags ALL NONE 所有標記位都爲0,無效的數據包拒絕
[!] --syn:用於匹配第一次握手
相當於:--tcp-flags SYN,ACK,FIN,RST SYN

23、iptables命令
udp
[!] --source-port, --sport port[:port]:匹配報文的 源端口;可以是端口範圍
[!] --destination-port,--dport port[:port]:匹配報文的目標端口;可以是端口範圍
icmp
[!] --icmp-type {type[/code]|typename}
type/code
0/0 echo-reply icmp應答
8/0 echo-request icmp請求
例子:iptables -A OUTPUT -p icmp --icmp-type 0 -d 172.18.62.60 -j REJECT 一個可以ping
通另一個,但是另一個ping不通一個;
(2)顯式擴展:必須使用-m選項指明要調用的擴展模塊的擴展 機制,要手動加載擴展模塊
[-m matchname [per-match-options]]

24、iptables命令
處理動作:
-j targetname [per-target-options]
簡單: ACCEPT,DROP
擴展: REJECT:--reject-with:icmp-port-unreachable默認
RETURN:返回調用鏈 ,當前規則完成,繼續當前鏈的匹配下一條規則
REDIRECT:端口重定向
LOG:記錄日誌,dmesg
MARK:做防火牆標記
DNAT:目標地址轉換
SNAT:源地址轉換
MASQUERADE:地址僞裝
...
自定義鏈:

25、iptables命令
顯式擴展:必須顯式地指明使用的擴展模塊進行的擴展
使用幫助:
CentOS 6: man iptables
CentOS 7: man iptables-extensions
1、multiport擴展
以離散方式定義多端口匹配,最多指定15個端口
[!] --source-ports,--sports port[,port|,port:port]... 指定多個源端口
[!] --destination-ports,--dports port[,port|,port:port]... 指定多個目標端口
[!] --ports port[,port|,port:port]...多個源或目標端口
示例: iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.10 -p tcp -m multiport --dports
20:22,80 -j ACCEPT;
實驗:samba服務
iptables -I INPUT 3 -p tcp -m multiport --dports 445,139 -j ACCEPT
iptables -I INPUT 3 -p udp --dport 137:138 -j ACCEPT
smbclient -L 172.18.62.61 進行測試
26、iptables命令
2、iprange擴展
指明連續的(但一般不是整個網絡)ip地址範圍
[!] --src-range [from]-[to] 源IP地址範圍
[!] --dst-range [from]-[to] 目標IP地址範圍
示例: iptables -A INPUT -d 172.16.1.100 -p tcp --dport 80 -m iprange --src-range 172.16.1.5-
172.16.1.10 -j DROP;
實驗:samba服務
iptables -I INPUT 3 -m iprange --src-range 172.18.62.6-172.18.62.70 -j ACCEPT
iptables -I INPUT 3 -m iprange --src-range 172.18.62.5 -j ACCEPT 單個地址
smbclient -L 172.18.62.61 進行測試
27、iptables命令
3、mac擴展
指明源MAC地址
適用於:PREROUTING, FORWARD,INPUT chains
[!] --mac-source XX:XX:XX:XX:XX:XX
示例: iptables -A INPUT -s 172.16.0.100 -m mac --macsource 00:50:56:12:34:56 -j ACCEPT
iptables -A INPUT -s 172.16.0.100 -j REJECT;
實驗:samba服務
ip a A機器
然後斷開A機器的網卡
vim /etc/sysconfig/network-scripts/ifcfg-eth0 C機器
MACADDR=00:0c:29:c7:98:27
service network restart
iptables -I INPUT 3 -m mac --mac-source 00:0c:29:c7:98:27 -j ACCEPT
smbclient -L 172.18.62.61 進行測試
28、iptables命令
4、string擴展
對報文中的應用層數據做字符串模式匹配檢測
--algo {bm|kmp}:字符串匹配檢測算法
bm:Boyer-Moore
kmp:Knuth-Pratt-Morris
--from offset 開始偏移
--to offset 結束偏移
[!] --string pattern:要檢測的字符串模式
[!] --hex-string pattern:要檢測字符串模式,16進制格式
示例: iptables -A OUTPUT -s 172.16.100.10 -d 0/0 -p tcp --sport 80 -m string --algo bm --
string “google" -j REJECT;
實驗:samba服務
yum install httpd
echo www.google.com > /var/www/html/test.html
echo www.magedu.com.com > /var/www/html/test2.html
iptables -I OUTPUT -m string --algo bm --string "google" -j REJECT
tcpdump -i ens33 port 80 -nn 可以在目的機器進行抓包觀察
curl 172.18.62.61/test.html 進行測試
29、iptables命令
5、time擴展
根據將報文到達的時間與指定的時間範圍進行匹配
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 日期
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--timestart hh:mm[:ss] 時間
--timestop hh:mm[:ss]
[!] --monthdays day[,day...] 每個月的幾號
[!] --weekdays day[,day...] 星期幾
--kerneltz:內核時區,不建議使用,CentOS7系統默認爲UTC
注意: centos6 不支持kerneltz ,--localtz指定本地時區(默認)
示例:
iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.10 -p tcp --dport 80 -m time --
timestart 14:30 --timestop 18:30 --weekdays Sat,Sun --kerneltz -j DROP;

30、iptables命令
6、connlimit擴展
根據每客戶端IP做併發連接數數量匹配
可防止CC(Challenge Collapsar挑戰黑洞)××× ,即dos×××的變種
--connlimit-upto n:連接的數量小於等於n時匹配
--connlimit-above n:連接的數量大於n時匹配
通常分別與默認的拒絕或允許策略配合使用
示例:
iptables -A INPUT -d 172.16.100.10 -p tcp --dport 22 -m connlimit --connlimit-above 2 -
j REJECT;
實驗:測試connlimit模塊
iptables -I INPUT 3 -m connlimit --connlimit-upto 2 -j ACCEPT
ssh 172.18.62.61 測試,在同一ip的多個客戶端
31、iptables命令
7、limit擴展
基於收發報文的速率做匹配
令牌桶過濾器
--limit rate[/second|/minute|/hour|/day]
--limit-burst number
示例: iptables -I INPUT -d 172.16.100.10 -p icmp --icmptype 8 -m limit --limit 3/minute --
limit-burst 5 -j ACCEPT iptables -I INPUT 2 -p icmp -j REJECT;
注意:此模塊可以用於剛上線服務器獲取緩存,緩減壓力;
實驗:測試limit模塊
iptables -I INPUT 3 -m limit --limit 20/minute --limit-burst 10 -j ACCEPT
ping 172.18.62.61 測試發現剛開始正常,10個包後就出現丟包的現象
32、iptables命令
8、state擴展
根據”連接追蹤機制“去檢查連接的狀態,較耗資源
conntrack機制:追蹤本機上的請求和響應之間的關係
狀態有如下幾種:
NEW:新發出請求;連接追蹤信息庫中不存在此連接的相關信息條目,因此,將其識別爲第
一次發出的請求;
ESTABLISHED:NEW狀態之後,連接追蹤信息庫中爲其建立的條目失效之前期間內所進行
的通信狀態
RELATED:新發起的但與已有連接相關聯的連接,如: ftp協議中的數據連接與命令連接之
間的關係
INVALID:無效的連接,如flag標記不正確
UNTRACKED:未進行追蹤的連接,如raw表中關閉追蹤
實驗:實現舊的所有連接不斷開繼續工作,新的連接只能連接httpd服務
iptables -I INPUT 3 -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -vnL
curl 172.18.62.61 測試網頁
33、iptables命令
[!] --state state
示例:
iptables -A INPUT -d 172.16.1.10 -p tcp -m multiport -- dports 22,80 -m state --state
NEW,ESTABLISHED -j ACCEPT ;
iptables -A OUTPUT -s 172.16.1.10 -p tcp -m multiport --sports 22,80 -m state --state
ESTABLISHED -j ACCEPT ;
已經追蹤到的並記錄下來的連接信息庫
/proc/net/nf_conntrack
調整連接追蹤功能所能夠容納的最大連接數量
/proc/sys/net/nf_conntrack_max
不同的協議的連接追蹤時長
/proc/sys/net/netfilter/
注意:CentOS7 可以手動加載模塊: modprobe nf_conntrack
lsmod|grep nf_con 可以查看模塊
實驗:更改最大連接數量
cat /proc/sys/net/nf_conntrack_max 查看最大連接數量
vim /etc/sysctl.conf
net.nf_conntrack_max=666666
sysctl -p 更改生效
34、iptables命令
iptables的鏈接跟蹤表最大容量爲/proc/sys/net/nf_conntrack_max,各種狀態的超時鏈接會從表
中刪除;當模板滿載時,後續連接可能會超時,設置最大連接數量要適當;
解決方法兩個:
(1) 加大nf_conntrack_max 值
vi /etc/sysctl.conf
net.nf_conntrack_max = 393216
net.netfilter.nf_conntrack_max = 393216
(2) 降低 nf_conntrack timeout時間
vi /etc/sysctl.conf
net.netfilter.nf_conntrack_tcp_timeout_established = 300
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
iptables -t nat -L -n

35、iptables命令
開放被動模式的ftp服務
(1) 裝載ftp連接追蹤的專用模塊:
跟蹤模塊路徑:/lib/modules/kernelversion/kernel/net/netfilter
vim /etc/sysconfig/iptables-config 配置文件
IPTABLES_MODULES=" nf_conntrack_ftp "
modproble nf_conntrack_ftp
(2) 放行請求報文:
命令連接:NEW, ESTABLISHED
數據連接:RELATED, ESTABLISHED
iptables –I INPUT -d LocalIP -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -d LocalIP -p tcp --dport 21 -m state -- state NEW -j ACCEPT
(3) 放行響應報文:
iptables -I OUTPUT -s LocalIP -p tcp -m state --state ESTABLISHED -j ACCEPT
實驗:防火牆對ftp服務的策略
服務器上:
modprobe nf_conntrack_ftp 加載模塊
iptables -R INPUT 3 -p tcp --dport 21 -m state --state NEW -j ACCEPT
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -vnL
cp /etc/fstab /var/ftp/pub/
另一個機器上:
ftp 172.18.62.61
用ftp賬號登錄,密碼沒有
ls命令即可數據通道被動模式連接成功
36、開放被動模式的ftp服務示例
yum install vsftpd
systemctl start vsftpd
modprobe nf_conntrack_ftp
iptables -F
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -m state -- state NEW -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -vnL

37、iptables命令
Target:
ACCEPT, DROP, REJECT, RETURN
LOG, SNAT, DNAT, REDIRECT, MASQUERADE,..
LOG: 非中斷target,本身不拒絕和允許,放在拒絕和允許規則前並將日誌記錄
在/var/log/messages系統日誌中
--log-level level 級別: emerg, alert, crit, error, warning, notice, info or debug
--log-prefix prefix 日誌前綴,用於區別不同的日誌,最多 29個字符
示例: iptables -I INPUT -s 10.0.1.0/24 -p tcp -m multiport -- dports 80,21,22,23 -m state --
state NEW -j LOG --logprefix "new connections: ";
實驗:測試防火牆日誌的記錄
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -j LOG --log-prefix "new ssh
connection" 放到第一條進行符合條件的防火牆日誌記錄
iptables -vnL 查看防火牆的狀態
tail /var/log/messages -f 在被訪問的機器上跟蹤日誌狀態;

38、iptables命令
任何不允許的訪問,應該在請求到達時給予拒絕
規則在鏈接上的次序即爲其檢查時的生效次序
基於上述,規則優化
1 安全放行所有入站和出站的狀態爲ESTABLISHED狀態連接
2 謹慎放行入站的新請求
3 有特殊目的限制訪問功能,要在放行規則之前加以拒絕
4 同類規則(訪問同一應用),匹配範圍小的放在前面,用於特 殊處理
5 不同類的規則(訪問不同應用),匹配範圍大的放在前面
6 應該將那些可由一條規則能夠描述的多個規則合併爲一條
7 設置默認策略,建議白名單(只放行特定連接)
1) iptables -P,不建議
2) 建議在規則的最後定義規則做爲默認策略;

39、iptables命令
規則有效期限:
使用iptables命令定義的規則,手動刪除之前,其生效期限爲 kernel存活期限
保存規則:
保存規則至指定的文件
CentOS 6
service iptables save
將規則覆蓋保存至/etc/sysconfig/iptables文件中

CentOS 7 可用下面方法保存規則
iptables -S > /PATH/TO/SOME_RULES_FILE 此項的保存格式不適合用iptables-
restore命令進行恢復;
iptables-save > /PATH/TO/SOME_RULES_FILE 此項適合恢復
總結:
service iptables save centos6保存防火牆內容到/etc/sysconfig/iptables文件中
service iptables start 一旦重啓iptables服務,就會重讀文件獲得規則
備份防火牆規則內容然後進行恢復:
cp /etc/sysconfig/iptables /backups/iptables
iptables-restore < /backups/iptables
service iptabels reload 可以不重啓就重新讀取/etc/sysconfig/iptables文件的內容
防止防火牆策略配置出錯的命令和腳本:
service iptables save 保存磁盤
cp /etc/sysconfig/iptables /backups/iptables.bak
vim restore_iptables.sh
#!/bin/bash
cp /backups/iptables.bak /etc/sysconfig/iptables
service iptables reload
yum whatprovides at
yum install at
chkconfig --list atd
service atd start
cat restore_iptables.sh | at now+5minute 計劃任務5分鐘後執行
40、iptables命令
CentOS 6:
service iptables restart
會自動從/etc/sysconfig/iptables 重新載入規則
CentOS 7 重新載入預存規則文件中規則:
iptables-restore < /PATH/FROM/SOME_RULES_FILE
-n, --noflush:不清除原有規則
-t, --test:僅分析生成規則集,但不提交
開機自動重載規則文件中的規則:
(1) 用腳本保存各iptables命令;讓此腳本開機後自動運行
/etc/rc.d/rc.local文件中添加腳本路徑
/PATH/TO/SOME_SCRIPT_FILE
(2) 用規則文件保存各規則,開機時自動載入此規則文件中的規則
/etc/rc.d/rc.local文件添加
iptables-restore < /PATH/FROM/IPTABLES_RULES_FILE
(3)自定義Unit File,進行iptables-restore

41、網絡防火牆
iptables/netfilter網絡防火牆:
(1) 充當網關
(2) 使用filter表的FORWARD鏈
注意的問題:
(1) 請求-響應報文均會經由FORWARD鏈,要注意規則 的方向性
(2) 如果要啓用conntrack機制,建議將雙方向的狀態爲 ESTABLISHED的報文直接放行
注意:Linux服務器可以當做路由器來使用,可以作爲網絡防火牆
實驗:實現網絡防火牆,內網的ftp和http,ssh服務可以外網訪問,其它不行,內網訪問外網不控
制;A<---->B<---->C
(1)使用A機器模擬外網
hostname wanServer 修改主機名標識外網
nmcli connection modify ens37 ipv4.method manual ipv4.addresses 192.168.42.60/24
修改網卡ens37的通外網的ip地址爲192.168.42.60
nmcli connection modify ens37 ipv4.gateway 192.168.42.61 修改網關指向路由器
nmcli connection up ens37 使得更改生效
route -n 查看路由指向,保證只能從指向路由器的接口出去,可以使用如下命令:
ifconfig ens33 down
ping 172.18.62.62 關掉內網進行測試是否配置正確
測試最終目的
(2)使用B機器模擬路由器轉發
hostname router 修改主機名標識路由器
sysctl -a|grep ip_for 查看設置轉發的配置
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p 使得設置轉發生效
nmcli connection show 查看網卡
nmcli connection ens37 ipv4.method manual ipv4.addresses 192.168.42.61/24 設置路由
器的ens37網卡的地址;
nmcli connection ens33 ipv4.method manual ipv4.addresses 172.18.62.61/16 設置路由
器ens33的網卡的通外網的地址;
route -n 查看路由,保證兩個網卡都可以轉發
測試可以ping通且63個路由穿過之後,防火牆策略實現最終目的
1)實現外網不能連接通內網,但是內網可以連接外網
iptables -A FORWARD -d 172.18.62.62 -m state --state NEW -j REJECT
2)實現外網不能ping通內網,但是內網可以連接外網
iptables -A FORWARD -d 172.18.0.0/24 -p icmp --icmp-type 8 -j REJECT
3)實現外網訪問內網的ftp和http,ssh服務,其它不行,而內網可以隨意訪問外網
lsmod|grep nf_conn 搜索實現連接追蹤端口的模塊
modprobe nf_conntrack_ftp 加載模塊
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -d 172.18.62.62 -p tcp -m multiport --dports 21,80,22 -m
state --state NEW -j ACCEPT;
iptables -A FORWARD -j REJECT
(3)使用C機器模擬內網
hostname lanServer 修改主機名標識內網
nmcli connection show 查看網卡
nmcli connection modify ens37 ipv4.method manual ipv4.addresses 192.168.42.62/24
設置ens37網卡的通外網的地址
nmcli connection modify ens33 ipv4.method manual ipv4.addresses 172.18.62.62/16 設置
ens33網卡的地址;
nmcli connection modify ens33 connection.id eth1 修改網卡的名字
nmcli connection modify ens37 connection.id eth0 修改網卡名字
nmcli connection modify eth1 ipv4.gateway 172.18.62.61/16 修改網關指向
route -n
nmcli connection up ens33 生效
ifconfig ens37 down
ping 192.168.42.60 關掉外網測試

yum install vsftpd httpd
systemctl start vsftpd httpd
42、NAT
NAT: network address translation
PREROUTING,INPUT,OUTPUT,POSTROUTING
請求報文:修改源/目標IP,由定義如何修改
響應報文:修改源/目標IP,根據跟蹤機制自動實現
SNAT:source NAT POSTROUTING, INPUT
讓本地網絡中的主機通過某一特定地址訪問外部網絡,實現地址僞裝
請求報文:修改源IP
注意:是將私有ip替換爲公有ip轉發到互聯網
DNAT:destination NAT PREROUTING , OUTPUT
把本地網絡中的主機上的某服務開放給外部網絡訪問(發 布服務和端口映射),但隱藏真實IP
請求報文:修改目標IP
PNAT: port nat,端口和IP都進行修改

注意:SNAT和DNAT是站在發請求的客戶端來看的;
43、SNAT
nat表的target:
SNAT:固定IP
--to-source [ipaddr[-ipaddr]][:port[-port]]
--random
iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j SNAT --to-source ExtIP
示例: iptables -t nat -A POSTROUTING -s 10.0.1.0/24 ! – d 10.0.1.0/24 -j SNAT --to-source
172.18.1.6- 172.18.1.9;
注意:如果沒有NAT轉換地址,那麼內網地址出去發送請求後回不來
實驗:實現內網訪問外網時地址的轉換
(1)A機器代表外網 ip192.168.42.60
在虛擬機中將機器A的內網網卡ens33下線,用外網的ip連接ssh
route del -net 172.18.0.0 netmask 255.255.0.0 刪除多餘的路由
yum install httpd
systemctl start httpd
tcpdump -i ens37 host 192.168.42.61 -nn 在內網ping測試時進行抓包
tail /var/log/httpd/access_log 查看日誌記錄,發現記錄的是192.168.42.61地址到達的
包,而不是172.18.62.62地址;
(2)B機器代表NAT轉發器 ip1 172.18.62.61 ip2 192.168.42.61
vim /etc/sysctl.conf 配置文件設置轉發的選項
net.ipv4.ip_forward=1
sysctl -p 轉發生效
iptables -vnL -t nat 查看防火牆設置
iptables -t nat -A POSTROUTING -s 172.18.0.0/16 ! – d 172.18.0.0/16 -j SNAT --to-
source 192.168.42.61;
(3)C機器代表內網 ip 172.18.62.62
在虛擬機設置中將外網的網卡ens37下線
route del default gw 192.168.42.1 刪除原來的默認路由網關
route del -net 192.168.0.0 netmask 255.255.0.0 刪除多餘的路由地址
route add default gw 172.18.62.61 添加路由指向,也可去文件設置網關永久生效
curl 192.168.42.60 測試
ping 192.168.42.60
44、SNAT
MASQUERADE:動態IP,如撥號網絡
--to-ports port[-port]
--random
iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j MASQUERADE
示例:
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 ! – d 10.0.1.0/24 -j MASQUERADE
注意:此可以用在固定ip時
實驗:內網訪問外網時轉換爲動態ip
(1)在上一個SNAT的實驗的基礎上,將B機器的防火牆的地址轉換策略清空
(2)設置新的地址轉換策略以應對撥號上網的而帶來的ip地址的變化
iptables -t nat -A POSTROUTING -s 172.18.0.0/16 ! -d 172.18.0.0/16 -j MASQUERADE
(3)進行測試
C機器上執行:
curl 192.168.42.60 測試
ping 192.168.42.60
A機器上執行:
tcpdump -i ens37 host 192.168.42.61 -nn 在內網ping測試時進行抓包
tail /var/log/httpd/access_log 查看日誌記錄,發現記錄的是192.168.42.61地址到達的
(4)總結
MASQUERADE選項可以自動獲取地址轉換器上的公有IP地址,進行地址轉換
注意:固定ip的性能更好,動態ip的性能不行;
45、DNAT
DNAT --to-destination [ipaddr[-ipaddr]][:port[-port]]  iptables -t nat -A PREROUTING -d ExtIP -p tcp|udp --dport PORT -j DNAT --to-destination InterSeverIP[:PORT]  示例: iptables -t nat -A PREROUTING -s 0/0 -d 172.18.100.6 -p tcp --dport 22 -j DNAT --todestination 10.0.1.22 iptables -t nat -A PREROUTING -s 0/0 -d 172.18.100.6 -p tcp --dport 80 -j DNAT --todestination 10.0.1.22:8080
實驗:實現外網訪問內網時的ip地址的轉換
(1)A機器代表外網 ip192.168.42.60
在虛擬機中將機器A的內網網卡ens33下線,用外網的ip連接ssh
route del -net 172.18.0.0 netmask 255.255.0.0 刪除多餘的路由
yum install httpd
systemctl start httpd
curl 192.168.42.61 測試httpd服務,前後比較可以訪問
ftp 192.168.42.61 測試訪問ftp服務,前後比較可以訪問,但是由於主動模式和被動模
式的原因,不能達到預期目的;
mysql -uroot -h192.168.42.61 測試數據庫連接(先在數據庫機器修改數據庫連接
的主機);
(2)B機器代表NAT轉發器 ip1 172.18.62.61 ip2 192.168.42.61
vim /etc/sysctl.conf 配置文件設置轉發的選項
net.ipv4.ip_forward=1
sysctl -p 轉發生效
iptables -vnL -t nat 查看防火牆設置i
iptables -t nat -A PREROUTING -d 192.168.42.61 -p tcp --dport 3306 -j DNAT --to-
destination 172.18.62.63; 設置外網訪問數據庫的策略
iptables -t nat -A PREROUTING -d 192.168.42.61 -p tcp --dport 21 -j DNAT --to-
destination 172.18.62.63; 設置外網訪問ftp服務的策略
iptables -t nat -A PREROUTING -d 192.168.42.61 -p tcp --dport 80 -j DNAT --to-
destination 172.18.62.63; 設置外網訪問httpd服務的策略
(3)C機器代表內網 ip 172.18.62.62
在虛擬機設置中將外網的網卡ens37下線
route del default gw 192.168.42.1 刪除原來的默認路由網關
route del -net 192.168.0.0 netmask 255.255.0.0 刪除多餘的路由地址
route add default gw 172.18.62.61 添加路由指向,也可去文件設置網關永久生效
(4)D機器也代表內網 ip172.18.62.63
在虛擬機設置中將外網的網卡ens37下線
route add default gw 172.18.62.61 添加路由指向,也可去文件設置網關永久生效
將其他沒用的路由都刪除
yum install vsftpd 安裝ftp服務
systemctl start vsftpd
systemctl stop firewalld 確保默認策略防火牆關閉
yum install mariadb-server 安裝數據庫服務
systemctl start mariadb
update mysql.user set host='192.168.42.%' where host='localhost.localdomain'; 修改
主機的時候修改以主機名爲主機的用戶,不要修改代表本機的主機如localhost;否則會
訪問不了;
show processlist; 顯示連接本機的進程
46、轉發
REDIRECT:
NAT表
可用於:PREROUTING OUTPUT 自定義鏈
通過改變目標IP和端口,將接受的包轉發至不同端口 如發送到一個主機80端口,在轉發
到這臺主機的其他真正提供服務的端口;
--to-ports port[-port]
示例: iptables -t nat -A PREROUTING -d 172.16.100.10 -p tcp --dport 80 -j REDIRECT --to-
ports 8080;
注意:原來的80端口是不在監聽的,但是可以外界可以掃描出80端口;因爲nat端口轉發是內核
級的;
此爲面試題
實驗:轉發
(1)基於上一個DNAT實驗進行本次實驗
(2)在D機器上配置策略
vim /etc/httpd/conf/httpd.conf
Listen 10086
systemctl restart httpd
iptables -t nat -A PREROUTING -d 172.18.62.62 -p tcp --dport 80 -j REDIRECT --to-ports
10086;
(3)在A機器上進行測試
curl 192.168.42.61
47、firewalld服務
firewalld是CentOS 7.0新推出的管理netfilter的工具
firewalld是配置和監控防火牆規則的系統守護進程。可以實 現iptables,ip6tables,ebtables的功能
firewalld服務由firewalld包提供
firewalld支持劃分區域zone,每個zone可以設置獨立的防火牆規則
歸入zone順序:
先根據數據包中源地址,將其納爲某個zone
納爲網絡接口所屬zone
納入默認zone,默認爲public zone,管理員可以改爲其它zone
網卡默認屬於public zone,lo網絡接口屬於trusted zone

48、firewalld zone分類

注意:block對已經連接的主機是不限制的;
49、預定義服務

50、firewalld配置
firewall-cmd --get-services 查看預定義服務列表 ,預定義服務用的是標準端口
/usr/lib/firewalld/services/*.xml預定義服務的配置
三種配置方法
firewall-config (firewall-config包)圖形工具
firewall-cmd (firewalld包)命令行工具
/etc/firewalld 配置文件,一般不建議

51、firewall-cmd 命令選項
--get-zones 列出所有可用區域
--get-default-zone 查詢默認區域
--set-default-zone= 設置默認區域
--get-active-zones 列出當前正使用的區域
--add-source=[--zone=] 添加源地 址的流量到指定區域,如果無--zone= 選項,使用默認區域
--remove-source= [--zone=] 從指定區 域中刪除源地址的流量,如果無--zone= 選項,使用默認區
域;
--add-interface=[--zone=] 添 加來自於指定接口的流量到特定區域,如果無--zone= 選項 ,使用
默認區域;
注意:firewall-cmd命令執行前必須將防火牆開啓;針對的內置服務都是標準端口的服務

52、firewall-cmd 命令選項
--change-interface=[--zone=]
改變指定接口至新的區域,如果無--zone= 選項,使用默認區域
--add-service= [--zone=] 允許服務的流量通過,如果無--zone= 選項,使用默認區域
例子:firewall-cmd --add-service=http
--add-port=[--zone=] 允許指定端口和協議的流量,如果無--zone= 選項,使用默認區域
例子:firewall-cmd --add-port=8080/tcp
53、firewall-cmd 命令選項
--remove-service= [--zone=] 從區域中刪除指定服務,禁止該服務流量,如果無--zone= 選 項,
使用默認區域;
--remove-port=[--zone=] 從區域中刪除指定端口和協議,禁止該端口的流量,如果無--zone= 選
項,使用默認區域;
--reload 刪除當前運行時配置,應用加載永久配置
--list-services 查看開放的服務
--list-ports 查看開放的端口
--list-all [--zone=] 列出指定區域的所有配置信息,包括接口,源地址,端口,服務等,如果無-
-zone= 選項,使用默認區域;

54、firewall-cmd 命令示例
查看默認zone
firewall-cmd --get-default-zone
默認zone設爲dmz
firewall-cmd --set-default-zone=dmz
在internal zone中增加源地址192.168.0.0/24的永久規則
firewall-cmd --permanent --zone=internal -- add-source=192.168.0.0/24
在internal zone中增加協議mysql的永久規則
firewall-cmd --permanent –zone=internal --addservice=mysql
加載新規則以生效
firewall-cmd --reload

55、實驗:配置firewalld
systemctl mask iptables ipv4的iptables功能關閉,不能用start啓動了
systemctl mask ip6tables ipv6的iptables功能關閉
systemctl status firewalld
systemctl enable firewalld
systemctl start firewalld
firewall-cmd --get-default-zone
firewall-cmd --set-default-zone public
firewall-cmd --permanent --zone=public --list-all
firewall-cmd --permanent --zone=public --addport 8080/tcp
firewall-cmd ---reload

56、其它規則
當基本firewalld語法規則不能滿足要求時,可以使用以下更復雜的規則
rich-rules 富規則,功能強,表達性語言
Direct configuration rules 直接規則,靈活性差
幫助:man 5 firewalld.direct

57、管理rich規則
rich規則比基本的firewalld語法實現更強的功能,不僅實現允許/拒絕,還可以實現日誌syslog和auditd,也可以實現端口轉發,僞裝和限制速率
rich語法:
rule
[source]
[destination]
service|port|protocol|icmp-block|masquerade|forward-port
[log]
[audit]
[accept|reject|drop]
man 5 firewalld.richlanguage

58、規則
規則實施順序:
該區域的端口轉發,僞裝規則
該區域的日誌規則
該區域的允許規則
該區域的拒絕規則
每個匹配的規則生效,所有規則都不匹配,該區域默認規則生效

59、rich規則選項

60、rich規則示例
拒絕從192.168.0.11的所有流量,當address選項使用source 或 destination時,必須用family=
ipv4 |ipv6.
firewall-cmd --permanent --zone=cla***oom --add-richrule='rule family=ipv4 source
address=192.168.0.11/32 reject‘
限制每分鐘只有兩個連接到ftp服務
firewall-cmd --add-rich-rule=‘rule service name=ftp limit value=2/m accept’
拋棄esp( IPsec 體系中的一種主要協議)協議的所有數據包
firewall-cmd --permanent --add-rich-rule='rule protocol value=esp drop'
接受所有192.168.1.0/24子網端口範圍7900-7905的TCP流量
firewall-cmd --permanent --zone=vnc --add-rich-rule='rule family=ipv4 source
address=192.168.1.0/24 port port=7900- 7905 protocol=tcp accept';

61、rich日誌規則
log [prefix="<PREFIX TEXT>" [level=<LOGLEVEL>]
[limit value="RATE/DURATION"]
<LOGLEVEL>可以是 emerg,alert, crit, error, warning, notice, info, debug.
<DURATION>s:秒, m:分鐘, h:小時, d:天
audit [limit value="RATE/DURATION"]

62、rich日誌規則實例
接受ssh新連接,記錄日誌到syslog的notice級別,每分鐘最 多三條信息
firewall-cmd --permanent --zone=work --add-richrule='rule service name="ssh" log
prefix="ssh " level="notice" limit value="3/m" accept
從2001:db8::/64子網的DNS連接在5分鐘內被拒絕,並記錄到日誌到audit,每小時最大記錄一條信
息;
firewall-cmd --add-rich-rule='rule family=ipv6 source address="2001:db8::/64" service
name="dns" audit limit value="1/h" reject' --timeout=300;

63、規則示例
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=172.25.X.10/32
service name="http" log level=notice prefix="NEW HTTP " limit value="3/s" accept'
firewall-cmd --reload
tail -f /var/log/messages
curl http://serverX.example.com

64、僞裝和端口轉發
NAT網絡地址轉換,firewalld支持僞裝和端口轉發兩種NAT方式
僞裝NAT
firewall-cmd --permanent --zone= --addmasquerade
firewall-cmd --query-masquerade 檢查是否允許僞裝
firewall-cmd --add-masquerade 允許防火牆僞裝IP
firewall-cmd --remove-masquerade 禁止防火牆僞裝IP
示例: firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.0.0/24
masquerade';

65、端口轉發
端口轉發:將發往本機的特定端口的流量轉發到本機或不同機器的另一個端口。通常要配合地址
僞裝才能實現
firewall-cmd --permanent --zone= --add-forwardport=port=:proto=[:toport=][:toaddr=] 說明:
toport= 和toaddr= 至少要指定一個
示例:
轉發傳入的連接9527/TCP,到防火牆的80/TCP到public zone 的192.168.0.254
firewall-cmd --add-masquerade 啓用僞裝
firewall-cmd --permanent --zone=public --addforward
port=port=9527:proto=tcp:toport=80:toaddr= 192.168.0.254
firewall-cmd --reload
注意:RHCE考點
66、rich規則
rich規則語法:
forward-port port=<PORTNUM> protocol=tcp|udp [toport=<PORTNUM>] [to-addr=<ADDRESS>]
示例:
轉發從192.168.0.0/24來的,發往80/TCP的流量到防火牆的 端口8080/TCP
firewall-cmd --permanent --zone=work --add-richrule='rule family=ipv4 source
address=192.168.0.0/24 forward-port port=80 protocol=tcp to-port=8080'

67、rich規則示例
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.25.X.10/32 、
forwardport port=443 protocol=tcp to-port=22';
firewall-cmd --reload
ssh -p 443 serverX.example.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章