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