日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux防火墙简介

發布時間:2024/1/17 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux防火墙简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

防火墻

隔離功能,工作在網絡或主機邊緣,對進出網絡或主機的數據包基于一定的規則檢查,并在匹配某規則時由規則定義的行為進行處理的一組功能的組件,基本上的實現都是默認情況下關閉所有的通過型訪問,只開放允許訪問的策略;

國內有很多防火墻廠家如:華為、深信服、天融信、網康、啟明星辰等等;

市場主流的防火墻叫做下一代防火墻,即能夠識別應用層信息并設置安全策略,當然,很多廠家的防火墻設備其軟件核心都是linux內核,如天融信、深信服;

iptables

linux中的防火墻功能是由集成在內核中的netfilter組件提供,即內核空間,而iptables只是用戶空間的一個工具,用它來調用內核空間的netfilter組件。在centos7上,

firewalld是類似于iptables的一個用戶工具;


iptables由四表五鏈組成:

四表:

filter: ? ?? ? 過濾規則表,根據預定義的規則過濾符合條件的數據包
nat: ? ? ? ?? network address translation 地址轉換規則表
mangle: ? 修改數據標記位規則表
Raw:????????關閉NAT表上啟用的連接跟蹤機制,加快封包穿越防火墻速度

五鏈:

INPUT
OUTPUT
FORWARD
PREROUTING
POSTROUTING


結合‘四表五鏈’,數據流經過防火墻時一般有三種流向:

1、流入本機:PREROUTING流入本機:PREROUTING --> INPUT-->用戶空間進程
2、流出本機:用戶空間進程-->OUTPUT--> POSTROUTING
3、轉發:PREROUTING --> FORWARD --> POSTROUTING

數據流經過防火墻的具體過程如下:

a、當流量進入防火墻時先檢查PREROUTING鏈,如果此鏈未設置拒絕策略,則進入下一步;

b、檢查路由表,判斷此流量是否是發給自己的,如果是發給本防火墻自身的則執行‘c’步驟,如果不是發給本機則執行步驟‘e’;

c、先匹配INPUT鏈,如果此鏈允許通過,則交由本機進程處理流量數據;

d、本機進程處理結束,封裝數據包,并檢查OUTPUT鏈,執行相應策略并轉發出去,進入步驟‘f’;

e、本機只是轉發此數據,交由FORWARD鏈處理;

f、再次查看路由表,找到去往目標的路徑;

g、匹配POSTROUTING鏈,并執行策略


配置iptablles時需要明確是對哪個表哪個鏈做什么匹配并執行何種操作

下面我們舉個例子說明

iptables -A INPUT -s 192.168.1.101 -j DROP

#未指定具體表,默認是filter表,本例中是對filter表中的INPUT鏈做操作

#-A是添加鏈,-s指定源地址,-j是對匹配的數據包執行的操作

#即在filter表INPUT鏈中,匹配來自192.168.1.101訪問本機的所有流量,操作是統統丟棄


下面結合例子說明iptables常用的參數:

例子1、

iptables -t nat -vnL

#-t指明使用的表的類型,此處使用的是nat表

#-v詳細信息,-n以數字顯示ip地址和端口而不是域名和服務名稱,-L列出表上所有鏈的信息

例子2、

iptables -A INPUT ! -s 192.168.1.101 -p icmp --icmp-type 8 -j REJECT

#嘆號!表示非,即源地址為非192.168.1.101的所有地址

#-p協議,此處是icmp協議

#--icmp-type 8是ping的請求包,一次完整的ping操作由本端的request請求和對端replay回應組成,數字8表示request報文,數字0表示回應replay報文

#-j執行的動作是拒絕,REJECT與DROP都是拒絕的意思,但前者會明確回應不可到達,后者則一直不返回任何消息

#此命令含義是源地址非192.168.1.101的ping請求報文全部拒絕,也就是說只允許192.168.1.101能ping

例子3、

iptables -A INPUT -m iprange --src-range 192.168.1.101-192.168.1.102 -p tcp -m multiport --dports 80,22 -j REJECT

#-m顯式擴展,iptables必須使用指定模塊即iprange和multiport,實現特定功能,從字面意思就能理解模塊的意思

#--src-range源地址范圍

#--dports多個目標端口,以逗號隔開,如果是連續的端口可以以冒號‘ : ’表示

例子4、

iptables -A INPUT -m time --timestart 00:00 --timestop 12:00 -p tcp --dport 80 -j REJECT?

#在每天凌晨到中午十二點訪問http的服務全部拒絕,此命令中用到了time的擴展模塊

iptables -A OUTPUT -m time --timestart 00:00 --timestop 12:00 -m string --algo bm --string 'google' -j REJECT?

#在每天凌晨到中午十二點訪問包含‘google’字符串的流量全部拒絕

#此命令用到了time和strin的擴展模塊,--algo?bm是字符串匹配算法

例子5、

iptables -A INPUT -m connlimit --connlimit-above 1 -p tcp --dport 22 -j REJECT

