2011年7月30日 星期六

DAF 2011 企業網通效能與安全管理研討會

   「行動裝置正夯、雲端服務當紅」年代,我們的生活與工作周遭,到處充斥著各種可以連上網路的終端設備,例如:筆記型電腦、智慧型手機、以及近來最熱門的平板電腦裝置。許多人都會擁有一部、或多部上網終端裝置,迅速方便地連接到網路、存取所需要的資源。
 
    一幅看似美好的資訊生活藍圖!
 
    但是當這些個人的終端裝置湧入企業辦公環境後,如果沒有做好各種事前防備,對企業IT管理者而言無疑是一場惡夢!蜂擁而來的各種網路問題,將淹沒IT管理者的信箱與工作排程!因此,如何優化網通架構與資訊安全,是現代企業IT管理者必須正視的問題!
 
    DIGITIMES於8月12日(五),假台北六福皇宮B3舉辦本年度【企業網通架構與安全管理研討會】。期望透過各界菁英專題、成功案例分享、相關解決方案展示,為台灣企業資訊部門主管、網管MIS,以及產業各應用部門從業者、各式IT應用解決方案業者、資服/系統整合業者等,提供一個溝通、交流與合作的平台!活動精采可期,敬邀報名參加。


■  活動時間  :  2011年8月12日(五) 08:30-16:00
■  會議場地  :  臺北六福皇宮 B3 會議廳(臺北市南京東路三段133號)
■  洽詢專線  :  +886-2-8712-8866 分機319 洪小姐
■  傳真報名  :  +886-2-8712-0232
■  參加方式  :  免費參加(請攜帶名片1張)
■  報名方式  :  線上報名(報名截止日為8月9日(二))


TimeTopicSpeaker
08:30~09:00來賓報到
09:00~09:40APT陰魂不散,網管人變身抓鬼大師秘辛中央研究院資訊創新研究中心
Xecure-Lab首席資安研究員
  吳明蔚 博士
9:40~10:20企業跨國私有網路注入雲端的整合與應用香港商第一線有限公司台灣分公司
大中華區資深產品經理   陳賢曦
10:20~10:40Tea/Break
10:40~11:20雲端服務環境中的企業網路安全架構思科(Cisco)
無邊界網路業務開發經理   郭旭傑
11:20~12:00網路通訊核心下的雲端實際應用與資訊安全是方電訊股份有限公司
協理   李立國
12:00~13:30午餐
13:30~14:10BYOD (Bring Your Own Device)-企業行動設備存取控制解決方案中飛科技
技術支援部協理   張偉翰
14:10~14:30Tea/Break
14:30~15:10掌握個資防護關鍵,善用雲端科技保護端點與行動安全翔偉資安科技有限公司
產品經理   黃星運
15:10~15:50以Android終端裝置導入雲端服務所面臨的風險與解決方案國立交通大學網路測試中心
資訊安全測試部門經理   王阜毓
15:50~16:00抽獎活動
16:00End
備註:主辦單位保留變更議程順序、內容及相關事項之權利。

DTF 2011 Taiwan 多媒體影音技術論壇

3.0多媒體CE世代,具優質影音體驗者方能勝出
 
Google在4月份時,曾針對平板電腦使用者進行使用行為調查分析,在1,400餘位平板電腦用戶的調查中,有接近8成的用戶常用平板電腦玩遊戲,有超過5成的用戶會用平板聽音樂、看影片。
 
不只是Google,幾乎所有的市場調查研究機構所作的平板電腦使用行為調查中,最後統計得到的結果,其實都趨於相近:也就是說,平板電腦的用途,主要以多媒體及影音應用為主。
 
不只是平板電腦如此,市場銷售量更大的智慧型手機,用戶除了拿來打電話之外,另一重要的用途,也是作為個人行動影音娛樂中心使用,包括聽音樂、玩遊戲、看影片。
 
從上述情況分析,正代表著如何提供消費者最佳的使用者體驗,已經成為3C產品成功銷售的重要課題。而使用者體驗的過程中,尤其是在產品功能規格同質性愈來愈高的情況下,流暢完美的影像、悅耳動人的音效,正是提供良好使用者體驗的重要元素,也是產品差異化的關鍵。
 
從種種的市場、產品現況作分析,可以發現,多媒體影音品質正是強化行動數位產品加值的重要元素,為什麼SONY、SHARP、PANASONIC電視的價格能比其他品牌電視貴上一截?關鍵因素正在於消費者所認知的影像和音效品質。
 
另外,伴隨著數位、網路運算技術的成長,消費性電子產業也正迎向全新的應用變革。影音產品誔生於類比技術,之後進化到數位化儲存、傳送、播放技術,自2011年起,正式走向結合網路傳輸、無線傳遞的全新應用發展,亦即所謂的消費性電子3.0世代。而在CE 3.0世代的技術應用中,影音傳遞介面、無線影音傳送標準的發展趨勢,成為廠商最關心的課題。
 
為了提供產業界能夠更精確的掌握到多媒體技術發展趨勢,DIGITIMES特別規畫在8月11日舉辦「2011多媒體影音技術論壇」。會中邀請到QuickLogic、意法半導體、美商傳威(TranSwitch)等多媒體技術領導廠商,針對多媒體處理、應用處理器設計、影音傳輸介面等影音關鍵技術,進行深入的趨勢分析與應用觀察,內容精彩不容錯過。


■  主辦單位  :  DIGITIMES
■  鑽石廠商  :  TranSwitch
■  黃金廠商  :  QuickLogic、意法半導體
■  活動時間  :  2011年8月11日(星期四) 09:00~16:00
■  會議地點  :  六福皇宮 B3會議廳(台北市南京東路三段133號)
■  參加方式  :  免費活動
■  線上報名  :  線上報名、傳真報名、下載報名表(報名截止日為8月5日(五))
■  傳真報名  :  +886-2-8712-0232
■  洽詢專線  :  +886-2-8712-8866 分機320 鄭小姐



TimeTopicSpeaker
9:00~9:30來賓報到/Registration
9:30~10:10應用於多媒體行動設備的多核心系統晶片設計趨勢工研院資通所
  
10:10~10:50高畫質數位接頭的融合趨勢
Fusion of High Speed Interconnect
美商傳威 TranSwitch
Director of High Speed Interconnect Business Development   Limas Lin
10:50~11:10Break
11:10~11:50VEE for Superior Display Viewability and User ExperienceQuickLogic
Senior Product Marketing Manager   Paul Karazuba
11:50~13:30Lunch Time
13:30~14:10新興數位家庭技術 – 全新服務與用戶體驗Emerging Technology for Digital Entertainment – New Services & User Experience
意法半導體 ST
市場開發經理   Nicolas Friedrich
14:10~14:30Break
14:30~15:10確認中威信科電
  Gilbert Hsueh
15:10~15:50多媒體應用處理器的單晶片系統開發設計趨勢國立成功大學多媒體單晶片系統實驗室
教授   李國君
備註:主辦單位保留變更議程順序、內容及相關事項之權利。

2011年7月27日 星期三

CentOS 基礎設定(下)


前言

