Firewall介紹 - daniel-qa/Network GitHub Wiki

Firewall介紹

  • Firewall 範例

假設 FW 是防火牆設備,我規劃3個介面,3個Port,對應到不同的網段,每個介面都會有一個編號;

etho0 這個介面, 我透過中華電信連到 Internet

eth1,這個介面,我連到公司DMZ的網段; 所以DMZ網段,就是公司機房的網段,會有 Web server, mail server, 或者 DNS Server 等等

eth2, 這個介面,我接到公司的內部網段,這個網段會有員工的電腦,Filer Server,或 Databases Server 等等,

因為這三個網段的互動會經過中間的防火牆,所以這個防火牆就可以控制哪一個網段和哪一個網段之間的流量,或允許通過或不允許通過

  • Linux iptalbe ACCEPT

雖然使用指令,但和圖介面的觀念是一樣的,

iptable -A FORWARD -i eth0 -o eth1 -j ACCEPT

-i : input

-o : output

從 eth0 這個介面,流到防火牆,再從 eth1 這個介面離開防火牆

也就是 Internet 的使用者,從防火牆連入公司 DMZ 的網段,我接受允許它可以連入

這樣 Internet 的使用者可以連到公司的 web, 看到公司的網頁,

Intertnet 可以寄信給公司的 mail server

和圖形介面的差別,我就可以用滑鼠來選,不用下指令

  • Linux iptable Drop
iptable -A FORWARD -i eth1 -o eth2 -j DROP

這個流量由 eth1 進入防火牆,由 eth2 離開防火牆,也就是DMZ這個網段的電腦,透過這台防火牆,要連入內部網段的電腦,

當它經過防火牆,防火牆就會把它擋掉,拒絕通過,

那為什麼要擋掉? 因為這台 web 讓 Internet 可以連入,就有被攻破的風險,沒有沒有漏洞的軟體,只要這台web被發現漏洞,被駭客入侵,

假如防火牆沒有擋掉的話,駭客就可以用這台 WEB 當跳板,經過這台防火牆,連入公司內部的網段,這樣他就可以連到 Databases, File Server

或者員工的電腦來竊取資料,所以我們在建置一台防火牆之前,一定要對這些基本觀念很清楚

不然設定的規格就是有漏洞的規則

  • -i eth0 -o eth1, 基本上,我會接受 ( -j ACCEPT)

Internet 上的使用者,要連到 DMZ 的電腦,基面上我會接受

假如要做到更細的話,我們就需要在這個條件上再加入額外的參數,比如加入 recent 這個參數就可以讓我們設定到最近的流量,

比如,很多人會問,我的防火牆到底要不要開放 ICMP 讓 Intertnet 可以 ping 的到

假如開放的話,駭客就可以用大量的疆屍電腦,來 ping 公司的電腦,塞暴公司的頻寬,做到 DDOS 的攻擊,

假如不開放的話,我人在外面,想要 ping 公司的電腦,看有沒有回應,就無法測試,在這種兩難的抉擇下,我們就可以用 recent 的參數

比如我就可以設定某一個來源IP 或IP網段,最近1分鐘,或者幾分鐘,ICMP假如超過幾次的話,我就會把那個來源 IP 封鎖掉,

意思就是,每個來源IP, 每分鐘我只允許 ping 6 筆,這樣子,駭客就無法透過大量的 ping,一直的 ping,塞暴我的頻寬

而且我人在外面,隨時都可以 ping 公司的電腦來測試。

recent 這個參數也可以用來封鎖 portscan 的攻擊行為,recent 的功能,就是可以讓我們定義最近幾分鐘,

所以 portscan,就是一個一個 port 測我這台電腦有沒有回應,那防火牆的設定,就是有設定的 port 才會開放,

沒有使用的 port,我就會把這個封包 Drop 掉,那他一個一個 port 在試的話,我就可以定義,

當 Drop 超過 5次的話,我就把這個來源 IP 封鎖掉,他只要掃到第5個 port,他的畫面就會死當

除此,recent 這個參數,也可以讓我們防止密碼的攻擊,所以密碼攻擊,就是他一個一個密碼 Try, Try到最後,密碼就被他破解,

那我就可以設,最近10分鐘,連線超過3次,我就封鎖這個來源IP, 因為他密碼打錯,就會被斷線,他就需要重新連線,重新輸入密碼

那我設最近10分鐘,連線不能超過3次,意思就是密碼最多錯3次,超過3次,我就把這個來源 IP 封鎖掉

這個設定假如再加上 22 port, 就是防止 22 port 密碼攻擊,假如改成 21 port, 就是防止 FTP 的密碼攻擊,

這邊並不是要教如何下這個參數,只要有正確的觀念,不管使用指令,或圖形介面的防火牆,只要搭配文件,應該都可以實作出來

  • iptable string 的用法

string 這個參數,可以讓我們比對封包應用層的內容,比如我不讓員工連 playboy 的網站,但是其他網站可以連,

在這種情況,我們就不能拒絕 TCP 80 port,不僅 playboy,其他網站都不能連,這時候,我們就可以過濾封包應用層的資料內容

只要有 playboy 這個關鍵字,我就把他擋掉,除此之外,我也用在允許員工連上Internet下載MP3檔案,因為他要下載某一個MP3的檔案

一定會向網站發出一個要求的封包,我要跟你要求某一個MP3的檔案,那在那要求的封包的內容,就會有那個檔案的關鍵字,

那我們就可以過濾有 MP3 這個關鍵字,我就擋掉,這樣子,他就無法下載 XXX.MP3的檔案

同樣這個方法,你也可以限制其他類型的檔案

  • iptable connlimit 的用法

connlimit 這個參數,可以限制某個IP或IP網段,同時最大的連線數量,因為駭客有時會利用彊屍電腦建立大量的連線,耗光您所有的電腦資源,

這樣子,正常的使用者就無法連入,達到 DOS,或者 DDOS 的攻擊,這時候我們就可以限制同一個來源IP,最多給你兩個連線

這樣子,他就無法大量連線,進行 DOS 或者 DDOS 的攻擊,視需要,我們還可以搭配 port number 21 port,

意思是,同一個ip,最多只能連兩個FTP,到我的FTP Server,當然也可以設定其他的 port

  • iptable connbytes 的用法

connbytes 這個參數,可以讓我們限制下載單一檔案的大小,比如,一個檔案不超過 100 MB,這樣子,我就可以限制使用者下載大型的電影檔

  • 防火牆IPS

除此之外,防火牆還會有許多額外的參數,額外的功能,可以搭配使用,有些防火牆還可以讓您決定是否加入 IPS 的功能,

IPS 是入侵防禦系統的縮寫 (Intrusion Prevention System),它會比對封包的內容,是否有特定的關鍵字,

像早期的病毒 Core??,它的封包內容就會有 Core?? 這個關鍵字

它只要有看到這個關鍵字,它就把他檔掉,這樣子,病毒就無法通過防火牆

因為隨時都會有新的病毒,所以它就會定期的上網,更新最新的特徵資料庫,因為隨時都會更新最新的特徵資料庫,

所以這台防火牆還可以做到主動防禦