防火墙简介(一)——iptables防火墙
生活随笔
收集整理的這篇文章主要介紹了
防火墙简介(一)——iptables防火墙
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
防火墻簡(jiǎn)介(一)——iptables防火墻
- 一、iptables防火墻
- 1、iptables概述
- 2、netfilter 和 iptables
- ①、netfilter
- ②、iptables
- ③、netfilter/iptables
- 3、四表五鏈
- ①、四表
- ②、五鏈
- ③、規(guī)則表的匹配順序
- ④、規(guī)則鏈之間的匹配順序
- 4、iptables的安裝
- 5、iptables防火墻的配置方法
- ①、命令行配置格式
- ②、注意事項(xiàng)
- ③、常用的控制類型
- ④、常用的管理選項(xiàng)
- ⑤、匹配條件
- 6、SNAT原理與應(yīng)用
- ①、SNAT 應(yīng)用環(huán)境
- ②、SNAT原理
- ③、SNAT轉(zhuǎn)換前提條件
- ④、路由轉(zhuǎn)發(fā)開(kāi)啟方式
- ⑤、SNAT轉(zhuǎn)換
- ⑥、小知識(shí)擴(kuò)展
- 7、DNAT原理與應(yīng)用
- ①、DNAT 應(yīng)用環(huán)境
- ②、DNAT原理
- ③、DNAT轉(zhuǎn)換前提條件
- ④、DNAT轉(zhuǎn)換
- ⑤、小知識(shí)擴(kuò)展
- 8、防火墻規(guī)則的備份和還原
- ①、導(dǎo)出(備份)所有表的規(guī)則
- ②、導(dǎo)入(還原)規(guī)則
一、iptables防火墻
1、iptables概述
- Linux系統(tǒng)的防火墻:IP信息包過(guò)濾系統(tǒng),它實(shí)際上由兩個(gè)組件 netfilter 和 iptables 組成
- 主要工作在網(wǎng)絡(luò)層,針對(duì)IP數(shù)據(jù)包。體現(xiàn)在對(duì)包內(nèi)的IP地址、端口等信息的處理上。
2、netfilter 和 iptables
①、netfilter
- netfilter屬于“內(nèi)核態(tài)”(Kernel Space,又稱為內(nèi)核空間)的防火墻功能體系。
- 是內(nèi)核的一部分,由一些數(shù)據(jù)包過(guò)濾表組成,這些表包含內(nèi)核用來(lái)控制數(shù)據(jù)包過(guò)濾處理的規(guī)則集。
②、iptables
- iptables屬于“用戶態(tài)”(User Space,又稱為用戶空間)的防火墻管理體系。
- 是一種用來(lái)管理Linux防火墻的命令程序,它使插入、修改和刪除數(shù)據(jù)包過(guò)濾表中的規(guī)則變得容易,通常位于/sbin/iptables目錄下。
③、netfilter/iptables
- netfilter/iptables后期簡(jiǎn)稱為iptables。
- iptables是基于內(nèi)核的防火墻,其中內(nèi)置了raw、mangle、nat和 filter 四個(gè)規(guī)則表。表中所有規(guī)則配置后,立即生效,不需要重啟服務(wù)。
3、四表五鏈
- 規(guī)則表的作用:容納各種規(guī)則鏈
- 規(guī)則鏈的作用:容納各種防火墻規(guī)則
- 總結(jié):表里有鏈,鏈里有規(guī)則
①、四表
-
raw表:確定是否對(duì)該數(shù)據(jù)包進(jìn)行狀態(tài)跟蹤。包含兩個(gè)規(guī)則鏈,OUTPUT、PREROUTING。
-
mangle表:修改數(shù)據(jù)包內(nèi)容,用來(lái)做流量整形的,給數(shù)據(jù)包設(shè)置標(biāo)記。包含五個(gè)規(guī)則鏈,INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING。
-
nat表:負(fù)責(zé)網(wǎng)絡(luò)地址轉(zhuǎn)換,用來(lái)修改數(shù)據(jù)包中的源、目標(biāo)IP地址或端口。包含三個(gè)規(guī)則鏈,OUTPUT、PREROUTING、POSTROUTING。
-
filter表:負(fù)責(zé)過(guò)濾數(shù)據(jù)包,確定是否放行該數(shù)據(jù)包(過(guò)濾)。包含三個(gè)規(guī)則鏈,INPUT、FORWARD、OUTPUT。
- 在 iptables 的四個(gè)規(guī)則表中,mangle 表和 raw 表的應(yīng)用相對(duì)減少。
②、五鏈
- 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ù)包,用來(lái)修改目的地址,用來(lái)做DNAT。相當(dāng)于把內(nèi)網(wǎng)中的80端口映射到路由器外網(wǎng)端口上。
- POSTROUTING鏈:在進(jìn)行路由選擇后處理數(shù)據(jù)包,用來(lái)修改源地址,用來(lái)做SNAT。相當(dāng)于內(nèi)網(wǎng)通過(guò)路由器NAT轉(zhuǎn)換功能實(shí)現(xiàn)內(nèi)網(wǎng)主機(jī)通過(guò)一個(gè)公網(wǎng)IP地址上網(wǎng)。
③、規(guī)則表的匹配順序
④、規(guī)則鏈之間的匹配順序
-
主機(jī)型防火墻
- 入站數(shù)據(jù)(來(lái)自外界的數(shù)據(jù)包,且目標(biāo)地址是防火墻本機(jī))
- PREROUTING --> INPUT --> 本機(jī)的應(yīng)用程序
- 出站數(shù)據(jù)(從防火墻本機(jī)向外部地址發(fā)送的數(shù)據(jù)包)
- 本機(jī)的應(yīng)用程序 --> OUTPUT --> POSTROUTING
- 入站數(shù)據(jù)(來(lái)自外界的數(shù)據(jù)包,且目標(biāo)地址是防火墻本機(jī))
-
網(wǎng)絡(luò)型防火墻
- 轉(zhuǎn)發(fā)數(shù)據(jù)(需要經(jīng)過(guò)防火墻轉(zhuǎn)發(fā)的數(shù)據(jù)包)
- PREROUTING --> FORWARD --> POSTROUTING
- 轉(zhuǎn)發(fā)數(shù)據(jù)(需要經(jīng)過(guò)防火墻轉(zhuǎn)發(fā)的數(shù)據(jù)包)
-
規(guī)則鏈內(nèi)的匹配順序
- 自上向下按順序依次進(jìn)行檢查,找到相匹配的規(guī)則即停止(LOG策略例外,表示記錄相關(guān)日志)
- 若在該鏈內(nèi)找不到相匹配的規(guī)則,則按該鏈的默認(rèn)策略處理(未修改的狀況下,默認(rèn)策略為允許)
4、iptables的安裝
- CentOS 7默認(rèn)使用firewalld防火墻,沒(méi)有安裝 iptables,若想使用iptables防火墻。必須先關(guān)閉firewalld防火墻,再安裝 iptables
5、iptables防火墻的配置方法
①、命令行配置格式
②、注意事項(xiàng)
- 不指定表名時(shí),默認(rèn)指filter表
- 不指定鏈名時(shí),默認(rèn)指表內(nèi)的所有鏈
- 除非設(shè)置鏈的默認(rèn)策略,否則必須指定匹配條件
- 選項(xiàng)、鏈名、控制類型使用大寫(xiě)字母,其余均為小寫(xiě)
③、常用的控制類型
| ACCEPT | 允許數(shù)據(jù)包通過(guò)。 |
| DROP | 直接丟棄數(shù)據(jù)包,不給出任何回應(yīng)信息。 |
| REJECT | 拒絕數(shù)據(jù)包通過(guò),會(huì)給數(shù)據(jù)發(fā)送端一個(gè)響應(yīng)信息。 |
| SNAT | 修改數(shù)據(jù)包的源地址。 |
| DNAT | 修改數(shù)據(jù)包的目的地址。 |
| MASQUERADE | 偽裝成一個(gè)非固定公網(wǎng)IP地址。 |
| LOG | 在/var/log/messages文件中記錄日志信息,然后將數(shù)據(jù)包傳遞給下一條規(guī)則。 LOG只是一種輔助動(dòng)作,并沒(méi)有真正處理數(shù)據(jù)包。 |
④、常用的管理選項(xiàng)
| -A | 在指定鏈的末尾追加(–append)一條新的規(guī)則 |
| -I | 在指定鏈的開(kā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ù)包離開(kāi)本機(jī)做使用的網(wǎng)絡(luò)接口 |
| –sport | 指定源端口號(hào) |
| –dport | 指定目的端口號(hào) |
- 直接使用,不依賴于其他條件或擴(kuò)展,包括網(wǎng)絡(luò)協(xié)議、IP地址、網(wǎng)絡(luò)接口等條件。
- 以特定的協(xié)議匹配作為前提,包括端口、TCP標(biāo)記、ICMP類型等條件。
- 端口匹配
- TCP標(biāo)記匹配
- ICMP類型匹配
- 要求以“-m 擴(kuò)展模塊”的形式明確指出類型,包括多端口、MAC地址、IP范圍、數(shù)據(jù)包狀態(tài)等條件。
- 多端口匹配
- IP范圍匹配
- 狀態(tài)匹配
6、SNAT原理與應(yīng)用
①、SNAT 應(yīng)用環(huán)境
- 局域網(wǎng)主機(jī)共享單個(gè)公網(wǎng)IP地址接入Internet(私有IP不能在Internet中正常路由)
②、SNAT原理
- 修改數(shù)據(jù)包的源地址。
③、SNAT轉(zhuǎn)換前提條件
- 局域網(wǎng)各主機(jī)已正確設(shè)置IP地址、子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)地址
- Linux網(wǎng)關(guān)開(kāi)啟IP路由轉(zhuǎn)發(fā)
④、路由轉(zhuǎn)發(fā)開(kāi)啟方式
臨時(shí)打開(kāi): echo 1 > /proc/sys/net/ipv4/ip_forward 或 sysctl -w net.ipv4.ip_forward=1永久打開(kāi): vim /etc/sysctl.conf net.ipv4.ip_forward = 1 #將此行寫(xiě)入配置文件sysctl -p #讀取修改后的配置⑤、SNAT轉(zhuǎn)換
SNAT轉(zhuǎn)換1:固定的公網(wǎng)IP地址: iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to 12.0.0.1 或 iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to-source 12.0.0.1-12.0.0.10內(nèi)網(wǎng)IP 出站 外網(wǎng)網(wǎng)卡 外網(wǎng)IP或地址池 SNAT轉(zhuǎn)換2:非固定的公網(wǎng)IP地址(共享動(dòng)態(tài)IP地址): iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j MASQUERADE⑥、小知識(shí)擴(kuò)展
- 一個(gè)IP地址做SNAT轉(zhuǎn)換,一般可以讓內(nèi)網(wǎng) 100到200 臺(tái)主機(jī)實(shí)現(xiàn)上網(wǎng)。
7、DNAT原理與應(yīng)用
①、DNAT 應(yīng)用環(huán)境
- 在Internet中發(fā)布位于局域網(wǎng)內(nèi)的服務(wù)器
②、DNAT原理
- 修改數(shù)據(jù)包的目的地址。
③、DNAT轉(zhuǎn)換前提條件
- 局域網(wǎng)的服務(wù)器能夠訪問(wèn)Internet
- 網(wǎng)關(guān)的外網(wǎng)地址有正確的DNS解析記錄
- Linux網(wǎng)關(guān)開(kāi)啟IP路由轉(zhuǎn)發(fā)
④、DNAT轉(zhuǎn)換
1、發(fā)布內(nèi)網(wǎng)的Web服務(wù) #把從ens33進(jìn)來(lái)的要訪問(wèn)web服務(wù)的數(shù)據(jù)包目的地址轉(zhuǎn)換為 192.168.80.11 iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.80.11 或 iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.80.11入站 外網(wǎng)網(wǎng)卡 外網(wǎng)IP 內(nèi)網(wǎng)服務(wù)器IPiptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -j DNAT --to 192.168.80.11-192.168.80.20 ------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------- 2、發(fā)布時(shí)修改目標(biāo)端口 #發(fā)布局域網(wǎng)內(nèi)部的OpenSSH服務(wù)器,外網(wǎng)主機(jī)需使用250端口進(jìn)行連接 iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.80.11:22#在外網(wǎng)環(huán)境中使用SSH測(cè)試 ssh -p 250 root@12.0.0.1yum -y install net-tools #若沒(méi)有 ifconfig 命令可提前使用 yum 進(jìn)行安裝 ifconfig ens33⑤、小知識(shí)擴(kuò)展
- 主機(jī)型防火墻:主要使用 INPUT、OUTPUT 鏈,設(shè)置規(guī)則時(shí)一般要詳細(xì)的指定到端口
- 網(wǎng)絡(luò)型防火墻:主要使用 FORWARD 鏈,設(shè)置規(guī)則時(shí)很少去指定到端口,一般指定到IP地址或者到網(wǎng)段即可
8、防火墻規(guī)則的備份和還原
①、導(dǎo)出(備份)所有表的規(guī)則
iptables-save > /opt/ipt.txt②、導(dǎo)入(還原)規(guī)則
iptables-restore < /opt/ipt.txt將iptables規(guī)則文件保存在 /etc/sysconfig/iptables 中,iptables服務(wù)啟動(dòng)時(shí)會(huì)自動(dòng)還原規(guī)則 iptables-save > /etc/sysconfig/iptables systemctl stop iptables #停止iptables服務(wù)會(huì)清空掉所有表的規(guī)則 systemctl start iptables #啟動(dòng)iptables服務(wù)會(huì)自動(dòng)還原/etc/sysconfig/iptables 中的規(guī)則總結(jié)
以上是生活随笔為你收集整理的防火墙简介(一)——iptables防火墙的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 内存双通道:提速利器还是配置地雷?
- 下一篇: 监听网络流量命令——tcpdump