歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

如何配置Linux安全服務管理

任何計算機安全措施的一個重要方面是維持實際控制服務的運行。本文向你展示了在Linux操作系統的PC機上如何配置安全服務管理。

任何計算機安全措施的一個重要方面是維持實際控制服務的運行,讓不必要的網絡服務接受請求將提高系統的安全風險。即使這些網絡服務對於服務器的某些功能是必要的也需要仔細管理,並且對其進行配置最小化不受歡迎的入侵和登錄的可能性。

為Linux系統配置安全性時,使用/etc/inittab文件、runlevels和一兩個服務管理“superdaemons”如inetd或xinetd直接管理服務。

inittab

/etc/inittab文件用於系統的初始化過程啟動系統服務。在一個配置好的系統上,雖然它一般都不會包括很多服務,但是在某些Linux系統的默認安裝中會加載很多其他服務。/etc/inittab文件內容有些模糊,它的重要之處在於讓服務管理變得相對簡單。

首先,可不要通過/etc/inittab文件方式向系統啟動項中添加服務。

第二,不要移除/etc/inittab文件中第一個冒號之前其第一個字段是單精度型的數字,或整個登錄服務的前面部分。以單精度數字開頭的行可以打開TTY控制台,所有服務在它們打開之前都一一列出,甚至列出其更重要的功能。也許有些例外情況,在不改動它時是很安全的,尤其如果不確定的情況下請不要改動。

第三,/etc/inittab在導入和runlevel選擇的時候用於過程管理。一般不用於正常的系統操作。

第四,在導入時由rc系統開始添加步驟,而不是init系統。如果看看/etc/inittab的內容,將會注意到登錄以rc0到rc6這樣的字符結束。這是初始化系統如何處理runlevels的說明。

runlevels

基於Linux操作系統的運轉可以通過runlevels進行管理。不同的runlevels被定義成有不同的行為,就像Windows操作系統一樣,它有正常操作模式、安全模式、在某些情況下還有DOS模式。

Runlevel 0用於關閉系統,如果軟電源設置恰當,它能關閉系統電源。

Runlevel 1是單用戶無網絡的模式,它用於低水平的故障修復和管理操作。

Runlevel 2到Runlevel 5正常系統操作的多用戶模式。Runlevel2和3是命令行模式,3有網絡連接而2沒有網絡連接。Runlevel 5用於啟動X Windows提供圖形用戶接口。

Runlevel 6用於系統重啟,當整個init系統甚至bootloader 需要重啟時采用它。

其他runlevels由系統管理員進行定義,但是“傳統”UNIX系統沒有此功能。這種情況下,他們不能被定義也不能被使用。

在shell處,可以輸入runlevel命令找到以前的renlevel和當前runlevel。如果沒有更改系統 runlevel ,命令的輸出結果為大寫N後面跟runlevel的數字,這裡的N表示沒有前runlevel,如果要更改runlevel,可以使用init命令,後面跟想要使用到的runlevel的數字。例如,輸入init 6表示重啟系統,或init 1 進入單用戶模式。

配置runlevel的過程每一版本的情況都不同。例如,在Debian GNU/Linux系統中,位於/etc/init.d的服務腳本有來自/etc/rcN.d的路徑與它們進行鏈接,這裡的N表示需要配置的runlevel數字。以字母K開頭的symlinks指示在進入runlevel時被殺死的程序,而以字母 S開頭的symlinks指示在進入runlevel時被啟動的程序。字母後面的數字值越大,從1到99,表示啟動或殺死的時間愈靠後。

大多數基於RPM的版本都采用RedHat所用到的rc系統。比起基於Debian的系統,這一系統使用更復雜的路徑結構,並且不同的基於RPM的系統之間也有很大的不同。說明書上提供了更多的關於管理runlevel的信息。

inetd

一個用於Linux後台程序管理的“superdaemon”是眾所周知的inetd,它是個用於服務管理的命令行工具。終止服務很簡單:首先,作為根用戶用文本編輯器打開/etc/inetd.conf文件。接下來,找到文件中需要終止的服務。最後,在服務所在行的最前面添加#符號(其他還有“尖頂符”和“英鎊符”),如下所示。“注釋掉”這一行,因此inted以後都不會啟動這一服務。

編輯之前服務登錄可能是下面這樣:

ident stream tcp wait identd /usr/sbin/identd  identd

停止之後,服務登錄變成下面這個樣子:

# ident stream tcp wait identd /usr/sbin/identd  identd

如果正在卸載被登錄參考的後台程序,可以刪除文件中的某些行——是否通過包管理器進行卸載或刪除執行文件卸載(對於上面的例子是/usr/sbin/identd文件)。

編輯/etc/inetd.conf文件之後,保存它,inetd以後則可以使用更改。編輯和保存一旦完成,可以在根部輸入下面的命令使更改即時生效:

kill -HUP `pidofinetd

使用修改(保存)後的配置文件會導致inetd重啟。

xinetd

另外一個稱為xinetd的superdaemon比inetd更新穎更復雜,能完成更多的功能。但是對於關閉服務來說,他們的使用方法相似。

使用xinetd時,必須在/etc/xinetd.conf文件中添加一行關閉服務。如果只想簡單的刪除服務,必須刪除好幾行代碼而不是一行。找到想要關閉的服務所在的那一塊,在塊的後面添加“disable = yes”這一行,或者刪除整個塊。例如,如果關閉telnet服務,需要像下面這樣做。(這裡的省略號代表了塊的其他內容)

service telnet
  {
    . . .
    disable = yes
  }

在某些系統中,對於某些服務,服務配置並不在/etc/xinetd.conf文件中。例如,像telnet這樣的服務有可能在文件/etc/xinetd.d/telnet中,改變其服務配置方法與它在/etc/xinetd.conf文件中的方法是一樣的。

編輯保存了/etc/xinetd.conf文件後或者更改了服務文件後,可以輸入下面的命令讓修改即時生效:

kill -USR2 `pidofxinetd

這將通知xinetd程序,使用更改後的配置。

Xinetd除了關閉或移除服務配置之外,還可以用於控制遠程主機登錄服務。這將通過幾個機制完成:

可以為服務指定一個允許的主機。例如:可以通過在服務配置文件中添加only_from = 192.168.0.101這一行限制主機登錄telnet服務。盡管使用了詞語“only”,但是它只能限制主機的數目,而不僅僅只一台主機。也可以使用部分地址指定完整的網絡。例如:可以使用“only_from = 192.168.0.to”表示本地Class C的任何主機都能訪問這個服務。

可以在配置文件中為某個服務指定禁止的主機。例如:可以在配置文件中添加“no_access = 192.168.0.102”這一行禁止這個主機遠程訪問telnet服務。這個也可以使用多次而且也可以使用部分地址指定多個主機。萬一某個主機滿足only_from和no_access兩個限制,則會權衡確定其訪問權限。如果xinetd不能確定哪個限制能被應用,則系統默認更安全的選項——服務不會開啟。

超越服務管理

對於安全的遠程服務訪問,還有更多的事情可以做。應該恰當配置防火牆保護服務免受攻擊。代理服務器、通過網關服務器端口推進以及網絡地址轉移都能有效減少服務攻擊的風險。針對安全使用,那些用於登錄正在運行的服務工具也應進行配置,例如,如果使用安全shell進行遠程連接而沒有使用X Server時,在SSH中調低X forwarding是很重要的。直接進行安全管理是保證Linux系統安全的重要部分,但是它也只是全面安全計劃的一部分。

Copyright © Linux教程網 All Rights Reserved