一.Linux防火墻基礎
1.1Linux包過濾防火墻概述
- Linux 系統(tǒng)的防火墻: IP信息包過濾系統(tǒng),它實際上由兩個組件
netfilter
和iptables
組成。 - 主要工作在網(wǎng)絡層,針對IP數(shù)據(jù)包。體現(xiàn)在對包內的IP地址、端口、協(xié)議等信息的處理上
netfilter/iptables 關系:
- netfiter: 屬于“內核態(tài)” (Kernel Space,又稱為內核空間)的防火墻功能體系
- 是內核的一部分,由一些數(shù)據(jù)包過濾表組成,這些表包含內核用來控制數(shù)據(jù)包過濾處理的規(guī)則集。
位于Linux內核中的包過濾功能體系
稱為Linux防火墻的“內核態(tài)”
-
iptables:屬于“用戶態(tài)”(user Space,又稱為用戶空間) 的防火墻管理體系。
-
是一種用來管理Linux防火墻的命今程序,它使插入、修改和刪除數(shù)據(jù)包過濾表中的規(guī)則變得容易,通常位于/sbin/iptables文件下
位于/sbin/iptables,用來管理防火墻規(guī)則的工具
稱為Linux防火墻的“用戶態(tài)“
netfilter/iptables后期簡稱為iptables。iptables是基于內核的防火墻,其中內置了 raw、mangle、 nat 和 filter四個規(guī)則表。表中所有規(guī)則配置后,立即生效,不需要重啟服務。
1.2四表五鏈
- 規(guī)則表的作用: 容納各種規(guī)則鏈
- 規(guī)則鏈的作用: 容納各種防火墻規(guī)則
- 總結:表里有鏈,鏈里有規(guī)則
四表:
(1)raw表;確定是否對該數(shù)據(jù)包進行狀態(tài)跟蹤。包含兩個規(guī)則鏈,OUTPUT、PREROUTING
(2)mangle表:修改數(shù)據(jù)包內容,用來做流量整形的,給數(shù)據(jù)包設置標記。包含五個規(guī)則鏈,INPUT、OUTEPUT、FORWARD、PREROUTING、POSTROUTING
(3)nat表:負責網(wǎng)絡地址轉換,用來修改數(shù)據(jù)包中的源、目標IP地址或端口。包含三個規(guī)則鏈,OUTPUT、REROUTING、POSTROUTING
(4)filter表:負責過濾數(shù)據(jù)包,確定是否放行該數(shù)據(jù)包 (過濾)。包含三個規(guī)則鏈,INPUT、FORMARD、OUTPUT。
在 iptables 的四個規(guī)則表中,mangle 表和 raw 表的應用相對較少。
五鏈:
(1)INPUT;處理入站數(shù)據(jù)包,匹配目標IP為本機的數(shù)據(jù)包
(2)OUTPUT;處理出數(shù)據(jù)包,一般不在此鏈上做配置;
(3)FORWARD;處理轉發(fā)數(shù)據(jù)包,匹配流經(jīng)本機機的數(shù)據(jù)包。
(4)PREROUTING;在進行路由選擇前
處理數(shù)據(jù)包,用來修改目的地址,用來做DNAT。相當于把內網(wǎng)服務器的IP和端口映射到路由器的外網(wǎng)IP和端口上。
(5)POSTROUTING;在進行路出選擇后
處理數(shù)據(jù)包,用來修改源地址,用來做SNAT。相當于內網(wǎng)通過路出器NAT轉換功能實現(xiàn)內網(wǎng)主機通過一個公網(wǎng)IP地址上網(wǎng)
數(shù)據(jù)包到達防火墻時,規(guī)則表之間的優(yōu)先順序:
raw > mangle > nat > filter
1.3規(guī)則鏈之間的匹配順序
1.主機型防火墻:
入站數(shù)據(jù)(來自外界的數(shù)據(jù)包,且目標地址是防火墻本機):
PREROUTING --> INPUT --> 本機的應用程序
出站數(shù)據(jù)(從防火墻本機向外部地址發(fā)送的數(shù)據(jù)包):
本機的應用程序 --> OUTPUT --> POSTROUTING
2.網(wǎng)絡型防火墻:
轉發(fā)數(shù)據(jù)(需要經(jīng)過防火墻轉發(fā)的數(shù)據(jù)包) :
PREROUTING --> FORWARD -->POSTROUTING
1.4規(guī)則鏈內的匹配順序
-
自上向下
按順序依次進行檢查,找到相匹配的規(guī)則即停上 (LOG策略例外,表示記求相關日志) - 若在該鏈內找不到相匹配的規(guī)則,則按該鏈的默認策略處理(未修改的狀況下,默認策略為允許)
1.5總結
iptables防火墻:是Linux系統(tǒng)防火墻的一種 Centos7以前的默認防火墻
組件:
netfilter:屬于內核態(tài)的功能體系,是一個內核模塊,由多個規(guī)則表組成,其中包括過濾數(shù)據(jù)包的規(guī)則集
iptables:屬于用戶態(tài)的管理工具,是一個應用程序,用來管理防火墻的規(guī)則集
四表五鏈:
表中有鏈,鏈中有規(guī)則四表
:
1.raw(數(shù)據(jù)包狀態(tài)跟蹤)
2.mangle(修改數(shù)據(jù)包內容)
3.nat(地址轉換)
4.filter(過濾數(shù)據(jù)包)五鏈
:
1.INPUT(處理入站數(shù)據(jù))
2.OUTPUT(處理出戰(zhàn)數(shù)據(jù))
3.FORWARD(處理轉發(fā)數(shù)據(jù))
4.POSTROUTING(修改源IP)
5.PREROUTING(修改目的IP)
表
的匹配優(yōu)先級:
raw > mangle > nat > filter鏈
的匹配順序:
入站數(shù)據(jù) PREROUTING --> INPUT --> 本機的應用程序 過濾數(shù)據(jù)包filter(INPUT)
出站數(shù)據(jù) 本機的應用程序 -> OUTPUT -> POSTROUTING 過濾數(shù)據(jù)包filter(OUTPUT)
轉發(fā)數(shù)據(jù) PREROUTING -> FORWARD -> POSTROUTING 過濾數(shù)據(jù)包filter(EORWARD)
外網(wǎng)到內網(wǎng)修改目的IP nat (PREROUTING)
內網(wǎng)到小網(wǎng)修改源I nat(POSTROUTING)
二.編寫防火墻規(guī)則
2.1iptables防火墻的配置方法
- 1、使用iptables 命令行。
- 2、使用system-config-firewal1
iptables 命令行配置方法:
命令格式:
ptables [-t 表名] 管理選項 [鏈名] [匹配條件] [-j 控制類型]
注意事項:
不指定表名時,欺認指flter表
不指定鏈名時,默認指表內的所有鏈
除非設置鏈的默認策略,否則必須指定匹配條件
控制類型使用人寫字母,其余均為小寫
常用的控制類型:
名稱 | 作用 |
---|---|
ACCEPT | 允許數(shù)據(jù)包通過 |
DROP | 直接丟棄數(shù)據(jù)包,不給出任何回應信息 |
REJECT | 拒絕數(shù)據(jù)包通過,會給數(shù)據(jù)發(fā)送端一個響應信息 |
SNAT | 修改數(shù)據(jù)包的源地址 |
DNAT | 修改數(shù)據(jù)包的目的地址 |
MASQUEERADE | 偽裝成一個非固定公網(wǎng)IP地址 |
LOG | 在/ar/log/message文件中記錄日志信息,然后將數(shù)據(jù)包傳遞給下一條規(guī)則。LOG是一種輔助動作,并沒有真正處理數(shù)據(jù)包 |
常用管理選項:
選項 | 解釋 |
---|---|
-A | 在指定鏈的末尾追加(–append)一條新的規(guī)則 |
-I | 在指定鏈的開頭插入(–insert)一條新的規(guī)則,未指定序號時默認作為第一條規(guī)則 |
-R | 修改、替換(–replace)指定鏈中的某一條規(guī)則,可指定規(guī)則序號或具體內容 |
-P | 設置指定鏈的默認策略(–policy) |
-D | 刪除(–delete)指定鏈中的某一條規(guī)則,可指定規(guī)則序號或具體內容 |
-F | 清空(–flush)指定鏈中的所有規(guī)則,若未指定鏈名,則清空表中的所有鏈 |
-L | 列出(–list)指定鏈中所有的規(guī)則,若未指定鏈名,則列出表中的所有鏈 |
-n | 使用數(shù)字形式(–numeric)顯示輸出結果,如顯示 IP 地址而不是主機名 |
-v | 顯示詳細信息,包括每條規(guī)則的匹配包數(shù)量和匹配字節(jié)數(shù) |
–line–number | 查看規(guī)則時,顯示規(guī)則的序號 |
2.2規(guī)則的匹配
通用匹配:
可以直接使用,不依賴于其他條件或擴展,包括網(wǎng)絡協(xié)議、IP地址、網(wǎng)絡接口等條件。
協(xié)議匹配: -p 協(xié)議名
地址匹配:-s 源地址,-d 目的地址 //可以是ip,網(wǎng)段,域名,空(任何地址)
接口匹配:-i 入站網(wǎng)卡, -o 出站網(wǎng)卡
命令格式:
iptables -A FORWARD ! -p icmp -j ACCEPT
iptables -A INPUT -s 192.168.80.11 -j DROP
iptables -I INPUT -i ens33 -s 192.168.80.0/24 -j DROP
隱含匹配
要求以特定的協(xié)議匹配作為前提,包括端口,tcp標記,icmp類型等條件
端口匹配: --sport 源端口 , --dport 目的端口
命令格式:
--sport 1000 //匹配源端口是1000的數(shù)據(jù)包
--sport 1000:3000 //匹配源端口是1000-3000的數(shù)據(jù)包
--sport :3000 //匹配源端口是3000及以下的數(shù)據(jù)包
--sport 1000: //匹配源端口是1000及以上的數(shù)據(jù)包
注意: --sport 和 --dport 必須配合 -p<協(xié)議類型> 使用
2.3命令使用
(1)添加新的規(guī)則
用其他主機來ping其地址
(2)清空規(guī)則:
注意:
1.-F 僅僅是清空鏈中的規(guī)則,并不影響 -P 設置的默認規(guī)則,默認規(guī)則需要手動進行修改
2.-P 設置了DROP后,使用 -F 一定要小心!
#防止把允許遠程連接的相關規(guī)則清除后導致無法遠程連接主機,此情況如果沒有保存規(guī)則可重啟主機解決
3.如果不寫表名和鏈名,默認清空filter表中所有鏈里的所有規(guī)則
(3)從上往下依次匹配,匹配通過第一條就停止
用其他主機ping其地址看是否能通
(4)查看到規(guī)則的序號
(5)訪問22端口的數(shù)據(jù)包,在中間插入
(6)刪除該條規(guī)則(通過序號刪除)
注意:
1.若規(guī)則列表中有多條相同的規(guī)則時,按內容匹配只刪除的序號最小的一條
2.按號碼匹配刪除時,確保規(guī)則號碼小于等于已有規(guī)則數(shù),否則報錯
3.按內容匹配刪除時,確保規(guī)則存在,否則報錯
(7)查看數(shù)據(jù)包
(8)顯示詳細內容:
文章來源:http://www.zghlxwxcb.cn/news/detail-453534.html
(9)顯示詳細內容行號:
文章來源地址http://www.zghlxwxcb.cn/news/detail-453534.html
到了這里,關于“Shell“iptales防火墻設置的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!