在前二篇文章 CentOS 基礎設定(上)以及 CentOS 基礎設定(中),我們學習了 CentOS 主機的基礎設定。這些設定分別是:建立一般使用者帳號以便管理時使用;網路連線設定及連通測試;了解 SELinux 安全增強機制;將遠端允許 root 管理帳號登入的權限移除,以降低 CentOS 主機被密碼暴力測試工具攻擊的機會;了解  CentOS 主機的啟動流程,以及知悉何謂啟動模式等級 RunLevel;建立順手的操作環境 Shell 及檔案編輯器 VIM 環境設定;透過 sudo 建立管理者帳號的使用機制;將套件管理工具 YUM 下載來源由國外重新指向至台灣本地鏡像網站,以便縮短軟體套件及相依套件的下載時間。


本篇文章是 CentOS 基礎設定系列文章的最後一篇。首先要學習的是,當 CentOS 主機安裝設定完成後設定上線運作的方法,使系統定期自動寄送系統的相關記錄,並發至 CentOS 主機管理人員的郵件信箱內。這些相關紀錄包含:主機硬碟空間的使用率、郵件發送情況、網路服務運作狀況等資訊。因此企業中忙碌的 IT 管理人員,每天僅需檢查所收到的系統資訊郵件內容、檢查磁碟空間是否足夠、注意主機有無被攻擊的狀況等,並進行適當的調整即可,而不需要每天手動遠端登入至 CentOS 主機查看相關訊息,以節省寶貴的時間。


接下來學習的是,CentOS 遠端連線 SSH 的基本安全性保護設定,並在主機上線後,將系統時間定時自動與網際網路上的時間伺服器,或者與企業內部自行架設的時間伺服器校對時間。了解系統在進入啟動模式等級 RunLevel 後,會將哪些服務啟動,以及開啟哪些相對應的 Port。同時視系統需求關閉不必要的服務,以減少系統的負載並降低系統被攻擊的機會。最後,則是透過安裝 RPMforge,來增加 YUM 套件管理工具中可安裝的套件數量。
實作環境
* CentOS 5.5  32bit (Kernel 2.6.18-194.el5)
* sendmail-8.13.8-8.el5
* logwatch-7.3-8.el5
* xinetd-2.3.14-10.el5
* tcp_wrappers-7.6-40.7.el5
* pstree (PSmisc) 22.2
* yum-3.2.22-26.el5.centos
* rpmforge-release-0.5.2-2.el5
收集系統資訊後定期寄送給管理人員
當 CentOS 主機安裝、設定完畢並上線運作之後,我們希望主機能夠在固定時間(如每小時、每天、每週、每月)發送相關資訊至主機管理人員清單位址,讓主機管理人員能獲取系統上的服務運作狀態和硬體使用狀況相關資訊。主機的管理人員只要定期查看每台管理主機的資訊郵件內容,即可進行適當的處理,或轉交給相對應的人員接手處理。


CentOS 主機的預設排程為每小時的 01 分、每天凌晨 4 點 02 分、每週日凌晨 4 點 22 分,以及每月 1 號凌晨 4 點 22 分。此時,系統會執行預先撰寫好的自動維護 Shell Script 執行檔,進行系統相關的清理及備份工作,並使用預設的郵件轉送代理 (Mail Transfer Agnet, MTA) Sendmail 寄送資訊郵件。欲使用別的郵件轉送代理像是 Postfix、Qmail 等 ,屆時只要在設定檔內進行指定即可。若讀者有興趣了解系統定期執行的詳細內容,可切換至 /etc 目錄下的四個資料夾,分別是:每小時 (cron.hourly)、每天 (cron.daily)、每週 (cron.weekly)、每月 (cron.monthly),每個資料夾內都有相關的自動維護 Shell Script ,查看後即可了解系統維護主機的相關內容。

basic3_01
▲ 圖1 查看主機系統排程資訊
在 CentOS 系統中,LogWatch 套件負責收集系統狀態及相關網路服務運作資訊(預設情況下會安裝至系統)。我們可以在每天定期發送的 cron.daily 資料夾中,發現 0logwatch 這隻 Script。也就是說,系統會在每天凌晨 4 點 02 分時,透過此 Script 將系統中系統、硬體、服務的資訊收集後,寄送給各個管理者。接下來便說明相關資訊的設定方法,如:由哪台主機寄出收集後的資訊、寄件對象、系統資訊收集分析的等級、收集主機服務運作的狀態設定等。


我們可以將相關設定值寫入至 LogWatch 設定檔 "/etc/logwatch/conf/logwatch.conf" 內,操作中相關設定值參數及說明如下:


* MailFrom:通常填入此台主機的主機名稱 (Hostname),或是該主機所擔任的企業服務名稱(如 Web1)。
* MailTo:填入管理者們的郵件信箱 (Email)。若有多筆郵件位址,則使用逗點 (, ) 加上空格進行隔開即可。
* Detail:指定收集主機資訊後分析的等級,共有三種等級可供選擇。分別為低級(Low 或數字 0)、中級(Med 或數字 5)、高級(High 或數字 10)。
* Service:指定收集主機服務運作的項目,LogWatch 支援收集服務的項目為 /usr/share/logwatch/scripts/services 目錄下的服務名稱,您可以使用參數 All 來表示要收集該主機所有運作的服務。若不想分析某個服務,則可於服務名稱前加上減號 ( - ),則系統便會排除收集該項服務的運作狀態。


下列為筆者的 LogWatch 設定檔設定內容,若您需要更詳細的參數設定內容可參考 "/usr/share/logwatch/default.conf/logwatch.conf" 設定檔內容


basic3_02
▲ 圖2 LogWatch 設定檔內容


設定完畢之後,CentOS 主機便會自動於每天凌晨 4 點 02 分時,收集主機資訊後寄送至管理者郵件信箱內。如果您想要立即收到資訊郵件,可以手動執行 logwatch 指令,命令主機立刻收集資訊並寄送郵件,或配合參數 --print 直接顯示收集到的資訊,查看收集到的資訊而不寄送郵件(此資訊和資訊郵件的內容完全相同)。您還可以配合參數 --service ,僅顯示收集的服務名稱運作狀態。


basic3_03
▲ 圖3 logwatch 查看指令以及立即寄送資訊郵件操作


如果您已經設定完成,但並沒有定期收到資訊郵件的話,可以先用 mailq 指令,查看郵件是否被佇列 (Queue) 住。接著,檢查郵件記錄檔 /var/log/maillog 內容以及主機的 DNS 設定,分析並查找管理者沒有定期收到主機所收集資訊郵件的原因。此外,由於系統會在隔一段時間後才送出郵件,若您執行 logwatch 指令寄送郵件時,發現郵件在郵件佇列中而未立即寄出,可執行 sendmail 指令,配合參數 –q,使主機立刻寄出郵件佇列中所有郵件。


basic3_04
▲ 圖4 檢查郵件佇列及查看郵件記錄檔以及立刻寄送郵件出去


basic3_05
▲ 圖5 管理人員收到的每日系統資訊郵件內容
SSH 基礎安全防護設定
在 CentOS 主機中,我們可以利用許多機制來保護主機服務。IPTables 防火牆功能強大,是安全防護選項之一,但本文中並不打算講解有關 IPTables 防火牆設定(若要講解的話得再開一系列文章),而是要介紹另一個設定簡單,有一定保護程度的安全機制 TCP Wrappers 達到保護 SSH 遠端連線服務的效果。此服務與系統內的 xinetd 服務有很深的關聯,下圖便清楚表達了當網路封包進入 CentOS 主機時,Firewall、TCP Wrappers 及 xinetd 服務的封包走向關係圖。


