在我寫此文章的同時,在世界的某個地方,也許正有一個人在他家裡的計算機上第一次安裝發布的Linux。一個新的Linux的管理員通過為其家人和朋友設置帳戶來使系統運轉起來。也許在初次安裝完成後的不長時間裡,這個Linux系統就會以令人感激涕零的高速DSL接入Internet。
還是容易被攻擊
今天幾近所有可用的linux發布在安全方面存在漏洞,其中的多數漏洞是很容易被攻入的,但不幸的是依慣例和習慣做法,他們是開放的。典型安裝的Linux首次啟動時就提供了多種多樣的可被攻擊的服務,譬如SHELL,IMAP和POP3。這些服務經常會被游手好閒的網民按其需要用來作為系統突破的切入點,這不僅是Linux的局限 -- 久經風霜的商業UNIX也提供此類服務,而且也會被突破。
不用抱怨和指責,新系統的鎖定(堅固系統的專業說法)是非常重要的。信不信由你,一個Linux系統的堅固過程是不需要過多的系統安全專門知識。實際上,你可以在5分鐘之內就可以將百分之九十的不可靠因素屏蔽掉。
開始吧
在開始堅固系統前,要問清自己你的機器擔當的角色和用來接入Internet的舒適度。要仔細確定你要對整個世界范圍提供的服務,如果你還不能確定,最好什麼也不要做。明確自己的安全策略是非常重要的。要決定你自己的系統上哪些使用是可接受的而哪些是不可接受的。
本文中范例機器的目標是作為工作站用來收發mail,閱讀新聞,浏覽網頁等等。
確立網絡服務安全
首先,以超級用戶(root)登入系統,用netstat命令(這是多數Linux系統標配的網絡工具)查看一下當前的網絡狀態,輸出的結果譬如是:
root@percy / ]# netstat -a Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:imap2 *:* LISTEN tcp 0 0 *:pop-3 *:* LISTEN tcp 0 0 *:linuxconf *:* LISTEN tcp 0 0 *:auth *:* LISTEN tcp 0 0 *:finger *:* LISTEN tcp 0 0 *:login *:* LISTEN tcp 0 0 *:shell *:* LISTEN tcp 0 0 *:telnet *:* LISTEN tcp 0 0 *:ftp *:* LISTEN tcp 0 0 *:6000 *:* LISTEN udp 0 0 *:ntalk *:* udp 0 0 *:talk *:* udp 0 0 *:xdmcp *:* raw 0 0 *:icmp *:* 7 raw 0 0 *:tcp *:* 7
如你所見到的輸出結果,最初的安裝對一定數量的服務並未偵聽,而這些服務的大多數就是麻煩的制造者,在配置文件/etc/inetd.conf中就可以行使禁止。
用你喜歡的文本編輯器打開這個文件,注銷你不想提供的服務,這只需在包含服務內容的行前面添加一個``#'',在本例中所有的服務都被注銷了,當然,如果你決定要提供這些服務中的某幾個,那由你自己來決定。
現在,重新啟動 inetd 來使這些改變的內容起作用,這根據系統的不同會有多種方法,一個例子是: killall -HUP inetd,依訣竅,重新用netstat檢查開放的socket並注意發生的變化。接下來,查看還有哪些進程在運行。通常會看到sendmail、lpd和snmd 在等待接入的請求。因此機器不對此類的任何請求提供服務,所以他們應當終止運行。
通常,這些服務是由系統初始化腳本啟動,腳本會因發布的不同而異,一般可以在/etc/init.d 或 /etc/rc.d中找到。如果你還不能確定,請參照你所用發布的文檔。目標是在系統啟動時禁止腳本啟動這些服務。
如果你的Linux發布使用的是打包的系統,花點時間移掉你不需的服務。在此范例機器中,包括了sendmail和r字頭的服務進程(rwho、rwall等),lpd、ucd-snmp和apache。這是確保此類服務不會因意外而激活的最簡捷的途徑。
X堅固手段
近來多數的發布都支持機器首次啟動時就登陸進入X窗口例如xdm進行管理,不幸的是,這也是主要的攻擊點。默認方式下,機器允許任何主機請求登陸窗口,即使此機器僅僅只有一個用戶直接從控制台登陸,這種特性亦需屏蔽。
配置文件會賴於你所使用的登陸管理器而變化。本機選用xdm,故而/usr/X11R6/lib/X11/Xaccess文件需進行修改,添加一個``#''符號來阻止啟動此服務。我的Xaccess如下設置:
#* #any host can get a login window
#* #any indirect host can get a chooser
再次啟動xdm時此設置有效。
軟件升級
現在一些基本的堅固措施已完成,需要時時注意發行商對發布的升級和增強。缺乏甚至沒有維護會是危及系統安全的一大因素。
對開放源代碼軟件的保障之一是其在不斷的發展中,有許多人花費大量的時間在不停地尋找安全方面存在的缺陷。這直接導致了Linux發布不斷的維護過程,經常會有升級程序、臭蟲補丁程序和安全方面的指導出現在網頁中。隔幾天或幾周就浏覽一下發布商的網頁看是否有補丁或升級程序貼出來。
後續工作
現在,經處理過的機器比其初次安裝後的安全性已提高了,但決不是對任何攻擊就牢不可破了,但已不存在明顯的可攻擊之處了。在此列出的方法就象給你的車子或房子加了鎖,一般水平的小偷就會被這類措施所動搖,意識到這是落鎖的轉而尋找其他沒有加以保護的系統。
如果你認定這些措施沒有提供足夠的安全性能,也許你還想通過Internet提供一些網絡服務,在進行之前需要花費一些時間尋找更高級的安全技術。
但不幸的是,許多Linux的發布商假定他們的客戶已經熟知這些服務而且也想使用他們。但對初始用戶通常這不是事實,當然,在Linux系統的安全性完全保障之前還有大量的未開發領域。而這些步驟就是對已知曉的系統漏洞加以最基本的安全保障。
時至今日,對於危及系統和網絡安全的多數保護手段還相對較弱,而隨著Linux的流行且高速Internet存取逐漸實現的時刻,湧向未經預防的Linux 系統的攻擊會越來越多。