Linux網路安全技術與實現第2章之原理及實驗
2.2 何謂netfilter
netfilter的四個表是filter、nat、mangle及raw表。
- filter:filter是Netfilter中最重要的機制,其任務是執行資料包的過濾操作,也就是起到防火牆的作用。
- nat:nat(Network Address Translation,NAT)也是防火牆上一個不可或缺的重要機制,比較通俗的方式來說,其功能就是IP分享器,只不過其所執行的功能,比一般市場上的IP分享器功能強大得多。
- mangle:mangle是一個很特殊的機制,我們可以通過mangle機制來修改經過防火牆內資料包內容。
- raw:負責加快資料包穿過防火牆機制的速度,由此提高防火牆的效能。
不同的表有屬於獨立的幾個不同的鏈,而這個鏈的空間就是我們存放“規則”的地方。當然,不同的鏈其功能及用途也是不一樣的。
使用filter機制來構建閘道器式防火牆
假設192.168.31.10是因特網上的一臺主機,執行了smtp,pop3,http服務。
- 192.168.10.20只能訪問外網192.168.31.10的smtp和pop3服務。
- 內網主機192.168.10.0/24網段上的其它主機可以訪問因特網上的DNS、SMTP、POP3,http,及sshd服務。
- 因特網上的主機不得訪問企業內的任何主機。
1 #/bin/bash
2 #===============< Set Variable >=====================================
3 IPT=/sbin/iptables
4 SRV=192.168.31.10
5 ACC_PC=192.168.10.20
6 #=======================< Set Default Policy >=======================
7 $IPT -t filter -P INPUT DROP
8 $IPT -t filter -P FORWARD DROP
9 #===============< Clear Original Rule >> =============================
10 $IPT -t filter -F
11 #==============< Set-INPUt RULE>>======================================
12 $IPT -A INPUT -p tcp -m state --state INVALID -j DROP
13 $IPT -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
14 $IPT -t filter -A INPUT -p tcp -s 192.168.31.0/24 --dport 22 -j ACCEPT
15 #==============< Set FORWARD RULE>>====================================
16 $IPT -A FORWARD -i ens33 -o ens37 -m state --state INVALID -j DROP
17 $IPT -A FORWARD -i ens33 -o ens37 -m state --state ESTABLISHED,RELATED -j ACCEPT
18 $IPT -A FORWARD -i ens37 -o ens33 -p tcp -s $ACC_PC -d $SRV --dport 25 -j ACCEPT
19 $IPT -A FORWARD -i ens37 -o ens33 -p tcp -s $ACC_PC -d $SRV --dport 110 -j ACCEPT
20 $IPT -A FORWARD -i ens37 -o ens33 -p all -s $ACC_PC -j DROP
21 $IPT -A FORWARD -i ens37 -o ens33 -p tcp --dport 80 -j ACCEPT
22 $IPT -A FORWARD -i ens37 -o ens33 -p udp --dport 53 -j ACCEPT
23 $IPT -A FORWARD -i ens37 -o ens33 -p udp --dport 110 -j ACCEPT
24 $IPT -A FORWARD -i ens37 -o ens33 -p tcp --dport 22 -j ACCEPT
~
第1行
設定Shell直譯器的路徑。
第2-5行
將未來可能會變動的資訊或太長的命令簡化成“變數”
第6-8行
設定INPUT 及FORWARD鏈的預設策略為DROP,其目的分別如下:
設定INPUT鏈的預設策略為DROP的目的:雖然本示例的主要目的是使用閘道器式防火牆來保護及限制企業內的主機,但請千萬別忽略了防火牆自身的安全,否則防火牆若被入侵了,整個企業的安全防護就形同虛設了。因此,我們拒絕了所有對防火牆的連線操作,但別忘了,因為我們有可能在防火牆主機執行如軟體更新等需要對外產生連線的操作,所以在此並沒有將OUTPUT鏈的預設策略設定為DROP。
設定FORWARD鏈的預設策略為DROP的目的:因為本示例是以嚴格的方式來控制企業對外的連線,以及因特網對企業內的連線,因此,筆者將fFORWARD鏈的預設策略設定為DROP,如此一來,企業內外就等於“斷線”的狀態。稍後,我們再從FORWARD鏈中逐一啟用允許的對外連線通道陽即可。
第10行
清除原有的防火牆規則
第11-14行,
因為INPUT鏈的預設策略已設定為DROP,因此將導致對外建立連線時應答資料包無法正常穿過防火牆的問題,我們必須在INPUT鏈中設定ESTABLISHED 及RELATED狀態的資料包,才可以正常地返回。
第16行,
針所有從因特網送到企業內部且狀態是INVALID的資料包丟棄。
第17行,允許所有企業內部對外建立連線時所產生的應答資料包正常返回企業內部。
第18-20行
設定192.168.10.20主機只能訪問因特網上192.168.31.10這臺主機的SMTP及POP3服務。
第21行-24行
在192.168.10.0/24網段中的主機只能訪問因特網上的SMTP、POP3、HTTP及SSHD服務。
netfilter的NAT機制
SNAT
iptables -t nat -A POSTROUTING -o ens33 -s 192.168.10.0/24 -j SNAT --to 192.168.31.100
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
iptables -t nat -A PREROUTING -d 192.168.1.196 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.101
相關文章
- Swift 網路安全原理及實踐Swift
- 《工業控制網路安全技術與實踐》一一第1章緒 論
- 《工業控制網路安全技術與實踐》一第3章工業控制網路安全威脅
- 《工業控制網路安全技術與實踐》一一第3章工業控制網路安全威脅
- Docker 核心技術與實現原理Docker
- 利用IPsec實現網路安全之五(Kerveros實現身份驗證)ROS
- 網路安全之iptables實驗篇一
- 網路安全實用技術培訓
- 利用IPsec實現網路安全之四(CA證書實現身份驗證)
- IaaS關鍵實現技術之網路虛擬化
- 《網路安全原理與實踐》一2.1安全區介紹
- ☕【Java技術指南】「併發原理專題」AQS的技術體系之CLH、MCS鎖的原理及實現JavaAQS
- 《工業控制網路安全技術與實踐》一3.1.2 過程控制與監控網路
- 《工業控制網路安全技術與實踐》一3.1.3 企業辦公網路
- Linux網路安全經驗之談Linux
- 《工業控制網路安全技術與實踐》一一第2章工業控制系統基礎
- 《網路安全原理與實踐》一1.8網路安全體系結構的部署
- 《網路安全原理與實踐》一2.5複習題
- 《網路安全原理與實踐》一1.2資產確定
- 13-網路安全漏洞防護技術原理與應用
- 《工業控制網路安全技術與實踐》一1.5 本章小結
- 《工業控制網路安全技術與實踐》一3.4 本章小結
- 《工業控制網路安全技術與實踐》一一2.8 本章習題
- 單點登入原理與技術實現比較
- 驗證碼的原理、作用及實現
- 《VMware網路技術:原理與實踐》點評贈書獲獎名單
- [華章贈書]《VMware網路技術:原理與實踐》點評贈書
- Linux網路安全之經驗談(轉)Linux
- 網路安全實驗三 PGP 實現郵件加密和簽名加密
- Redis核心原理與實踐--列表實現原理之ziplistRedis
- 微信域名防封檢測的技術原理及實現方式
- Flutter之聲網Agore實現音訊體驗記錄 | 掘金技術徵文FlutterGo音訊
- 卷積神經網路的原理及Python實現卷積神經網路Python
- 快速理解容器技術的實現原理
- 個推技術實現原理介紹
- 計算機網路實驗五:虛擬區域網技術計算機網路
- 深度學習技術實踐與圖神經網路新技術深度學習神經網路
- 女生能學網路安全技術嗎?網路安全技術學習路線