Linux作為一個網絡操作系統最主要的功能就是提供各種網絡服務,而每個網絡服務都是帶著各種各樣的安全等級進入系統的一扇門。
為了方便用戶建立Linux服務器系統,絕大部分Linux分版缺省安裝了盡可能多的服務,而這些服務,有一些是用戶不想需要、不了解的服務,或必須改變其缺省配置和安裝修補版本才能保證其安全。Linux所開放的服務,都是由/etc/inetd.conf文件來決定的。
開啟的服務越多,也就是開放的端口越多,Linux服務器的安全風險就越高。要控制Linux開放哪些服務,就要從/etc/inetd.conf文件入手。基於TCP/UDP的不同網絡服務都是以端口來區別的,對於某種服務,Linux的服務守護進程(daemon)隨時監聽特定端口的連接請求,當請求到來的時候,一般生產一個新進程來處理這個連接。例如,www守護進程隨時監聽端口80的連接,一旦檢測到連接請求後就馬上打開一個進程處理這個連接請求,送出指定頁面後返回。
文件/etc/services規定了服務和端口的對應關系,說明了inetd要提供的服務的端口和名字;但是,如果要實際啟動相應的守護進程,需要另外一個文件/etc/inetd.conf。但不知為何,RedHat 7.1取消了/etc/inetd.conf文件。改為這樣的形式:由/etc/xinetd.d目錄中的相關服務的配置文件來決定是否啟動相關服務。/etc/xinetd.d/目錄下的文件名就是網絡服務的名稱,如:chargen,daytime,rexec……這些文件的格式幾乎都差不多:
第一行是此服務的缺省狀態,開放還是關閉:
#default:off
第二行是此服務的簡單注釋:此處舉例telnet服務的注釋:
#descripttion:The telnet server serves telnet session;it uses
#unencrypted username/passWord pairs for authentication.
第三行是此服務的名稱,如:
service telnet
花括號裡的第一個變量是disable,它決定了是否開放此服務。no是開放此服務,yes則是關閉此服務。
Linux系統啟動時會運行.rc這個腳本,決定init進程要啟動哪些服務。如果Linux默認以多用戶模式啟動的話(這是Linux系統的默認運行級),此腳本文件是/etc/rc.d/rc3.d,如果Linux系統默認以X模式啟動的話,則腳本文件是/etc/rc.d/rc5.d。
/etc/rc.d/rc3.d目錄下都是各進程的腳本的名字,腳本名字中的數字是init進程啟動這些進程的順序,如果要在系統啟動的時候不啟動某個服務服務,只要把該服務的腳本名字中的大寫字母S改成小寫字母s就可以了,例如,如果用戶不希望系統啟動的時候自動運行smb服務,把/etc/rc.d/rc3.d/S91smb改名成/etc/rc.d/rc3.d/s91smb就能達到預期目的。腳本名字中以大寫字母K開頭的,是殺死進程用的。
如果系統安裝了X系統,那麼管理就變得相當簡單了。在X-Window的控制面板有Runlevel Manager這個工具,見圖5,自左而右的第三個按鈕就是這個工具。用鼠標左鍵點擊這個圖標後,就會出現下面的窗口,見圖2:
在此管理器中列出了四種運行級:2~5,以及每一個運行級所啟動和關閉的進程。用戶可以根據需要,增加或減少每個運行級的進程。點擊“Add”按鈕,可以在各運行級種增加各種進程。點擊“Remove”按鈕就可以在各運行級刪除進程。點擊“Edit”按鈕可以在各運行級之間切換。
例如,用戶想在運行級2啟動時啟動nfs進程,可以在左邊Available欄中選“nfs”然後點擊下面的“Add”按鈕,出現如圖7所示窗口。在此窗口點擊“Start nfs”和in runlevel框中的3,完畢後點擊“Done”按鈕,這樣,當系統運行運行級3時,init守護進程會自動啟動nfs進程。
可以在運行過程中直接啟動或關閉進程,仍以nfs進程為例:在圖6左邊的“Available”的框中選擇“nfs”,然後點擊下邊的“Execute”按鈕,就會彈出窗口,單擊Start或Stop按鈕就可以啟動或關閉nfs進程了。
同時,在RedHat Linux提供了一個簡便的方法。運行setup,見圖4所示:
選擇System services,即可決定開放哪些服務。
用戶可以執行下面的命令:
# ps -eaf wc -l
可以檢查Linux系統有多少服務運行。當然是運行的服務越少,系統越安全。要查看哪些服務在運行,可以執行下面的命令,如圖5:
# netstat -na --ip
配置完後,可以執行命令:
#chkconfig -list
來檢查開放網絡服務的配置情況,可以看到有數字0~6(類似0:off 1:off 2:off 3:off 4:off 5:off 6:off)的標示,這是說明這些服務在Linux的各個運行級別的狀態,是啟動還是關閉。