linux 防火牆與 iptables

轉自: https://blog.csdn.net/wq962464/article/details/84924180

一、linux防火牆基礎

1.防火牆概念
在計算機科學領域中,防火牆(Firewall)是一個架設在互聯網與企業內網之間的信息安全系統,根據企業預定的策略來監控往來的傳輸。
防火牆可能是一臺專屬的網絡設備或是運行於主機上來檢查各個網絡接口上的網絡傳輸。它是目前最重要的一種網絡防護設備,從專業角度來說,防火牆是位於兩個(或多個)網絡間,實行網絡間訪問或控制的一組組件集合之硬件或軟件
2.功能:防火牆最基本的功能就是隔離網絡,通過將網絡劃分成不同的區域(通常情況下稱爲ZONE),制定出不同區域之間的訪問控制策略來控制不同信任程度區域間傳送的數據流
3.IPTABLES實現方式
Linux系統的防火牆功能是由內核實現的,包過濾防火牆工作在TCP/IP的網絡層
在這裏插入圖片描述
iptables有四表五鏈,表決定了數據報文處理的方式,鏈決定了數據報文流經的位置

規則表
filter表:包含三個鏈INPUT,OUTPUT,FORWARLD,(作用:確定是否放行該數據包)(過濾)
nat表:PREROUTING,POSTROUTING,OUTPUT (作用:修改數據包中的源、目標IP地址或端口)
mangle表:INPUT,OUTPUT,FORWARLD,PREROUTING,POSTROUTING,(作用:爲數據包設置標記)
raw表:OUTPUT,PREROUTING(作用:確定是否對該數據包進行狀態跟蹤)
規則鏈:
input: 當收到訪問防火牆本機的數據包時(入站),應用此鏈中的規則。
output: 當防火牆向外發送數據包時(出站),應用此鏈中的規則。
forward: 收到需要通過防火牆發送給其他地址的數據包時,應用此鏈中的規則
prerouting:在進行路由選擇前處理數據包(判斷目標主機)應用此鏈
postrouting:在進行路由選擇後處理數據包(判斷經由哪一接口送往下一跳)應用此鏈
4.數據包匹配的流程:

分析數據報文進入本機後應用了哪些表規則以及鏈規則
如filter表的規則,filter表決定是否放行數據包通過,那如果通過,則必須經由INPUT鏈流入數據包,INPUT鏈是處理入站數據的,如果沒問題,繼續放行到用戶空間,再經由OUTPUT鏈將數據包流出
如nat表的規則,nat表主要實現轉發功能,數據包先經由PREROUTING鏈進行路由選擇,選擇好路線後再經由FORWARD鏈轉發數據,然後再進行一個路由選擇,最後由POSTROUTING鏈流出數據
在這裏插入圖片描述
規則表之間的優先級
raw、mangle、nat、filter
規則鏈之間的優先級
入站數據流向:來自外界的數據包到達防火牆,首先被PREROUTING規則鏈處理(是否被修改地址),之後會進行路由選擇(判斷該數據包應該發往何處),如果數據包的目的地址是防火牆本機,那麼內核將其傳遞給INPUT鏈處理,通過以後再交給上次的應用程序進行響應。
轉發數據流向:來自外界的數據包到達防火牆後,首先被PREROUTING規則鏈處理,之後進行路由選擇,如果數據包的目標地址是其他外部地址,則內核將其傳遞給FORWALD鏈進行處理,然後再交給POSTROUTING規則鏈(是否修改數據包的地址等)進行處理。
出站數據流向:防火牆本身向外部地址發送數據包,首先被OUTPUT規則鏈處理,之後進行路由選擇,然後交給POSTROUTING規則鏈(是否修改數據包的地址等)進行處理
規則鏈內部各防火牆規則之間的優先順序
依次按第1條規則、第2條規則、第3條規則、·····的順序進行處理,找到一條能夠匹配的數據包規則,則不再繼續檢查後面的規則(使用LOG記錄日誌的規則例外)如果找不到規則,就按照規則鏈的默認策略進行處理。

二、管理和設置iptables規則