#每ip的ssh連接超過1個就會拒絕,即每ip只允許一個ssh連接

#ssh使用tcp的22端口

#用到了擴展模塊connlimit,--connlimit-above連接超過多少,--connlimit-upto連接達到多少

iptables -I INPUT -m limit --limit 6/minute --limit-burst 10 -p icmp --icmp-type 8 -j ACCEPT

#擴展模塊limit,--limit-burst 10表示前10個icmp的請求包不做限制

#--limit 6/minute?超過10個icmp請求包后,就限制每分鐘允許6個icmp請求包通過

#此命令實現了對流量的限制

例子6、

ftp是文件傳輸協議,使用tcp連接,但是其控制連接和數據連接使用的tcp端口不同,那么針對這種情況iptables怎么限制呢?

比如,我們只想要192.168.1.101主機能夠訪問ftp服務器,其他全部拒絕,應該怎么做?

首先我們要明白,ftp的工作原理:

1)、客戶端開啟隨機端口與服務器的21端口建立tcp連接;

2)、雙方協商使用何種模式傳輸數據,在linux上是被動模式,在windows上是主動模式;

3)、所謂被動、主動都是針對服務器端而言的,即服務器是被動接收客戶端請求還是主動向客戶端發出請求;

4)、此處我們只討論linux上的被動模式,被動模式服務器與客戶端之間建立數據連接使用的都是任意端口

所以在iptables上才不好根據端口限制,不過linux提供狀態模塊state,可以跟蹤多端口的狀態,具體請看下面例子

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#擴展模塊state,ESTABLISHED已經建立的連接,RELATED關聯的連接
iptables -A INPUT -s 192.168.1.101 -p tcp --dport 21 -m state --state NEW -j ACCEPT

#NEW新建立的連接

#上述兩條命令意思就是與tcp21端口建立的連接及其關聯的連接(數據連接),和已經建立的連接都執行ACCEPT允許操作

#state模塊能夠識別ftp的后續數據連接并放行,還是比較智能的
iptables -A INPUT -j REJECT

#本例中ftp服務器與防火墻是同一臺設備

#默認策略是拒絕所有ip和協議連接到本機

#本例就是只允許ftp連接(控制連接和數據連接),其他任何協議、ip、端口全部拒絕

#注意要達到state記錄狀態的效果還得安裝一個模塊,命令為'modprobe nf_conntrack_ftp'


注意:

上述例子全部未指定表類型,所以默認都是在filter表中操作


NAT和端口轉發

防火墻還有一個常用的表:nat表

NAT就是網絡地址轉換的意思,根據應用場景分為源NAT(source)、目的NAT(destination),下面我們來分析二者的用途:

SNAT:

將數據包的源ip地址轉換為特定ip。一般企業內部都會使用私網地址如10.0.0.0/8或者172.16.0.0/16-172.31.0.0/16或者192.168.0.0/24,

但是私網地址在公網上是無法得到回應包的,即源地址是私網地址的數據包雖然能夠到達目的地,但是目標沒有回去的路由信息,即私網地址無法在公網傳輸。SNAT就是將數據包ip頭中的源地址轉換為能在公網路由的公網地址,一般用于內網用戶訪問外網資源,其優點就是節省了公網地址;

SNAT用到nat表中的鏈有:POSTROUTING

DNAT:

SNAT是轉換請求方的源ip地址,而DNAT則是轉換請求方的目標地址。即防火墻收到請求,讀取數據包中的目的ip,并將目的ip轉換為內網某臺服務器的私網地址然后將數據包轉發給那臺服務器,一般用于外網用戶訪問企業內部服務器,其優點是可以隱藏內網服務器ip,避免收到攻擊。

DNAT用到nat表的鏈有:PREROUTING

PNAT:

端口和ip都可以進行轉換,更加靈活


下面三個例子分別說明NAT的三種應用場景:

SNAT?

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j SNAT --to-source 172.32.253.237

#不能再使用默認表,此處使用的是nat表,-j的動作是進行SNAT的轉換

#源地址是192.168.1.0/24網段的,訪問外網資源時都會轉換為172.32.253.237,對于目的而言,其認為數據包是由172.32.253.237發來的,

#而不是192.168.1.0/24中的某一主機發來的

#目標主機回包時的目的地址就是172.32.253.237,由于防火墻本身會有一份表,專門記錄私網地址、端口轉換為公網地址、端口的對應關系

#所以防火墻會根據這張表找到私網主機,完成整個通信


DNAT

iptables -t nat -A PREROUTING -s 172.18.0.0/16? -d 172.32.253.237 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.101:8080

#將172.32.253.237:80轉換為192.168.1.101:8080

#完成公網到私網的轉換


PAT

iptables -t nat -A PREROUTING -d 192.168.1.101 -p tcp --dport 80 -j REDIRECT --to-ports 8080

#通過改變目標IP和端口,將接收的包轉發至不同地址、端口


本文轉自 ?a_pan ?51CTO博客,原文鏈接:http://blog.51cto.com/panpangao/1974660



總結

以上是生活随笔為你收集整理的linux防火墙简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。