文章目錄
- 1. 火墻介紹
- 1.1 iptables簡介
- 2. 火墻管理工具切換
- 2.1 firewalld切換到iptables
- 2.2 iptables切換到firewalld
- 3. iptables的四表五鏈
- 4. iptables的永久保存
- 5. iptables命令
- 6. 火墻優化部署
- 7. nat表中的SNAT(內網訪問外網)
- 7.1 路由器端
- 7.2 客戶端配置
- 7.3 客戶端測驗
- 8.nat表中的DNAT(外網訪問內網)
- 8.1 路由器端
- 8.2 客戶端配置
- 8.3 客戶端測驗
1. 火墻介紹
防火墻指的是一個由軟體和硬體設備組合而成、在內部網和外部網之間、專用網與公共網之間的邊界上構造的保護屏障.是一種獲取安全性方法的形象說法,它是一種計算機硬體和軟體的結合,使Internet與Intranet之間建立起一個安全網關(Security Gateway),從而保護內部網免受非法用戶的侵入,防火墻主要由服務訪問規則、驗證工具、包過濾和應用網關4個部分組成,防火墻就是一個位于計算機和它所連接的網路之間的軟體或硬體,該計算機流入流出的所有網路通信和資料包均要經過此防火墻,
1.1 iptables簡介
IPTABLES 是與最新的 3.5 版本 Linux 內核集成的 IP 資訊包過濾系統,如果 Linux 系統連接到因特網或 LAN、服務器或連接 LAN 和因特網的代理服務器, 則該系統有利于在 Linux 系統上更好地控制 IP 資訊包過濾和防火墻配置
iptables其實不是真正的防火墻,我們可以把它理解成一個客戶端代理,用戶通過iptables這個代理,將用戶的安全設定執行到對應的"安全框架"中,這個"安全框架"才是真正的防火墻,這個框架的名字叫netfilter,netfilter才是防火墻真正的安全框架(framework),netfilter位于內核空間,
iptables其實是一個命令列工具,位于用戶空間,我們用這個工具操作真正的框架,netfilter/iptables(下文中簡稱為iptables)組成Linux平臺下的包過濾防火墻,與大多數的Linux軟體一樣,這個包過濾防火墻是免費的,它可以代替昂貴的商業防火墻解決方案,完成封包過濾、封包重定向和網路地址轉換(NAT)等功能,
Netfilter是Linux作業系統核心層內部的一個資料包處理模塊,它具有如下功能:
- 網路地址轉換(Network Address Translate)
- 資料包內容修改
- 以及資料包過濾的防火墻功能
2. 火墻管理工具切換
2.1 firewalld切換到iptables
- 關閉firewalld
systemctl disable --now firewalld.service
systemctl mask firewalld.service
- 打開iptables
dnf install iptables-services.x86_64 -y
systemctl unmask iptables.service
systemctl enable --now iptables.service
2.2 iptables切換到firewalld
- 關閉iptables
systemctl disable --now iptables.service
systemctl mask iptables.service
- 打開firewalld
dnf install firewalld -y #安裝firewalld(rhel8中默認已安裝)
systemctl unmask firewalld.service
systemctl enable --now firewalld.service
3. iptables的四表五鏈
每個規則表,其實就相當于一個內核空間的容器,按照規則集的不同用途進行劃分為默認的四個表,在每個規則表中包含不同的規則鏈,處理資料包的不同時機分為五種鏈,決定是否過濾或處理資料包的各種規則并按照先后順序存放在各規則鏈中,
- 規則的作用:對資料包進行過濾或處理;
- 鏈的作用:容納多種防火墻規則;

規則表:iptables管理著四個不同的規則表,分別由獨立的內核模塊實作
- filter 表:經過本機內核的資料,用來對資料包進行過濾,具體的規則要求決定如何處理一個資料包,對應的內核模塊為:iptable_filter,其表內包括三個鏈:input、forward、output;
- nat 表:(network address translation,網路地址轉換)不經過內核,主要用來修改資料包的 IP 地址、埠號資訊,對應的內核模塊為:iptable_nat,其表內包括三個鏈:prerouting、postrouting、output;
- mangle 表:當fileter和nat表不夠用時使用主要用來修改資料包的服務型別,生存周期,為資料包設定標記,實作流量整形、策略路由等,對應的內核模塊為:iptable_mangle,其表內包括五個鏈:prerouting、postrouting、input、output、forward;
- raw 表:主要用來決定是否對資料包進行狀態跟蹤,對應的內核模塊為:iptable_raw,其表內包括兩個鏈:output、prerouting;
規則鏈
- input 鏈:輸入(當收到訪問防火墻本機地址的資料包時,將應用此鏈中的規則;)
- output 鏈:輸出(當防火墻本機向外發送資料包時,將應用此鏈中的規則;)
- forward 鏈:轉發(當收到需要通過防火中轉發給其他地址的資料包時,將應用此鏈中的規則;)
- prerouting 鏈:路由之前(在對資料包做路由選擇之前,將應用此鏈中的規則;)
- postrouting 鏈:路由之后(在對資料包做路由選擇之后,將應用此鏈中的規則;)
資料包狀態
| RELATED | 建立過連接的 |
| ESTABLISHED | 正在連接的 |
| NEW | 新的 |
4. iptables的永久保存
iptables策略記錄檔案:/etc/sysconfig/iptables
iptables-save > /etc/sysconfig/iptables
service iptables save


