歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> Linux文化 >> 充分利用Linux安全防護工具

充分利用Linux安全防護工具

日期:2017/2/27 12:02:41   编辑:Linux文化

Linux的安全防護離不開各種工具,Linux的開源性也促進了這些優秀的安全防護工具的發展。

目前在Linux環境下的安全工具林林總總,種類繁多。本文精選一些比較常用的、具有代表性的加以介 紹,它們包括系統管理工具和網絡管理工具。它們基本都是開源的,一般都隨著諸如Red Hat Linux、Debian Linux等發行套件而發布,一些發行套件裡面沒有的,用戶可以按照本文所提供的方式下載使用。由於篇幅的關系,本文只對這些工具的用途、原理和使用作指導性的介紹,要了解更加詳細的使用情況,讀者可以根據文中的介紹去查找和使用。

協議分析工具——Ethereal

Ethereal是一個有名的網絡端口探測器,是可以在Linux、Solaris、SGI等各種平台運行的網絡監聽軟件,它主要是針對TCP/IP協議的不安全性對運行該協議的機器進行監聽。其功能相當於Windows下的Sniffer,都是在一個共享的網絡環境下對數據包進行捕捉和分析,而且還能夠自由地為其增加某些插件以實現額外功能。

其最常用的功能是被攻擊者用來檢測被攻擊電腦通過23(telnet)和110(pop3)端口進行的一些明文傳輸數據,以輕松得到用戶的登錄口令和郵件賬號密碼。一般說來,Ethereal基本上是為破壞者所利用的工具,而對於網絡管理員來說,也可以通過捕包分析,來確定一些異常的流量和局域網內部的非正常用戶與外界的通信,比如說對於現在比較占用網絡帶寬的諸如Bit Torrent 等P2P應用軟件流量,通過使用該軟件確定這些流量,網絡管理員就可以使用流量控制(TC)的方法來規范、合理的分配帶寬資源,提高網絡的利用率。

ethereal可以在http://www.ethereal

.com/download.html上下載,該軟件有極其方便和友好的圖形用戶界面,並且能夠使得用戶通過圖形界面的配置和選擇,針對多塊網卡、多個協議進行顯示,效果非常好。目前最新版本為:ethereal 0.10.12。

# cp ethereal-0.10.12.tar.bz2 /usr/local/src/

# cd /usr/local/src/

# bzip2 -d ethereal-0.10.12.tar.bz2

# tar xvf ethereal-0.10.12.tar

另外,同Tcpdump一樣,在編譯Ethereal之前應先確定已經安裝pcap庫(libpcap),這是編譯Ethereal時所必需的。如果該庫已經安裝,就可以執行下面的命令來編譯並安裝Ethereal:

# cd ethereal-0.10.12

# ./configure

# make

# make install

當編譯並安裝好Ethereal後,就可以執行“ethereal”命令來啟動Ethereal。在用 Ethereal截獲數據包之前,應該為其設置相應的過濾規則,可以只捕獲感興趣的數據包。Ethereal使用與Tcpdump相似的過濾規則,並且可以很方便地存儲已經設置好的過濾規則。

Ethereal和其他的圖形化嗅探器使用基本類似的界面,整個窗口被分成三個部分:最上面為數據包列表,用來顯示截獲的每個數據包的總結性信息;中間為協議樹,用來顯示選定的數據包所屬的協議信息;最下邊是以十六進制形式表示的數據包內容,用來顯示數據包在物理層上傳輸時的最終形式。使用Ethereal可以很方便地對截獲的數據包進行分析,包括該數據包的源地址、目的地址、所屬協議等。

網絡端口掃描工具——nmap

nmap是用來對一個比較大的網絡進行端口掃描的工具,它能檢測該服務器有哪些TCP/IP端口目前正處於打開狀態。用戶可以運行它來確保和查證系統目前打開了哪些端口和外界進行通信,從而禁止掉不該打開的不安全的端口號,比如一些特別占用帶寬的P2P端口和一些具有漏洞的應用端口。nmap設計的初衷是系統管理員可以方便地了解自己的網絡運行情況,例如有多少台主機在運行、分別提供什麼樣的服務等。因此,它掃描的速度非常快,尤其適合大型網絡。在對網絡進行掃描時,nmap主要利用ICMP echo探測主機是否開啟。nmap的主頁為:http://www.insecure.org/nmap/index.html,目前網上最新版本為: nmap-3.93.tar.bz2,可按照如下步驟進行安裝:

#bzip2 -cd nmap-3.93.tar.bz2 | tar xvf -

#cd nmap-3.93

#./configure

#make

#make install