basic3_06
▲ 圖6 圖片來源 CentOS 官方網站 Deployment_Guide - 42.5. TCP Wrappers and xinetd,採用 Open Publication License


預設情況下,TCP Wrappers 在安裝 CentOS 主機過程中便已安裝完成。而顧名思義,此安全防護機制僅能保護 TCP daemon,而無法保護 UDP daemon(仍有例外狀況)。相信您會接著問,那 TCP Wrappers 能夠保護主機上哪些服務項目呢? 答案是,只要該服務中含有 libwrap 函式庫 (Library),即可受到 TCP Wrappers 保護。經由下列操作,我們便可了解如何檢查該服務內是否含有 libwrap 函式庫。在圖 7 中,我們可以看到 SSH 服務 (sshd) 含有 libwrap 函式庫,而 Apache 服務 (httpd) 則沒有包含 libwrap 函式庫。所以雖然都是 TCP daemon ,但 TCP Wrappers 可以保護 SSH 服務,而無法保護 Apache 服務。


basic3_07
▲ 圖7 查詢 TCP Wrappers 是否可以保護該服務


接著要說明的是 TCP Wrappers 的保護規則。在安全防護設定上,TCP Wrappers 非常簡單易懂,不像防火牆設定那麼複雜。其安全防護規則採用 First Match 方式,意即先讀取到的規則直接套用執行後,便不需要理會後面的規則。


TCP Wrappers 的防護規則分為 "/etc/hosts.allow" 及 "/etc/hosts.deny" 二個設定檔。這二個設定檔中,首先讀取的設定檔為 hosts.allow,若此設定檔中有設定服務名稱,則允許封包通過,接著讀取 hosts.deny 則為禁止封包通過。筆者建議僅設定 "/etc/hosts.allow" 設定檔便可達到防護效果。


在修改 TCP Wrappers 保護規則設定檔 (/etc/hosts.allow) 以前,我們先了解設定檔的內容及相關參數的意義。設定檔內容可以分成三個小區段來看,分別是「服務名稱 (deamon)、來源 IP 位址或網域名稱 FQDN、連線回應為允許 (allow) 或拒絕 (deny)」。每個小區段之間使用冒號 (:) 作為分隔符號,在前面二個小區段中並支援相關進階參數,使保護規則運作更靈活。但是,若使用 KNOWN、UNKNOWN、PARANOID 參數時,請注意此三個參數是依靠 DNS 名稱解析服務,因此必須要注意主機上的 DNS 名稱解析是否運作正常,相關進階參數說明如下:


* ALL:表示 「全部 」,用於第一個小區段(服務名稱欄位)表示全部服務,用於第二個小區段(連線來源)表示全部的 IP 位址或網域名稱 FQDN。
* LOCAL:表示「本機」,也就是不含點 (.) 的主機名稱例如 localhost。
* KNOWN:表示「可解析主機」,也就是可以解析其 IP 位址及網域名稱 FQDN。
* UNKNOWN:表示「無法解析主機」,也就是無法解析其 IP 位址及網域名稱 FQDN。
* PARANOID:表示「正反解析必須一致」,也就是 DNS 正解(FQDN 解析 IP 位址)及 DNS 反解(IP 位址解析 FQDN)二者的解析記錄必須一致。
* EXCEPT:表示「排除」的意思,例如允許 192.168.1.0 這個網段的所有主機,但排除 192.168.1.99 這個 IP 位址。


在設定之前,還有三個小地方要提醒讀者注意。首先是來源 IP 網段的遮罩設定值,TCP Wrappers 支援的網路遮罩為 255.255.255.0 這種型式,而不是 /24 這種 CIDR 表示方法。若您設定 /24 這種網路遮罩,則該行防護設定規則將無法運作(但若是來源位址使用 IPv6 位址則支援此種表示方法)。第二點要注意的是,修改 TCP Wrappers 設定檔內容後,當您存檔離開的那一剎那,所設定的防護內容便立刻生效(不需要重新啟動或載入 xinetd 服務)。最後要注意的是,防護規則僅套用於「新進 Session」,也就是說,設定阻擋規則時主機上若已經存在有舊的連線 Session,並不會自動斷線離開,而是新進來的 Session 才會阻擋。


CentOS 在預設情況下並不會安裝 xinetd 套件,我們可以透過前一篇介紹的 yum 指令來安裝 xinetd 套件。此次我們以防護主機上的 SSH 服務為例,設定只有允許的 IP 網段可以使用 SSH 遠端登入此台 CentOS 主機(允許連線後接著才進行使用者帳號及密碼驗證),並且拒絕允許的 IP 網段中,其中一台主機的連線要求。最後,其餘的 IP 位址欲嘗試使用 SSH 遠端登入主機時,則拒絕其連線要求。由於已經拒絕連線要求封包,因此主機自然就不需要回應使用者帳號及密碼的驗證動作,此舉能夠有效減低 CentOS 主機被進行密碼暴力測試工具攻擊的機會,提升主機整體安全性。


下列操作步驟包含利用 yum 套件管理工具安裝 xinetd 套件,查看 xinetd 服務是否在 CentOS 主機啟動時自動啟動 xinetd 服務,確認無誤後啟動 xinetd 服務。接著設定 TCP Wrappers 設定檔 (/etc/hosts.allow),其內容為允許 192.168.1.0 整個 C Class 網段主機 SSH 遠端連線至此台 CentOS 主機,除了 192.168.1.99 禁止連接。最後,其餘 IP 網段若發出 SSH 遠端連線要求時,則直接拒絕該連線封包。


basic3_08
▲ 圖8 安裝 xinetd 套件及設定 TCP Wrappers 安全防護規則


上述 TCP Wrappers 防護規則設定完成後,我們可以進行驗證,檢查剛才設定是否生效。我們由 192.168.1.99 主機對目前 CentOS 主機 (192.168.1.50) 發出 SSH 遠端連線要求,並得到 Connection closed 的連線拒絕回應。在 CentOS 主機上,我們查看 secure 記錄檔也可看到 192.168.1.99 主機嘗試 SSH 遠端連線此台主機,並遭到拒絕連線 (refused connect) 的回應。而 192.168.1.0 網段中的其它主機發出 SSH 連線要求時,則會出現驗證帳號密碼的動作。


basic3_09
▲ 圖9 驗證 TCP Wrappers 防護規則是否生效


經過上述實作驗證後,相信讀者已經了解如何用簡單的 TCP Wrappers 安全防護規則,來保護 CentOS 主機。若您認為 TCP Wrappers 只有這些功能的話,那您就大錯特錯了。TCP Wrappers 支援更進階的安全防護規則內容,例如嘗試連線記錄、結合 Shell 指令等功能。但是在這些進階的防護功能中, 嘗試連線記錄必須要搭配系統的日誌服務 (syslogd) 才得以運作,而結合 Shell 指令功能,除了必須對系統指令有一定程度了解之外,還必須了解如何搭配相關的參數,才得以發揮強大效果。建議有興趣更深入的讀者,可以參考 CentOS 官方文件 Deployment_Guide - 42.5. TCP Wrappers and xinetd 內有進階設定的詳細說明。

