Linux? 已經(jīng)占有了很大的服務(wù)器市場(chǎng)份額,并且預測顯示,由于云計算需求,這一份額將增加。關(guān)注安全性的企業(yè) IT 部門(mén)需要考慮這些服務(wù)器對網(wǎng)絡(luò )構成的漏洞,以及如何保護這些機器。本文演示了如何增強 Secure Shell (SSH) 會(huì )話(huà),配置防火墻,并設置入侵檢測。
雖然許多核心安全概念對于桌面操作系統和服務(wù)器操作系統都適用,但它們的保護方式是不同的。默認情況下,桌面操作系統為用戶(hù)提供可開(kāi)箱即可運行的環(huán)境。桌面操作系統的銷(xiāo)售前提是,它們要求最低配置,并加載盡可能多的應用程序,讓用戶(hù)可以正常運行使用。相反,服務(wù)器的操作系統應該將訪(fǎng)問(wèn)限制為可以支持正常運作的最低級別。
增強 GNU/Linux 服務(wù)器的第一步是確定服務(wù)器的功能,這就決定了需要在其上安裝的服務(wù)。例如,如果所涉及的服務(wù)器被用作 Web 服務(wù)器,您應該安裝 Linux、Apache、MySQL 和 Perl/PHP/Python (LAMP) 服務(wù)。如果服務(wù)器被用于目錄服務(wù),允許在其上運行的應用程序和服務(wù)只應該是它要執行的任務(wù)所需要的那些應用程序和服務(wù)。不應該安裝額外的東西,有兩個(gè)原因:
有些依靠 GUI(如 GNOME 或 KDE)的人可能會(huì )傾向于安裝一個(gè)圖形化登錄工具,比如 GNOME Display Manager。這是沒(méi)有必要的,因為在命令行界面登錄與通過(guò)基于 GUI 的登錄界面進(jìn)行登錄一樣容易。惟一的區別是,如果需要通過(guò) GUI 界面來(lái)管理服務(wù)器,就必須使用 sudo startx 命令。
您需要決定是否要安裝一個(gè)圖形用戶(hù)界面 (GUI)。GNU/Linux 管理員長(cháng)期以來(lái)一直自傲于從命令行界面管理其網(wǎng)絡(luò )和服務(wù)器。但是有些系統管理員也開(kāi)始通過(guò) GUI 管理其 GNU/Linux 服務(wù)器。GUI 會(huì )占用系統的資源,因為它是一個(gè)沒(méi)有必要的額外服務(wù),會(huì )帶來(lái)漏洞。然而,當不再使用 GUI 進(jìn)程時(shí),可以關(guān)閉它,它使管理員可以更輕松地執行某些任務(wù),比如處理數據庫。
如果決定要安裝 GUI,以下說(shuō)明幫助您了解如何將 GNOME 安裝為桌面 GUI:
sudo aptitude install x-window-system-core gnome-core
sudo 密碼,然后按下 Enter 鍵。您會(huì )被告知正在安裝的是什么。
Y,然后按下 Enter 鍵。這將安裝一個(gè)精簡(jiǎn)版的 GNOME,將桌面環(huán)境的特性減到最少,節省系統資源。如要安裝全功能版本的 GNOME,鍵入:
sudo aptitude install x-window-system-core gnome
sudo startx。SSH 為用戶(hù)提供一個(gè)到遠程計算機的連接;系統管理員通常使用 SSH 從遠程計算機登錄到服務(wù)器來(lái)執行維護和管理任務(wù)。雖然 SSH 提供的安全性水平比它所取代的協(xié)議高得多,但您可以做一些事情,使它更安全。
使用 sudo aptitude install emacs 安裝 Emacs。接下來(lái)在文件中找到要設置端口號的部分。找到它(默認端口是 22)后,您可以將它更改為任意數字。有超過(guò) 65,000 個(gè)端口可供選擇:選擇靠近上限并且容易記住的數字。請記住,熟練的攻擊者了解人們的想法。將端口號更改為 22222 或 22022 是一個(gè)常見(jiàn)的??錯誤,因此請選擇一個(gè)不容易被猜到的數字。
其中一種最常用的強化 SSH 的方法是改變用來(lái)訪(fǎng)問(wèn)它的端口號。理論上,使用默認端口或 TCP 22 端口建立連接的攻擊者會(huì )被拒絕訪(fǎng)問(wèn),因為服務(wù)在一個(gè)安全端口上運行。但是,更改端口號將不會(huì )防止使用端口掃描程序的攻擊者發(fā)現 SSH 端口,他可以花時(shí)間來(lái)掃描服務(wù)器上的所有端口。出于這個(gè)原因,很多系統管理員也懶得更改端口。但是,這種方法會(huì )阻止喜歡用腳本的家伙通過(guò)專(zhuān)用來(lái)尋找已打開(kāi) TCP 22 端口的自動(dòng)工具來(lái)攻擊 SSH。如果在所掃描的第一個(gè)端口范圍中沒(méi)有發(fā)現 SSH 運行,不耐煩的攻擊者可能對掃描您的服務(wù)器感到厭倦。
如要更改 SSH 端口地址,先在服務(wù)器上安裝 SSH。鍵入以下命令,然后按 Enter 鍵:
sudo aptitude install openssh-server
鍵入您的密碼。此命令安裝用于遠程登錄到服務(wù)器的 openssh。
當需要配置一個(gè) SSH 文件時(shí),復制文件,以防在配置過(guò)程中發(fā)生問(wèn)題。您可以隨時(shí)恢復到原來(lái)的狀態(tài)。然后:
sudo cp /etc/ssh/sshd_config /ete/ssh/sshd_config.back
現在,您需要更改 sshd_config 文件的權限,以便可以修改它。為此:
sudo chmod 644 /etc/ssh/sshd_config
emacs /etc/ssh/sshd_config
保持打開(kāi) Emacs 或 vi,以便對這個(gè)文件進(jìn)行更多的修改。
所有 Ubuntu 版本中的 root 用戶(hù)都是禁用的,但您可以激活該帳戶(hù)。如果您正在使用 SSH,在您或攻擊者已經(jīng)激活該帳戶(hù)的情況下,您應該拒絕 root 帳戶(hù)遠程登錄到服務(wù)器的權限。打開(kāi)編輯器后,向下滾動(dòng)到顯示 PermitRootLogin 的行。 默認設置為 yes。
在服務(wù)器上強化 SSH 可采取的另一個(gè)步驟是,只允許某些人使用此服務(wù)。這個(gè)過(guò)程稱(chēng)為白名單。要創(chuàng )建白名單,首先需要那些獲準使用 SSH 遠程訪(fǎng)問(wèn)服務(wù)器的人的用戶(hù)名。然后,執行以下步驟:
# Allow only certain usersAllowUsers username username username
用列表中的用戶(hù)名替換 username 一詞?;蛘?,您也可以使用以下命令,允許組進(jìn)行 SSH 登錄:
# Allow only certain groups AllowGroups group group
同樣,用您的用戶(hù)組替換示例中的 group 一詞。
sudo service ssh restart。該服務(wù)重新啟動(dòng),并顯示 [OK]。
您可以用其他方法保護 SSH,但那些方法都面向更高級的用戶(hù)。當您有更多使用 GNU/Linux 和 SSH 的經(jīng)驗時(shí),可以考慮采取那些步驟。
您可以通過(guò)防火墻拒絕對您的服務(wù)器的訪(fǎng)問(wèn)。Ubuntu 服務(wù)器使用的防火墻名稱(chēng)為 Uncomplicated FireWall (UFW),這是一個(gè) iptables 管理工具。Iptables 基于系統管理員編寫(xiě)的規則篩選網(wǎng)絡(luò )數據包。Iptables 對于初學(xué)者可能較復雜,但 UFW 簡(jiǎn)化了它。使用 UFW 可以幫助您強化服務(wù)器,但如果編寫(xiě) iptables 規則,就可以調優(yōu)服務(wù)器的安全性。
曾經(jīng)有一段時(shí)間,系統管理員必須使用 sudo aptitude install ufw 安裝 UFW。但是,Ubuntu 和許多其他 GNU/Linux 版本都已安裝了這個(gè)應用程序;只是在默認情況下未啟用它。如要啟用 UFW,在打開(kāi)的終端中鍵入命令 sudo ufw enable,然后按下 Enter 鍵。然后鍵入:
sudo ufw status verbose
按下 Enter 鍵??吹降妮敵鰬擃?lèi)似于清單 1:
youruser@yourcomputer:~$ sudo ufw status verbose[sudo] password for youruser:Status: activeLogging: on (low)Default: deny (incoming), allow (outgoing)New profiles: skipyouruser@yourcomputer:~$
請注意,在默認情況下,所有傳入流量都將被拒絕。您可以將其更改為允許所有傳入的流量,但是這會(huì )破壞防火墻的作用。您可以創(chuàng )建規則,指定允許哪些流量通過(guò):
最簡(jiǎn)單的(也是最常見(jiàn)的)防火墻規則編寫(xiě)方法是阻止特定端口上的流量。例如,如果想允許端口 80 上的傳入流量,可以在終端里輸入以下命令:
sudo ufw allow 80
您還可以選擇指定允許哪個(gè)協(xié)議。如果沒(méi)有指定協(xié)議,那么規則同時(shí)涵蓋 TCP 和 User Datagram Protocol (UDP)。然而,若只允許端口 80 上通過(guò) TCP 流量,命令為:
sudo ufw allow 80/tcp
如要允許端口 80 上傳入的 UDP 流量,也可以用相同的語(yǔ)法:
sudo ufw allow 80/udp
如要拒絕所有這些示例中的流量,輸入:
sudo ufw deny 80sudo ufw deny 80/tcpsufo ufw deny 80/udp
也可以編寫(xiě)與特定 IP 地址、甚至子網(wǎng)相關(guān)的規則。阻止一個(gè)特定 IP 地址的規則是:
sudo ufw deny from xxx.xxx.xxx.xxx
要阻止整個(gè)子網(wǎng),就需要輸入整個(gè)地址范圍。例如,對于這個(gè) C 類(lèi)網(wǎng)絡(luò ),您可以鍵入:
sufo ufw deny from 192.168.1.0/24
如果需要只允許來(lái)自一個(gè) IP 地址或子網(wǎng)的流量,也可以使用同樣的語(yǔ)法,只需將 deny 替換為 allow。
也可以編寫(xiě)防火墻規則來(lái)治理整個(gè)服務(wù)。例如,如果要拒絕 SSH 流量,該規則將是:
sudo ufw deny ssh
如要允許 SSH 流量,鍵入以下命令說(shuō)明此事實(shí):
sudo ufw allow ssh
若您需要撤消已經(jīng)寫(xiě)好的一條防火墻規則,可以如下刪除該規則:
sudo ufw delete deny ssh
要完全停止防火墻,可以使用以下命令選擇禁用它:
sudo ufw disable
不建議禁用運行必要服務(wù)或包含敏感數據的防火墻。即使暫時(shí)停止這個(gè)保護一會(huì )兒,也有可能將服務(wù)器及其資源暴露于威脅之中。
采取措施防止入侵后,您需要建立一個(gè)監視系統,以檢測是否已經(jīng)發(fā)生對服務(wù)器的攻擊。如果收到關(guān)于攻擊的警報,您就可以做好充分準備來(lái)處理它。Tripwire(參見(jiàn) 參考資料)提醒您服務(wù)器上的系統文件發(fā)生了未經(jīng)授權的活動(dòng)。使用 Logwatch(參見(jiàn) 參考資料)來(lái)創(chuàng )建可以分析的報告。
Tripwire 為您的計算機建立正常系統二進(jìn)制文件的基線(xiàn)。然后,它根據此基準通過(guò)電子郵件警報或通過(guò)日志向您報告任何異常情況?;旧?,如果系統二進(jìn)制文件有所改變,您會(huì )知道這一變化。如果一個(gè)合法的安裝造成這樣的改變,這沒(méi)有關(guān)系。但如果二進(jìn)制文件因一個(gè)木馬式安裝而被修改,您就要從一個(gè)起點(diǎn)調查攻擊并解決問(wèn)題。
sudo aptitude install tripwire
您可能會(huì )被要求創(chuàng )建一個(gè)密碼。如果這樣,請記下它以備將來(lái)使用。

