歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux服務器

安全之道 部署Linux五個步驟

 道,意味著途徑或方法,是一個對實現想要的結果而設置的指南或規則,與其它道類似,安全需要一個結構化的、系統化的方法,同時,它也應該是整體的、涵蓋系統生命周期(從計劃到退休)的每一個部分。

在本文中的道由五個步驟組成,每個Linux系統要建立一個基線都應該通過這些步驟。這些步驟不是開始也不是最終的安全方案。

  我詳細討論每個步驟時,我將部署兩個樣例系統(一個Fedora桌面系統和一個Debian服務器系統)來展示安全是如何實施的,我選擇 Fedora是因為它是現在最流行的發行版,它可以為任何目標工作得很好,它有許多桌面增強特色,並且是用戶推薦的無命令行的最容易使用的Linux發行版,我選擇Debian作為我們的服務器平台是因為它是輕量級的、有非常悠久的歷史而且很穩定、有一個強大的支持社區和大量的文檔。這兩個都是非常優秀的平台並且都有它們自己的內置安全標准。如果你喜歡其它的發行版,這裡指出的步驟可以應用到任何的系統。

  第一步:計劃

  第一步也是最重要的一步,因為你在這裡做出的決策將影響到全盤的安全,第一步定義系統將部署成什麼樣的目標,它將是一個小的郵件服務器嗎?或者是一個桌面系統嗎?又或是一個入侵檢測系統?一旦你有一個目標後,你就可以用它來指導整個過程,然後將精力集中在如何盡可能地提供更安全的環境上,安全永遠都不應該妨礙功能的完整,畢竟部署一個無人能用的系統有什麼用呢?!

  接著,你需要為你的系統決定一個安全目標,主要目標應建立在最小訪問或最小權限原則之上,這就意味著僅僅為用戶和程序提供系統操作必要的最小權限,你應該還有其他安全目標,如用殺毒軟件掃描每個文件或用LDAP對每個用戶進行認證,但是最小權限應是不變的原則。

  實現這些目標,在你動手前,你應該思考如何實現它們,回答一些簡單的問題將有助於你在步驟2和4裡作出正確的決策。系統將作為一個服務器還是一個桌面系統?這個問題決定了你新系統上的大部分配置;用戶將在本地訪問還是遠程訪問這個系統?這是另外一個重要的與安全有關的配置問題;系統需要一個桌面環境嗎?

  如果你對命令行非常熟悉,將系統部署成無頭的或者說無GUI接口的,將X window系統從你的安裝中刪除,你將很意外地減少系統的攻擊面(你暴露在外的區域),另一方面,如果你或你的同事需要一個GUI,只安裝一個GUI並弄清楚如何將系統正確地鎖定,安裝服務器時不安裝X,安裝桌面系統時才安裝X是一個值得豎大拇指的方法。

  最後,計劃應用程序將會在系統上做什麼,判斷它依賴什麼庫以及比不可少的操作,常見的有:系統運行一個遠程命令後不必須的庫也被使用了,掩飾住了入侵者的姿態或探測網絡,如果你不需要某個包請不要安裝它。

  當你弄清楚了這些問題和答案後,寫到你的安裝日志或筆記簿並保持更新。

  步驟二:安裝

  寫下這些計劃後,進入建造步驟,從你在計劃步驟中設定的安全目標的應用程序開始,由於空間限制,下面的章節不會給樣例安裝列出一個詳細的檢查列表,我僅將與安全有關的選項做了記號,在第一步中,在安裝日志中寫下你在安裝過程中的選項,在重新安裝系統時就可以派上用場了。

  Fedora Core 7

  從一個Fedora 7 ISO文件(可以在發行鏡像站點找到)啟動到一個干淨的系統,在確定你的鍵盤和語言設置好後,來到磁盤分區部分,對於大多數桌面發行版,安裝程序直接就把分區配置好了,但是,如果這個系統是供某些工作敏感的人准備的,請將/home文件夾放在一個獨立的分區上。

  分區完成後進入啟動管理器選項,選擇GRUB並為其設置一個密碼,給啟動管理器設置一個密碼是最佳實踐,它可以幫助你在磁盤或系統被盜的情況保護你的數據不會丟失。一個好的密碼應該比較復雜,避免使用字典中的單詞、純數字、純字母和非字母數字混合的符號。

  下一個屏幕,選擇DHCP,因為客戶端機器通常不需要靜態的ip地址,如果你需要使用靜態ip地址,在你網絡的某個地方務必使用網絡地址轉換(NAT),接下來,設置一個主機名和域,並為root用戶設置一個復雜的密碼,在軟件包選擇屏幕,如果選擇自定義安裝,請仔細檢查你選擇的軟件包,在自定義選擇屏幕,只選擇一個桌面環境[譯者注:GNOME/KDE等],多安裝一個桌面環境就多一分危險,保留默認的選擇GNOME,檢查其他每一個選項,你會發現有許多軟件包將被安裝(圖1),在我的安裝中有843個軟件包,你的數字可能不同,排除你不需要的軟件包,每個包前面都一個可選框,當你選擇完軟件包後,系統將重新啟動
