iptables的管理方式

一.實驗環境

設置方法

  單網卡主機(workstation只能連接內網)
		170.25.254.22
 
  雙網卡主機(rhel8一塊連接內網,一塊連接外網)
		170.25.254.11
		172.25.254.33

 真機(foundation17)
 		172.25.254.17

單網卡主機查看
在這裏插入圖片描述
雙網卡主機查看
在這裏插入圖片描述

  • vim ifcfg-enp1s0雙網卡主機中能與單網卡連接的ip
    在這裏插入圖片描述
  • vim ifcfg-enp6s0雙網卡主機中設置網關爲真機ip
    在這裏插入圖片描述

二.火牆介紹

防火牆在做數據包過濾決定時,有一套遵循和組成的規則。
這些規則存儲在專用的數據包過濾表中,而這些表集成在 Linux 內核中。
在數據包過濾表中,規則被分組放在我們所謂的鏈(chain)中。
netfilter/iptables IP 數據包過濾系統是一款功能強大的工具,可用於添加、編輯和移除規則。
  • netfilter
    netfilter 組件也稱爲內核空間(kernelspace),是內核的一部分,由一些信息包過濾表組成,這些表包含內核用來控制信息包過濾處理的規則集。
  • iptables
    iptables 組件是一種工具,也稱爲用戶空間(userspace),它使插入、修改和除去信息包過濾表中的規則變得容易。對netfilter進行管理。
  • iptables|firewalld
    對iptables進行管理,一個是其本身的插件,另一個是firewalld

三.火牆管理工具切換

在rhel8中默認使用的是firewalld

1.firewalld----->iptables

【1】代碼

firewalld----->iptables

	- dnf install iptables-services -y  #搭建好yum倉庫後,安裝iptables
	- systemctl stop firewalld   
 	- systemctl disable firewalld
 	- systemctl mask firewalld
 	- systemctl enable --now iptables

【2】過程
rhel7以上版本可以不用安裝,此處是爲了方便給大家展示,所以我dnf安裝了一下

  • dnf install iptables-services.x86_64 -y 搭建好yum倉庫後,安裝iptables
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 關閉火牆
    在這裏插入圖片描述
  • 開啓iptables
    在這裏插入圖片描述

2.iptales -------> fiewalld

【1】代碼

iptales -------> fiewalld 

	- systemctl stop iptables
	- systemctl disable iptables
	- systemctl mask iptables
 	- systemctl enable --now firewalld

【2】過程

  • 關閉iptables
    在這裏插入圖片描述
  • 鎖定iptables並且解鎖火牆
    在這裏插入圖片描述
  • 開啓火牆
    在這裏插入圖片描述

3. iptables 的使用

/etc/sysconfig/iptables 是 iptables 策略記錄文件

命令 作用
iptales-save > /etc/sysconfig/iptables 將策略存放在記錄文件中
service iptables save 自動存放

1)臨時
iptables -F 刷掉策略(這是臨時的,在刷新掉後restart會重新出現)
在這裏插入圖片描述
2)永久保存策略

【1】iptales-save > /etc/sysconfig/iptables保存當前策略

  • -F後保存策略
    在這裏插入圖片描述
  • 查看/etc/sysconfig/iptables中的內容
    在這裏插入圖片描述
  • 備份iptables文件到/mnt中,-F後重啓服務發現不會恢復
    在這裏插入圖片描述
    將文件放回後再次重啓,此時策略信息恢復了

【2】service iptables save自動存放
在這裏插入圖片描述

四.火牆默認策略

1.默認策略中的5條鏈

input 輸入
output 輸出
forward 轉發
postrouting 路由之後
prerouting 路由之前

2.默認的3張表

  • filter 經過本機內核的數據(input output forward)

  • nat不經過內核的數據(postrouting,prerouting,input,output)

  • mangle 當filter和nat表不夠用時使用(input output forward postrouting, prerouting,)

3.iptables的常見命令

命令 作用
-t 指定表名稱
-n 不做解析
-L 查看
-A 添加策略
-p 協議
- -dport 目的地端口
-s 來源
-j 動作
-N 新建鏈
-E 更改鏈名稱
-X 刪除鏈
-D 刪除規則
-I 插入規則
-R 更改規則
-P 更改默認規則

