利用Linux內建防火牆提高網路的訪問控制

2022-01-30 02:08:41 字數 3966 閱讀 9230

linux內建防火牆主要是通過包過濾的手段來提高對網路的管理控制功能,從而提高網路與伺服器的安全。   linux作業系統的安全性是眾所周知的,所以,現在很多企業的伺服器,如檔案伺服器、web伺服器等等,都採用的是linux的作業系統。筆者所在的企業,有包括oracle資料庫伺服器、檔案備份伺服器、郵件伺服器、web伺服器也都是採用linux的伺服器系統。今天,我就談談linux是通過哪些技術來保障伺服器的安全,來加強對網路的訪問控制。

linux內建防火牆主要是通過包過濾的手段來提高對網路的管理控制功能,從而提高網路與伺服器的安全。

一、 linux防火牆的工作原理

我們設想一下,一台linux主機一般會作哪些資料報相關的工作。其實,我們可以把一台linux形象的比喻成乙個地鐵車站。乙個地鐵車站一般有三個口子,乙個是進口,乘客需要去做地鐵的話,必須通過這個地鐵的進口,而且必須憑合法的票子才能進去。第二個是出口,若乘客需要離開地鐵站的話,則也必須憑著票子出站。三是乙個中轉的介面,也就是說,在地鐵的中轉站中,你可以直接通過過道到另外一條線上去。

而一台linux主機也有三個口子。乙個是進口(input),到這台主機的任何資料報都需要通過這個介面才能夠進入linux系統的應用程式空間。第二個是出口(output),從應用程式傳送出去的任何資料報都必須通過這個出口,才能夠進入到linux系統的核心,讓它把資料傳送出去。第三個是**介面(forward),主要用來進行資料報的**。

在linux主機上要實現包過濾,其實也就是在這三個口子上新增包過濾條件。這就好像在每個口子上設定「驗票員」。當「乘客」手裡的票是合法的,則「驗票員」就允許其通過;若這票是不允許的,則「驗票員」就會拒絕其通過這個口子。通過這種方式,我們網路管理員就可以很好的管理網路中傳遞的資料報,並且對於一些伺服器的防問許可權進行合理且有效的控制。

如有時候我們為了防止ddos攻擊,我們就可以設定讓所有主機都拒絕icmp協議。如此的話,任何一台主機企圖ping區域網內的任何一台linux電腦的話,區域網內的任何主機都不會有響應。而若有黑客把區域網內的主機當作肉雞,企圖通過他們來實現dos攻擊的時候,由於我們在出站介面(output介面)過濾了icmp協議,所以,這個ping命令也根本不會傳遞到區域網中去。如此的話,就可以從根源上保護網路的安全。

二、 linux防火牆的配置方法

linux防火牆基本上是通過一條iptables命令來實現具體的配置。如我們現在為了防止區域網內的機器使用ping命令。這是一種很好的防止ddos攻擊的方法。應為要實現ddos攻擊的話,則首先需要在區域網內部尋找肉雞,讓多台肉雞同時採用ping命令ping伺服器,直到伺服器因為資源耗竭而當機。現在若把所有linux主機的ping命令都禁用掉的話,則就可以最大程度的防治ddos攻擊的危害。

iptables –a output –p icmp –j drop

通過這條命令,就可以實現禁用本機的ping命令。

命令iptables就是防火牆包過濾策略的配置命令。防火牆的過濾規則,就是通過這個簡單的命令來實現的。後面的引數-a則表示新增乙個過濾條件;-p表示一種協議型別;-j表示我們的目標。上面的這條命令的意思就是在linux主機的出口上,加上一條過濾語句,當資料報的協議型別是icmp的話,則全部丟棄。

不過icmp有乙個特性。我們一般ping一台主機的話,則對於這台主機來說,首先其需要通過進站介面,把資料報傳遞到上層;然後,又要利用出站介面,把回應資訊傳送出去。如果任何乙個介面不通,如只收到資訊而沒有回應的話,則對與主ping方來說,就顯示的是目的地不可大的資訊。

以上這個條命令我們是在出口上加了限制語句,上面我們說過,一共可以在linux主機上的三個介面,包括進站進口、出站介面與**介面,在內的任何乙個介面上配置包過濾條件,以實現對防火牆的管理控制。在下面例子中,筆者將給大家舉乙個web伺服器的例子,看看如何通過linux主機的防火牆來管理web伺服器,提高其安全性。

三、 linux防火牆的配置例項

我們該如何利用linux作業系統自帶的防火牆來提高網路的管理控制功能呢?具體的來說,我們可以分三步走。一是先在linux伺服器上開乙個後門,這個後門是專門給我們網路管理員管理伺服器用的。二是把所有的進站、出站、**站介面都關閉,此時,只有通過我們上面開的後門,管理員才能夠遠端連線到伺服器上,企圖任何渠道都不能連線到這台主機上。三是根據我們伺服器的用途,把一些需要用到的介面開放出去。

