公眾號關(guān)注“杰哥的IT之旅”,
選擇“星標(biāo)”,重磅干貨,第一時(shí)間送達(dá)!
來源:https://urlify.cn/EFRjA3
一、防火墻的概念
防火墻(Firewall),也稱防護(hù)墻,是由Check Point 創(chuàng)立者Gil Shwed于1993 年發(fā)明并引入國際互聯(lián)網(wǎng)(US5606668(A)1993-12-15)。它是一種位于內(nèi)部網(wǎng)絡(luò)與外部網(wǎng)絡(luò)之間的網(wǎng)絡(luò)安全系統(tǒng)。是一項(xiàng)信息安全的防護(hù)系統(tǒng),依照特定的規(guī)則,允許或是限制傳輸?shù)臄?shù)據(jù)通過。
在網(wǎng)絡(luò)的世界里,要由防火墻過濾的就是承載通信數(shù)據(jù)的通信包。在網(wǎng)絡(luò)中,所謂“防火墻”,是指一種將內(nèi)部網(wǎng)和公眾訪問網(wǎng)(如Internet)分開的方法,它實(shí)際上是一種隔離技術(shù)。防火墻是在兩個(gè)網(wǎng)絡(luò)通訊時(shí)執(zhí)行的一種訪問控制尺度,它能允許你“同意”的人和數(shù)據(jù)進(jìn)入你的網(wǎng)絡(luò),同時(shí)將你“不同意”的人和數(shù)據(jù)拒之門外,最大限度地阻止網(wǎng)絡(luò)中的黑客來訪問你的網(wǎng)絡(luò)。換句話說,如果不通過防火墻,公司內(nèi)部的人就無法訪問Internet,Internet上的人也無法和公司內(nèi)部的人進(jìn)行通信。二、防火墻的發(fā)展歷程
防火墻從誕生開始,已經(jīng)歷了四個(gè)發(fā)展階段:基于路由器的防火墻
用戶化的防火墻工具套
建立在通用操作系統(tǒng)上的防火墻
具有安全操作系統(tǒng)的防火墻
現(xiàn)階段常見的防火墻屬于具有安全操作系統(tǒng)的防火墻,例如NETEYE、NETSCREEN、TALENTIT等。三、防火墻的基本類型
網(wǎng)絡(luò)層防火墻
網(wǎng)絡(luò)層防火墻可視為一種 IP 封包過濾器,運(yùn)作在底層的TCP/IP協(xié)議堆棧上??梢?strong style="font-size: inherit;color: inherit;line-height: inherit;">以枚舉的方式只允許符合特定規(guī)則的封包通過,其余的一概禁止穿越防火墻(病毒除外,防火墻不能防止病毒侵入)。這些規(guī)則通常可以經(jīng)由管理員定義或修改,不過某些防火墻設(shè)備可能只能套用內(nèi)置的規(guī)則。應(yīng)用層防火墻
應(yīng)用層防火墻是在 TCP/IP 堆棧的“應(yīng)用層”上運(yùn)作,您使用瀏覽器時(shí)所產(chǎn)生的數(shù)據(jù)流或是使用 FTP 時(shí)的數(shù)據(jù)流都是屬于這一層。應(yīng)用層防火墻可以攔截進(jìn)出某應(yīng)用程序的所有封包,并且封鎖其他的封包(通常是直接將封包丟棄)。理論上,這一類的防火墻可以完全阻絕外部的數(shù)據(jù)流進(jìn)到受保護(hù)的機(jī)器里。數(shù)據(jù)庫防火墻
數(shù)據(jù)庫防火墻是一款基于數(shù)據(jù)庫協(xié)議分析與控制技術(shù)的數(shù)據(jù)庫安全防護(hù)系統(tǒng)?;谥鲃?dòng)防御機(jī)制,實(shí)現(xiàn)數(shù)據(jù)庫的訪問行為控制、危險(xiǎn)操作阻斷、可疑行為審計(jì)。數(shù)據(jù)庫防火墻通過SQL協(xié)議分析,根據(jù)預(yù)定義的禁止和許可策略讓合法的SQL操作通過,阻斷非法違規(guī)操作,形成數(shù)據(jù)庫的外圍防御圈,實(shí)現(xiàn)SQL危險(xiǎn)操作的主動(dòng)預(yù)防、實(shí)時(shí)審計(jì)。數(shù)據(jù)庫防火墻面對來自于外部的入侵行為,提供SQL注入禁止和數(shù)據(jù)庫虛擬補(bǔ)丁包功能。四、Linux 防火墻
Linux 防火墻在企業(yè)應(yīng)用中非常有用,舉例如下:中小企業(yè)與網(wǎng)吧里有iptables 作為企業(yè)的NAT路由器,可以用來代替?zhèn)鹘y(tǒng)路由器,而節(jié)約成本。
IDC機(jī)房一般沒有硬件防火墻,IDC機(jī)房的服務(wù)器可以用Linux 防火墻代替硬件防火墻。
iptables 可以結(jié)合squid 作為企業(yè)內(nèi)部上網(wǎng)的透明代理。傳統(tǒng)代理需要在瀏覽器里配置代理服務(wù)器信息,而iptables+squid 的透明代理則可以把客戶端的請求重定向到代理服務(wù)器的端口??蛻舳瞬灰魅魏卧O(shè)置,而感覺不到代理的存在。
將iptables 作為企業(yè)NAT 路由器時(shí),可以使用iptables 的擴(kuò)展模塊屏蔽P2P 流量,還可以禁止非法網(wǎng)頁。
iptables 可以用于外網(wǎng)IP 向內(nèi)網(wǎng)IP 映射。
iptables 可以輕松防止輕量級DOS 攻擊,比如ping 攻擊及SYN 洪水攻擊。
綜述,Iptables 有兩種應(yīng)用模式:主機(jī)防火墻,NAT路由器。五、防火墻的基本原理
對應(yīng)下圖的字節(jié)傳輸流程,可以分為以下幾層:包過濾(Packet filtering):工作在網(wǎng)絡(luò)層,僅根據(jù)數(shù)據(jù)包頭中的IP地址、端口號、協(xié)議類型等標(biāo)志確定是否允許數(shù)據(jù)包通過。
應(yīng)用代理(Application Proxy):工作在應(yīng)用層,通過編寫不同的應(yīng)用代理程序,實(shí)現(xiàn)對應(yīng)用層數(shù)據(jù)的檢測和分析。
狀態(tài)檢測(Stateful Inspection):工作在2~4層,訪問控制方式與1同,但處理的對象不是單個(gè)數(shù)據(jù)包,而是整個(gè)連接,通過規(guī)則表和連接狀態(tài)表,綜合判斷是否允許數(shù)據(jù)包通過。
完全內(nèi)容檢測(Compelete Content Inspection):工作在2~7層,不僅分析數(shù)據(jù)包頭信息、狀態(tài)信息,而且對應(yīng)用層協(xié)議進(jìn)行還原和內(nèi)容分析,有效防范混合型安全威脅。