安全之道 部署Linux五個步驟(圖一)

  圖1 在Fedora 7下選擇要安裝的軟件包

在重新啟動後,提示你啟用防火牆,請啟用它,然後添加你在這個系統上需要用到的端口/程序(圖2),在SELinux設置屏幕,如果你要啟用它,請將策略設置為強制模式(圖3),給不熟悉SELinux的人解釋一下,它是一個基於策略的保護架夠,開始是由美國國家安全局(NSA)開發,它在操作系統以及大多數流行的應用程序如Apache上增加了一層安全保障,使用SELinux一個不好的方面是它可能引起受保護的程序(也有可能是其他程序)崩潰,如果你遇到問題,你可以通過setenforce命令或用文本編輯器來修改策略,然後會提示你創建一個用戶帳號,在經過幾個其他選擇後,來到第一次登陸屏幕

安全之道 部署Linux五個步驟(圖二)

圖2 Fedora防火牆配置

  安全之道 部署Linux五個步驟(圖三)

 圖3 SELinux顯著地增強了你系統的安全

  Debian

  用Debian ISO(這裡使用的4.0r1版本)開始一個空白的服務器安裝,因為在這個例子中我使用這個系統作為一個服務器,讓我們用一個更簡單的方法來安裝,相對桌面系統而言,服務器通常是惡意攻擊者的美味目標,因此你需要額外防備,特別是當它被放在公共網絡或互連網上的時候。

  在設置好時區、國家等內容後,需要為你的服務器設置一個主機名和域,接下來開始分區,將系統目錄設置到它們各自的分區,繼續將/home目錄設置為一個獨立的分區,並將加密你的分區,聽起來好象很困難,但對Debian下分區工具而言,這很容易辦到,從選項中選擇分區向導,然後選擇向導 – 使用全部磁盤,並設置為加密的LVM,使用全部磁盤並選擇使用一個獨立的home分區選項,Debian強烈建議你隔離你的目錄,將根、程序、用戶數據獨立進行分區,但這樣分區會很難管理。當提示時(圖4),將改變寫入磁盤,輸入一個復雜的密碼來加密卷,接著,設置你的時區和root密碼,然後基礎安裝開始了。

  完成基礎安裝後,接下來的幾個屏幕都不是很重要了,直到選擇軟件包的屏幕,在我們的方案裡,只安裝一個Apache Web服務器,最後,安裝GRUB啟動管理器,你的新系統就准備好了,重新啟動後,立即用密碼鎖定GRUB,在/boot/grub/menu.lst文件中增加下面的幾行
timeout 30
password yourpasswordhere  安全之道 部署Linux五個步驟(圖四)

  圖4 Debian使復雜的分區方案變得簡單

  步驟三:打補丁

接下來就該為系統打補丁了,雖然有時很乏味,但打補丁還是必需的,畢竟843個包需要許多保護的,同時,你需要將系統設置為實時更新,以便出現新的威脅時可以及時處理,慶幸的是,本文中的樣例發行版做升級都很容易,在Fedora客戶端,你一樣可以很容易地進行升級,在第一次登陸後,系統自動檢查更新(圖5),Fedora使用Yellow Dog升級管理器,它比yum更有名,它有一個新的GUI界面 - 小狗- 來自動執行升級過程,但是,這個彈出式提示好象只能在GNOME環境下工作,如果你想手動升級你的系統,還可以使用命令yum list updates或yum info updates來查看哪個軟件包需要升級,你也可以不加任何參數運行yum來升級所有安裝了軟件包的可用升級

