1. 程式人生 > >Linux系統中防火牆管理-iptables

Linux系統中防火牆管理-iptables

一.iptables概述

iptables(網路過濾器)是一個工作於使用者空間的防火牆應用軟體。iptable是Linux下的資料包過濾軟體 。
iptables有三張表五條鏈:
1.Filter:資料包流通是否訪問Linux核心的表
Filter包含三條鏈input、 forward 、output

INPUT:主要與想要進入Linux主機的資料包有關,訪問核心上的服務,經過核心。
OUTPUT :主要與Linux本機所要送出的資料包有關,訪問核心上的服務,經過核心。
FORWARD :與Linux本機沒有關係,它可以傳遞資料包到後端的計算機中,與表NAT有關

理解Filter包含的三條鏈:
圖中1.1.1.1 與2.2.2.2通訊要經過路由。路由有兩塊網絡卡,分別設定IP:1.1.1.2 、 2.2.2.1。
核心開啟服務http和ftp。
在這裡插入圖片描述
1.1.1.1訪問路由核心開啟的ftp服務,經過1.1.1.2埠進來。input由filter表裡input設定。
相反出去。ouput由filter表裡output設定
在這裡插入圖片描述
1.1.1.1與2.2.2.2通訊,要經過路由。路由兩塊網絡卡網段不同,不可以通訊。兩塊網絡卡通過核心做資料的連線 forward
在這裡插入圖片描述
2.nat::用來進行來目的地地址轉換和源地址轉換

INPUT:與進入Linux的資料包有關,但沒有去訪問核心上的服務,不經過核心。
PREROUTING:在進行路由判斷之前目的地地址轉換過程中所要進行的規則(DNAT目的地地址轉換)。
POSTROUTING:在進行路由判斷之後地址轉換的過程中所有進行的規則(SNAT:源地址偽裝。
OUTPUT:與傳送出去的資料包有關,同樣沒有訪問核心上的服務,不經過核心。

3.mangle:備用表
有五條鏈:input、 forward、 prerouting 、postouting 、output

二.目的地址轉換和源地址轉換

1.環境配置
1)服務端設定
新增兩張網絡卡
172.25.254.110
1.1.1.110
在這裡插入圖片描述
開啟地址偽裝

firewall-cmd --permanent --add-masquerade
firewall-cmd --reload
firewall-cmd --list-all	

在這裡插入圖片描述
2)客戶端設定
1.1.1.10
GATEWAY=1.1.1.110
在這裡插入圖片描述
2.源地址轉換SNAT
客戶端(IP:1.1.1.10)ssh

[email protected]
w -i ##可以發現看到172.25.254.110
主機172.25.254.77上顯示的是172.25.254.110連線的它。但是實際上是1.1.1.10連線的172.25.254.77。這就是源地址轉換
在這裡插入圖片描述
3.目的地地址轉換

firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.10
firewall-cmd --list-all

在這裡插入圖片描述
主機(IP:172.25.254.110)ssh [email protected]
但是它實際連線的時候1.1.1.10
在這裡插入圖片描述
刪除目的地地址轉換
在這裡插入圖片描述

三.iptable的管理

1.關閉firewalld的管理,開啟iptables的管理方式

systemctl stop firewalld.service 
systemctl mask firewalld
systemctl disable firewalld
yum install iptables-services
systemctl start iptables
systemctl enable iptables

在這裡插入圖片描述在這裡插入圖片描述
2.顯示iptables中的所有策略

iptables -L 		##預設看的是filter,看到的是不是真實的ip,顯示的是anywhere 

在這裡插入圖片描述

iptables -nL		##-L列出表,-n解析

在這裡插入圖片描述

iptables -t nat -nL	##列出nat表的內容

在這裡插入圖片描述

iptables -t mangle -nL  ##列出mangle表的內容

在這裡插入圖片描述
3.重新整理火牆的資訊,清空之前策略

iptables -F		##刪除表的內容
iptables -nL		##表的內容被刪除了

在這裡插入圖片描述

systemctl restart iptables ##重啟iptables
iptables -nL		##表的內容重新回來了

在這裡插入圖片描述
4.儲存iptables的策略

vim /etc/sysconfig/iptables
iptables -F
service iptables save  ##儲存之後配置檔案被修改
cat /etc/sysconfig/iptables

在這裡插入圖片描述
在這裡插入圖片描述

四.iptables的管理

1.新增新的鏈westos

iptables -N westos

在這裡插入圖片描述
2.修改westos鏈的名稱成WESTOS

iptables -E westos WESTOS

在這裡插入圖片描述
3.刪除WESTOS鏈

iptables -X WESTOS

在這裡插入圖片描述

4.新增策略:表filter中INPUT設定拒絕172.25.254.77連線訪問本機(IP:172.25.254.110)

iptables -t filter -A INPUT -s 172.25.254.77 -p tcp --dport 22 -j REJECT

在這裡插入圖片描述
主機(IP:172.25.254.77)ssh [email protected] 無法連線
在這裡插入圖片描述
5.新增策略1:拒絕所有人連線訪問本機(IP:172.25.254.110)
新增策略2:允許172.25.254.77連線本機

iptable -A INPUT -j REJECT ##拒絕所有人連線
iptables -A INPUT -s 172.25.254.77 -p tcp --dport 22 -j ACCEPT   ## -A表示把該策略從末端插入
iptables -I INPUT -s 172.25.254.77 -p tcp --dport 22 -j ACCEPT    ## -I表示把該策略從開頭插入

在這裡插入圖片描述主機(IP:172.25.254.77)ssh [email protected] 可以連線
而其他主機不可以連線
在這裡插入圖片描述
6.新增策略:除了IP為172.25.254.77的主機,所有人都無法連線本機

iptable -A INPUT ! -s 172.25.254.10 -p tcp --dport 22 -j REJECT 

在這裡插入圖片描述

五.iptables管理地址偽裝

1.源地址轉換

sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.110

在這裡插入圖片描述
主機(IP:1.1.1.10 ) ssh [email protected]
主機172.25.254.77上顯示的是172.25.254.110連線的它。但是實際上是1.1.1.10連線的172.25.254.77
在這裡插入圖片描述
2.目的地地址轉換

iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-dest 1.1.1.10

在這裡插入圖片描述
172.25.254.77主機ssh [email protected]
實際連線的是1.1.1.10
在這裡插入圖片描述