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
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