hostname(在這里要使用 Emacs): hostname ~ # emerge tripwirehostname ~ # cd /etc/tripwirehostname ~ # emacs -nw /etc/tripwire/twpol.txthostname ~ # emacs -nw /etc/tripwire/twcfg.txt
hostname ~ # cd /etc/tripwire ; sh ./twinstall.sh
hostname ~ # tripwire --init
當這個(gè)過(guò)程完成之后,Tripwire 就創(chuàng )建好了您的系統的快照。該基線(xiàn)將用來(lái)檢查是否有任何重要的文件已被更改。如果有,您會(huì )收到警報。
您也可以從 Tripwire 運行報告。從編輯器鍵入以下命令:
sudo twprint --print-report -r\
現在,提示符變?yōu)橐粋€(gè)向右的尖括號 (>)。 在這個(gè)新的提示符下,鍵入:
/var/lib/tripwire/report/[hostname]-YYYYMMDD-HHMMSS.twr| less
如果不知道運行報告的確切時(shí)間,導航到目錄 /var/lib/tripwire/reports,查看完整的文件名。
如要調優(yōu) Tripwire 的功能,可以使用 twadmin。您還可以設置一個(gè) cron 作業(yè),每天將這份報告的副本用電子郵件發(fā)送給您,或配置 Tripwire 在報告異常情況時(shí)向您發(fā)送電子郵件。
Logwatch 可幫助您監視系統的日志文件。此程序需要有效的郵件服務(wù)器在網(wǎng)絡(luò )上通過(guò)電子郵件發(fā)送日志給您。如果想修改 .conf 文件,需要打開(kāi) /usr/share/logwatch/default.conf/logwatch.conf,并尋找 MailTo 這一行。將 user.name.domain.tld 改為您的電子郵件地址。
您可以用這個(gè)命令安裝 Logwatch:
sudo aptitude install logwatch
如要將日志通過(guò)電子郵件發(fā)送給自己,鍵入:
logwatch --mailto email@youraddress.com --range All
按 Enter 鍵將報告的副本發(fā)送到指定的電子郵件地址。如果您沒(méi)有在網(wǎng)絡(luò )上運行郵件服務(wù)器,但仍希望看到 Logwatch 報告,下面的命令將它提供到您的屏幕上:
logwatch --range All --archives --detail Med
輸出跨越多個(gè)屏幕;按 Shift-Page Up 可移到報告的開(kāi)頭。
在 GNU/Linux 系統上,可以將用戶(hù)組織到各個(gè)組中,進(jìn)行方便的管理。但您還需要通過(guò)權限來(lái)提供對文件和文件夾的訪(fǎng)問(wèn)。沒(méi)有具備完全訪(fǎng)問(wèn)權的 “超級用戶(hù)” 允許用戶(hù)訪(fǎng)問(wèn)計算機或網(wǎng)絡(luò )上的所有東西,就像在 Windows 操作系統上一樣。GNU/Linux 系統旨在提高安全性;它使用一個(gè) 3x3 系統來(lái)授予權限:
永遠,永遠,永遠不要在 GNU/Linux 系統中作為 root 用戶(hù)運行任何東西。在需要以 root 身份運行一些程序時(shí),使用 sudo 命令。如果您提供密碼,任何系統管理員都可以使用 sudo 命令。要查看如何以及何時(shí)使用了 sudo 密碼,請查看 /var/log/messages。因為您要查找使用 sudo 的所有地方,使用 grep 命令來(lái)查找它們。
首先授予用戶(hù)權限:例如,r/w/x 意味著(zhù)用戶(hù)可以讀、寫(xiě)和執行文件夾中的一個(gè)或多個(gè)文件。您可以將數值應用到每個(gè)權限。因此,如果一個(gè)用戶(hù)可以讀、寫(xiě)和執行,將相應的數字 4、2 和 1 相加,總數為 7。接下來(lái)是組權限。例如,該用戶(hù)的組的其他成員可以讀和執行,但不能寫(xiě)。相應的值相加后得到 5。其他類(lèi)別的用戶(hù)只能讀文件,因此他們的數值為 4。因此,該文件或文件夾的權限是 754。
當權限被設置為 777 時(shí),每個(gè)用戶(hù)都被賦予讀、寫(xiě)和執行的能力。chmod 命令可更改文件和目錄的權限。如果您想改變一個(gè)用戶(hù)的所有權,使用 chown 命令。要更改某個(gè)文件或目錄的組所有權,使用 chgrp 命令。
加密是擾亂存儲在計算機上的數據的過(guò)程,使得沒(méi)有密鑰將數據重新創(chuàng )建為原始形式的人無(wú)法讀取它。已加密的數據可以存儲在本地計算機上,存儲在網(wǎng)絡(luò )共享上,或傳輸給其他用戶(hù)和計算機。
您可以加密整個(gè)硬盤(pán)或磁盤(pán)的分區。這應該在安裝時(shí)完成。您也可以通過(guò)加密保護數據,方法是創(chuàng )建一個(gè)目錄,并對其進(jìn)行加密。例如,如果您設置了一個(gè)文件服務(wù)器,您可能要加密保存敏感信息的目錄。
在保護您的數據之前,您需要鍵入以下命令,安裝來(lái)自 Ubuntu 存儲庫的 eCryptfs:
sudo aptitude install ecryptfs-utils
安裝時(shí),建立一個(gè)專(zhuān)用目錄,在這里可以存儲加密的文件和文件夾。為此,在終端中鍵入以下命令:
ecryptfs-setup-private
您會(huì )被要求輸入登錄密碼,然后創(chuàng )建一個(gè)掛載通道(或為您生成一個(gè))。寫(xiě)下這個(gè)密碼:您將需要它來(lái)手動(dòng)恢復數據。登出您的計算機,然后重新登入。登錄后,在 ~/Private 中寫(xiě)入的任何文件夾或文件都將被加密。
在緊急情況下,您可能需要恢復加密的數據。您可以自動(dòng)恢復,方法是確保您的硬盤(pán)驅動(dòng)器已掛載,然后打開(kāi)終端。在提示符下,運行:
sudo encryptfs-recover-private
按照提示,在數據解密后,您就可以訪(fǎng)問(wèn)該數據。請確保您將它保存在其他位置,以便可以再次訪(fǎng)問(wèn)它。
現在,您已經(jīng)為強化服務(wù)器創(chuàng )造了堅實(shí)的基礎,再采取幾個(gè)步驟來(lái)加強已經(jīng)落實(shí)到位的安全措施。
在測試或開(kāi)發(fā)服務(wù)器上測試更新和補丁之前,切勿將它們安裝到生產(chǎn)服務(wù)器上。因為服務(wù)器上可能沒(méi)有安裝 GUI,您必須通過(guò)終端下載任何更新和補丁。當準備好安裝更新時(shí),鍵入命令 sudo apt-get update,然后鍵入 sudo apt-get dist-upgrade。在某些情況下,您需要重新啟動(dòng)服務(wù)器。
雖然病毒不會(huì )對 GNU/Linux 服務(wù)器構成太大的威脅,但如果您運行 Samba 來(lái)共享 Windows 文件,請確保已安裝像 ClamAV 這樣的防病毒掃描程序,這樣受感染的文件就不會(huì )擴散到整個(gè)系統。除了病毒、蠕蟲(chóng)、木馬等之外,還存在黑客將 rootkit 安裝到您的系統上的危險,它可以獲取 root 級別的權限來(lái)捕獲密碼,攔截流量,并創(chuàng )建其他漏洞。為了對抗這種威脅,在服務(wù)器上安裝 Rootkit Hunter (rkhunter) 和 chkrootkit 等工具(參見(jiàn) 參考資料 中 “增強 Linux 桌面” 的鏈接,其中包含了說(shuō)明)。
囊括 TB 級信息、企業(yè)網(wǎng)站或目錄服務(wù)目錄的服務(wù)器需要有一個(gè)備份和恢復策略。這不僅是有意義的,并且有時(shí)電子發(fā)現法律法規會(huì )要求您根據要求交出信息。大多數企業(yè)網(wǎng)絡(luò )可以通過(guò)多臺服務(wù)器提供冗余能力,而較小的網(wǎng)絡(luò )可以通過(guò)虛擬化以及備份和恢復軟件來(lái)應急。
如果打算從 Ubuntu 存儲庫運行備份和恢復軟件,Simple Backup (SBackup) 是一個(gè)很好的選擇,因為可以從命令行界面或 GUI 來(lái)運行它。在將服務(wù)器數據備份到企業(yè)網(wǎng)絡(luò )上時(shí),重要的是要在服務(wù)器之外存儲備份文件。便攜式存儲設備以合理的價(jià)格提供了大量的存儲空間,它們是存儲備份文件和目錄的不錯選擇。
作為系統管理員,您需要為服務(wù)器的 root 帳戶(hù)和組織中的其他敏感帳戶(hù)(比如 MySQL 數據庫或 FTP 連接)設置密碼。在 Ubuntu 服務(wù)器中,您不能強迫用戶(hù)使用強密碼,但您肯定可以訓練用戶(hù)如何創(chuàng )建一個(gè)強密碼。
如果您要運行目錄服務(wù)(比如 OpenLDAP),通過(guò)一些可用的配置選項,您可以選擇在您的網(wǎng)絡(luò )中實(shí)施強密碼。
密碼應至少八個(gè)字符長(cháng),至少包含三個(gè)以下字符:一個(gè)大寫(xiě)字母、一個(gè)小寫(xiě)字母、一個(gè)數字或符號。教用戶(hù)使用強密碼、而不將復雜的密碼寫(xiě)在便簽上的一個(gè)方法是,讓他們使用口令句。類(lèi)似 Myf@voritecolorisBlue! 的密碼比 M$iuR78$, 更容易記住,并且滿(mǎn)足最低復雜性標準。
Microsoft 的 Scott Culp 起草了他所稱(chēng)的 10 條安全的永恒定律(參見(jiàn) 參考資料)。如果應用得當,對管理員的 10 條定律是強化任何系統的良好基礎。他說(shuō),安全性不關(guān)乎風(fēng)險規避,而是關(guān)乎風(fēng)險管理。事情總是會(huì )發(fā)生。 有可能發(fā)生惡意軟件蔓延,您的網(wǎng)站可能會(huì )被攻擊,或可能會(huì )受到自然災害的破壞。在某些時(shí)候,您的系統的安全性將受到考驗。確保您已做了可以保護它的一切工作,在處理威脅的同時(shí)讓您的服??務(wù)器及其資源對依賴(lài)它們的用戶(hù)仍然可用。
請記?。簩Π踩珕?wèn)題投入更多技術(shù)并不會(huì )解決它。系統管理員的警惕、管理層的支持以及用戶(hù)的接受都必須全部到位,安全策略才可以有效地工作。
本文和 “增強 Linux 桌面” 中所概述的任務(wù)應該為您提供了有關(guān)系統安全性主題的堅實(shí)知識基礎。請記住,這些文章都是針對初學(xué)者的,為進(jìn)一步了解 GNU/Linux 安全性奠定了基礎。
聯(lián)系客服