安全之道 部署Linux五個步驟(圖五)

 

                       圖5 在安裝完畢後Fedora立即檢查更新

  繼續樣例服務器,Debian使用一個叫做aptitude(apt)的工具來升級軟件包,apt傳統上是作為一個軟件包管理器使用,如 RedHat的RPM一樣,但是它也可以象yum一樣進行更新檢查了,它使用預先定義好的和自定義的源列表來檢查你安裝的軟件包的更新,如果在你的 /etc/apt/sources.list文件中沒有下面這行,請將其添加進去,它讓你可以在主干穩定的US歸檔服務器上檢查更新。

  deb http://http.us.debian.org/debian stable main contrib non-free

  然後運行apt-get升級命令,要為你系統升級所有的包,在命令提示符後輸入apt-get upgrade(圖6),系統將開始檢查,得到你的同意後,開始下載並應用更新,在運行apt-get前如果你想看看你安裝了哪些軟件包,使用命令 dpkg –l,要設置為每周檢查一次更新,使用下面的命令或你自己編寫腳本並用crontab來安排執行時間。

echo /usr/bin/apt-get update > /etc/check4updates
echo /usr/bin/apt-get upgrade >> /etc/check4updates
chmod 750 /etc/check4updates
crontab –e

安全之道 部署Linux五個步驟(圖六)

將下面這行代碼添加到你的crontab文件,讓腳本在每周三上午3:30執行:

30 3 * * 3 /etc/check4updates
  注意:如果你是編譯的你自己的包或從另一個源下載的包,使用yum或apt-get可能不能進行自動升級。

  步驟四:加固

  在給你的新系統打好補丁後,你可能需要額外的步驟來加固它,在你的計劃中應該有一個安全目標,參照這些目標確定要做哪些事情,你的目標越多,事情就越多,盡量保持簡化,實際上復雜的設置會讓系統更不安全,因為它們常常導致配置失效,同時,在你的安裝日志中記錄這些步驟。

  Fedora實例已經准備好展示兩個重要的步驟來增強安全性:啟用SELinux和安裝一個防火牆。在大多數典型的使用桌面的情況下,安裝一個殺毒軟件就足夠了,對於Debian盒子而言,我選擇了三個可以在任何服務器上使用的步驟:使用sudo、鎖住ssh和使用一個限制性的iptables防火牆,這些項目應該在任何服務器上考慮部署,如果需要,它們也可以在桌面系統上應用。

  sudo

  sudo對於限制root訪問而言是一個偉大的程序,它應該在任何服務器上接受嚴格的監視,將用戶添加到/etc/sudoers文件中,限制它們使用su來執行特殊的命令,訪問特殊的目錄或訪問網絡主機,在sudoers文件中的任何用戶只要在它運行命令前輸入sudo來進入root環境即可執行想執行的程序,這比起將root密碼告訴每個人來將更容易,而且更安全了。

  ssh

  ssh是目前linux系統上標准的遠程訪問協議,在它的默認配置下,它有一些設置明確地需要你進行鎖定,將下面兩行添加到/etc/ssh/sshd.config文件中: 

PermitRootLogin no
X11DisplayForwarding no
  第一行阻止root用戶通過ssh登陸到服務器,永遠都不要用root用戶登陸ssh,第二行禁用了X轉發(它允許用戶快速地從你的服務器啟動一個 X會話),在本例中,X並沒有安裝,因此這不是問題,你應該通過chroot技術或使用TCP Wrappers進一步鎖定ssh,由於空間限制,我忽略了這些配置步驟。

  iptables防火牆

與其長時間討論如何正確配置一個防火牆,還不如使用我編寫的現成腳本,我編寫了下面的腳本並配有注釋來加固Debian系統,它限制了新發起的 ssh、http、ssl連接通信,將本例中的ip地址修改為你服務器的ip地址,想了解更多關於iptables可用選項的細節,請參考幫助文檔,當安裝你自己的防火牆時,不要忘了只在iptables中開放必須的端口以減小攻擊面的目標。  

