日韩av无码中文字幕,国产午夜亚洲精品国产成人小说,成人影院午夜男女爽爽爽,欧美 亚洲 中文 国产 综合

首頁 熱點(diǎn) 要聞 國內(nèi) 產(chǎn)業(yè) 財(cái)經(jīng) 滾動(dòng) 理財(cái) 股票

linux防火墻iptables

2023-08-31 01:54:52 來源 : 博客園

iptables1,iptables的組成概述

netfilter/iptables:IP 信息包過濾系統(tǒng),它實(shí)際上由兩個(gè)組件 netfilter 和 iptables組成。 主要工作在網(wǎng)絡(luò)層,針對(duì)IP數(shù)據(jù)包,體現(xiàn)在對(duì)包內(nèi)的IP地址、端口等信息的處理。

netfilter/iptables關(guān)系:

netfilter:


(資料圖)

屬于“內(nèi)核態(tài)”又稱內(nèi)核空間(kernel space)的防火墻功能體系。linux 好多東西都是內(nèi)核態(tài) 用戶態(tài),那我們運(yùn)維人員關(guān)注的是用戶態(tài), 內(nèi)核我們關(guān)注不是很多,內(nèi)核基本是我們開發(fā)人員關(guān)心的事情是內(nèi)核的一部分,由一些信息包過濾表組成,這些表包含內(nèi)核用來控制信息包過濾處理的規(guī)則集。

iptables :

屬于“用戶態(tài)”(User Space, 又稱為用戶空間)的防火墻管理體系。是一種用來管理Linux防火墻的命令程序,它使插入、修改和刪除數(shù)據(jù)包過濾表中的規(guī)則變得容易,通常位于/sbin/iptables目錄下。 netfilter/iptables后期簡稱為iptables。iptables是基于內(nèi)核的防火墻,其中內(nèi)置了raw、mangle、 nat和filter四個(gè)規(guī)則表。表中所有規(guī)則配置后,立即生效,不需要重啟服務(wù)。

iptables由五個(gè)表table和五個(gè)鏈chain以及一些規(guī)則組成

五個(gè)表

table:filter、nat、mangle、raw、security

filter過濾規(guī)則表,根據(jù)預(yù)定義的規(guī)則過濾符合條件的數(shù)據(jù)包,默認(rèn)表
nat地址轉(zhuǎn)換規(guī)則表
mangle修改數(shù)據(jù)標(biāo)記位規(guī)則表
raw關(guān)閉啟用的連接跟蹤機(jī)制,加快封包穿越防火墻速度
security用于強(qiáng)制訪問控制(MAC)網(wǎng)絡(luò)規(guī)則,由Linux安全模塊(如SELinux)實(shí)現(xiàn) (了解)

優(yōu)先級(jí)由高到低的順序?yàn)椋?/strong>

security -->raw-->mangle-->nat-->filter

總結(jié)

規(guī)則表的作用:容納各種規(guī)則鏈; 表的劃分依據(jù):防火墻規(guī)則的作用相似

規(guī)則鏈的作用:容納各種防火墻規(guī)則;規(guī)則的作用:對(duì)數(shù)據(jù)包進(jìn)行過濾或處理 ;鏈的分類依據(jù):處理數(shù)據(jù)包的不同時(shí)機(jī)

總結(jié):表里有鏈,鏈里有規(guī)則

五鏈:
INPUT處理入站數(shù)據(jù)包,匹配目標(biāo)IP為本機(jī)的數(shù)據(jù)包。
OUTPUT處理出站數(shù)據(jù)包,一般不在此鏈上做配置。
FORWARD處理轉(zhuǎn)發(fā)數(shù)據(jù)包,匹配流經(jīng)本機(jī)的數(shù)據(jù)包。
PREROUTING在進(jìn)行路由選擇前處理數(shù)據(jù)包,用來修改目的地址,用來做DNAT。相當(dāng)于把內(nèi)網(wǎng)服務(wù)器的IP和端口映射到路由器的外網(wǎng)IP和端口上。
POSTROUTING在進(jìn)行路由選擇后處理數(shù)據(jù)包,用來修改源地址,用來做SNAT。相當(dāng)于內(nèi)網(wǎng)通過路由器NAT轉(zhuǎn)換功能實(shí)現(xiàn)內(nèi)網(wǎng)主機(jī)通過一個(gè)公網(wǎng)IP地址上網(wǎng)。