系統時間自動校對

網路時間協定 NTP (Network Time Protocol) 最初由德拉瓦州大學 (Delaware University) 的大衛米爾斯 (David L. Mills) 所設計,主要目的為透過網路封包交換 (UDP Protocol, Port 123),將二端電腦的時鐘進行同步校對。若讀者想更詳細了解整個 NTP 協定的規範、實作、分析等詳細內容,請參考 RFC 1305 (NTP version 3)、RFC 5905 (NTP version 4)。


企業營運環境的伺服器為數眾多,倘若伺服器之間的時間不同步,可能會造成許多影響。例如伺服器之間的時間誤差超過 5 分鐘時,則將導致 Kerberos 的驗證失敗;或者,當企業購物平台的前端 AP 伺服器與後端資料庫伺服器時間不同步時,則使用者下單記錄可能在資料庫伺服器上顯示為未來時間,或是優惠活動時間明明已經結束,但使用者仍然可以下單購買,造成客服人員的困擾;再者,公司財務報表產生時,若伺服器之間的時間不同步,則會造成財務報表合併時在核對上出現困擾。以上舉例的種種問題,追究其原因,便是由於眾多伺服器之間時間不同步所造成。


在此次設定中,我們為 CentOS 主機安裝 OpenNTPD 客戶端,來進行系統運作時間校對。OpenNTPD 客戶端與一般的 NTP 客戶端時間校對方式有著明顯的不同,一般 NTP 客戶端的時間校對方式為「強迫性一次調整到位」,也就是不管現在系統時間,一律直接跟 NTP 伺服器校對後調整。偏向暴力性的一次到位調整時間的方式,在某些狀況下可能會對主機運作穩定性上產生問題。而此次安裝的 OpenNTPD 客戶端的時間校對方式為:當 OpenNTPD 客戶端與 NTP 時間伺服器有時間誤差時,OpenNTPD 客戶端會將主機每隔幾分鐘進行系統時間「微調」,慢慢調整,直到最後與時間伺服器上的標準時間達成一致。這樣溫和的時間調整方式,對於要求高穩定性的企業營運環境伺服器來說,相對而言是比較適合的。


在安裝 OpenNTPD 客戶端以前,請您先使用 rpm –qa 指令來確認 CentOS 主機是否已經安裝 gcc 及 make 套件(若系統沒有安裝,請使用 YUM 套件管理工具進行 yum –y install gcc make 安裝指令),以便在安裝 OpenNTPD 套件時能順利進行編譯 (Compile) 與安裝 (make)。在設定前,您可以故意先將 CentOS 主機系統時間調慢 5分鐘,待之後啟動 OpenNTPD 服務後,即可發現系統開始跟 NTP 時間伺服器慢慢進行時間校對。


在 CentOS 預設的 YUM 套件管理工具中,並未收錄 OpenNTPD 軟體套件,因此請自行從 OpenBSD 的鏡像站台下載、解壓縮、編譯,並安裝 OpenNTPD 套件。下列操作步驟為先利用 wget 指令下載 OpenNTPD 套件至 /tmp 資料夾下,並將 OpenNTPD 套件檔案解壓縮後執行 ./configure、make、make install 等指令,將 OpenNTPD 套件編譯並進行安裝。


basic3_10
▲ 圖10 OpenNTPD 套件下載、解壓縮、編譯、安裝


在上述最後執行套件安裝的動作 make install 時,我們可以看到,系統提示我們必須要為系統建立 _ntp 的使用者帳號及群組,以便屆時使用 _ntp 使用者帳號來啟動 OpenNTP 服務,而非使用 root 管理者帳號,以避免安全性問題。因此安裝完畢後,請使用 useradd 及 groupadd 指令,配合相關參數來新增 _ntp 使用者帳號及群組,接著設定 OpenNTPD 設定檔,指向至企業內部所架設的 NTP 伺服器或網際網路上的 NTP 伺服器 IP 位址。接下來如圖11 將 NTP 伺服器指向至國家時間與頻率標準實驗室,進行時間校對。最後,設定 OpenNTPD 記錄檔來記錄主機時間校時的狀況,並在完成後重新載入系統日誌服務 syslogd,讓其變更生效即可。


basic3_11
▲ 圖11 完成 OpenNTPD 客戶端相關設定,並建立記錄檔了解校時狀況


接著將 OpenNTPD 新增至 CentOS 內建的服務清單內,設定當 CentOS 重新開機時能夠自動啟動 OpenNTPD 服務,自動與國家時間與頻率標準實驗室 NTP 伺服器進行時間校對作業。完成設定後即可啟動 OpenNTPD 服務,並透過剛才建立的記錄檔來觀察目前主機與 NTP 伺服器進行時間校對的情況。


basic3_12
▲ 圖12 新增 OpenNTPD 為系統服務並查看主機校時情況

查看系統啟動服務及監聽 Port 號



了解系統啟動的服務以及該服務開啟的相應 Port ,也是主機安全防護的基本功。我們可以使用內建的 netstat 指令,配合 –tunpl 參數,顯示系統目前啟動服務及協定等相關資訊。使用到的 5 個參數意義為 t (TCP)、u (UDP)、n(IP 位址及 Port 號)、p(PID 名稱)、l (Listen) 服務,這些指令執行後顯示出來的相關欄位解釋如下:


* Proto:服務運作的協定,通常為 TCP 或 UDP Protocol
* Recv-Q:收到的封包 Bytes 數量
* Send-Q:傳送的封包 Bytes 數量
* Local Address:本地端的 IP 位址及 Port 號
* Foreign Address:遠端主機的 IP 位址及 Port 號
* State:連接狀態,此例中僅顯示 Listen 狀態,實際上還有已建立連線 (ESTABLISHED)、連線結束等待 Socket 關閉 (TIME_WAIT)、主動連線 SYN 封包 (SYN_SENT)、連線要求 SYN 封包 (SYN_RECV)等狀態。
* PID/Program name:該程序 (Process) 的名稱


basic3_13
▲ 圖13 查看主機目前啟動的服務及相對應的 Port 號


透過運用 netstat 指令了解 CentOS 主機執行哪些服務 (daemon),與開啟哪些 Port 號之後,我們可以進一步透過了解執行序,在系統或服務出現問題後利於除錯。若只是要查詢系統有哪些執行序時,我們可以使用內建的 ps 指令,配合相關參數進行查詢。但若是想要了解執行序的樹狀結構(意即母程序及子程序的樹狀關系)時,內建的 ps 指令可能就略顯不足。此時可以配合 pstree 套件來輔助我們即時了解執行序樹狀結構,例如我們查詢剛才執行的校時程序 ntpd 的執行序樹狀結構,可以看到整個 ntpd 的母程序 PID 為 21815,並且使用 _ntp 使用者帳號負責帶起子程序 PID 21816。


basic3_14
▲ 圖14 查詢 OpenNTPD 服務的執行序樹狀關系