#!/bin/sh
  PATH=/usr/sbin:/sbin:/bin:/usr/bin
  #FLUSH PREVIOUS TABLE ENTRIES
  iptables --flush
  #CHANGE DEFAULT POLICIES FROM
  #ACCEPT TO DROP
  iptables -P INPUT DROP
  iptables -P FORWARD DROP
  iptables -P OUTPUT DROP
  #ALLOW LOCAL LOOPBACK TRAFFIC
  iptables -A INPUT -i lo -j ACCEPT
  iptables -A OUTPUT -o lo -j ACCEPT
  #ALLOW ESTABLISHED CONNECTIONS
  iptables -A INPUT -m state --state \
  ESTABLISHED,RELATED -j ACCEPT
  iptables -A OUTPUT -m state --state \
  ESTABLISHED,RELATED -j ACCEPT
  #ALLOW DEFINED TRAFFIC
  #
  #SSH - 22
  iptables -A INPUT -d 192.168.1.2 -p tcp \
  --dport 22 --sport 1024:65535 -m state \
  --state NEW -j ACCEPT
  #HTTP - APACHE -80
  iptables -A INPUT -d 192.168.1.2 -p tcp \
  --dport 80 --sport 1024:65535 -m state \
  --state NEW -j ACCEPT
  #SSL - 443
  iptables -A INPUT -d 192.168.1.2 -p tcp \
  --dport 443 --sport 1024:65535 -m state \
  --state NEW -j ACCEPT
  將這些腳本保存到本地,然後拷貝或移動到/etc/network/if-up.d目錄,當系統啟動網絡開啟後它將被執行,如果你西藏應用這個配置到一個基於Redhat的系統上,你只需簡單地運行上面的腳本並用iptables-save命令來重設規則,可以不用重新啟動系統。

  盡管你可以手動一步一步執行這些步驟,但有一款工具可以使得做這些事情更容易,他就是Bastille(圖7、圖8),它通過問題/答案的形式將你的安全設置信息保存到腳本中,然後將其應用到真實的系統上,在互聯網上也可以找到許多對於大部分發行版和應用程序都是可用的手工安全檢查列表,最好的檢查列表就是由互聯網安全中心完成的檢查標准,這些標准包括了詳細的設置和對特定操作系統及流行的應用程序有關的最佳實踐描述,它們是Bastille最好的伙伴。

安全之道 部署Linux五個步驟(圖七)

 圖7 Debian中的Bastille
安全之道 部署Linux五個步驟(圖八)

步驟五:監視/審核

  最好一步是一個不斷進行的過程,持續監視你的系統將驗證實現你的安全目標是否超時了,最有用的工具是從/var/log/messages文件提取系統日志,你可以看到許多與系統和應用程序安全有關的信息,許多應用程序有它自己的日志文件,也請仔細審核它們,如果你有許多系統,你應該使用一個中心日志文件服務器來收集日志,在syslog.conf文件可以很容易地進行配置。

  一個新的代替叫做Splunk(圖9),它有免費的版本(每天限制大小是500M)和企業版本,最讓人高興的是它安裝超級容易,並且你可以通過一個革新的基於web的界面象使用google命令似的搜索日志。

安全之道 部署Linux五個步驟(圖九)

與日志用途一樣,它們也不提供一個完整的關於你的安全設置是否工作良好的圖形,僅僅經常審核能實現目的,因此我要告訴你如果你的安全措施仍然適當並在運行,我不建議你為每個系統做滲透測試,但是有效性測試你的設置是一個很好的保險措施,創建檢查列表或腳本來測試那些維護你系統安全目標的設置是很重要的,代替檢查列表,你可以使用—assess開關運行Bastille來得到一個你目前配置的安全報告,你也可以使用CIS檢查標准(它依賴於 Bastille)作為一個基准檢查列表,如果你有能力購買它,你能得到一個顧問服務並用他/她自己的測試校驗你的安全,你會更加鎮靜,特別是你在一家厲害的管理企業工作時。

安全之道 部署Linux五個步驟(圖十)

上路

  在你的安裝中使用這些步驟是第一步,這個簡單、有序的戰略將給你的系統帶來更多的安全保障,但是,每個系統都不一樣,確定你的安全目標匹配你的系統需要,安全並不困難,使用簡單可重復的步驟,保留最佳實踐和常見弱點,

在任何可能的地方實行最小權限,經常查看你的日志,你將發現你已經上路了。

Copyright © Linux教程網 All Rights Reserved