內(nèi)核中數(shù)據(jù)包的傳輸過程

當(dāng)一個(gè)數(shù)據(jù)包進(jìn)入網(wǎng)卡時(shí),數(shù)據(jù)包首先進(jìn)入PREROUTING鏈,內(nèi)核根據(jù)數(shù)據(jù)包目的IP判斷是否需要 轉(zhuǎn)送出去

如果數(shù)據(jù)包是進(jìn)入本機(jī)的,數(shù)據(jù)包就會(huì)沿著圖向下移動(dòng),到達(dá)INPUT鏈。數(shù)據(jù)包到達(dá)INPUT鏈后, 任何進(jìn)程都會(huì)收到它。本機(jī)上運(yùn)行的程序可以發(fā)送數(shù)據(jù)包,這些數(shù)據(jù)包經(jīng)過OUTPUT鏈,然后到達(dá)

如果數(shù)據(jù)包是要轉(zhuǎn)發(fā)出去的,且內(nèi)核允許轉(zhuǎn)發(fā),數(shù)據(jù)包就會(huì)向右移動(dòng),經(jīng)過FORWARD鏈,然后到達(dá)POSTROUTING鏈輸出

2,實(shí)際操作

CentOS7默認(rèn)使用firewalld防火墻,沒有安裝iptables,若想使用iptables防火墻。必須先關(guān)閉firewalld防火墻,再安裝iptables

前期準(zhǔn)備工作?systemctl stop firewalld.service?systemctl disable --now  firewalld.service##開機(jī)不自啟  并且立即關(guān)閉systemctl enable --now  firewalld.service##開機(jī)自啟  并且 立即開啟?yum -y install iptables iptables-servicessystemctl start iptables.servicesystemctl enable iptables.service
2.1 iptables的配置方法

使用iptables命令行。

使用圖形化管理工具system- config- firewall

2.2使用iptables命令行配置規(guī)則

命令格式:

iptables  [-t 表名]  管理選項(xiàng)  [鏈名]  [匹配條件] [-j 控制類型]

注意事項(xiàng):

不指定表名時(shí),默認(rèn)指filter表

不指定鏈名時(shí),默認(rèn)指表內(nèi)的所有鏈

除非設(shè)置鏈的默認(rèn)策略,否則必須指定匹配條件

控制類型使用大寫字母,其余均為小寫

常用控制類型:

ACCEPT允許數(shù)據(jù)包通過
DROP直接丟棄數(shù)據(jù)包,不給出任何回 應(yīng)信息。
REJECT拒絕數(shù)據(jù)包通過,必要時(shí)會(huì)給數(shù)據(jù)發(fā)送端一個(gè)響應(yīng)信息。
LOG在/var/log/messages 文件中記錄日志信息,然后將數(shù)據(jù)包傳遞給下一條規(guī)則。LOG只是一種輔助動(dòng)作,并沒有真正處理數(shù)據(jù)包
SNAT修改數(shù)據(jù)包的源地址。
DNAT修改數(shù)據(jù)包的目的地址
MASQUERADE偽裝成一個(gè)非固定公網(wǎng)IP地址。

常用管理選項(xiàng):

-A在指定鏈的末尾追加(--append)一條新的規(guī)則
-I(大寫i)在指定鏈的開頭插入(--insert)一條新的規(guī)則,未指定序號(hào)時(shí)默認(rèn)作為第一條規(guī)則
-R修改、替換(--replace) 指定鏈中的某一條規(guī)則,可指定規(guī)則序號(hào)或具體內(nèi)容
-P設(shè)置指定鏈的默認(rèn)策略(--policy)
-D刪除(--delete) 指定鏈中的某一條規(guī)則,可指定規(guī)則序號(hào)或具體內(nèi)容
-F清空(--flush)指定鏈中的所有規(guī)則,若未指定鏈名,則清空表中的所有鏈
-L列出(--list) 指定鏈中所有的規(guī)則,若未指定鏈名,則列出表中的所有鏈
-n使用數(shù)字形式(--numeric) 顯示輸出結(jié)果,如顯示IP地址而不是主機(jī)名
-v顯示詳細(xì)信息,包括每條規(guī)則的匹配包數(shù)量和匹配字節(jié)數(shù)
--line-numbers查看規(guī)則時(shí),顯示規(guī)則的序號(hào)