接著我們可以使用 chkconfig 指令,以了解 CentOS 主機在開機時進入不同的 RunLevel 時會啟動的服務。我們以主機所擔任的服務,來判斷是否有些不會用到的服務,例如 acpid (Advanced Configuration and Power Interface) 電源進階設定,這個服務是將 CentOS 安裝於筆記型電腦上才會發揮效用,所以我們就可以將該服務關閉。此舉除了可以增加系統效能(啟動每個服務都會佔用記憶體),還可以避免該服務被攻擊,增加系統安全性。


下列操作為 CentOS 主機預設啟動程序在 RunLevel 3 的狀況下,我們使用指令 chkconfig 指令配合相關參數,來了解系統在 RunLevel 3 時,開機會自動啟動哪些服務:


basic3_15
▲ 圖15 檢查主機於 RunLevel 3 啟動時會啟動哪些服務


當您決定哪些服務要開啟,而哪些服務要關閉後,就可以執行「關閉啟動主機時不啟動服務」或是「停止該服務」。下列操作中,我們以 acpid 服務為例進行設定,當主機由 RunLevel 3 啟動模式啟動時,不會自動啟動該服務,並在目前運作模式下馬上停止該服務的運作:


basic3_16
▲ 圖16 關閉 acpid 於 RunLevel 3 時自動啟動,並立即停止該服務

擴充 YUM 套件管理工具 RPM 數量



雖然在上一篇文章中,我們已經將 YUM 套件管理工具的鏡像站台,設定為台灣鏡像站台來加快套件下載速度。不過雖然目前官方的 YUM 套件管理工具中套件數量已經不少,但目前官方套件數量中僅包含必要套件,例如常常用來管理 MySQL 資料庫的 PhpMyAdmin 套件,就未包含在內建的 YUM 套件庫 (RPM Repository) 當中。


雖然我們可以自行下載 PhpMyAdmin 套件並手動安裝到系統上,但筆者個人的主機管理習慣,是盡量使用 YUM 套件管理工具來處理 RPM 套件的安裝、移除、升級。因此在這裡要介紹讀者一套名為 RPM forge 的套件,我們可以安裝它來擴充 YUM 套件管理工具中的套件數量。


RPMforge 支援許多 Linux 發行版本,例如 RHEL、Fedora Core、CentOS、Scientific、Aurora 等。將 RPMforge 安裝於系統之後,可擴充系統 YUM 套件管理工具中的套件數量,例如剛才提到的 PhpMyAdmin 套件。我們可以在安裝 RPMforge 之後,透過 yum 指令來進行安裝,而不需要自行上網尋找該套件。


下列操作中,我們可以看到當系統尚未安裝 RPMforge 以前,其 YUM 管理工具套件庫 (RPM Repository) 中搜尋不到 PhpMyAdmin 套件。當安裝 RPMforge 之後,便可順利透過 yum 指令來進行安裝。每次安裝時,請安裝最新發行穩定版本的 RPMforge-Release,並注意您使用的 CentOS 主機是 32 位元或 64 位元的作業系統版本(本次實作為使用 CentOS 5.5 32 位元版本):


basic3_17
▲ 圖17 未安裝 RPMforge 以前搜尋不到 PhpMyAdmin 套件


basic3_18
▲ 圖18 安裝 RPMforge 後可順利搜尋到 PhpMyAdmin 套件

結語

雖然網路上 Linux 相關參考資源及教學非常多,但筆者發現許多 Linux 初學者可能對於 CentOS 主機的系統基礎設定不熟悉,或者未設置相關設定,導致在學習上發生瓶頸。例如沒有把 YUM 套件管理工具的預設鏡像站台由國外設回國內,因此認為 CentOS 主機套件安裝速度相當緩慢。追究其原因,只是因為未更改鏡像站台至國內,加上所處的網路環境頻寬不是很理想,導致下載套件及相依套件時速度緩慢,而造成使用者的誤會。又或者因為沒有把 SELinux 安全機制暫時關閉,所架設的網路服務因而違反了 SELinux 的安全機制,導致服務啟動時被阻擋住而無法啟動成功。


若因為不熟悉這些設定而放棄學習 CentOS,是非常可惜的一件事。筆者期望能夠透過這三篇 CentOS 基礎設定文章,讓讀者對於 CentOS 作業系統有初步的認識,並在配合相關基礎設定的實作之後,能夠協助讀者建立一個屬於自己,順手好用又安全的 CentOS 作業系統。

CentOS 基礎設定(中)


前言

在上一篇文章 CentOS 基礎設定(上) ,我們已經建立及設定好管理者用來遠端登入主機的一般使用者帳號,以及設定 CentOS 主機網路資訊,並測試能否與網際網路上主機連通。透過修改 SELinux 安全增強機制至寬容模式來了解 SELinux 的保護阻擋機制,以便為日後完全開啟 SELinux 安全增強機制鋪路。最後則是關掉預設的權限,不允許 root 管理者帳號遠端登入,以避免被網路上隨處可得的密碼暴力測試工具攻擊的機會
本文中將會先簡單介紹 CentOS Linux 的 7 種啟動模式等級 (RunLevel),解說每個啟動模式等級所分別代表的意義。再來則是設定使用者登入系統後的操作介面 Shell 以及編輯器 VIM 的環境參數設定,以便幫助您在操作 CentOS 作業系統及編輯檔案時能更加得心應手。設定操作介面及編輯器後,則是探討當每台主機同時擁有多個管理者的情況時,該如何記錄每個管理者登入主機後的操作情況。我們將會透過設定 sudo 來限制及記錄管理者提升到管理權限 root 的使用狀況。最後則會設定 CentOS 作業系統的套件管理工具 YUM 將套件的下載來源指向到台灣本地鏡像網站,以便縮短相關軟體套件的下載時間。

實作環境


* CentOS 5.5  32bit (Kernel 2.6.18-194.el5)
* vim-7.0.237
* sudo-1.7.2p1-5.el5
* yum-3.2.22-26.el5.centos

RunLevel 啟動模式等級


談到 CentOS Linux 的 RunLevel 啟動模式等級,便要先了解一下整個 CentOS 開機過程。透過下列的開機流程說明,便會了解到在 RunLevel 啟動模式,為何能夠掌控系統後半段開機階段的相關服務啟動及關閉。下列開機流程是以安裝於 x86 硬體上的 CentOS 進行說明:
1. 硬體伺服器 BIOS (INT 13H / EFI) 開機時會檢查連接於系統上的主硬碟 MBR / GPT 來載入開機管理程式(例如 GRUB、LILO等)。
2. 初始階段開機管理程式會載入記憶體並從 /boot 掛載點內啟動下一階段開機管理程式,舉例來說,GRUB 開機管理程式便是載入 /boot/grub/grub.conf 設定檔內容中的 initrd-2.6.18-194.el5.img 映像檔。
3. 這個階段中會將系統核心,以及必需的系統模組載入至記憶體內並且掛載於 root 分割區,此時也同步釋放未使用到的記憶體。請注意此時 root 分割區為唯讀狀態。
4. 當核心載入完畢,執行完硬體偵測及相關驅動程式載入後,接著便會將開機過程的控制權轉交給系統第一隻執行程式 /sbin/init 來準備設定使用者環境。
5. /sbin/init 程式將透過 /etc/inittab 設定檔來為系統載入適當的 RunLevel 相關設定,例如網路設定、相關服務啟動等,並且將 /etc/fstab 設定檔內所條列的掛載點,一一掛載至檔案系統。相關服務啟動完成,檔案系統掛載完畢,至此系統開機完成。
RunLevel (SysV init) 啟動模式等級可以分為 7 種等級分別是 0 ~ 6,而這 7 個數字所分別代表的意義如下:

* 0 (halt):系統關機,若您將 RunLevel 設為此模式,則會發現當開機程式完成後系統就直接關機。
* 1 (Single user mode):單人模式,通常在系統發生問題需要維護時才會進入此一模式。
* 2 (Multiuser without NFS):多人模式但沒有 NFS 網路功能,通常用於多人多工但不需要網路功能時,才會進入此模式。
* 3 (Full multiuser mode):多人文字模式,此模式為不需要進入視窗模式,並且具備完整網路功能的管理者所使用的模式。
* 4 (unused):尚未使用,使用者可以自行定義。
* 5 (X11):多人圖形模式,此模式為習慣使用視窗模式,並且具備完整網路功能的管理者所使用的模式。
* 6 (reboot):重新啟動,若您將 RunLevel 設為此模式則會發現當開機程式完成後,系統就直接重新啟動。
當您在安裝 CentOS 時若是由文字模式進行安裝過程,則系統預設使用的 RunLevel 便為 3。也就是文字模式 (Text mode)。若安裝過程選擇圖形模式進行安裝,則系統預設使用的 RunLevel 便為 5 也就是圖形模式 (GUI mode)。若您希望變更系統預設使用的 RunLevel 啟動模式等級,可以透過修改 “/etc/inittab” 設定檔內容來達成。下列操作步驟為將 RunLevel 3 修改為 RunLevel 5:
BasicII_01
▲圖1 修改 RunLevel 設定檔
那要如何得知目前所在的 RunLevel 啟動模式等級中,哪些服務是啟用的,哪些是關閉的呢?並且又該如何啟用某個服務或關閉某個服務呢?要達成上述目的有三個指令可以達成分別是 chkconfig、ntsysv、system-config-services 詳細差異及說明如下:
* chkconfig:此指令可以條列出指定的服務在每個 RunLevel 中的啟用或關閉狀態,您可以使用指令來將服務在某個 RunLevel 進行啟用及關閉的狀態,或者搭配參數 on / off 來一次將該服務在 RunLevel 2 ~ 5 進行啟用及關閉的狀態。
* ntsysv:此指令會開啟互動視窗,您只要將該服務勾選或取消勾選便是將該服務進行啟用及關閉,而該服務的啟用及關閉只會影響您目前所處的 RunLevel 啟動模式等級,例如您在文字模式 (RunLevel 3) 將 smartd 服務關閉則表示該服務只在 RunLevel 3 時不啟動,但在圖形模式 (RunLevel 5) 時該服務仍然會啟動。
* system-config-services:請注意此指令僅能在圖形模式下執行,透過圖形管理介面您可以輕鬆對該服務進行啟動 (Start)、停止 (Stop)、重新啟動 (Restart),若是勾選該服務則表示該服務在 RunLevel 5 為啟用狀態。
下列操作為透過 chkconfig 指令,當系統啟動於 RunLevel 3 啟動模式,查詢系統將會自動啟動哪些服務。還有如何透過 chkconfig 指令查詢及針對單一服務進行 RunLevel 啟動模式等級的啟用及關閉。最後則是啟動 ntsysv 的互動設定視窗及 system-config-services 圖形管理介面。
BasicII_02
▲圖2 查詢 RunLevel 3 所啟用的服務
BasicII_03
▲圖3 設定 smartd 服務於 RunLevel 3、5 啟用並查看狀態
BasicII_04
▲圖4 ntsysv 互動設定視窗
BasicII_05
▲圖5 system-config-services 圖形管理介面
常常會有 Linux 初學者詢問,若希望有程式或動作想要在系統開機時,如何自動啟動某些服務或執行某個動作,那該如何達成呢?您可以將相關執行動作寫入至 /etc/rc.local 設定檔內即可。或許您會有疑問為何寫入此檔案的內容會在開機時自動執行,您可以查看 RunLevel 3、5 的執行資料夾裡面有 S99local 的連結檔案,其內容便是連結指向至 /etc/rc.local 檔案,而在 RunLevel 資料夾中 S 開頭表示啟動 (Satrted) 而 K 表示關閉 (Killed),而數字 99 為啟動順序(數字愈小愈先啟動),這也就是為何寫入 /etc/rc.local 檔案中的內容會在開機時被執行的原因。
BasicII_06
▲圖6 查看 RunLevel 3、5 資料夾 S99local 檔案內容

設定 tcsh Shell 操作環境


對於許多 Linux 的使用者來說習慣的 Shell 應該是系統預設使用的 bash (Bourne-Again Shell),CentOS 預設支援的 Shell 除了有 bash 之外還支援 sh (Bourne Shell)、csh (C Shell)、tcsh (TENEX C Shell)、ksh (Korn Shell) 等 Shell。筆者個人習慣於 tcsh Shell 操作環境來管理機器,基本上使用哪種 Shell 全憑個人使用習慣也就是順手即可。下列的相關設定值及環境參數將以筆者習慣的 tcsh Shell 來進行舉例說明。

使用 tcsh Shell 在不設定任何參數的情況下,便可以擁有按下【Tab】鍵,即自動補齊檔名及搜尋上一次輸入指令的功能。所謂【Tab】鍵補齊檔名功能是什麼意思呢?舉個例子來說,假如我們想要查看主機的日期及時間資訊時,會鍵入 date 指令,當輸入 da 之後便按下【Tab】鍵,此時作業系統會尋找系統中 da 開頭的相關指令,由於系統中 da 開頭的指令只有二個分別是 date 及 dateconfig。因此當按下【Tab】鍵進行補齊檔名功能時便會先自動補齊為 date 指令。

tcsh Shell 的補齊檔名功能不僅僅能使用於指令方面,對於檔案及目錄也具有相同的功能。以搜尋上一次輸入指令的功能為例,分別輸入了 ls 某個目錄內容及 cd 到某個目錄內,當您想要再次執行時只要打 ls 再按【上方向鍵】則 tcsh Shell 會自動找出最近執行過開頭為 ls 的指令,這樣的功能對於操作作業系統來說非常方便。

除了預設的功能之外我們可以設定 tcsh Shell 的環境變數來加強操作的便利性,以剛才測試補齊檔名功能執行的 date 指令來說,其實該指令的完整路徑為 /bin/date,但是為何當我們輸入 date 指令按下 Enter 鍵後便可順利執行該指令?這是因為預設的 tcsh Shell 環境設定檔中已經將作業系統經常會使用到的指令路徑載入環境變數中(參數 PATH),因此我們才可以在不用鍵入絕對路徑的情況下直接執行相關指令。

