眾所周知,就安全性而言,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文件的訪問,禁止一般權限的用戶去查看日誌文件。
另外要使用日誌服務器。將客戶機的日誌信息保存副本是好主意,創建一台服務器專門存放日誌文件,可以通過檢查日誌來發現問題。修改/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工具,定期自動檢查日誌並發送郵件到管理員信箱。需要修改/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系統的病毒防範策略。
許多企業使用代理服務器接入互聯網,許多用戶Windows系統進行都是在進行HTTP網頁瀏覽和文件下載時感染病毒,所以可以在代理服務器上加掛一個病毒過濾器,對用戶瀏覽的HTTP網頁進行病毒檢測,發現有用戶瀏覽網頁感染病毒的狀況即由代理服務器進行阻斷,丟棄帶有病毒的請求,將不安全的進程阻止在代理服務器內,禁止帶有病毒的數據向客戶端計算機傳播。squid是一款非常優秀的代理服務器軟件,但是並沒有專門的病毒過濾功能。可以考慮使用德國開放源碼愛好者開發的一款基於Linux的病毒過濾代理服務器--HAVP( http://www.server-side.de/)。HAVP病毒過濾代理服務器軟件既可以獨立使用,也可以與Squid串聯使用,增強Squid代理服務器的病毒過濾功能。
提供郵件服務是Linux服務器中重要應用。可以使用ClamAV(http://www.clamwin.com/),ClamAV 全名是 Clam AntiVirus,它跟Liunx一樣強調公開程序代碼、免費授權等觀念,ClamAV 目前可以偵測超過40,000 種病毒、蠕蟲、木馬程序,並且隨時更新數據庫,有一組分佈在世界各地的病毒專家,24小時更新及維護病毒數據庫,任何人發現可疑病毒也可以隨時跟她們取得 聯繫,立刻更新病毒碼,在極短的時間內,網絡上採用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提供一個安全的「傳輸通道」。在不安全的網路通信環境中,它提供了很強的驗證(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和升級,及時升級或添加補丁。