下面給出一個探測本機的簡單例子:

# nmap 127.0.0.1

Starting nmap V. 2.54BETA22 ( www.insecure.org/nmap/ )

Interesting ports on localhost (127.0.0.1):

(The 1540 ports scanned but not shown below are in state: closed)

Port State Service

22/tcp open ssh

2401/tcp open cvspserver

Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds

上面通過查看本機的端口使用情況,發現該機器打開了22以及2401端口,且都為TCP服務,另外,1540端口也為該軟件掃描到,但是該端口的狀態為關閉,所以沒有列出來。當然,該軟件的功能很強大,還有很多復雜和高級的選項,用戶可以自己到該軟件的主頁上學習。

密碼分析工具——John the ripper

在Linux中,密碼以hash格式被存儲,用戶不能反向從該hash數據表中分析出密碼,因為該hash函數是單向的。但是,用戶可以對一組單詞進行hash加密,然後和保存的密碼進行比較,如相同就說明猜測出密碼。所以要選取一個很難被猜測的、非常有效的密碼是非常關鍵的。一般地來說,決不能用字典存在的某個單詞作為密碼,那是相當容易被猜測出來的。另外也不能用一些常見的有規則性的字母數字排列作為密碼。

為了驗證用戶所選取的密碼是否能由較高的安全性,我們可以使用一些Linux下的密碼分系統工具來對這些密碼進行分析確認,具有一定的指導意義。在這當中,John the ripper是一個經典、高效的易於使用的密碼猜測程序,其主頁為:http://www.openwall.com/john/,目前最新版本為 John the Ripper 1.6。下面給出其安裝步驟:

下載tar.gz格式的Unix版的程序,然後執行如下命令即可:

#tar xzvf john-1.6.tar.gz

#cd john-1.6/src

#make linux-x86-any-a.out

#cd john-1.6/run

上述命令完成了該軟件的解壓縮以及編譯,使用起來非常方便。在進行密碼分析的過程中,有如下幾個常用選項:

● Single:破解單一口令文件。

● Worldlist:file:利用該軟件使用詞典文件破解口令,也叫字典攻擊。

● Rules:使用規則庫,允許該軟件對詞典單詞做相應變化來破解口令。

● Incremental:根據john-1.6/run目錄下的john.ini文件中定義的參數啟用遞增或者強行模式。

● Restore:file:繼續一次被中斷的破解過程。

● Session:file:允許定義存儲破解信息的文件名。

● Show:顯示上次破解過程所破解出來的口令信息。

在實際的密碼分析過程中,推薦如下步驟和方法:

(1)首先,運行以下命令看破解了哪些口令:

#john——single 待破解的口令文件名

#john——show

(2)然後,采用字典攻擊,破解口令:

#john——w:字典名 待破解的口令文件名

#john——show

(3)如果上述字典攻擊不成功,則進行強行攻擊:

#john——待破解的口令文件名

#john -show

日志檢查工具——Logcheck

Logcheck是用來自動檢查系統安全入侵事件和非正常活動記錄的工具,它分析各種Linux下的日志文件,比如前文所介紹過的/var/log/messages、/var/log/secure、/var/log/maillog等等,然後生成一個可能有安全問題的問題報告自動發送電子郵件給管理員。能設置它基於每小時或者每天用crond來自動運行。

Logcheck是一個軟件包,用來實現自動檢查日志文件,以發現安全入侵和不正常的活動。Logcheck用logtail程序來記錄讀到的日志文件的位置,下一次運行的時候從記錄下的位置開始處理新的信息。所有的源代碼都是公開的,實現方法也非常簡單。

Logcheck SHELL腳本和logtail.c程序用關鍵字查找的方法進行日志檢測。在這兒提到的關鍵字就是指在日志文件中出現的關鍵字,會觸發向系統管理員發的報警信息。Logcheck的配置文件自帶了缺省的關鍵字,適用於大多數的Unix系統。但是最好還是自己檢查一下配置文件,看看自帶的關鍵字是否符合自己的需要。

Logcheck腳本是簡單的SHELL程序,logtail.c程序只調用了標准的ANSI C函數。Logcheck要在cron守護進程中配置,至少要每小時運行一次。腳本用簡單的grep命令來從日志文件檢查不正常的活動,如果發現了就發送電子郵件給管理員。如果沒有發現異常活動,就不會收到電子郵件。

logcheck工具的主頁在http://logcheck.org/,用戶可以在上面下載其最新版本: logcheck-1.1.1.tar.gz。下載後用tar xvfz logcheck-1.1.1.tar.gz命令解開到一臨時目錄下,然後用make linux自動生成相應的文件到/usr/local/etc、/usr/local/bin/等目錄下。用戶可能需要更改設置,如發送通知到誰的郵件賬號等,默認發送到root。