六、Netfilter 與 iptables
Netfilter是由Rusty Russell提出的Linux 2.4內(nèi)核防火墻框架,該框架既簡潔又靈活,可實(shí)現(xiàn)安全策略應(yīng)用中的許多功能,如數(shù)據(jù)包過濾、數(shù)據(jù)包處理、地址偽裝、透明代理、動(dòng)態(tài)網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation,NAT),以及基于用戶及媒體訪問控制(Media Access Control,MAC)地址的過濾和基于狀態(tài)的過濾、包速率限制等。Iptables/Netfilter的這些規(guī)則可以通過靈活組合,形成非常多的功能、涵蓋各個(gè)方面,這一切都得益于它的優(yōu)秀設(shè)計(jì)思想。Netfilter/Iptables 數(shù)據(jù)包過濾系統(tǒng)可以當(dāng)成一個(gè)整體,netfilter是內(nèi)核的模塊實(shí)現(xiàn),iptables是對上層操作工具。如果不嚴(yán)格的區(qū)分則在Linux中 netfilter 和 iptables 都可以認(rèn)為是指Linux防火墻。實(shí)際 Iptables 是一個(gè)管理內(nèi)核包過濾的工具,可以用來配置核心包過濾表格中的規(guī)則。運(yùn)行于用戶空間。區(qū)別在于:netfilter 是 Linux的2.4版內(nèi)核引入了一種全新的包過濾引擎,稱為Netfilter。指的是Linux內(nèi)核中實(shí)現(xiàn)包過濾防火墻的內(nèi)部結(jié)構(gòu),不以程序或文件的形式存在,屬于“內(nèi)核態(tài)”的防火墻功能體系。iptables指的是用來管理Linux防火墻的命令程序,通常位于/sbin/iptables,屬于“用戶態(tài)”的防火墻管理體系。iptables是控制Netfilter的工具,是Linux 2.2版內(nèi)核中比較老的命令ipchains的兄弟。Netfilter 所設(shè)置的規(guī)則是存放在內(nèi)核內(nèi)存中的,而 iptables 是一個(gè)應(yīng)用層的應(yīng)用程序,它通過 Netfilter 放出的接口來對存放在內(nèi)核內(nèi)存中的 XXtables(Netfilter的配置表)進(jìn)行修改。這個(gè)XXtables由表tables、鏈chains、規(guī)則rules組成,iptables在應(yīng)用層負(fù)責(zé)修改這個(gè)規(guī)則文件。類似的應(yīng)用程序還有 firewalld 。iptables 和 netfilter 的聯(lián)系?很多人一提到防火墻立馬就想到了是iptables,其實(shí)iptables并不是防火墻,他只是一個(gè)軟件或者說是一個(gè)工具,這個(gè)軟件可以編寫某些規(guī)則,將寫好的規(guī)則保存到netfilter的規(guī)則數(shù)據(jù)庫中。因此,真正起到"防火"的功能是netfilter,并不是iptables。netfilter是內(nèi)核中的一個(gè)框架,這個(gè)框架里面包含了4個(gè)表和5個(gè)鏈,這些鏈又包含了很多的規(guī)則。而數(shù)據(jù)包要比對的規(guī)則就是這個(gè)鏈中所定義的規(guī)則。在下述的內(nèi)容中我們就以iptables來稱呼Linux防火墻了。
七、防火墻的性能
吞吐量:該指標(biāo)直接影響網(wǎng)絡(luò)的性能,吞吐量時(shí)延:入口處輸入幀最后1個(gè)比特到達(dá)至出口處輸出幀的第1個(gè)比特輸出所用的時(shí)間間隔丟包率:在穩(wěn)態(tài)負(fù)載下,應(yīng)由網(wǎng)絡(luò)設(shè)備傳輸,但由于資源缺乏而被丟棄的幀的百分比背靠背:從空閑狀態(tài)開始,以達(dá)到傳輸介質(zhì)最小合法間隔極限的傳輸速率發(fā)送相當(dāng)數(shù)量的固定長度的幀,當(dāng)出現(xiàn)第一個(gè)幀丟失時(shí),發(fā)送的幀數(shù)
并發(fā)連結(jié)數(shù):并發(fā)連接數(shù)是指穿越防火墻的主機(jī)之間或主機(jī)與防火墻之間能同時(shí)建立的最大連接數(shù)八、防火墻的局限性
防火墻雖然是保護(hù)網(wǎng)絡(luò)安全的基礎(chǔ)性設(shè)施,但是它還存在著一些不易防范的安全威脅:首先防火墻不能防范未經(jīng)過防火墻或繞過防火墻的攻擊。例如,如果允許從受保護(hù)的網(wǎng)絡(luò)內(nèi)部向外撥號,一些用戶就可能形成與Internet 的直接連接。防火墻基于數(shù)據(jù)包包頭信息的檢測阻斷方式,主要對主機(jī)提供或請求的服務(wù)進(jìn)行訪問控制,無法阻斷通過開放端口流入的有害流量,并不是對蠕蟲或者黑客攻擊的解決方案。另外,防火墻很難防范來自于網(wǎng)絡(luò)內(nèi)部的攻擊或?yàn)E用。