防火牆入門手冊 - 澎湖人自由軟體交流網
文章推薦指數: 80 %
學習防火牆除了要實做外還必須對網路的整個架構有所認識才行,尤其是TCP/IP通訊協定,其他可能還必須 ... 一般這種防火牆的設定是最簡單,它不用去管內外,只有本機。
防火牆入門手冊
1.寫這份線上書籍動機
澎湖縣中小的服務大部份都已移至縣網中心,學校端要做的就是電腦教室及行政電腦的安全部份,澎湖縣是一個資訊教育不重視的縣市,全縣沒有一所中小學有防火牆,全部的機器都直接曝露於網路上,網管人員又多數能力不足,所以才會有寫這本書的念頭,希望利用它來保護整個校園網路的安全,如果學校有架設server的話能切出一塊乾淨的網段,利用該網段,來保護某些主機,使其不受外部網路的攻擊。
我希望能讓澎湖縣中小學的網管能有能力去建置一道防火牆來防衛外而內的攻擊或入侵,小弟也是摸索研究,在網路上看到很多人無私的貢獻,小弟也希望能做點事,本書參考OLS3大大的防火牆入門加上個人學習的心得而成,如有錯誤或不當的地方請不吝指正。
防火牆入門手冊
2.基礎知識
學習防火牆除了要實做外還必須對網路的整個架構有所認識才行,尤其是TCP/IP通訊協定,其他可能還必須去了解到iptables或VPN等,所以這一章就是學習防火牆的蹲馬步了,我會儘量說清楚講明白的,資料有可能隨時更新,因為我每天也不斷在努力K書吸收別人的東東,消化完再把心得寫出來。
防火牆入門手冊
2-1網路拓樸
網路拓樸是指網路的架構,什麼網路設備要擺在何處,就router、switch及server等。
我們要架設防火牆就要規劃要將防火牆置於整個網路的那個位置才能發揮應有的功能,很多人買了很多設備,如果沒有正確的觀念,設備來了就裝,那麼可能會影到整個網路的效能及安全,所以我預計會寫到以下幾種的防火牆,也就針對中小學來寫。
單機型防火牆:
一般學校沒有防火牆,所以我們安裝完server後可以將防火牆的規則直接寫入server,不過這必須每一台都要設,它沒規畫內外之分。
一般這種防火牆的設定是最簡單,它不用去管內外,只有本機。
閘道型防火牆:
最常見就應該是這種,於機器上安裝二張網卡,一對外,一對內,所以您必須設定進出規則,如果內部有server的話就必須使用port-forward方式去設
安裝三張網卡另規畫出DMZ放置Server:
這一種是基於安全考量,規畫另一區來永置server,這樣一來如果server被入侵,一般client的pc還會有保障,如果像上面講的閘道型防火牆,如果server被入侵,那client的電腦就同樣不保。
防火牆入門手冊
2-2OSI7Layer與TCP/IP
***本篇資料參考study-area的文件加上自己心得*****
以下介紹防火牆入門時,所需要的一些基本觀念。
OSI7層架構與TCP/IP四層架構
OSI依功能分為七個層級,它是一個模型定義出原則,最主要我們的設備只要能導守它的規範就能與其他同層設備溝通。
OSI依功能分為七個層級﹐各司其職﹐但有相互依存﹑合作。
但在功能上﹐它們又可以被劃分為兩組﹕
*網路層﹕由實體層﹑資料連接層﹑和網路層組成。
(5.6.7層)
*應用層﹕由傳送層﹑會談層﹑表現層﹑和應用層組成。
(1.2.3.4層)
1.實體層(PhysicalLayer)--定義網路媒體的屬性.比如﹕數據線的接腳﹑電壓﹑波長﹑相位﹑等等。
2.資料連接層(DataLinkLayer)--這一層主要同步、偵錯、制定MAC,透過特殊的連結或傳導取得資料.這層指定了要採用的信息單元,信息單元被稱為frame。
3.網路層(NetworkLayer)--網路層的主要功能是讓封包(packet)在不同的網路之間成功地進行傳遞。
它規定了網路的定址方式﹐及處理資料在不同網路之間的傳遞方式﹑處理子網路之間的傳遞﹑決定路由路徑﹑網路環境﹑資料處理順序﹑等等工作。
4.傳送層(TransportLayer)--在這層﹐將會設定如何控制節點之間的資料傳遞﹐還有錯誤檢測和修正的方法。
5.會談層(SessionLayer)--定義如何開始,控制,結束通訊(session).
6.表現層(PresentationLayer)--定義資料的格式,諸如:JPEG,ASCII,MPEG...;加密動作、用碼轉換、壓縮與解壓縮也是在此層定義.
7.應用層(ApplicationLayer)--與應用程式的通訊相關聯,負責應用程式間的通訊服務,像是telnet,http之類.
資料傳送圖:
您應可以很清楚看到資料往下層送,並加上該層的表頭,最後到實體層把資料傳到目的電腦,後後開始逐層向上送並且去除表頭,最後就還原了原來的資料
網路卡硬體位址(MAC)
在每一張網卡出廠時就把網路硬體位址寫入到ROM或者EEPROM中,MAC為6個bytes:aa:bb:cc:dd:ee:ff
前三組為廠商代號,後三個為產品流水號,正常來講這個網卡位址應該是全球為一,但目前有程式可以去改這一部份。
接下來我們來看TCP/IP四層架構:
其實TCP/IP是兩個不同的通訊協定,一個TCP,一個IP,但是一般它們都是搭配成通訊協定組使用。
1.應用層--這層是TCP/IP模型與應用程式之間的界面﹐向使用者提供應用程式服務所需的連接﹐然後透過其下的傳送層來發送和接收資料。
-->例如:HTTP、TELNET、NFS、等等。
不同的協定使用不同的穿送層協定。
2.傳送層--傳送層的主要目的向應用程式之間提供點對點的通訊
-->TCP/IP的傳送層協定主要分為TCP與UDP兩種,前者為可靠性傳輸、後者為非可靠性傳輸。
3.網際網路層--這裡處理的是機器之間的通訊﹐為每一個傳送層交下來的封包加上IP標頭,這層協定的處理關鍵是路由。
4.網路存取層--本層的主要功能是把資料直接送給網路裝置。
它定義了如何用網路來傳送IP資料段﹐它必須知道底層網路的細節。
我們可以從上圖很清楚看到資料傳送過程。
TCP的封包:
|來源的port|目的的port|資料Data|
|-----------(表頭)-----------|資料Data|
詳細可以參考:
http://linux.vbird.org/linux_server/0110network_basic.php#protocol_tcp
防火牆入門手冊
2-3封包的種類及TCP三向交握
封包的種類:
ICMP(networklayer/IPcontrol/statusmessages)
主要是用來做交換訊息它不用來傳送資料。
ICMP協定只有類型的分別(Type),沒有通訊埠
A-----ping(icmp8)-request-->B
AB
A110001100.01111111.11110011.01000001
每個組都是完整的8個bit﹐如果不夠8-bit的話﹐則往左邊填上0﹐直到補滿為止。
如果是以“0”開頭的﹐這是一個AClass的IP
如果是以“10”開頭的﹐這是一個BClass的IP
如果是以“110”為開頭的﹐則屬於CClass的IP
我舉例---->
110001100.01111111.11110011.01000001以.分為四組
由1到126開頭的IP是AClass----第一組(0)0000001~(0)1111111前回提到以0開頭,所以有7個可以改變。
由128到191開頭的IP是BClass---第一組(10)000001~(10)111111
由192到223開頭的則為CClass---第一組(110)00001~(110)11111
所以以石泉國小140.127.243.65,那麼它就ClassB的IP,只是我們還是ClassB的子網,後面會談到。
了解IP的Class之後﹐我們就可以知道IP的Net_ID和Host_ID﹕
我以classa來講,ClassA第一個bit必須為0﹐第一的8個bit就只有7個bit是可變化的。
那麼2七次方-2=128-2=126﹐127這個NetID不能使用﹐那麼我們實際上最多只能劃分126AClass的網路。
A級:
2^n-2=主機數-->2^24-2=16777214(主機數)
2^7-2=126(網路數目)
B級:
2^n-2=2^16-2=65534(主機數)
2^14-2=16384(網路數目)
C級:
2^n-2=2^8-2=254(主機數)
2^21-2=2097150(網路數目)
D級E級:
這二個都是支援特殊用途,D級是提供一群有共同多點傳播位址的主機互相通訊之用,D級位址的最高四個位元值總是為1110,所以是由224~239。
E級位址是InterNIC預留給實驗用途的。
※為什麼主機數要減2,因為主機ID全是0的是代表網路本身,全是1的是廣播位址,不能使用。
NetMask:
AClass的mask是255.0.0.0
BClass的mask是255.255.0.0
CClass的則是255.255.255.0
我以ipsubnetter工具來講:
1.先下載
http://www.boson.com/FreeUtilities.html
2.接下來我以下說明:
1)IP
2)子網
3)會把IP及子網轉成二進位
4)算出subnet,也就該網段第一個IP
5)算出broadcast,也就該網段最後一個IP
6)列出可用用的IP範圍
一般subnet及broadcast不能用。
我覺得您會使用這個就可以了,其中subnet怎麼算出來的,只要知道是由IP和子網做AND運算而得就可。
至於切子網及公私IP會寫到後面章節。
防火牆入門手冊
2-6-1公共IP與私有IP
一般我們上網都會使用到公共IP,也就一般人說的真實IP,還會聽到私有IP,到底什麼是私有IP。
1.經過合法授權使用的IP,我們稱之為公共IP(PublicIP),一般我們學校都會發到64個以上的真實IP。
2.私有IP:
但是現在全球有那麼多的電腦,會發現有IP不夠用的顯象,所以現有IPV6的出現,不過目前還少用,於是有人就有構想而產生私有IP的技術,在A﹑B﹑C這三個層級裡面﹐各劃出一些位址範圍保留給私有位址所用﹐它們分別是﹕
10.0.0.0-10.255.255.255
172.16.0.0-172.31.255.255
192.168.0.0-192.168.255.255
但是目前私有IP有所限制
※私有位址的路由資訊不能對外散播
※使用私有位址作為來源或目的位址的封包,不能透過Internet來轉送
※關於私有位址的參考紀錄,只能限於內部網路使用
我們一般會使用到IP分享器或自行安裝防火牆或linux來做私有IP部份的處理,無需擔心會和其它也使用相同位址的網路衝突,而這些無需註冊就能自由使用的IP,我們稱之為私有IP(PrivateIP)。
其實這些私有IP要上網還必須透過一個真實IP才能上網,如果私有IP內有架設server那必須使用到轉port的方式來處理,我們後績會講到。
防火牆入門手冊
2-6-2IP封包位格式及表頭
1)VERS---(Version)代表IP通訊協定版本,數值通常為0x4(十六進位的)
2)HLEN---(HeaderLength)表IP標頭長度,IP封包規格前面的6行為header
3)ServiceType--IP封包在傳送過程中要求的服務類型
4)TL(TotalLength)---IP封包(標頭+資料)的總位元
5)識別欄欄位包括FLG(旗標)、FragmentofOffset(段落位移)則可以讓過大的封包於傳送過程中傳送時分解至目的端後再組合
大封包必須切成小封包才能符合網路的傳送,這時會於封包上有個序號,到目的後再由序號組合回來。
6)TTL---(TimeToLive)為以秒表示每經過路由器後計算可存活時間,每經過一個路由器的時間都將減損時間
7)Protocol---一般所使用的協定有ICMP、TCP、UDP等
8)HeaderChecksum---用以確認IP標頭本身是否更動
9)Source/Destinatio---IP位置則是以32位元組合而成並標示為來源/目的端的IP位置,來源位址(SA),目的地位址(SA)
10)Options&Padding---少用
11)ID、FLG、FragmentOffset---識別碼(ID)。
每一個IP封包都有一個16bit的唯一識別碼、旗標(FL)、封包分割後位移(如果封包沒被分割那這個值就是0)
IP封包格式如下圖:
防火牆入門手冊
2-7劃分子網路
子網路遮罩:
預設網路遮罩:
A級:255.0.0.0
B級:255.255.0.0
C級:255.255.255.0
子網路遮罩的產生就是要決定使用多少個0來建立更多的網路。
我以B級的網路來舉例:
澎湖縣的中小學IP都是140.127.X.X,所以應屬於B級,我如果申請到一個B級,要分給500個中小學使用,每個學校約有一百台電腦,如果做呢?
位我們上一節談到的:
2^9-2=510
2^8-2=254
所以理所當然是使用2^9-2=510來切網路數目
剩下7個位元來做主機
2^7-2=126
每個網段有126台,就有合我們的要求。
那到底子網遮罩是多少:
本來應該
255.255.0.0
11111111.11111111.0.0
255.255.255.128
11111111.11111111.(11111111.1)0000000
我們要位移9個位元才該切出500個網段。
我以澎湖縣的小型學校來舉例,全校電腦不超過二十台,如果我們給個ClassC的IP數,256IP,不是浪費了嗎?給個64個已太多了。
我們有說過Sub-netMask的使用手法就是靠“借”就是從左往右的按需要將本來屬於HostID的一些連續的bit轉為Sub-netID來使用。
也就是將預設的NetMask的“1”逐漸的往右增加﹐相對地﹐NetMask的“0”則越來越少。
這樣的結果當然是可以獲得更多的NetID﹐換一句話說﹐您可以將一個大的IP網路分割成更多的子網路﹐而每一個子網路的主機數目卻相應的減少。
以下是以子網遮罩來說明:
11111111.11111111.11111111.00000000
(例如原本的ClassC)255.255.255.0會有256個IP可用,對小型學校來講太多了,這時候我們就向右借了二個bit,那麼─>
11111111.11111111.11111111.(11)000000
這時netid就多了,但hostid就少了,借了二個bit,2的二次方就可變為四段了:
11111111.11111111.11111111.(00)000000~11111111.11111111.11111111.(00)11111111
11111111.11111111.11111111.(01)000000~11111111.11111111.11111111.(01)11111111
11111111.11111111.11111111.(10)000000~11111111.11111111.11111111.(10)11111111
11111111.11111111.11111111.(11)000000~11111111.11111111.11111111.(11)11111111
二個bit就有00、01、10、11四種變化。
Sub-netMask是“借”HostID來當Sub-netID使用﹐規則是從左往右遞增﹐作用是將一個較大的網路切割成多個較小的網路。
而在顯示IP的時候﹐必須要和Sub-netID加在一起來表示。
所以我就可以很容易算出第一段的從0~64,0是網路用,64是廣播用,是不能給一般電腦使用的。
所以目前大的學校的子網是255.255.255.0
中型學校子網就是255.255.255.128
小型學校子網就是255.255.255.192
所以我們澎湖縣中小學應該是B級切出的子網。
而不是一般人所講的classC。
防火牆入門手冊
2-8Lookback介面
我們安裝完B2D-Server或一般的Linux系統時明明只有指定一張網卡,安裝完成後使用ifconfig一看卻有二張,一張是eth0,另一張是lo,這個lo的IP位址是:127.0.0.1。
我們由字面上看來應該是回路的意思,就是連到127.0.0.1的封包不會送出去,會經由lookup傳回本機
這個介面是提供本機上的TCP/IP程式互相溝通,我們可以看到在Linux系統中,xwindow的x-server和x-client就必須透過這個介面來傳送訊息與資料,所以這個介面是會自動產生的,不管您有沒有安裝網卡。
防火牆入門手冊
2-9由與通訊閘
很多人都不知道學校的cisco1605那台router是做什麼用的,那台router上有二個介面,分別是wan及Lan,其實使用一個介也可以來做到,就是使用secondary,將一張網卡設二個IP,我分別來說明一下:
1.router上有二個介面時:
wan是接到ATU-R,Lan是接到Switch。
在Router會有一條的defaultroute到0.0.0.00.0.0.0指到ATU-R,如果封包不知如何處理就往ATU-R送,然後ATU-R會往縣網中心送然後在縣網的router做判斷去決定往何處送。
2.router上如果一個介面故障時,剩下一個介面時:
在一個介面上設二個IP,接法就是ATU-R接進來時必須接在Switch,而Router也要接在Switch上,因為ATU-R是設10.X.X.X的IP,而Router的Wan也是10.X.X.X的IP,所以會通,而Router的Lan是設140.127.X.X的IP,pc與server也都是140.127.X.X的IP所以會通,講明白一點就是這個Switch會有二段IP在上面,我們看下面就明白:
由上圖得知,server送封包出去,到switch,switch會將封包送往router,因為gateway設router,到router做判斷後往ATU-R金送然後就往外送出去了。
封包回來時ATU-R回往Router送,其間會經過Switch,因為ATU-R上有設routing,router決定後會往內送,這時又會經過Switch然後到達server。
所以路由器可以看出最主要是決定封包往那送,因為在路由器當中有設定routing,一般分固定和動態兩種。
由上圖我們也可得知路由器將封包由一個介面傳送到另一個介面,這時它就像兩個網路的閘道一樣,所以我們扮演我們學校的通訊閘,或稱gateway。
由下圖來看看當路由器a收到封包,它只有一條路徑就是往b送,這時我們只要設定靜態路由就可,當送到b時,b就會決定應該要往cde那個路由送,會依頻寬等做決定,這時路由器b上的路由一般會設動態路由。
防火牆入門手冊
3.iptables基本語法
我們在Linux上要實做不論是防火牆、NAT、連線限制或管理都必須要動到iptables,一般iptables參數很多,我們常會用到不多,只要熟用就可做出一台稱職的firewall,所以這一部份就是要來談談一些基本觀念及參數使用。
防火牆入門手冊
3-1iptables結構圖
iptables指令結構圖
iptables-IINPUT-ptcp-s192.168.1.0/24--dport23-jACCEPT
1.--->-IINPUT檢查目標
2.--->-ptcp-s192.168.1.0/24--dport23比對規則做判斷
3.--->-jACCEPT處理方式
所以上面的規則就是說明從192.168.1.0/24來的IP,通訊協定是TCP,目標port是23允許進入
封包進入規則表及規則鏈圖:
上圖取自http://www.knowplace.org/netfilter/syntax.html
netfilter封包路徑圖,可以讓我清楚了解到封包整個情形
防火牆入門手冊
3-2表格的功能
iptables依功能不同把表格分為三種:
1.filter---這個表格最主要就是設定封包過濾
2.nat---這個表格主要是做ip轉換用的,例如把虛擬IP轉成真實IP,才能正常上網
3.mangle---這個是自訂,最主要是進階設定用的
一般我們在設定防火牆時,最主要都是做封包過濾,所以一般都放置在filter,如果我們沒有指定table,iptable內定就是filter。
每一種表格又包含有不同的鏈:
1.filter---input.ouput.forward
2.nat---prerouting.output.postrouting
3.mangle---prerouting.output.postrouting.input.forward
對於各個表格相同名稱的鏈,先後順序:
mangle-->nat--->filter
我們來想想如果有一個封包在mangle是禁止,在filter是允許通過的,那封包可以通過嗎?
答案是不行,在第一關就不過那能通過呢?
同樣如果在mangle和nat都允許通過,在filter設定禁止,那前二個通過,到第三關不過,一樣不能過。
這樣應該了?
防火牆入門手冊
3-3鏈的作用
我們以我們海關的流程來做個舉例,我們一般人進出海關都必須經過出入境檢查,在iptables中,各個檢查處稱稱為「鏈」。
要入境就在入境處接受檢查,而要出國就必須在出境處接受檢查。
我們以下面說明各個鏈的做用及意義:
1.prerouting--封包進入主機時首先就是必須通過prerouting,它會決定封包往何處送。
2.postrouting--對外送的封包通過了output或forward後就會經過postrouting然後才會往外送。
3.input--這是封包進入主機前需通過的鏈,也就經過路由判斷後目的是本機時就會交給input鏈處理。
4.output--從本機送出的封包會交給output處理
5.forward--這時處理封包轉送,也就封包經過路由判斷後發現目前為其他主機,封包就不會進入本機而會經過另一個網路介面出去,這時候就會使用到forward。
防火牆入門手冊
3-4檢查目標語法
我們來看看常用iptables語法:
$IPTABLES-tfilter-AINPUT-ptcp-s192.168.1.0/24--dport22-jACCEPT
$IPTABLES-tfilter(-t是指定table為filter)
我來講一下參數有那些:
參數
功能
-t
就是要指定表格名稱
-I
在鏈的最前面插入規則
-A
附加在鏈的最後
-D
在鏈中刪除規則
-N
自訂新的鏈
來舉個例子比較清楚:
$IPTABLES-tfilter-AINPUT(在table為filter的INPUT鏈最後加入規則)
$IPTABLES-tfilter-IOUTPUT(在table為filter的OUTPUT鏈最前插入規則)
$IPTABLES-tfilter-DFORWARD(刪除table為filter的FORWARD鏈中規則)
(使用刪除參數,必須要完整描述刪除那一條規則。
如:iptables-DINPUT-ptcp-s192.168.1.0/24--dport22-jACCEPT)
$iptables-tnat-Nnewchain(在nat表格中新增一個名為newchain鏈)
防火牆入門手冊
4.防火牆的基本原理
防火牆入門手冊
5.單機型防火牆
一般我們中小目前都使用是這種防火牆,把所有規則都寫入到server中,因為不用考慮到內外網的問題,所以設定上比閘道防火牆容易多了,我們就以b2d-server上的/etc/init.d/rc.local來說明,下一節就舉這個實例來講。
防火牆入門手冊
5-1單機防火牆的架構
所請單機防火牆就是學校沒有防火牆,所以我們必須在每一台server做防火牆設定,如下圖:
防火牆入門手冊
5-2OB2D-Server的防火牆設定
使用OB2D來做firewall時,請關閉不必要的服務,請使用ntsysv
僅保留anacron,atd,autofs,cron,gdm,kerneld,klogd,makedev,rmnologin,ssh,sysklogd,xinetd,其餘全部取消後重開機
#!/bin/bash
#iptables範本
#writtenbyOLS3([email protected])
#請自行參考修改,把註解拿掉即可啟用該項設定
#sbin/routeadd-net192.168.1.0netmask255.255.255.0gw192.168.1.1
(增加路由,表示192.168.1.0/24這個網段要出去從192.168.1.1)
###-----------------------------------------------------###
#設定iptables的路徑
###-----------------------------------------------------###
echo"Setpathofiptables"
echo
IPTABLES="/sbin/iptables"
FW_IP="192.168.1.95"
FW_IP_RANGE="192.168.1.0/24"
#FW_IFACE="eth0"
(這一部因為是單機所以就設有所謂的外部與內部之分,所以就Lan_IP註解)
#LAN_IP="192.168.1.1"
#LAN_IP_RANGE="192.168.1.0/24"
#LAN_BCAST_ADRESS="192.168.1.255"
#LAN_IFACE="eth1"
#loopbackinterface
LO_IFACE="lo"
LO_IP="127.0.0.1"
(這是本機的interface)
#echo"1">/proc/sys/net/ipv4/ip_forward
(打開核心forward功能,當要做nat時就必須用到)
###-----------------------------------------------------###
#清除先前的設定
###-----------------------------------------------------###
echo"Flushfitertable......"(這是封包過濾表格)
echo
#Flushfilter
$IPTABLES-F(-F是清除表格中的規則)
$IPTABLES-X(-X是清除自訂的鏈)
echo"Flushmangletable......"(這個是自訂的table)
echo
#Flushmangle
$IPTABLES-F-tmangle(-F是清除表格中的規則)
$IPTABLES-tmangle-X(-X是清除自訂的鏈)
echo"Flushnattable......"(這個是nat的table)
echo
#Flushnat
$IPTABLES-F-tnat(-F是清除表格中的規則)
$IPTABLES-tnat-X(-X是清除自訂的鏈)
###-----------------------------------------------------###
#設定filtertable的預設政策
###-----------------------------------------------------###
$IPTABLES-PINPUTACCEPT
$IPTABLES-POUTPUTACCEPT
$IPTABLES-PFORWARDACCEPT
(accept就是都允許通過,接下我們去設定那些要擋)
###-----------------------------------------------------###
#啟動內部對外轉址
###-----------------------------------------------------###
#$IPTABLES-tnat-APOSTROUTING-o$FW_IFACE-jSNAT--to-source$FW_IP
(這是單機所以就註解不用)
###-----------------------------------------------------###
#啟動外部對內部轉址
###-----------------------------------------------------###
#凡對$FW_IP:8080連線者,則轉址至192.168.1.3:80
#$IPTABLES-tnat-APREROUTING-ptcp-d$FW_IP--dport8080-jDNAT--to192.168.1.3:80
(這是單機所以就註解不用)
###-----------------------------------------------------###
#拒絕某一內部IP使用某一通道
###-----------------------------------------------------###
#以下封掉內部主機連到外部主機的port6677,請自行針對不同服務port號做修改
#讓192.168.1.6通過
#$IPTABLES-AFORWARD-o$FW_IFACE-ptcp-s192.168.1.6--dport6677-jACCEPT
#其餘擋掉
#$IPTABLES-AFORWARD-o$FW_IFACE-ptcp--dport6677-jDROP
(這是單機所以就註解不用)
###-----------------------------------------------------###
#拒絕外部IP連至內部port號
###-----------------------------------------------------###
#以下擋掉外部主機連至內部主機port6677
#讓192.168.1.0/24通過
#$IPTABLES-AINPUT-i$FW_IFACE-ptcp-s192.168.1.0/24--dport6677-jACCEPT
#其餘擋掉
#$IPTABLES-AINPUT-i$FW_IFACE-ptcp--dport6677-jDROP
(這是單機所以就註解不用)
#只有本主機所屬網段才能連到這台主機的FTPserverport21
$IPTABLES-AINPUT-ptcp-s192.168.1.0/24--dport21-jACCEPT
(在filter中加入一條規則,通訊協定是tcp,來源是192.168.1.0/24這網段,目標是21port是允許通過)
$IPTABLES-AINPUT-ptcp-s127.0.0.1--dport21-jACCEPT
(在filter中加入一條規則,通訊協定是tcp,來源是127.0.0.1,就是本機,目標是21port是允許通過)
$IPTABLES-AINPUT-ptcp--dport21-jDROP
(其他都不允許)
以下其他一樣,只是通訊協定及port不一樣而以)
#只有本主機所屬網段才能連到這台主機的Telnetserverport23
$IPTABLES-AINPUT-ptcp-s192.168.1.0/24--dport23-jACCEPT
$IPTABLES-AINPUT-ptcp-s127.0.0.1--dport23-jACCEPT
$IPTABLES-AINPUT-ptcp--dport23-jDROP
#只有本主機所屬網段才能連到這台主機的sshport22
$IPTABLES-AINPUT-ptcp-s192.168.1.0/24--dport22-jACCEPT
$IPTABLES-AINPUT-ptcp-s127.0.0.1--dport22-jACCEPT
$IPTABLES-AINPUT-ptcp--dport22-jDROP
#只有本主機所屬網段才能連到這台主機的Sambaporttcp139,445/udp137,138
$IPTABLES-AINPUT-ptcp-s192.168.1.0/24--dport139-jACCEPT
$IPTABLES-AINPUT-ptcp-s192.168.1.0/24--dport445-jACCEPT
$IPTABLES-AINPUT-pudp-s192.168.1.0/24--dport137-jACCEPT
$IPTABLES-AINPUT-pudp-s192.168.1.0/24--dport138-jACCEPT
$IPTABLES-AINPUT-ptcp-s127.0.0.1--dport139-jACCEPT
$IPTABLES-AINPUT-ptcp-s127.0.0.1--dport445-jACCEPT
$IPTABLES-AINPUT-pudp-s127.0.0.1--dport137-jACCEPT
$IPTABLES-AINPUT-pudp-s127.0.0.1--dport138-jACCEPT
$IPTABLES-AINPUT-ptcp--dport139-jDROP
$IPTABLES-AINPUT-ptcp--dport445-jDROP
$IPTABLES-AINPUT-pudp--dport137-jDROP
$IPTABLES-AINPUT-pudp--dport138-jDROP
/sbin/ip6tables-F
/sbin/ip6tables-AINPUT-ptcp--dport21-jDROP
/sbin/ip6tables-AINPUT-ptcp--dport22-jDROP
/sbin/ip6tables-AINPUT-ptcp--dport23-jDROP
/sbin/ip6tables-AINPUT-ptcp--dport139-jDROP
/sbin/ip6tables-AINPUT-ptcp--dport445-jDROP
/sbin/ip6tables-AINPUT-pudp--dport137-jDROP
/sbin/ip6tables-AINPUT-pudp--dport138-jDROP
防火牆入門手冊
5-2-1OB2D做防火牆的網卡設定
如果你是單機那就安裝一張網卡就可以了,裝完會有eth0
如果你是做NAT或Bridge的話就安裝二張,一張對內,一張對外,裝完會有eth0eth1
如果你是做NAT或Bridge加DMZ的話就安裝三張,一張對內,一張對外,一張做DMZ,安裝完就會有eth0eth1eth2
【舉例】
1.eth0:140.127.xxx.xxx(用來模擬真實IP段),gw:140.127.xxx.yyy
2.eth1:192.168.2.1(LAN區,使用私有IP段)
3.eth2:192.168.3.1(DMZ區,使用私有IP段。
若沒有DMZ這一部份就不用做)
/etc/network/interfaces的內容如下:
autoloeth0eth1eth2
ifaceloinetloopback
#這裡代表真實IP
ifaceeth0inetstatic
address140.127.aaa.xxx
netmask255.255.255.0
network140.127.aaa.0
broadcast140.127.aaa.255
gateway140.127.aaa.254
#這裡代表NAT內部網路
ifaceeth1inetstatic
address192.168.2.1
netmask255.255.255.0
network192.168.2.0
broadcast192.168.2.255
#這裡代表DMZ網路
ifaceeth2inetstatic
address192.168.3.1
netmask255.255.255.0
network192.168.3.0
broadcast192.168.3.255
設定完成後存檔,接著執行
servicenetworkingrestart
讓網卡IP設定生效
接著使用
#ifconfig
查看是否正確,也可以使用ping來看看各介面是否回應正確。
防火牆入門手冊
5-2-2修改防火牆設定
OB2D防火牆的設定是寫成script放在/etc/rc.local中,所以安裝完b2d、設定網卡及關閉不必要服務後就要修改/etc/rc.local 舊的b2d-server是放在/etc/init.d/rc.local
#vim/etc/rc.local
1.設定內外網卡
#對外的網卡IP
FW_IP="140.127.aaa.xxx"
#真實IP段
FW_IP_RANGE="140.127.aaa.0/24"
#對外網路介面設備的名稱
FW_IFACE="eth0"
#對內部的網卡IP
LAN_IP="192.168.2.1"
#內部網段範圍
LAN_IP_RANGE="192.168.2.0/24"
#內部網段的廣播位址
LAN_BCAST_ADRESS="192.168.2.255"
#對內部網卡設備名稱
LAN_IFACE="eth1"
2.打開FORWARD功能:
echo"1">/proc/sys/net/ipv4/ip_forward
3.啟用IP偽裝(這是sourceNAT)
$IPTABLES-tnat-APOSTROUTING-o$FW_IFACE-jSNAT--to-source$FW_IP
5.執行/etc/rc.local
./etc/rc.local
防火牆入門手冊
6-3Socketpair
所謂的socketpair就是由來源的IP+PORT和目的IP+PORT所組成,每一個封包都含有一對的socketpair
sourcesocket:
-sourceaddress
-sourceport
destinationsocket:
-destinationaddress
-destinationport
nat的工作原理:
我們可以很清楚的看到,首先由client向ftp-server要資料,因為從192.168.1.2這個虛擬的IP出去,無法路由,到了防火牆後會把sourceip改成防火牆的對外的IP,這樣就可出去到internet了,回來的話先到防火牆的wan,進入防火牆後會把目的改成192.168.1.2就OK了。
防火牆入門手冊
7.圖形化的Firewall軟體
防火牆入門手冊
7-1Firestarter
圖形化介面的防火牆設定軟體,debian安裝:(裝好Firestarter就以系統服務常駐了)
#apt-getinstallfirestarter
主選單的"應用程式"-"系統工具"(Gnome)
第一次開啟會有設定精靈,完成設定後即進入主畫面︰(如上圖)
我們要注意的就第三個頁籤policy
Policy分兩組︰Inboundtrafficpolicy及Outboundtrafficpolicy
1)Outboundtrafficpolicy-
可使用預設值,就是所有對外連線均允許(Permissivebydefault,blacklisttraffic),僅針對黑名單設限。
如果您對安裝特別的要求的人,那麼可以選Restrictivebydefault,whitelisttraffic,再根據需求設定允許的連線。
2)Inboundtrafficpolicy-
這個就是重點了,主要設定由外部到你的主機的連線,可針對你所開啟的服務來設定
2-1)Allowconnectionsfromhost-允許哪些外部電腦連線到你的主機。
2-2)Allowservices-允許哪些服務開啟。
//這個設定比較好用
例如:
SSH服務─
「Allowservices」--「AddRule」--「設定portnumber及要允許連線的外部電腦」--「按一下ApplyPolicy」
防火牆入門手冊
7-2fwbuilder
官方網站:
http://www.fwbuilder.org/
1)安裝:
FreeBSD使用ports安裝,分別在以下兩個目錄
/usr/ports/security/libfwbuilder
/usr/ports/security/fwbuilder
#makeinstallclean
就可以了。
使用B2d-serverdebianorubuntu
#apt-getinstall
(會連同fwbuilder-common,fwbuilder-linux,libfwbuilder6一起安裝)
2)執行:
#fwbuilder
會啟動fwbuilder,如下圖
詳細操作:
http://www.fwbuilder.org/UsersGuide.pdf
防火牆還是要有概念才比較容易上手,個人看法。
防火牆入門手冊
7-3微軟系統下的防火牆軟體
如果學校沒有對外的閘道防火牆,那麼個人建議您一定要安裝單機防火牆,站長已經有錄製好多套常用防火牆的影音教學:
各那防火牆介紹底下的網址就影音教學(小弟錄製的)
1)費爾防火牆:
個人建議使用,比較安靜,可以及時監視TCP/IP封包,並根據設定的規則對網路封包做攔截或放行的動作,從而可以對TCP/IP封包做一層過濾來達到防止駭客攻擊的目的。
http://203.68.253.130/~huang/video/fel-1/fel-1.html
2)Outpost:
功能不錯且免費的防火牆程式,還可以利用線上更新最新的資訊,使用上很容易上手
http://203.68.253.130/~huang/video/outpost/outpost.html
3)Comodo:
ComodoInc所開發的一套免費網路防火牆,它具有一般市售防火牆的多數功能,如封鎖特定通訊埠、封鎖特定軟體網路存取權限、監控網路使用情形、安全等級調整等,有中文介面,很方便喔!
http://203.68.253.130/~huang/video/comodo/comodo.html
4)JeticoPersonalFirewall
功能齊全,效果不錯。
http://203.68.253.130/~huang/video/jetico/jetico.html
個人建議使用費爾防火牆會是比較方便好用的
延伸文章資訊
- 1防火牆入門手冊 - 澎湖人自由軟體交流網
學習防火牆除了要實做外還必須對網路的整個架構有所認識才行,尤其是TCP/IP通訊協定,其他可能還必須 ... 一般這種防火牆的設定是最簡單,它不用去管內外,只有本機。
- 2針對防火牆Windows Defender最佳做法
當您第一次Windows Defender防火牆時,可以看到適用于本地電腦的預設設定。 概觀面板會顯示裝置可連接之每種網路類型的安全性設定。
- 3防火牆設定教學(Windows7 - TNUA
防火牆設定教學. (Windows7、Windows10). Page 2. Windows 7. Page 3. 開啟控制台. Page 4. 點選Windows防火牆. Page 5. 點選...
- 4開啟或關閉Microsoft Defender 防火牆
- 5Fortigate 防火牆入門 - iT 邦幫忙
小弟最近需要設定Fortigate 92D防火牆,但是本身沒有任何防火牆的底子不知如何開始, ... 這位同學你好,其實你上youtube搜索,你會發現有很多FortiGate的教學影片可以 ...