利用logcheck工具分析所有logfile,避免每天經常手動地檢查它們,節省了時間,提高了效率。

後門工具——rootkit

rootkit是一種比普通木馬後門更為隱秘和危險的木馬後門。它主要通過替換系統文件來達到目的,這樣就會更加隱蔽,使檢測變得比較困難。傳統的rootkit主要針對Unix平台,例如Linux、AIX、SunOs 等操作系統,有些rootkit可以通過替換DLL文件或更改系統來攻擊Windows平台。rootkit並不能讓攻擊者直接獲得權限,相反它是在用戶通過各種方法獲得權限後才能使用的一種保護權限的措施,在攻擊者獲取系統根權限(根權限即root權限,是Unix系統的最高權限)以後,rootkit 提供了一套工具用來建立後門和隱藏行跡,從而讓攻擊者保住權限,在任何時候都可以使用root權限登錄到系統。

rootkit主要有兩種類型:文件級別和系統級別,下面分別加以簡要介紹。

1.文件級rootkit

rootkit威力很大,可以輕而易舉地在系統中建立後門。最一般的情況就是它們首先進入系統然後修改系統的重要文件來達到隱藏自己的目的。合法的文件被木馬程序替代。通常情況下,合法的程序變成了外殼程序,而其內部就是隱藏著的後門程序。下面列出的程序就是經常被木馬程序利用掩護自己的Linux rootkit:login、 ls、ps、 find、who、 netstat。

其中,當我們訪問Linux時(不管是本地還是遠程登錄),/bin/login程序都會運行,系統將通過 /bin/l ogin來收集並核對用戶的賬號和密碼。rootkit使用一個帶有根權限後門密碼的/bin/login來替換系統的/bin/login,這樣攻擊者輸入根權限後門的密碼,就能進入系統。就算管理員更改了原來的系統密碼或者把密碼清空,仍能夠使用後門密碼以根用戶身份登錄。在攻入Linux系統後,入侵者通常會進行一系列的攻擊動作,如安裝嗅探器收集重要數據,而Linux中也會有些系統文件監視這些動作,比如ifconfig等系統命令。所以,為了避免被發現,攻擊者會想方設法替換一下這些系統文件,通常被rootkit替換的系統程序有login、ifconfig、du、find、ls、 netstat、ps等。這些命令都能在正常情況下查看系統一些重要的進程、文件和網絡情況的信息,而一旦被替換,則無法發現rootkit已經在系統中工作。所以,如果攻擊者將所有用戶經常使用的命令都替換了的話,他不但能在系統中建立後門,而且還可以隱藏自己的蹤跡。所以通過rootkit可以達到雙重目的,攻擊者可以隨時進入系統,並且我們還不能對他的行為進行檢測。

rootkit功能如此強大,所以必須好好進行防范。實際上,最有效的防御方法是定期對重要系統文件的完整性進行核查,這類工具很多,像Tripwire就是一個非常不錯的文件完整性檢查工具。該軟件可以檢測出一段時間內,系統中哪些文件發生了變化,如果一旦被替換,那麼肯定能夠反映出來。(該軟件的使用方法請參閱本報2005 年4月18日第14期C10版《使用Tripwire保護Linux文件系統》一文,或訪問 www2.ccw.com.cn/05/0514/d/0514d04_1.asp)而一但使用該軟件發現系統遭受到rootkit攻擊,必須完全重裝所有的系統文件、部件和程序,以確保安全性。

下面給出一些目前常用的文件級rootkit工具,用戶可以選擇使用:TrojanIT、Lrk5、Ark、Rootkit(有很多個不同的版本)、TK。

2.內核級rootkit

在大多數操作系統中(各種Unix和Windows),內核是操作系統最基本的部件,它控制著對網絡設備、進程、系統內存、磁盤等的訪問。例如當你打開一個文件時,打開文件的請求被發送到內核,內核負責從磁盤得到文件的比特位並運行文件浏覽程序。內核級 rootkit使攻擊者獲得對系統底層的完全控制權。攻擊者可以修改系統內核,大多數內核級rootkit都能進行執行重定向,即截獲運行某一程序的命令,將其重定向到入侵者所選中的程序並運行此程序。也就是說,用戶或管理員要運行程序A,被修改過的內核假裝執行A,實際卻執行了程序B。

