通過Linux防火墻提高網(wǎng)絡(luò)的訪問控制
Linux作為操作系統(tǒng)來說,安全性要比Windows高出許多。也是眾多服務(wù)器操作系統(tǒng)選擇其的原因。今天,我就談?wù)凩inux是通過哪些技術(shù)來保障服務(wù)器的安全,通過Linux防火墻來加強對網(wǎng)絡(luò)的訪問控制。
Linux內(nèi)置防火墻主要是通過包過濾的手段來提高對網(wǎng)絡(luò)的管理控制功能,從而提高網(wǎng)絡(luò)與服務(wù)器的安全。
一、 Linux防火墻的工作原理
我們設(shè)想一下,一臺Linux主機一般會作哪些數(shù)據(jù)包相關(guān)的工作。其實,我們可以把一臺Linux形象的比喻成一個地鐵車站。一個地鐵車站一般有三個口子,一個是進口,乘客需要去做地鐵的話,必須通過這個地鐵的進口,而且必須憑合法的票子才能進去。第二個是出口,若乘客需要離開地鐵站的話,則也必須憑著票子出站。三是一個中轉(zhuǎn)的接口,也就是說,在地鐵的中轉(zhuǎn)站中,你可以直接通過過道到另外一條線上去。
而一臺Linux主機也有三個口子。一個是進口(INPUT),到這臺主機的任何數(shù)據(jù)包都需要通過這個接口才能夠進入Linux系統(tǒng)的應(yīng)用程序空間。第二個是出口(OUTPUT),從應(yīng)用程序發(fā)送出去的任何數(shù)據(jù)包都必須通過這個出口,才能夠進入到Linux系統(tǒng)的內(nèi)核,讓它把數(shù)據(jù)發(fā)送出去。第三個是轉(zhuǎn)發(fā)接口(FORWARD),主要用來進行數(shù)據(jù)包的轉(zhuǎn)發(fā)。
在Linux主機上要實現(xiàn)包過濾,其實也就是在這三個口子上添加包過濾條件。這就好像在每個口子上設(shè)置“驗票員”。當(dāng)“乘客”手里的票是合法的,則“驗票員”就允許其通過;若這票是不允許的,則“驗票員”就會拒絕其通過這個口子。通過這種方式,我們網(wǎng)絡(luò)管理員就可以很好的管理網(wǎng)絡(luò)中傳遞的數(shù)據(jù)包,并且對于一些服務(wù)器的防問權(quán)限進行合理且有效的控制。
如有時候我們?yōu)榱朔乐笵DOS攻擊,我們就可以設(shè)置讓所有主機都拒絕ICMP協(xié)議。如此的話,任何一臺主機企圖ping局域網(wǎng)內(nèi)的任何一臺Linux電腦的話,局域網(wǎng)內(nèi)的任何主機都不會有響應(yīng)。而若有黑客把局域網(wǎng)內(nèi)的主機當(dāng)作肉雞,企圖通過他們來實現(xiàn)DOS攻擊的時候,由于我們在出站接口(OUTPUT接口)過濾了ICMP協(xié)議,所以,這個PING命令也根本不會傳遞到局域網(wǎng)中去。如此的話,就可以從根源上保護網(wǎng)絡(luò)的安全。
二、 Linux防火墻的配置方法
Linux防火墻基本上是通過一條iptables命令來實現(xiàn)具體的配置。如我們現(xiàn)在為了防止局域網(wǎng)內(nèi)的機器使用ping命令。這是一種很好的防止DDOS攻擊的方法。應(yīng)為要實現(xiàn)DDOS攻擊的話,則首先需要在局域網(wǎng)內(nèi)部尋找肉雞,讓多臺肉雞同時采用PING命令PING服務(wù)器,直到服務(wù)器因為資源耗竭而當(dāng)機?,F(xiàn)在若把所有Linux主機的PING命令都禁用掉的話,則就可以最大程度的防治DDOS攻擊的危害。
Iptables –A OUTPUT –P icmp –j DROP
通過這條命令,就可以實現(xiàn)禁用本機的PING命令。
命令iptables就是防火墻包過濾策略的配置命令。防火墻的過濾規(guī)則,就是通過這個簡單的命令來實現(xiàn)的。后面的參數(shù)-A則表示添加一個過濾條件;-P表示一種協(xié)議類型;-J表示我們的目標(biāo)。上面的這條命令的意思就是在Linux主機的出口上,加上一條過濾語句,當(dāng)數(shù)據(jù)包的協(xié)議類型是ICMP的話,則全部丟棄。
不過ICMP有一個特性。我們一般PING一臺主機的話,則對于這臺主機來說,首先其需要通過進站接口,把數(shù)據(jù)包傳遞到上層;然后,又要利用出站接口,把回應(yīng)信息發(fā)送出去。如果任何一個接口不通,如只收到信息而沒有回應(yīng)的話,則對與主ping方來說,就顯示的是目的地不可大的信息。
以上這個條命令我們是在出口上加了限制語句,上面我們說過,一共可以在Linux主機上的三個接口,包括進站進口、出站接口與轉(zhuǎn)發(fā)接口,在內(nèi)的任何一個接口上配置包過濾條件,以實現(xiàn)對防火墻的管理控制。在下面例子中,筆者將給大家舉一個WEB服務(wù)器的例子,看看如何通過Linux主機的防火墻來管理WEB服務(wù)器,提高其安全性。
三、 Linux防火墻的配置實例
我們該如何利用Linux操作系統(tǒng)自帶的防火墻來提高網(wǎng)絡(luò)的管理控制功能呢?具體的來說,我們可以分三步走。一是先在Linux服務(wù)器上開一個后門,這個后門是專門給我們網(wǎng)絡(luò)管理員管理服務(wù)器用的。二是把所有的進站、出站、轉(zhuǎn)發(fā)站接口都關(guān)閉,此時,只有通過我們上面開的后門,管理員才能夠遠程連接到服務(wù)器上,企圖任何渠道都不能連接到這臺主機上。三是根據(jù)我們服務(wù)器的用途,把一些需要用到的接口開放出去。
下面筆者就以一個WEB服務(wù)器為例,談?wù)勅绾卧O(shè)置防火墻,才能夠提高這臺服務(wù)器的安全性,并且,在提高安全性的同時,也不影響我們網(wǎng)絡(luò)管理員對其的訪問控制。
第一步:開后門
網(wǎng)絡(luò)管理員一般是通過SSH方式來管理Linux操作系統(tǒng)。所以,我們首先需要開一個后門,允許網(wǎng)絡(luò)管理員通過SSH方式遠程登錄到服務(wù)器,對這臺服務(wù)器進行必要的維護與管理。
為了達到這個目的,我們可以利用兩條語句來實現(xiàn)。我們這里假設(shè)我們WEB服務(wù)器的IP地址為192.168.0.2。
Iptables –A INPUT –P tcp –d 192.168.0.2 –dport 22 –j ACCEPT
Iptables –A OUTPUT –P tcp –S 192.168.0.2 –dport 22 –j ACCEPT
第一條語句的意思是,在進站接口上,允許網(wǎng)絡(luò)管理員通過TCP協(xié)議與22號端口,訪問主機。一般SSH方式采用的就是22號端口與TCP協(xié)議。這條語句的作用就是讓網(wǎng)絡(luò)管理員可以連接到WEB服務(wù)器上去。但是,這還不夠,我們?nèi)粝胍h程管理WEB服務(wù)器的話,則就需要實現(xiàn)相互交互的功能。也就是說,我們還需要WEB服務(wù)器能夠給我們回應(yīng)一些消息。此時,我們就還需要配置第二條語句。
上面第二條語句的意識就是允許WEB服務(wù)器通過22號端口與TCP協(xié)議,發(fā)送一些數(shù)據(jù)出去。如此的話,我們網(wǎng)絡(luò)管理員就可以受到WEB服務(wù)器的一些回應(yīng)信息。
第二步:關(guān)閉所有接口
Iptables –P INPUT –j DROP
Iptables –P OUTPUT –j DROP
Iptables –P FORWARD –j DROP
以上三條命令的作用就是把WEB服務(wù)器上的三個接口全部關(guān)閉。但是,此時因為我們在第一步開了一個后門,所以,事后網(wǎng)絡(luò)管理員仍然可以通過SSH這個方式登錄到服務(wù)器上去,對其進行遠程訪問。采用這些命令把各個接口關(guān)閉后,我們就無法通過HTTP、FTP等方式訪問服務(wù)器。
第三步:分析服務(wù)器的用途并添加允許條件
把各個接口關(guān)不后,我們還需要為其添加一些必要的條件,允許某些特定類型的數(shù)據(jù)包通過。否則的話,其他人不是不能通過網(wǎng)絡(luò)訪問WEB服務(wù)器,那不是白搭了嗎?
所以,接下去的任務(wù),我們就是需要分析服務(wù)器的類型。我們現(xiàn)在配置的是一臺WEB服務(wù)器,而WEB服務(wù)器一般是通過HTTP方式與80端口進行訪問的。默認(rèn)情況下,其用到的就是TCP協(xié)議與80端口。所以,我們只需要在進口與出口上,允許協(xié)議是TCP、端口號是80的數(shù)據(jù)包通過,就可以實現(xiàn)我們的目標(biāo)了。
Iptables –A INPUT –P tcp –d 192.168.0.2 –dport 80 –j ACCEPT
Iptables –A OUTPUT –P tcp –S 192.168.0.2 –dport 80 –j ACCEPT
通過如上的配置,就可以實現(xiàn)我們的需求
四、 Linux防火墻的配置需要注意的地方
在使用Linux防火墻來管理企業(yè)網(wǎng)絡(luò)的時候,筆者給大家提一些建議。
一是根據(jù)最小權(quán)限的安全與控制設(shè)計原則,我們在防火墻設(shè)計的時候,需要先把所有的接口先全部禁用掉。然后,再根據(jù)服務(wù)器的類型,添加一些允許數(shù)據(jù)包通過的語句。如此的目的,是為了保障服務(wù)器上只允許一些特定的協(xié)議與數(shù)據(jù)包通過。如此做的話,就可以最大限度的保障服務(wù)器與企業(yè)網(wǎng)絡(luò)的安全。如通過上面如此配置的服務(wù)器,無法使用FTP協(xié)議訪問服務(wù)器,也就杜絕了非法訪問者企圖利用FTP漏洞來攻擊WEB服務(wù)器。同時,也禁止了ICMP協(xié)議,如此的話,就可以有效的防止DDOS攻擊等等。
二是有時候會碰到應(yīng)用程序與防火墻無法協(xié)作的問題。如在Linux服務(wù)器上部署一個ERP服務(wù)器,若同時打開了防火墻的話,則可能就無法連接上服務(wù)器。其實,這不是防火墻或者ERP服務(wù)器產(chǎn)生了什么沖突,而是我們沒有配置好防火墻而已。一般情況下,筆者建議先把防火墻禁用掉,把ERP服務(wù)器先配置成功、其他用戶可以連接上服務(wù)器后,再啟用防火墻。在啟用防火墻的時候,我們需要清楚,這個ERP服務(wù)器到底采用了哪些協(xié)議與端口來進行數(shù)據(jù)包的傳遞,然后再配置防火墻。大部分的時候,都是因為我們不熟悉某個服務(wù)器到底在采用哪些協(xié)議與端口,才造成客戶端連接的錯誤。
【編輯推薦】
- Web專用網(wǎng)站服務(wù)器的安全設(shè)置
- 怎樣進行路由器的安全設(shè)置
- 安全設(shè)置策略及自帶防火墻介紹
- 企業(yè)如何對員工進行網(wǎng)絡(luò)安全培訓(xùn)
- 企業(yè)如何在復(fù)雜環(huán)境中降低安全風(fēng)險