匹配條件:

-p指定要匹配的數(shù)據(jù)包的協(xié)議類型
-s指定要匹配的數(shù)據(jù)包的源IP地址
-d指定要匹配的數(shù)據(jù)包的目的IP地址
-i指定數(shù)據(jù)包進(jìn)入本機(jī)的網(wǎng)絡(luò)接口
-o指定數(shù)據(jù)包離開本機(jī)做使用的網(wǎng)絡(luò)接口
–sport指定源端口號(hào)
–dport指定目的端口號(hào)
2.3規(guī)則配置示例示例1:查看規(guī)則 -nL
[root@localhost ~]# iptables -L  //不指定默認(rèn)查看filter表中所有規(guī)則[root@localhost ~]# iptables -nL  //以數(shù)字形式顯示[root@localhost ~]# iptables -nL -t nat  //查看nat表規(guī)則[root@localhost ~]# iptables -nL --line-numbers  //顯示序列號(hào)[root@localhost ~]# iptables -t filter -F  清空 filter表內(nèi)所有規(guī)則[root@localhost ~]# iptables -nL   //查看filter為空Chain INPUT (policy ACCEPT)target   prot opt source        destination?Chain FORWARD (policy ACCEPT)target   prot opt source        destination[root@localhost ~]# iptables -F  //清空所有規(guī)則鏈中的所有規(guī)則??

1、 iptables -L,列出表中所有鏈。不指定表名則默認(rèn)查看filter表。

2、 iptables -L -n,以數(shù)字形式顯示輸出結(jié)果。-L -n 合在一起寫時(shí),必須n在前,要寫成 -nL。

3、iptables -nL -t nat,查看nat表。

4,顯示序列號(hào)

5、iptables -t filter -F,清空 filter表內(nèi)所有規(guī)則。

6,執(zhí)行 iptables -F后,所有的規(guī)則鏈(包括默認(rèn)的鏈)中的規(guī)則都會(huì)被刪除,但是默認(rèn)策略(默認(rèn)動(dòng)作)不會(huì)被改變。

示例2:添加規(guī)則 -A -I

-A,在末尾追加規(guī)則。

-I,在指定位置前插入規(guī)則。如果不指定,則在首行插入

[root@localhost ~]# iptables -t filter -A INPUT -p icmp -j REJECT#//不允許任何主機(jī)ping本主機(jī)[root@localhost ~]# iptables -nvLChain INPUT (policy ACCEPT 58 packets, 3088 bytes) pkts bytes target   prot opt in   out   source        destination  0   0 REJECT   icmp --  *    *    0.0.0.0/0      0.0.0.0/0       reject-with icmp-port-unreachable?[root@localhost ~]# iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT# //允許主機(jī)ssh端口 通過我的[root@localhost ~]# iptables -nL --line-numbers#--line-numbers顯示行號(hào)Chain INPUT (policy ACCEPT)num  target   prot opt source        destination1   REJECT   icmp -- 0.0.0.0/0      0.0.0.0/0       reject-with icmp-port-unreachable2   ACCEPT   tcp -- 0.0.0.0/0      0.0.0.0/0       tcp dpt:22??
3刪除、清空、替換規(guī)則

替換:

iptables -A INPUT -s 192.168.1.200 -j DROPiptables -nvL --line-numbers?iptables -R INPUT 1 -s 192.168.1.200 -j ACCEPT iptables -nvL --line-numbers
刪除規(guī)則 -D

1、按序號(hào)刪除,比較準(zhǔn)確。

2、按內(nèi)容刪除,如果有2條相同內(nèi)容,會(huì)刪除序號(hào)小的那個(gè)。