補充:

-j 動作
	ACCEPT	 ##允許
	DROP	 ##丟棄
	REJECT 	 ##拒絕
	SNAT	 ##源地址轉換
	DNAT	 ##目的地地址轉換

練習:

  • 指定表名稱,不加 -t 則表示默認使用filter,此處可以結合理解3個表存在的鏈
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 添加策略
    在這裏插入圖片描述
    在這裏插入圖片描述
  • (對鏈進行操作)新建鏈+更改鏈名稱+刪除鏈
    默認的鏈是不能刪除的
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
  • -D刪除INPUT中的第二條規則
    在這裏插入圖片描述
  • -I 默認插入在最前面,但是也可以插入在指定行
    在這裏插入圖片描述
  • -R更改規則
    在這裏插入圖片描述
  • -P修改默認規則
    在這裏插入圖片描述
    注意:默認規則只能是ACCEPT或DROP,不能是REJECT
    在這裏插入圖片描述

4.數據包狀態

最開始的訪問狀態是NEW,後續就是ESTABLISHED和RELATED了。此設定會優化我們的火牆數據包狀態,使我們的數據包更易通過火牆。

命令 作用
RELATED 建立過連接的
ESTABLISHED 正在連接的
NEW 新的

【1】代碼

[root@workstation ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  #這兩種狀態的直接讓過
[root@workstation ~]# iptables -A INPUT -m state --state NEW -i lo -j ACCEPT
[root@workstation ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
[root@workstation ~]# iptables -A INPUT -m state --state NEW -s 170.25.254.11 -p tcp --dport 22 -j ACCEPT  #不加!表示只有這個ip的可以來訪問,加上!表示只有此ip不可訪問
[root@workstation ~]# iptables -A INPUT -j REJECT
[root@workstation ~]# service iptables save #對我們的策略進行保存

在這裏插入圖片描述
【2】驗證

  • 自己訪問自己是可以成功的,因爲走的是lo迴環接口
    在這裏插入圖片描述
  • 使用170.25.254.11也是可以訪問的,使用其他主機是不可以的
    在這裏插入圖片描述

5.nat表中的dnat snat

 - snat
	iptables -t nat -A POSTROUTING -o ens160 -j SNAT --to-source 172.25.254.33

 - dnat
	iptables -t nat -A PREROUTING -i enp6s0 -j DNAT --to-dest 170.25.254.22
	從enp6s0進來的所有數據都轉給170.25.254.11,即給enp6s0(172.25.254.33)的所有請求,都會發送到170.25.254.11。下面的練習就是真機連接雙網卡主機,但是最後的連接位置卻是單網卡主機

【1】snat練習:內網訪問外網,源地址轉換(要在POSTROUTING)
實驗預計目標:初始狀態下單網卡主機不能訪問外網,但是經過設定後,可以訪問。
設定內容:將單網卡(170)可以通過雙網卡轉換爲可上網的(172)

  • 單網卡主機初始狀態
    在這裏插入圖片描述

  • 在單網卡中添加網關(所添加部分就是雙網卡中與其網段一致的ip)
    在這裏插入圖片描述
    nmcli connection ~
    在這裏插入圖片描述
    route -n查看網關
    在這裏插入圖片描述

  • rhel8中內核路由功能是開啓的
    在這裏插入圖片描述

  • 此時iptables -t nat -A POSTROUTING -o enp6s0 -j SNAT --to-source 172.25.254.33添加規則,表示所有輸出都是以172.25.254.33輸出
    在這裏插入圖片描述

  • 此時單網卡主機能成功ping通外網與真機,單網卡170…通過雙網卡的轉換,能夠連接真機172…
    在這裏插入圖片描述
    使用ssh命令完成單網卡連接真機
    在這裏插入圖片描述

【2】dnat練習:目的地地址轉換(要在PREROUTING)

  • iptables -t nat -A PREROUTING -i enp6s0 -j DNAT --to-dest 170.25.254.22將所有從enp6s0連接的都轉到170.25.254.22
    在這裏插入圖片描述
  • 真機連接33,但是真正的連接位置是22。這就是做了目的地地址轉換!
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章