下面筆者就以乙個web伺服器為例,談談如何設定防火牆,才能夠提高這台伺服器的安全性,並且,在提高安全性的同時,也不影響我們網路管理員對其的訪問控制。

第一步:開後門

網路管理員一般是通過ssh方式來管理linux作業系統。所以,我們首先需要開乙個後門,允許網路管理員通過ssh方式遠端登入到伺服器,對這台伺服器進行必要的維護與管理。

為了達到這個目的,我們可以利用兩條語句來實現。我們這裡假設我們web伺服器的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

第一條語句的意思是,在進站介面上,允許網路管理員通過tcp協議與22號埠,訪問主機。一般ssh方式採用的就是22號埠與tcp協議。這條語句的作用就是讓網路管理員可以連線到web伺服器上去。但是,這還不夠,我們若想要遠端管理web伺服器的話,則就需要實現相互互動的功能。也就是說,我們還需要web伺服器能夠給我們回應一些訊息。此時,我們就還需要配置第二條語句。

上面第二條語句的意識就是允許web伺服器通過22號埠與tcp協議,傳送一些資料出去。如此的話,我們網路管理員就可以受到web伺服器的一些回應資訊。

第二步:關閉所有介面

iptables –p input –j drop

iptables –p output –j drop

iptables –p forward –j drop

以上三條命令的作用就是把web伺服器上的三個介面全部關閉。但是,此時因為我們在第一步開了乙個後門,所以,事後網路管理員仍然可以通過ssh這個方式登入到伺服器上去,對其進行遠端訪問。採用這些命令把各個介面關閉後,我們就無法通過http、ftp等方式訪問伺服器。

第三步:分析伺服器的用途並新增允許條件

把各個介面關不後,我們還需要為其新增一些必要的條件,允許某些特定型別的資料報通過。否則的話,其他人不是不能通過網路訪問web伺服器,那不是白搭了嗎?

所以,接下去的任務,我們就是需要分析伺服器的型別。我們現在配置的是一台web伺服器,而web伺服器一般是通過http方式與80埠進行訪問的。預設情況下,其用到的就是tcp協議與80埠。所以,我們只需要在進口與出口上,允許協議是tcp、埠號是80的資料報通過,就可以實現我們的目標了。

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

通過如上的配置,就可以實現我們的需求

四、 linux防火牆的配置需要注意的地方

在使用linux防火牆來管理企業網路的時候,筆者給大家提一些建議。

一是根據最小許可權的安全與控制設計原則,我們在防火牆設計的時候,需要先把所有的介面先全部禁用掉。然後,再根據伺服器的型別,新增一些允許資料報通過的語句。如此的目的,是為了保障伺服器上只允許一些特定的協議與資料報通過。如此做的話,就可以最大限度的保障伺服器與企業網路的安全。如通過上面如此配置的伺服器,無法使用ftp協議訪問伺服器,也就杜絕了非法訪問者企圖利用ftp漏洞來攻擊web伺服器。同時,也禁止了icmp協議,如此的話,就可以有效的防止ddos攻擊等等。

二是有時候會碰到應用程式與防火牆無法協作的問題。如在linux伺服器上部署乙個erp伺服器,若同時開啟了防火牆的話,則可能就無法連線上伺服器。其實,這不是防火牆或者erp伺服器產生了什麼衝突,而是我們沒有配置好防火牆而已。一般情況下,筆者建議先把防火牆禁用掉,把erp伺服器先配置成功、其他使用者可以連線上伺服器後,再啟用防火牆。在啟用防火牆的時候,我們需要清楚,這個erp伺服器到底採用了哪些協議與埠來進行資料報的傳遞,然後再配置防火牆。大部分的時候,都是因為我們不熟悉某個伺服器到底在採用哪些協議與埠,才造成客戶端連線的錯誤。

網閘和防火牆

1 什麼是網閘?網閘是乙個縮寫,網閘的全稱是 安全隔離與資訊交換系統 使用一種專用的隔離晶元在電路上切斷內外網連線的一種裝置,並能夠在網路間進行安全適度的應用資料交換。2 網閘的主要作用是什麼?a 安全隔離 b 資訊交換 3 怎麼隔離的?a 船要通過網閘時,並不能與內網直接連通,因為網路被網閘從電路...

linux防火牆新增埠並開閉防火牆

安裝 yum install firewalld 啟動 systemctl start firewalld 檢視狀態 systemctl status firewalld 禁用,禁止開機啟動 systemctl disable firewalld 開機啟用 systemctl enable fire...

Linux防火牆配置

重啟後生效 開啟 chkconfig iptables on 關閉 chkconfig iptables off 2 即時生效,重啟後失效 開啟 service iptables start 關閉 service iptables stop 需要說明的是對於linux下的其它服務都可以用以上命令執行...