[root@localhost ~]# iptables -nL --line-number //顯示規(guī)則序號(hào)Chain INPUT (policy ACCEPT)num  target   prot opt source        destination1   ACCEPT   all -- 192.168.1.200    0.0.0.0/0?Chain FORWARD (policy ACCEPT)num  target   prot opt source        destination?Chain OUTPUT (policy ACCEPT)num  target   prot opt source        destination[root@localhost ~]# iptables -D INPUT 1  刪除INPUT規(guī)則連中的第1條規(guī)則[root@localhost ~]# iptables -nL --line-numberChain INPUT (policy ACCEPT)num  target   prot opt source        destination?Chain FORWARD (policy ACCEPT)num  target   prot opt source        destination?Chain OUTPUT (policy ACCEPT)num  target   prot opt source        destination[root@localhost ~]# iptables -D INPUT -p tcp -j DROP//刪除INPUT鏈中tcp協(xié)議ACCEPT的規(guī)則

清空指定鏈或表中的所有防火墻規(guī)則,使用管理選項(xiàng)“-F”。例如,若要清空 filter 表 INPUT

[root@localhost ~]# iptables -F INPUT[root@localhost ~]# iptables -nL INPUTChain INPUT (policy ACCEPT)target   prot opt source        destination ?
設(shè)置默認(rèn)策略 -P

未修改的狀況下,默認(rèn)策略為ACCEPT(允許)。

注意:

將默認(rèn)策略修改為DROP前,一定要檢查清楚鏈內(nèi)是否設(shè)置了允許tcp協(xié)議22端口進(jìn)行連接的規(guī)則。否則一旦修改為DROP,會(huì)導(dǎo)致ssh斷連。

iptables -P INPUT DROP //將默認(rèn)策略修改為DROP
3 匹配條件通用匹配

可直接使用, 不依賴于其他條件或擴(kuò)展包括網(wǎng)絡(luò)協(xié)議、IP地址、網(wǎng)絡(luò)接口等條件。

協(xié)議匹配-p 協(xié)議名
地址匹配-s 源地址、-d 目的地址 ??梢允荌P、網(wǎng)段、域名、空(任何地址)
接口匹配-i 入站網(wǎng)卡、-o 出站網(wǎng)卡
iptables -A INPUT ! -p icmp -j ACCEPT#沒有-t指定表,就是指默認(rèn)表filter表# !代表?xiàng)l件取反,不是icmp的都放通 iptables -A INPUT -s 192.168.1.100 -j REJECT#拒絕從哪個(gè)主機(jī)發(fā)數(shù)據(jù)包過來(-s指定了源地址) iptables -I INPUT -i ens33 -s 192.168.1.0/24 -j DROP#在行首插入規(guī)則,丟棄該網(wǎng)段從ens33網(wǎng)卡進(jìn)來的數(shù)據(jù)包

示例1:

! 取反時(shí)需要注意。

“不是icmp的都放通”,即放通的協(xié)議中不包括icmp,這條規(guī)則沒有針對(duì)icmp。那么icmp協(xié)議會(huì)向下查找匹配,如果匹配不到規(guī)則,那么就會(huì)取默認(rèn)策略ACCEPT,則此時(shí)其他主機(jī)可以ping通本機(jī)。

使用其他主機(jī)ping本機(jī),可以ping通。

2 隱含匹配

要求以特定的協(xié)議匹配作為前提,包括端口、TCP標(biāo)記、ICMP類 型等條件。

2.1 端口匹配

端口匹配:--sport 源端口、--dport 目的端口。

可以是個(gè)別端口或者端口范圍。

格式含義
--sport 1000匹配源端口是1000的數(shù)據(jù)包
--sport 1000:3000匹配源端口是1000-3000的數(shù)據(jù)包
--sport 1000:匹配源端口是1000及以上的數(shù)據(jù)包
--sport :3000匹配源端口是3000及以下的數(shù)據(jù)包

注意:--sport 和 --dport 必須配合 -p <協(xié)議類型> 使用

2.2 TCP標(biāo)記匹配

--tcp-flags TCP標(biāo)記

