眾所周知,就安全性而言,Linux相對於Windows具有更多的優勢。但是,不管選擇哪一種Linux發行版本,在安裝完成以後都應該進行一些必要的配置,來增強它的安全性。下面就通過幾個步驟來加固的Linux伺服器。目前,許多中小使用者因業務發展,不斷更新或升級網路,從而造成自身使用者環境差異較大,整個網路系統平台參差不齊,在伺服器端大多使用Linux和Unix的,PC端使用Windows 和Mac。所以在公司專屬應用程式中往往是Linux、Unix和Windows作業系統共存形成異構網路。
1.安裝和配置一個防火牆
一個配置適當的防火牆不僅是系統有效應對外部攻擊的第一道防線,也是最重要的一道防線。在新系統第一次串連上Internet之前,防火牆就應該被安裝並且配置好。防火牆配置成拒絕接收所有資料包,然後再開啟允許接收的資料包,將有利於系統的安全。Linux為我們提供了一個非常優秀的防火牆工具,它就是netfilter/iptables(http://www.netfilter.org/)。它完全是免費的,並且可以在一台低配置的老機器上很好地運行。防火牆的具體設定方法請參見iptables使用方法。
2.關閉無用的服務和連接埠
任何網路連接都是通過開放的應用連接埠來實現的。如果我們儘可能少地開放連接埠,就使網路攻擊變成無源之水,從而大大減少了攻擊者成功的機會。把Linux作為專用伺服器是個明智的舉措。例如,希望Linux成為的Web伺服器,可以取消系統內所有非必要的服務,只開啟必要服務。這樣做可以盡量減少後門,降低隱患,而且可以合理分配系統資源,提高整機效能。以下是幾個不常用的服務:
1. fingerd(finger伺服器)報告指定使用者的個人資訊,包括使用者名稱、真實姓名、shell、目錄和連絡方式,它將使系統暴露在不受歡迎的情報收集活動下,應避免啟動此服務。
2. R服務(rshd、rlogin、rwhod、rexec)提供各種層級的命令,它們可以在遠程主機上運行或與遠程主機互動,在封閉的網路環境中登入而不再要求輸入使用者名稱和口令,相當方便。然而在公用伺服器上就會暴露問題,導致安全威脅。
3.刪除不用的軟體包
在進行系統規劃時,總的原則是將不需要的服務一律去掉。預設的Linux就是一個強大的系統,運行了很多的服務。但有許多服務是不需要的,很容易引起安全風險。這個檔案就是/etc/xinetd.conf,它制定了/usr/sbin/xinetd將要監聽的服務,你可能只需要其中的一個:ftp,其它的類如telnet、shell、login、exec、talk、ntalk、imap、finger、auth等,除非你真的想用它,否則統統關閉。
4.不設定預設路由
在主機中,應該嚴格禁止設定預設路由,即default route。建議為每一個子網或網段設定一個路由,否則其它機器就可能通過一定方式訪問該主機。
5.口令管理
口令的長度一般不要少於8個字元,口令的組成應以無規則的大小寫字母、數字和符號相結合,嚴格避免用英語單詞或片語等設定口令,而且各使用者的口令應該養成定期更換的習慣。另外,口令的保護還涉及到對/etc/passwd和/etc/shadow檔案的保護,必須做到只有系統管理員才能訪問這2個檔案。安裝一個口令過濾工具加npasswd,能幫你檢查你的口令是否耐得住攻擊。如果你以前沒有安裝此類的工具,建議你現在馬上安裝。如果你是系統管理員,你的系統中又沒有安裝口令過濾工具,請你馬上檢查所有使用者的口令是否能被窮盡搜尋到,即對你的/ect/passwd檔案實施窮盡搜尋攻擊。用單詞作密碼是根本架不住暴力密碼破解攻擊的。駭客們經常用一些常用字來破解密碼。曾經有一位美國駭客表示,只要用“password”這個字,就可以開啟全美多數的電腦。其它常用的單詞還有:account、ald、alpha、beta、computer、dead、demo、dollar、games、bod、hello、help、intro、kill、love、no、ok、okay、please、sex、secret、superuser、system、test、work、yes等。密碼設定和原則:
1.足夠長,指頭只要多動一下為密碼加一位,就可以讓攻擊者的辛苦增加十倍;
2. 不要用完整的單詞,儘可能包括數字、標點符號和特殊字元等;
3.混用大小寫字元;
4.經常修改。
6.分區管理
一個潛在的攻擊,它首先就會嘗試緩衝區溢位。在過去的幾年中,以緩衝區溢位為類型的安全性漏洞是最為常見的一種形式了。更為嚴重的是,緩衝區溢位漏洞佔了遠程網路攻擊的絕大多數,這種攻擊可以輕易使得一個匿名的Internet使用者有機會獲得一台主機的部分或全部的控制權!
為了防止此類攻擊,我們從安裝系統時就應該注意。如果用root分區記錄資料,如log檔案,就可能因為拒絕服務產生大量日誌或垃圾郵件,從而導致系統崩潰。所以建議為/var開闢單獨的分區,用來存放日誌和郵件,以避免root分區被溢出。最好為特殊的應用程式單獨開一個分區,特別是可以產生大量日誌的程式,還建議為/home單獨分一個區,這樣他們就不能填滿/分區了,從而就避免了部分針對Linux分區溢出的惡意攻擊。
很多Linux案頭使用者往往是使用Windows、Linux雙系統。最好使用雙硬碟。方法如下:首先將主硬碟的資料線拆下,找一個10GB左右的硬碟掛在電腦上,將小硬碟設定為從盤,按照平常的操作安裝Linux伺服器版本,除了啟動的引導程式放在MBR外,其它沒有區別。 安裝完成,調試出案頭後,關閉電腦。將小硬碟的資料線拆下,裝上原硬碟,並設定為主盤(這是為了原硬碟和小硬碟同時掛接在一個資料線上),然後安裝Windows軟體。將兩個硬碟都掛在資料線上,資料線是IDE 0介面,將原硬碟設定為主盤,小硬碟設定為從盤。如果要從原硬碟啟動,就在CMOS裡將啟動的順序設定為“C、D、CDROM”,或者是“IDE0(HDD-0)”。這樣電腦啟動的時候,進入Windows介面。如果要從小硬碟啟動,就將啟動順序改為“D、C、CDROM”,或者是“IDE1(HDD-1)”,啟動之後,將進入Linux介面。平時兩個作業系統是互相不能夠訪問的。
7.防範網路嗅探:
嗅探器技術被廣泛應用於網路維護和管理方面,它工作的時候就像一部被動聲納,默默的接收看來自網路的各種資訊,通過對這些資料的分析,網路系統管理員可以深入瞭解網路當前的健全狀態,以便找出網路中的漏洞。在網路安全日益被注意的今天.我們不但要正確使用嗅探器.還要合理防範嗅探器的危害.嗅探器能夠造成很大的安全危害,主要是因為它們不容易被發現。對於一個安全效能要求很嚴格的企業,同時使用安全的拓撲結構、會話加密、使用靜態ARP地址是有必要的。
8.完整的日誌管理
記錄檔時刻為你記錄著你的系統的運行情況。當駭客光臨時,也不能逃脫日誌的法眼。所以駭客往往在攻擊時修改記錄檔,來隱藏蹤跡。因此我們要限制對/var/log檔案的訪問,禁止一般許可權的使用者去查看記錄檔。
另外要使用Log Service器。將客戶機的日誌資訊儲存副本是好主意,建立一台伺服器專門存放記錄檔,可以通過檢查日誌來發現問題。修改/etc/sysconfig/syslog檔案加入接受遠程日誌記錄。
/etc/sysconfig/syslog
SYSLOGD_OPTIONS="-m r 0"
還應該設定日誌遠程儲存。修改/etc/syslog.conf檔案加入Log Service器的設定,syslog將儲存副本在Log Service器上。
/etc/syslog.conf
*.*
log_server_IP
可以使用彩色日誌過濾器。彩色日誌loco過濾器,目前版本是0.32。使用loco /var/log/messages | more可以顯示出彩色的日誌,明顯標記出root的位置和日誌中異常的命令。這樣可以減少分析日誌時人為遺漏。還要進行日誌的定期檢查。Red Hat Linux中提供了logwatch工具,定期自動檢查日誌並發送郵件到管理員信箱。需要修改/etc/log.d/conf/ logwatch.conf檔案,在MailTo = root參數後增加管理員的郵件地址。Logwatch會定期檢查日誌,過濾有關使用root、sudo、telnet、ftp登入等資訊,協助管理員分析日常安全。完整的日誌管理要包括網路資料的正確性、有效性、合法性。對記錄檔的分析還可以預防入侵。例如、某一個使用者幾小時內的20次的註冊失敗記錄,很可能是入侵者正在嘗試該使用者的口令。
9.終止正進行的攻擊
假如你在檢查記錄檔時,發現了一個使用者從你未知的主機登入,而且你確定此使用者在這台主機上沒有帳號,此時你可能正被攻擊。首先你要馬上鎖住此帳號(在口令檔案或shadow檔案中,此使用者的口令前加一個Ib或其他的字元)。若攻擊者已經串連到系統,你應馬上斷開主機與網路的物理串連。如有可能,你還要進一步查看此使用者的記錄,查看其他使用者是否也被假冒,攻擊音是否擁有根許可權。殺掉此使用者的所有進程並把此主機的ip位址遮罩加到檔案hosts.deny中。
10.使用安全工具軟體:
Linux已經有一些工具可以保障伺服器的安全。如bastille linux和Selinux。
bastille linux對於不熟悉 linux 安全設定的使用者來說,是一套相當方便的軟體,bastille linux 目的是希望在已經存在的 linux 系統上,建構出一個安全性的環境。
增強安全性的Linux(SELinux)是美國安全部的一個研發項目,它的目的在於增強開發代碼的Linux核心,以提供更強的保護措施,防止一些關於安全方面的應用程式走彎路,減輕惡意軟體帶來的災難。普通的Linux系統的安全性是依賴核心的,這個依賴是通過setuid/setgid產生的。在傳統的安全機制下,暴露了一些應用授權問題、配置問題或進程運行造成整個系統的安全問題。這些問題在現在的作業系統中都存在,這是由於他們的複雜性和與其它程式的互用性造成的。SELinux只單單依賴於系統的核心和安全配置政策。一旦你正確配置了系統,不正常的應用程式配置或錯誤將只返回錯誤給使用者的程式和它的系統背景程式。其它使用者程式的安全性和他們的背景程式仍然可以正常運行,並保持著它們的安全系統結構。用簡單一點的話說就是:沒有任何的程式配置錯誤可以造成整個系統的崩潰。安裝SELinux SELinux的核心、工具、程式/工具包,還有文檔都可以到增強安全性的Linux網站上上下載你必須有一個已經存在的Linux系統來編譯你的新核心,這樣才能訪問沒有更改的系統補丁包。
11.使用保留IP地址 :
---- 維護網路安全性最簡單的方法是保證網路中的主機不同外界接觸。最基本的方法是與公用網路隔離。然而,這種通過隔離達到的安全性策略在許多情況下是不能接受的。這時,使用保留IP地址是一種簡單可行的方法,它可以讓使用者訪問Internet同時保證一定的安全性。- RFC 1918規定了能夠用於本地 TCP/IP網路使用的IP位址範圍,這些IP地址不會在Internet上路由,因此不必註冊這些地址。通過在該範圍分配IP地址,可以有效地將網路流量限制在本網內。這是一種拒絕外部電腦訪問而允許內部電腦互聯的快速有效方法。 保留IP位址範圍:
---- 10.0.0 .0 - 10.255.255.255
---- 172.16.0.0 - 172.31.255.255
--- 192.168.0.0 - 192.168.255.255
來自保留IP地址的網路交通不會經過Internet路由器,因此被賦予保留IP地址的任何電腦不能從外部網路訪問。但是,這種方法同時也不允許使用者訪問外部網路。IP偽裝可以解決這一問題。
12、合理選擇Linux發行版本:
對於伺服器使用的Linux版本,既不使用最新的發行版本,也不選擇太老的版本。應當使用比較成熟的版本:前一個產品的最後發行版本如RHEL 3.0等。畢竟對於伺服器來說安全穩定是第一的。
13.部署Linux防範病毒軟體
Linux作業系統一直被認為是Windows系統的勁敵,因為它不僅安全、穩定、成本低,而且很少發現有病毒傳播。但是,隨著越來越多的伺服器、工作站和個人電腦使用Linux軟體,電腦病毒製造者也開始攻擊這一系統。對於Linux系統無論是伺服器,還是工作站的安全性和許可權控制都是比較強大的,這主要得力於其優秀的技術設計,不僅使它的作業系統難以宕機,而且也使其難以被濫用。Unix經過20多年的發展和完善,已經變得非常堅固,而Linux基本上繼承了它的優點。在Linux裡,如果不是超級使用者,那麼惡意感染系統檔案的程式將很難得逞。速客一號(Slammer)、衝擊波(Blast)、霸王蟲(Sobig)、 米蟲(Mimail)、勞拉(Win32.Xorala)病毒等惡性程式雖然不會損壞Linux伺服器,但是卻會傳播給訪問它的Windows系統平台的電腦。
Linux平台下的病毒分類:
1.可執行檔型病毒:可執行檔型病毒是指能夠寄生在檔案中的,以檔案為主要感染對象的病毒。病毒製造者們無論使用什麼武器,彙編或者C,要感染ELF檔案都是輕而易舉事情。這方面的病毒有Lindose。
2.蠕蟲(worm)病毒:1988年Morris蠕蟲爆發後,Eugene H. Spafford 為了區分蠕蟲和病毒,給出了蠕蟲的技術角度的定義,“電腦蠕蟲可以獨立運行,並能把自身的一個包含所有功能的版本傳播到另外的電腦上。”在Linux平台下,蠕蟲極為猖獗,像利用系統漏洞進行傳播的ramen,lion,Slapper等,這些病毒都感染了大量的Linux系統,造成了巨大的損失。
3.指令碼病毒:目前出現比較多的是使用shell指令碼語言編寫的病毒。此類病毒編寫較為簡單,但是破壞力同樣驚人。我們知道,Linux系統中有許多的以.sh結尾的指令檔,而一個短短十數行的shell指令碼就可以在短時間內遍曆整個硬碟中的所有指令檔,進行感染。
4.後門程式:在廣義的病毒定義概念中,後門也已經納入了病毒的範疇。活躍在Windows系統中的後門這一入侵者的利器在Linux平台下同樣極為活躍。從增加系統超級使用者帳號的簡單後門,到利用系統服務載入,共用庫檔案注射,rootkit工具包,甚至可裝載核心模組(LKM),Linux平台下的後門技術發展非常成熟,隱蔽性強,難以清除。是Linux系統管理員極為頭疼的問題。
總體來說電腦病毒對Linux系統存在較小的危險。但是由於各種原因在公司專屬應用程式中往往是Linux和Windows作業系統共存形成異構網路。所以Linux的防範病毒策略分成兩個部分:
1.針對Linux本身(伺服器和使用其作為案頭的電腦)防範策略。
可執行檔型病毒、蠕蟲(worm)病毒、指令碼病毒的防範通過安裝GPL查殺病毒軟體基本可以防範。伺服器端可以使用AntiVir(http://www.hbedv.com/)它是工作在命令列下的,運行時可以較少佔用系統資源。
對於後門程式防範可以採用LIDS(http://www.lids.org/)和Chkrootkit(http://www.chkrootkit.org/),LIDS是Linux核心補丁和系統管理員工具(lidsadm),它加強了Linus核心。可以保護dev/目錄下的重要檔案。而Chkrootkit可以檢測系統的日誌和檔案,查看是否有惡意程式侵入系統,並且尋找關聯到不同惡意程式的訊號。最新版本的Chkrootkit0.45可以檢測出sniffers、Trojans、worms、rootkit等59種。
2.針對使用Linux伺服器後端的Windows系統的病毒防範策略。
許多企業使用Proxy 伺服器接入互連網,許多使用者Windows系統進行都是在進行HTTP網頁瀏覽和檔案下載時感染病毒,所以可以在Proxy 伺服器上加掛一個病毒過濾器,對使用者瀏覽的HTTP網頁進行病毒檢測,發現有使用者瀏覽網頁感染病毒的狀況即由Proxy 伺服器進行阻斷,丟棄帶有病毒的請求,將不安全的進程阻止在Proxy 伺服器內,禁止帶有病毒的資料向用戶端電腦傳播。squid是一款非常優秀的Proxy 伺服器軟體,但是並沒有專門的病毒過濾功能。可以考慮使用德國開放源碼愛好者開發的一款基於Linux的病毒過濾Proxy 伺服器——HAVP(http://www.server-side.de/)。HAVP病毒過濾Proxy 伺服器軟體既可以獨立使用,也可以與Squid串聯使用,增強SquidProxy 伺服器的病毒過濾功能。
提供郵件服務是Linux伺服器中重要應用。可以使用ClamAV(http://www.clamwin.com/),ClamAV 全名是 Clam AntiVirus,它跟Liunx一樣強調公開程式碼、免費授權等觀念,ClamAV 目前可以偵測超過40,000 種病毒、蠕蟲、木馬程式,並且隨時更新資料庫,有一組分布在世界各地的病毒專家,24小時更新及維護病毒資料庫,任何人發現可疑病毒也可以隨時跟她們取得 聯絡,立刻更新病毒碼,在極短的時間內,網路上採用ClamAV的郵件伺服器就完成最新的防護動作。
14、加強登入安全
通過修改/etc/login.defs檔案可以增加對登入錯誤延遲、記錄日誌、登入密碼長度限制、到期限制等設定。
/etc/login.defs
PASS_MAX_DAYS 90 #登入密碼有效期間90天
PASS_MIN_DAYS 0 #登入密碼最短修改時間,防止非法使用者短期更改多次
PASS_MIN_LEN 8 #登入密碼最小長度8位
PASS_WARN_AGE 7 #登入密碼到期提前7天提示修改
FAIL_DELAY 10 #登入錯誤時等待時間10秒
#登入錯誤記錄到日誌
FAILLOG_ENAB yes #當限定超級使用者管理日誌時使用
SYSLOG_SU_ENAB yes #當限定超級使用者組管理日誌時使用
SYSLOG_SG_ENAB yes #當使用md5為密碼的加密方法時使用
15. 使用OPENSSH代替FTP和Telnet
我們通常使用的網路傳輸程式FTP和Telnet等在本質上都是不安全的,因為它們在網路上用明文傳送口令和資料,駭客利用嗅探器非常容易截獲這些口令和資料。SSH的英文全稱是Secure SHell。通過使用SSH,使用者可以把所有傳輸的資料進行加密,這樣即使網路中的駭客能夠劫持使用者所傳輸的資料,如果不能解密的話,也不能對資料轉送構成真正的威脅。另外,傳輸的資料是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替Telnet,又可以為FTP提供一個安全的“傳輸通道”。在不安全的網路通訊環境中,它提供了很強的驗證(authentication)機制與非常安全的通訊環境。SSH(Secure Shell)最初由芬蘭的一家公司開發,但由於受著作權和密碼編譯演算法的限制,很多人轉而使用免費的替代軟體OpenSSH。 命令列使用OPENSSH比較麻煩。這裡介紹gFTP和OPENSSH整合在一齊,提供一個圖形化加密傳輸方案。gFTP和Windows下的CuteFtp一樣使用非常簡單,而且幾乎所有的Linux發行版本都帶有gFTP,不需要安裝就可以使用。Windows下支援SSH的用戶端軟體不少,推薦使用Putty和Filezilla。
16.備份重要的檔案
很多木馬、蠕蟲和後門都會用替換重要檔案的辦法隱藏自己,將最重要和常用的命令備份是好習慣。準備一套唯讀介質,光碟片或者優盤,甚至放到網上下載都可以。總之是在必要時使用原始的命令而不是系統中可能被感染的命令。需要注意備份的如下:
/bin/su
/bin/ps
/bin/rpm
/usr/bin/top
/sbin/ifconfig
/bin/mount
17.補丁問題
你應該經常到你所安裝的系統發行商的首頁上去找最新的補丁。作業系統是電腦系統靈魂,維護著系統的底層,對記憶體、進程等子系統進行管理和調度。如果作業系統本身出現了漏洞,其影響將會是致命的。作業系統的核心,對於網路安全是至關重要的。目前,核心的維護主要分兩種模式:對於私人作業系統,如Windows/Solaris等,由於個人使用者不能直接接觸其原始碼,其代碼由公司內部開發人員維護,其安全性由同樣的團隊保證,核心的修正與其他應用程式一樣,以patch/SP包的方式發布。對於Linux這樣的開放式系統,是一種開放的結構。應該說,開放的模式是雙刃劍。從機制上講,全世界的開發人員都能獲得原始碼,從而找出其中的紕漏,似乎安全性應該更好;但是同時,如果網路管理員不能及時更新核心,也會留下安全隱患。而且,影響作業系統安全的因素有很多。從編成水平到使用者的使用水平等等,都將影響到系統的安全。僅僅通過開放或者封閉原始碼,都不能從根本上解決安全問題。如果你是一個Linux網管員,你經常需要上相應的網站看,是否有補丁,是否有了bug fix,是否需要升級。千萬不要報僥倖心理,否則一個Shell指令碼就可能拿下你的網站。套用一句名言:你的伺服器永遠可能在第二天被駭客接管。
Linux伺服器啟動並執行軟體主要包括:Samba,Ftp,Telnet,Ssh,Mysql,Php,Apache,Mozilla等,這些軟體,大都是開源軟體,而且都在不停升級,穩定版和測試版交替出現。在www.samba.org和 www.apache.org上,最新的ChangeLog中都寫著:bug fix, security bug fix的字樣。所以Linux網管員要經常的關注相關網站的bug fix和升級,及時升級或添加補丁。
總結:
正如沒有牢不可破的盾一樣,沒有任何的系統是絕對安全的。同樣在安全領域中,也沒有誰可以說自己是高手。系統的安全是靠很多前輩的汗水和智慧來換取的。