對於工作在文件級的rootkit來說,它們非常容易被檢測到。而內核級rootkit工作在一個很低的內核級上。它們經常依附在內核上,並沒有修改系統的任何文件,於是tripwire工具就不能檢測到它的使用。因為它並沒有對系統的任何文件進行修改,攻擊者可以對系統為所欲為而不被發現。系統級rootkit為攻擊者提供了很大的便利,並且修復了文件級rootkit的一些錯誤。所以建議用戶要做好前期的安全防范工作。例如將最小權限的原則應用到整個系統當中,這樣攻擊者就很難在系統中運行內核級的rootkit,因為運行它首先需要取得root權限。另外,可以模仿攻擊者的攻擊方式來確認系統是否已經受到內核級rootkit的威脅。以系統管理員的身份來運行攻擊者一般需要運行的命令,如果系統對這些命令有所反應,那麼基本可以確定系統已經被入侵了。不過做好前期的防范工作始終是最重要的,事後的彌補比較困難,而且顯得有些捉襟見肘。

下面給出一些目前常用的內核級rootkit工具,用戶可以選擇使用:Knark、Adore。

由於上述的rootkit的工具種類繁多,所以這裡不再介紹其安裝以及使用的步驟,網上有很豐富的資源,讀者可以參看。

系統管理工具——sudo

sudo是允許系統管理員讓普通用戶執行一些或者全部的root命令的一個工具,如halt、reboot、su 等等。這樣不僅減少了root用戶的登陸和管理時間,同樣也提高了安全性。如果用戶在系統中需要每天以root身份做一些日常工作,經常執行一些固定的幾個只有root身份才能執行的命令,那麼用sudo是非常適合的。

sudo不是對shell的一個代替,它是面向每個命令的。它的特性主要有這樣幾點:

● sudo能夠限制用戶只在某台主機上運行某些命令。

● sudo提供了豐富的日志,詳細地記錄了每個用戶干了什麼。它能夠將日志傳到中心主機或者日志服務器。

● sudo使用時間戳文件來執行類似的“檢票”系統。當用戶調用sudo並且輸入它的密碼時,用戶獲得了一張存活期為5分鐘的票(這個值可以在編譯的時候改變),過了這個時間,用戶所獲得的權限將失效。

● sudo的配置文件是sudoers文件,它允許系統管理員集中管理用戶的使用權限和使用的主機。它所存放的位置默認是在/etc/sudoers,屬性必須為0411。

sudo的主頁為:http://www.sudo.ws/sudo/,當前最新的穩定版本為sudo 1.6.8p9。可以從該網站下載文件sudo-1.6.8p9.tar.gz後進行解壓安裝,如下步驟所示:

#tar xzvf sudo-1.6.8p9.tar.gz

#cd sudo-1.6.8p9

在筆者所使用的版本中,將該軟件解壓後即可使用,也不需要編譯,直接進入sudo-1.6.8p9中使用sudo命令即可。如下所示:

#[root@localhost root]# su liyang

[liyang@localhost root]$ sudo reboot

Password:******

上述例子中,用戶liyang使用sudo命令來行使root的權限,重新啟動系統。因為通常情況下,一般用戶並沒有這個權限。系統提示輸入該用戶的密碼加以確認。另外,為了達到該目的,還需要root用戶修改一下上述的sudo的配置文件sudoers,將其中的相關選項改為如下內容:

# User privilege specification

root ALL=(ALL) ALL

liyang ALL=(ALL) ALL

這裡,liyang用戶具有和root同樣的權限,當然在實際應用中不能這麼做,而只能將部分權限賦給用戶。

其他工具

本文上面介紹的幾款安全工具是在實際應用中經常使用的,他們的功能非常強大。在當前環境下,這些工具以及工具的變種層出不窮。比如一些被黑客用來進行攻擊的後門和特洛伊木馬工具、Sadmind攻擊工具、DoS攻擊工具(Targa)、DdoS攻擊工具等等。雖然這些是黑客工具,但是也可以用來對系統某方面的漏洞進行測試攻擊,從而采取打補丁、升級系統、加固系統的方法來保障系統安全。特別是系統管理員要有這種超前的意識,應該多采用和有針對性地選用一些黑客攻擊工具,對系統的安全進行分析、評價和保護,這是一項長期的、艱巨的任務。

雖然一些工具是黑客工具,但是也可以用來對系統某方面的漏洞進行測試攻擊,從而采取打補丁、升級系統、加固系統的方法來保障系統安全。系統管理員要有一種超前的意識,應該多采用和有針對性地選用一些黑客攻擊工具,對系統的安全進行分析、評價和保護,這是一項長期的、艱巨的任務。

Copyright © Linux教程網 All Rights Reserved