#TCP三次握手時(shí)的第一次握手,放行SYN為1的報(bào)文,拒絕其他包。iptables -I INPUT -P tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH  SYN -j  REJECT#第二次握手放行SYN、ACK為1的報(bào)文,拒絕其他包。iptables -I OUTPUT -P tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH  SYN,ACK -j  REJECT
2.3 ICMP類型匹配

--icmp-type ICMP類型

ICMP類型可以是字符串、數(shù)字代碼

ICMP類型含義
Echo-Request (代碼為8表示請(qǐng)求
Echo- -Reply (代碼為0)表示回顯
Dest ination-Unreachable (代碼為3)表示目標(biāo)不可達(dá)

注: 其他可用的icmp協(xié)議類型,可以執(zhí)行iptables -p icmp -h 查看幫助信息。

--icmp-type 8  //表示請(qǐng)求(ping),即其他主機(jī)向本機(jī)請(qǐng)求(ping本機(jī))--icmp-type 0  //表示回顯(pong),即本機(jī)向其他主機(jī)發(fā)數(shù)據(jù)包(本機(jī)ping其他主機(jī))--icmp-type 3  //當(dāng)本機(jī)ping不通其他主機(jī)時(shí),提示目標(biāo)不可達(dá)。例子:#丟棄icmp的包,別人ping不通本機(jī),本機(jī)也ping不通別人iptables -A INPUT -p icmp -j DROP#丟棄icmp的請(qǐng)求,禁止其他主機(jī)ping本機(jī),但本機(jī)可以ping其他主機(jī)iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT #當(dāng)本機(jī)ping不通其它主機(jī)時(shí)提示目標(biāo)不可達(dá),此時(shí)其它主機(jī)需要配置關(guān)于icmp協(xié)議的控制類型為REJECTiptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT

示例:

丟棄icmp協(xié)議的請(qǐng)求,禁止其他主機(jī)ping本機(jī),但本機(jī)可以ping其他主機(jī)。

3 顯示匹配

要求以“-m擴(kuò)展模塊”的形式明確指出類型,包括多端口、MAC地址、IP范圍、數(shù)據(jù)包狀態(tài)等條件

3.1 多端口匹配

-m multiport --sport 源端口列表

-m multiport --dport 目的端口列表

iptables -A INPUT -p tcp -m multiport --dport 80,22,21,20,53 -j ACCEPTiptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT
.3.2 IP范圍匹配

-m iprange --src-range 源IP范圍

-m iprange --dst-range 目的IP范圍

iptables -A FORWARD -p udp -m iprange --src-range 192.168.72.100-192.168.72.200 -j DROP# 禁止轉(zhuǎn)發(fā)源地址位于192.168.72.100——192.168.72.200的udp數(shù)據(jù)包
3.3 狀態(tài)匹配

格式:

-m state --state連接狀態(tài)

常見的連接狀態(tài):

狀態(tài)含義
NEW主機(jī)連接目標(biāo)主機(jī),在目標(biāo)主機(jī)上看到的第一個(gè)想要連接的包
ESTABLISHED主機(jī)已與目標(biāo)主機(jī)進(jìn)行通信,判斷標(biāo)準(zhǔn)只要目標(biāo)主機(jī)回應(yīng)了第一個(gè)包,就進(jìn)入該狀態(tài)
主機(jī)已與目標(biāo)主機(jī)進(jìn)行通信,判斷標(biāo)準(zhǔn)只要目標(biāo)主機(jī)回應(yīng)了第一個(gè)包,就進(jìn)入該狀態(tài)主機(jī)已與目標(biāo)主機(jī)進(jìn)行通信,目標(biāo)主機(jī)發(fā)起新的鏈接方式,一般與ESTABLISHED配合使用
INVALID無效的封包,例如數(shù)據(jù)破損的封包狀態(tài)

示例:

iptables -I INPUT -M state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT#第一個(gè)包我只看22端口的包#-p tcp是隱含匹配,可以省略-m tcp iptables -A INPUT -p tcp -m multiport --dport 443,80,22,21,20,53 -j ACCEPT#允許放通tcp的這些端口號(hào)#-m multiport加載多個(gè)端口模塊 iptables -A INPUT -p udp --dport 53 -j ACCEPT#放通UDP的53端口進(jìn)來的包(DNS服務(wù)器返回信息時(shí)默認(rèn)使用UDP的53端口)?iptables -A INPUT -p tcp -m state --state ESTABLISHED ,RELATED -j ACCEPT#對(duì)進(jìn)來的包的狀態(tài)進(jìn)行檢測。已經(jīng)建立tcp連接的包以及該連接相關(guān)的包允許通過。簡單來說就是只允許所有自己發(fā)出去的包進(jìn)來。#比如我和你做生意,我們談成了生意,到了支付的時(shí)候,就可以直接調(diào)用與這筆生意相關(guān)的支付功能。 iptables -P INPUT DROP#默認(rèn)關(guān)閉,將以上的設(shè)置設(shè)為白名單
4 總結(jié)

1、Linux防火墻的兩個(gè)組件:

內(nèi)核態(tài) netilter(保存包過濾處理的規(guī)則集)

用戶態(tài) iptables(防火墻規(guī)則管理工具)

2、數(shù)據(jù)包五要素:

源IP,目的IP,源端口,目的端口 ,協(xié)議UDP/TCP

3、四表:

raw 對(duì)數(shù)據(jù)包進(jìn)行狀態(tài)跟蹤

mangle 修改數(shù)據(jù)包內(nèi)容,給數(shù)據(jù)包設(shè)置標(biāo)記

nat 地址轉(zhuǎn)換,轉(zhuǎn)換源/目的IP或者端口

fileter 過濾數(shù)據(jù)包 放行 丟棄

4、五鏈:

INPUT 入站

OUTPUT 出站

FORWARD 轉(zhuǎn)發(fā)

PREROUTING 路由前修改目的地址

POSTROUTING 路由后修改源IP

5、匹配順序

1)數(shù)據(jù)包到達(dá)防火墻時(shí),規(guī)則表之間的優(yōu)先順序:raw >mangle > nat > filter。