5. iptables命令
iptables [ -t 表名 ] 管理選項 [ 鏈名 ] [ 條件匹配 ] [ -j 目標動作或跳轉 ]
注意事項:
1.不指定表名時,默認表示filter表,
2.不指定鏈名時,默認表示該表內所有鏈,除非設定規則鏈的預設策略,否則需要指定匹配條件
|
| |||||
|---|---|---|---|---|---|
| -N | 增加鏈 | -X | 洗掉鏈 | -E | 重命名鏈 |
|
| |||
|---|---|---|---|
| -F | 清空規則 | -A | 增加策略 |
| -D | 洗掉規則 | -I | 插入規則 |
| -R | 修改規則 | -P | 修改默認規則 |
|
| |||
|---|---|---|---|
| -t | 指定表名稱 | -n | 不做決議 |
| -L | 列出指定表的策略 | --dport | 目標埠 |
| -s | 資料來源 | -p | 協議 |
| -o | 輸出介面 | -i | 輸入介面 |
| ACCEPT | 允許 | DROP | 丟棄 |
| REJECT | 拒絕 | -SNAT | 源地址轉換 |
| DNAT | 目的地地址轉換 | -j | 動作 |

6. 火墻優化部署
允許ESTABLISHED與RELATED狀態的資料連接:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
允許回環介面中NEW狀態的資料連接:
iptables -A INPUT -i lo -m state --state NEW -j ACCEPT
允許狀態為NEW的資料訪問80埠:
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
允許172.25.254.10中狀態為NEW的資料訪問22埠:
iptables -A INPUT -s 172.25.254.10 -p tcp --dport 22 -m state --state NEW -j ACCEPT
其余訪問一概拒絕:
iptables -A INPUT -j REJECT
#最后必須保存
service iptables save
7. nat表中的SNAT(內網訪問外網)
實驗環境:
- 雙網卡主機(路由):192.168.43.101;1.1.1.101
- 單網卡主機(內網):1.1.1.111(網關設為雙網卡 1 段IP)
- 單網卡主機(外網):192.168.43.121
7.1 路由器端

- 打開iptables服務
systemctl disable --now firewalld.service
systemctl mask firewalld.service 上鎖
dnf install iptables-services.x86_64 -y
systemctl enable --now iptables.service
iptables -F:清空默認表(filter)- 檢查基本配置
sysctl -a | grep ip_forward
vim /etc/sysctl.conf ===> net.ipv4.ip_forward = 1 #可以ping
sysctl -p

iptables -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 192.168.43.101:將內網訪問外網的通過此路由的IP轉換為192.168.43.101service iptables save:保存修改iptables -t nat -nL:查看nat表

7.2 客戶端配置
內網主機


外網主機

7.3 客戶端測驗
在內網主機(1.1.1.111)中訪問外網(192.168.43.121)

在外網主機(192.168.43.121)中查看登陸者,卻顯示路由器IP

8.nat表中的DNAT(外網訪問內網)
實驗環境:
- 雙網卡主機(路由):192.168.43.101;1.1.1.101
- 單網卡主機(內網):1.1.1.111(網關設為雙網卡 1 段IP)
- 單網卡主機(外網):192.168.43.121
8.1 路由器端

-
iptables -t nat -A PREROUTING -i ens160 -j DNAT --to-dest 1.1.1.111:將外網訪問內網的通過此路由的IP轉換為1.1.1.111 -
service iptables save:保存修改

8.2 客戶端配置
內網主機


外網主機

8.3 客戶端測驗
在外網主機node3中登陸路由器node1,顯示登陸在node2上

在node2中查看登陸自己的主機,顯示是node3主機

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/233099.html
標籤:其他
上一篇:資料庫 實驗七 事務管理與資料庫備份、恢復和安全實驗
下一篇:除錯最長的一幀(第三天)