以使用 tcsh Shell 為例當使用者登入 CentOS 主機後,該使用者帳號會依序載入 /etc 資料夾下的二個通用環境設定檔,分別是 csh.cshrc 及 csh.login,接著則是載入個人家目錄下的 .cshrc 及 .login 個人環境設定檔。而當管理者設定的通用環境設定檔與個人環境設定檔內容發生衝突時系統會以套用個人環境設定檔為最後結果(最後套用的設定值為準)。再設定以前先確定該使用者帳號所使用的 Shell 您的 Shell 環境設定檔才能正確進行套用,以下為筆者個人習慣設定於個人家目錄下 .cshrc 的個人環境設定檔內容:
BasicII_07
▲圖7 查詢使用者帳號所使用的 Shell 及 tcsh Shell 個人環境設定檔內容

設定 VIM 編輯器操作環境


VI (Visual Interface) 為 Unix-Like 預設內建的檔案編輯器,然而此編輯器對於 Linux 初學者來說比較容易感覺到使用不易。CentOS 作業系統預設會安裝較容易使用而且功能更為強大的檔案編輯器 VIM (Vi Imitation) ,建議 Linux 初學者可以使用此編輯器進行檔案編修,相信可以較為順手。與 tcsh Shell 相同的觀念,VIM 檔案編輯器預設功能雖然已經很強大,但是您仍可以依需求加上相關參數設定使得 VIM 編輯器更為強大更為貼近您的使用需求。以下為筆者個人習慣設定的 VIM 參數設定值:
BasicII_08
▲圖8 VIM 環境設定檔內容

設定 sudo 帳號管理機制


在 CentOS 作業系統當中 root 使用者帳號被稱為超級使用者帳號,此帳號為整個作業系統中權限最大的管理帳號,權限大到可以直接將作業系統自我毀滅。由於 root 超級使用者帳號權限如此之大,因此筆者在此強烈建議您應該使用一般使用者帳號登入主機進行操作,待需要執行的動作需要提升權限時才切換為管理帳號進行操作,以免因為一時疏忽或者不慎手誤,造成系統或服務損壞。

當您所管理的 CentOS 主機同時擁有多個管理者進行管理時,您該如何確定是其中哪個管理者使用了 root 管理帳號對系統做了什麼事情?例如當您想要得知是哪個管理者在哪個時間切換為 root 管理帳號並且對系統執行了哪些指令,傳統的切換方式 su – 就不符合這樣的需求了,有鑑於此我們可以透過設定 sudo 來達成這樣的查核需求。

Sudo 套件就是為了彌補作業系統中內建的身份切換指令 su 不足所發展出來的軟體套件,透過設定此套件後我們可以建立相關的使用者權限群組,並且給予不同權限的指令來達到控管使用者權限的目的,同時配合相關參數設定我們可以隨時查閱哪位使用者執行過 sudo 指令來提升權限,並且能查出該使用者對於系統在權限提升之後執行了哪些動作,以便進行事後的追查。

首先請先使用 rpm 及 which 指令來查詢系統中是否已經安裝 sudo 套件(預設情況下會安裝此套件)以及相關指令是否存在,確認目前系統中有安裝此套件時請接著使用 visudo 指令來修改 sudo 設定檔內容。建議您不要使用 VI 或 VIM 編輯器來修改 sudo 設定檔,原因除了 visudo 指令會自行尋找 sudo 設定檔 (/etc/sudoers) 並且進入編輯模式之外,當我們修改完成後若設定檔內容中有發生語法或斷行等錯誤時,系統會在顯示警告訊息提醒我們哪裡發生語法錯誤。
BasicII_09
▲圖9 查詢系統是否安裝 sudo 套件及相關指令
在此次實作中我們會修改 sudo 設定檔內容為將 wheel 群組那行的註解符號拿掉,並且加上 Log 記錄檔的內容 (/var/log/sudo.log),當此 sudo 設定檔設定完畢後,後續只要有人執行 sudo 指令提升權限至管理者身份時便會觸發到剛才設定檔中的 Log 設定,此時系統會自動產生 Log 檔案並將相關資訊寫入其中。相關操作如下所示:
BasicII_10
▲圖10 修改 sudo 設定檔內容及加上查核記錄設定


上述 sudo 設定檔內容中表示只要屬於 wheel 群組內的使用者帳號,便可以使用 sudo 指令來暫時提升權限為管理者帳號進行操作。當使用者第一次執行 sudo 指令時系統會再次詢問該使用者密碼,當成功通過密碼驗證 (Authentication) 之後便會暫時切換授權 (Authorization) 身份為管理者帳號 root 來執行其指令,並且在 5 分鐘之內若該使用者再次執行 sudo 指令時,系統便不會再次詢問使用者密碼。

接下來我們著手來測試剛才設定的 sudo 記錄檔機制是否正常運作,請您另外開啟一個 SSH Client 視窗並使用一般使用者帳號遠端登入 CentOS 主機。例如使用 weithenn 這個一般使用者帳號(請確定該使用者帳號已加入 wheel 群組)登入系統並嘗試執行 vipw 指令試圖修改使用者帳號設定檔內容,相信會得到權限被拒絕 (Permission denied) 的錯誤訊息回應。此時您可以使用 sudo 指令搭配剛才的 vipw 指令再次執行即可修改使用者帳號設定檔內容。
BasicII_11
▲圖11 配合 sudo 指令修改使用者帳號設定檔

當上述指令執行完畢後您可以接著查看 sudo 記錄檔便會看到相關的記錄內容,從 sudo 記錄檔內容中我們可以確定 sudo 記錄檔機制目前正確運作中。從 sudo 記錄檔中可以清楚得知是在什麼時間點 (Jun  7 17:30:22)、哪個系統使用者帳號 (weithenn)、在哪一台主機上 (centos5)、從遠端登入此台主機 (pts/3)、在系統中哪個路徑 (/home/user/weithenn)、切換成什麼身份 (root)、執行什麼指令 (/usr/sbin/vipw)。
BasicII_12
▲圖12 查看 sudo 記錄檔內容

確定 sudo 指令及記錄檔均正確運作後筆者習慣將 root 管理者帳號的密碼給封鎖起來,因此屆時這台主機的管理者們進行主機管理時,便會習慣使用自己的一般使用者帳號登入並配合 sudo 指令,在需要的時候才提升為管理者權限進行管理,不致一登入主機後便習慣使用 su – 來切換成為 root 管理者帳號逃避查核機制。要封鎖 root 管理者密碼請先將權限提升為 root 後,執行 vipw 指令修改 /etc/shadow 檔案,將第二個欄位(密碼欄位)內容修改為 * 即可。
BasicII_13
▲圖13 封鎖 root 管理者帳號的密碼

YUM 套件管理工具


絕大部份的開放原始碼軟體皆採用 Tarball 的形式進行發布,而在 Linux 上為了解決使用 Tarball 必須要解壓縮、檢測 (./configure)、編譯 (make)、安裝 (make install) 等繁鎖步驟,因此發展出 RPM(The RPM Package Manager) 來簡化整個安裝流程。雖然 RPM 安裝機制簡化了整個安裝流程但卻無法解決套件相依性及套件相衝突的問題,舉例來說您可能安裝 A RPM 時系統顯示您必須要先安裝 B RPM(套件相依性),而當您下載及安裝 B RPM 時又說需要安裝 C RPM(套件相依性),當您好不容易又下載及安裝 C RPM 時卻出現此 RPM 跟 A RPM 互相衝突,碰到這種情況時在以往您只能手動排除這種套件衝突的狀況了。