2)規(guī)則鏈之間的匹配順序:

主機(jī)型防火墻

入站數(shù)據(jù)(來自外界的數(shù)據(jù)包,且目標(biāo)地址是防火墻本機(jī)):PREROUTING --> INPUT -->本機(jī)的應(yīng)用程序

出站數(shù)據(jù)(從防火墻本機(jī)向外部地址發(fā)送的數(shù)據(jù)包):本機(jī)的應(yīng)用程序---->OUTPUT ----->POSTROUTING;

網(wǎng)絡(luò)型防火墻

轉(zhuǎn)發(fā)數(shù)據(jù)(需要經(jīng)過防火墻轉(zhuǎn)發(fā)的數(shù)據(jù)包):PREROUTING -->FORWARD -->POSTROUTING

3)鏈中的規(guī)則集:從上往下一次匹配,匹配到規(guī)則即停止,若都沒有匹配到則按默認(rèn)策略處理

6、管理選項(xiàng)

iptables [-t 表名] 管理選項(xiàng) [鏈名] [匹配條件] [-j 控制類型]

增:-A 在末尾添加,-I 在指定位置插入

刪:-D 刪除指定規(guī)則,-F 清空所有規(guī)則

改:-R,或者-A 添加后 -D 刪除

查:-nL 以數(shù)字形式顯示,--line-numbers 顯示規(guī)則的序號(hào)

設(shè)置默認(rèn)規(guī)則:-P

注意:

刪除規(guī)則前,以及將默認(rèn)規(guī)則修改為DROP之前,一定要先想清楚會(huì)不會(huì)導(dǎo)致ssh斷連。

7、 匹配條件

-p tcp|udp|icmp

-s 源IP

-d 目的IP

-i 入站網(wǎng)卡

-o 出站網(wǎng)卡

關(guān)鍵詞:
相關(guān)文章

最近更新
精彩推送
linux防火墻iptables 2023-08-31 01:54:52
深入推進(jìn) 2023-08-31 01:43:24
當(dāng)好群眾主心骨 2023-08-31 01:40:20