1.語法格式
iptables [ -t 表名] 命令選項 [ 鏈名] [ 條件匹配] [ -j 目標動作或者跳轉]
2.iptables 命令
在這裏插入圖片描述
3.添加及輸入規則
#iptables -t filter -A INPUT -p tcp -j ACCEPT
在filter表的INPUT鏈的末尾添加一條防火牆規則

iptables -l INPUT -p udp -j ACCEPT
在filter 表的INPUT鏈中插入一條防火牆規則

iptables -l INPUT 2 -p icmp -j ACCEPT
在filter 表的INPUT鏈中插入一條防火牆規則,作爲鏈中的第二條規則
4.查看規則表
iptables -L INPUT --line-numbers
查看filter 表INPUT鏈中所有規則,同時顯示各條規則的順序號

iptables -nvL
-L 選項放在最後,否則會將vn當成鏈名。查看filter表各鏈中所有規則的詳細信息,同時以數字形式顯示地址和端口號
5.刪除、清空規則
iptables-D INPUT 2
刪除filter 表INPUT 鏈中的第二條規則

iptables -F
不指定表名時,默認情況filter表

iptables -t nat -F
清空nat 表中各鏈的所有規則

6.設置規則鏈的默認策略
iptables -t filter -P FORWARD DROP
將filter 表中FORWARD 規則的默認策略設爲DROP

iptables -p OUTPUT ACCEPT
將filter 表中OUTPUT規則的默認策略設爲ACCEPT

獲得iptables 相關選項的幫助信息
iptables -p icmp -h
查看iptables 命令中關於icmp協議的幫助信息
7. 條件匹配
流入、流出接口(-i 、-o)
來源、目的地址(-s 、-d)
協議類型(-p)
源端口、目的端口(–sport 、–dport)

端口匹配
-p udp --dport 53
匹配網絡中目的端口是53的udp協議數據包
地址匹配
拒絕轉發來自192.168.1.11主機數據,允許轉發來自192.168.0.0/24網段的數據
iptables -A FORWARD -s 192.168.1.11 -j REJECT
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

端口和地址聯合匹配
-s 192.168.0.1 -d www.abc.com -p tcp --dport 80
匹配來自192.168.0.1,去往www.abc.com的80端口的tcp協議數據包

8.動作匹配
ACCEPT DROP SNAT DNAT MASQUERADE
-j ACCEPT 通過,允許數據包通過本鏈而不攔截它
iptables -A INPUT -j ACCEPT
允許所有訪問本機IP的數據包通過
-j 丟棄、阻止數據包通過本鏈而丟棄它
iptables -A FORWARD -s 192.168.80.39 -j DROP
阻止來源地址爲192.168.80.39的數據包通過本機
-j SNAT --to IP[:端口-端口] 源地址轉換,SNAT支持轉換爲單IP,也支持轉換到IP地址池
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1
將內網192.168.0.0/24的源地址修改爲1.1.1.1

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1-1.1.1.10
同上、修改成一個地址池裏的IP
-j DNAT --to IP [-IP][:端口-端口] 目的地址轉換,DNAT支持轉換爲單IP,也支持轉換到IP地址池
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.1
把從ppp0 進來的要訪問的tcp/80的數據包目的地址改爲192.168.0.1

9.顯示匹配的使用選項及功能:
顯式匹配的選項特別多,man iptables-extensions查看具體用法
multiport(多端口)
–sport
–dports
iprange(ip範圍)
time(時間範圍)
string(字符串) #對報文中的應用層數據做字符串模式匹配檢測(通過算法實現)
connlimit(連接限制)
limit(速率限制)
state(狀態) #追蹤本機上的請求和響應之間的數據報文的狀態。狀態有五種
–state state NEW:新連接請求
–state state ESTABLISHED:已建立的連接
–state state INVALID:無法識別的連接
–state state RELATED:相關聯的連接,當前連接是一個新請求,但附屬於某個已存在的連接
–state state UNTRACKED:未追蹤的連接
提示:
對於進入的狀態爲ESTABLISHED都應該放行
對於出去的狀態爲ESTABLISHED都應該放行
嚴格檢查進入的狀態爲NEW的連接
所有狀態爲INVALIED都應該拒絕

發佈了40 篇原創文章 · 獲贊 1 · 訪問量 3407
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章