YUM (Yellow dog Updater Modified) 套件管理工具便是解決上述 RPM 套件相依性及相衝突的問題而發展出來的套件管理解決方案。此套件管理工具能從指定的套件伺服器上自動下載相對應的 RPM 套件包至系統進行安裝,並且當出現套件相依性時能自動下載及安裝相關聯的 RPM 套件,同時會盡量避免發生套件衝突的情況。YUM 能夠有效簡化軟體套件安裝流程並解決惱人的套件相依性及相衝突的問題,使得軟體套件在安裝、移除、升級程序上變得非常容易。

預設 YUM 下載套件的來源伺服器為國外網站,我們可以透過修改 YUM 設定檔 (/etc/yum.repos.d/CentOS-Base.repo) 將下載套件的鏡像網站指定至台灣境內各所大學或機構。目前台灣可以使用的鏡像網站約有 8 個(如下所示),請您依個人網路狀況選擇較適合您的網路環境進行設定以便加快套件下載速度,或者參考 CentOS 鏡像網站清單選擇位於您國家內的鏡像網站:

* 元智大學:http://ftp.cse.yzu.edu.tw/pub/CentOS/
* 靜宜大學:http://ftp.cs.pu.edu.tw/Linux/CentOS/
* 中山大學:http://ftp.nsysu.edu.tw/CentOS/
* 義守大學:http://ftp.isu.edu.tw/pub/Linux/CentOS/
* 樹德科技大學:http://ftp.stu.edu.tw/Linux/CentOS/
* 台中縣教網中心:http://ftp.tcc.edu.tw/Linux/CentOS/
* Hinet IDC:http://mirror01.idc.hinet.net/CentOS/
* 國家高速網路與計算中心:http://ftp.twaren.net/Linux/CentOS/

下列操作步驟為將 YUM 設定檔中鏡像網站由預設的國外修改為國內的元智大學:
BasicII_14
▲圖14 修改 YUM 設定檔指向至國內的元智大學

上述設定完成後您便可以開始使用 YUM 配合相關指令管理套件,但是在開始以前筆者建議您先手動更新 CentOS 的主機時間,以免後續管理相關套件時因為本機系統時間與 YUM 鏡像網站時間差異過大造成不可預期的錯誤。在後續文章中會說明如何設定 CentOS 主機自動與網際網路上的主機定時校對系統時間。

BasicII_15
▲圖15 與網際網路 NTP 時間伺服器進行時間同步並同步至 BIOS 內


下列條列出使用 YUM 套件管理工具時常常會使用到的指令及相關參數意義:

* yum check-update:套件更新檢查,將目前系統上安裝的套件與 YUM 鏡像網站進行檢查比對後列出需要更新套件的清單。
* yum update:套件更新,檢查及比對系統需要套件更新的清單後詢問您是否要更新套件,您可以配合參數 –y 對所有詢問一律回答 yes 來允許所有套件更新。
* yum install <套件名稱>:安裝套件,執行從 YUM 鏡像網站下載指定套件並進行安裝,收集相關資訊後會詢問您是否確定要安裝,您可以配合參數 –y 對所有詢問一律回答 yes 來安裝指定套件及其相依性套件。
* yum remove <套件名稱>:移除套件,移除您指定的套件名稱,收集相關資訊後會詢問您是否確定要移除該套件,您可以配合參數 –y 對所有詢問一律回答 yes 來移除指定的套件及相依性套件。
* yum clean all:清除暫存資料,清除使用 YUM 套件管理工具下載 RPM 進行安裝時的暫存檔案。
* yum search <套件名稱或關鍵字>:搜尋套件,您可使用已經知道的套件名稱或者有關於套件的關鍵字來進行搜尋的動作。
* yum list:顯示可安裝套件清單,顯示您指定的 YUM 鏡像網站中所支援安裝的所有套件名稱。
* yum info <套件名稱>:套件資訊,顯示您指定的套件其詳細資訊,例如適用平台、套件版本、套件大小、套件功能描述、套件授權資訊、套件官方網址等資訊。
* yum grouplist:顯示可安裝的套件群組清單,顯示您指定的 YUM 鏡像網站中所支援安裝的所有套件群組名稱。
* yum groupinstall <套件群組名稱>:安裝套件群組,執行從 YUM 鏡像網站下載指定套件群組中相關套件並進行安裝,收集套件群組相關資訊後會詢問您是否確定要安裝,您可以配合參數 –y對所有詢問一律回答 yes 來安裝指定套件及其相依性套件。
* yum groupremove <套件群組名稱>:移除套件群組,移除您指定的套件群組,並且在系統收集相關資訊後,會詢問是否確定要移除該套件群組中所有套件,您可以配合參數 –y 對所有詢問一律回答 yes 來移除指定的套件群組。
* yum groupinfo <套件群組名稱>:查詢套件群組資訊,查詢指定的套件群組資訊及功能描述,並且將顯示此套件群組中預設會安裝的套件清單 (Default Packages)、強制安裝的套件清單 (Mandatory Packages)、選擇安裝的套件清單 (Optional Packages)。

由於 YUM 套件管理工具實際上也是幫助我們對 RPM 套件包進行管理的工作,其實底層的安裝、移除、升級等動作仍是使用 RPM 套件,因此我們仍可以使用 rpm 指令來幫助我們了解及管理套件,例如我們使用 YUM 套件管理工具為 CentOS 主機安裝 VNC Server 套件後我們可以使用 rpm 指令來了解剛才安裝的 VNC Server 套件、設定檔及服務啟動檔在哪裡。

BasicII_16
▲圖16 利用 rpm 指令查詢套件版本、設定檔、服務啟動檔

結語


本文首先討論 RunLevel 啟動模式等級使讀者可以概略了解一下整個 CentOS 開機過程,相信對於後續的主機管理是有幫助的,接著說明及設定使用者登入 CentOS 主機後第一件事 Shell,筆者以設定 tcsh Shell 為例進行實作,將 Shell 環境設定好相信對於管理主機上會更加得心應手。再來則是設定 VIM 檔案編輯器設定讓您日後編輯相關設定檔更加順手。

接著我們討論到利用 sudo 套件來限制及記錄管理者所做的操作,像是誰透過 sudo 指令把權限提升為 root 管理者帳號,並且對 CentOS 主機在什麼時間點執行了什麼指令或動作,以便後續的稽核動作得以執行。並且將 root 管理者密碼封鎖以避免有管理者貪一時之便直接使用 su – 指令轉換為 root 管理者帳號權限,最後則是說明如何將 YUM 套件管理工具的套件下載鏡像網站由預設值的國外修改為國內鏡像網站以便節省套件下載時間,同時也說明常用的 yum 及 rpm 指令及其說明。

在下一篇文章中也就是 CentOS 基礎設定的最後一篇我們將會討論,當主機上線運作如何定期將系統的相關記錄例如安全性記錄、磁碟空間使用狀況、登入資訊等定期寄送給管理人員,以及探討如何對遠端登入服務 SSH 做基本的安全性設定,還有主機該如何定時自動與網際網路上的時間伺服器進行時間校對。最後則是了解系統啟動哪些服務、開啟哪些相對應的 Port 以及關閉系統上不必要的服務,最後則是安裝 RPMforge 來增加可安裝的套件數量。