Quantcast
Channel: 不自量力 の Weithenn
Viewing all 589 articles
Browse latest View live

VMware vSAN 6.6 攻略 - 系列文章

$
0
0

前言

日前 (2017/4/18),VMware 官方正式發佈 vSAN 第六代 VMware vSAN 6.6 Release資訊。雖然距離上一版 vSAN 第五代 VMware vSAN 6.5發佈才間隔短短五個月。但是,這次發佈的 vSAN 第六代總共新增 23 項特色功能!!

有關過去每一代 vSAN 版本的新增特色功能資訊,請參考站長歷來撰寫的 vSAN 專欄文章:
圖、VMware Virtual SAN版本演進及新增功能示意圖


那麼,接下來站長也將不定期針對第六代的 vSAN 6.6深入剖析各項特色功能:

【簡介】(Introduction)




【安全性】(Security)

  • Native Encryption
  • Compliance



【管理】(Management)

  • Proactive Cloud Health Checks
  • vSAN COnfiguration Assist
  • Hardware Lifecycle Management
  • Highly Svailable COntrol Plane for Health Checks
  • Health and Performance Monitoring
  • vRealize Management Pack for vSAN
  • Stretched Cluster Witness Replacement
  • Host Evacuation
  • vSAN API and PowerCLI



【部署】(Deployment)

  • Easy Install
  • Multicast Dependency Removed
  • Extensibility


【可用性】(Availability)

  • Stretched Cluster Local Failure Protection
  • Stretched Cluster Site Affinity
  • Degraded Device Handling



【效能】(Performance)

  • Deduplication and Compression
  • Rebuild and Resynchronization Enhancements
  • Checksum
  • De-Staging
  • iSCSI

盡速更新 KB3150513 避免遭受 DoublePulsar 攻擊

$
0
0

前言

簡單來說,每次微軟發佈安全性更新後,過不久便會有惡意人士產生攻擊工具來嘗試侵入未進行安全性更新的主機。這次,便是針對上個月 Microsoft 發佈 (Microsoft Security Bulletin MS17-010 - Ctitical)針對 SMB (Server Message Block)通訊協定的漏洞攻擊。



台灣受害主機數量已達第 2 名

根據網路安全公司 Below0Day,所發佈的部落格文章 DoublePulsar Global Implants: On the rise? 統計結果可以看到,在 4 月 18 日的掃描結果中在網際網路上共有 5,502,460 台主機開啟 Port 445,並且在其中檢查到共有 30,626 台主機已經偵測到遭受 DoublePulsar 攻擊。可以看到台灣名列遭受 DoublePulsar 攻擊數量第 3 名,共有 2,323 台主機遭受 DoublePulsar 攻擊成功。

圖、4 月 18 日全球遭受 DoublePulsar 攻擊分佈圖

圖、全球遭受 DoublePulsar 攻擊分佈圖 (台灣名列第 3 名)

接著,他們再次於 4 月 21 日的掃描,發現在網際網路上共有 5,190,506 台主機開啟 Port 445,並且在其中檢查到共有 56,586 台主機已經偵測到遭受 DoublePulsar 攻擊 (短短 3 天受感染主機數量已提升 25,960 台主機)。可以看到台灣名列遭受 DoublePulsar 攻擊數量升高至第 2 名,共有 5,217 台主機遭受 DoublePulsar 攻擊成功 (短短 3 天受感染主機數量已提升 2,894 台主機)。

圖、4 月 21 日全球遭受 DoublePulsar 攻擊分佈圖

圖、全球遭受 DoublePulsar 攻擊分佈圖 (台灣名列第 2 名)



安裝 KB 3150513

簡單來說,請先盡速透過 Windows Update 安裝 Microsoft KB 3150513安全性更新,或至 Microsoft Update Catalog 下載及安裝 Microsoft KB 3150513安全性更新。

圖、至 Microsoft Update Catalog 下載 KB 3150513 安全性更新

圖、確認主機已安裝 KB 3150513 安全性更新

當然,並非安裝 KB 3150513安全性更新便可以高枕無憂。還是老話一句,安全與便利永遠是天秤的二個拉址點,一旦主機連線至網際網路就沒有絕對的安全 (即便未連線至網際網路也沒有絕對的安全性),這場攻防之間的戰爭只要有利益可圖就沒有停止的一天。👿



參考資源

VMware vSAN 6.6 Journey (2) - Native Encryption

$
0
0

前言

日前 (2017/4/18),VMware 官方正式發佈 vSAN 第六代 VMware vSAN 6.6,在新版 vSAN 6.6 中共新增 23 項特色功能,並且可以區分為五大類分別是「安全、管理、部署、可用性、效能」。其中,在安全性方面有 2 項新功能分別是「Native Encryption」「Compliance」,同時在 VMware SDDC 軟體定義資料中心的願景中,VMware vSAN 擔任 SDS 軟體定義儲存的重要角色。因此,確保儲存資源的安全性機制將相形重要,在新版 vSAN 6.6 當中無須依靠加密磁碟 (SED) 就可以達成靜態資料加密解決方案,有效保護企業及組織當中的機敏資訊。




vSphere 6.5 進階安全性機制

在新版 vSphere 6.5 版本中,VMware 推出針對現代化資料中心的進階安全性機制,例如,VM Encryption、vMotion Encryption、Secure Boot (ESXi Secure Boot / VM Secure Boot)、Enhanced Logging……等 (詳細資訊請參考站內文章 網管人雜誌 132 期 - 安全可用性全面提升 vSphere 6.5 新版本亮點多)。現在,VMware 將進階安全性機制擴展到 HCI 超融合基礎架構的 vSAN 軟體定義儲存技術當中。



vSAN 6.6 Native Encryption

在新版 vSAN 6.6 當中,VMware 導入業界第 1 個 HCI 超融合基礎架構原生加密解決方案。簡單來說,這個加密解決方案是內建在 vSAN 軟體定義儲存技術內,只要在管理介面中進行相關組態設定後,便可以針對 vSAN Datastore儲存資源進行「啟用 或 停用」加密機制。

首先,在 vSAN 6.6 Native Encryption加密機制,是座落在「Hypervisor Level」而非 VM 虛擬主機層級的加密,並且 vSAN 6.6 Native Encryption 加密機制與「硬體無關」,所以無須依靠專用及昂貴的「加密磁碟」(Self-Encrypting Drives,SED)即可達成機敏資料加密的目的。因此,vSAN 6.6 Native Encryption 加密機制能夠帶給企業及組織不同的 HCI 加密解決方案。


vSAN 6.6 Native Encryption 加密機制運作細節:

  • 「Cluster」為單位進行 vSAN Encryption 加密機制的啟用及組態設定。
  • vSAN Encryption 加密機制與「硬體無關」,所以無須採用專用及昂貴的「加密磁碟」(Self-Encrypting Drives,SED)即可達成機敏資料加密的目的。
  • 針對 Cluster 啟用 vSAN Encryption 加密機制後,系統將會採用「XTS AES 256」演算法針對 vSAN Datastore 儲存資源中,有關「Cache」「Capacity」層級的部分進行加密保護。
  • 由於 vSAN Encryption 加密機制,是座落在儲存堆疊架構中「Device Driver Layer」之上,所以不管是 vSAN Stretched Cluster、Inline Deduplication、Compression、Erasure Coding……等 vSAN 特色功能均不受影響。
  • vSAN Encryption 加密機制與 vSphere 特色功能,例如,vSphere vMotion、vSphere DRS (Distributed Resource Scheduler)、vSphere HA (High Availability)、vSphere Replication……等,都能夠與 vSAN Encryption 加密機制協同運作。
  • vSAN Encryption 加密解決方案,同時也符合「2-Factor Authentication (SecurID and CAC)」驗證機制,也是第 1 個經過 DISA / STIG認可的 HCI 解決方案。
  • 啟用 vSAN Encryption 加密機制,跟啟用 vSphere 6.5 當中的 VM Encryption 加密機制一樣,都需要「KMS (Key Management Server)」才行。只要是符合 KMIP 1.1 標準的 KMS 供應商即可,例如,HyTrust、Gemalto、Thales e-Security、CloudLink、Vormetric……等。
  • 啟用 vSAN Encryption 加密機制非常簡單,但值得注意的是加密機制啟用「Disk Format」將需要「重新格式化」。因此,倘若儲存資料量龐大時將會花費大量的時間進行資料遷移作業,並且在啟用成功後可以透過 ESXi Shell 以「esxcli vsan storage list」指令進行確認,將會看到「Encryption: true」的訊息便表示加密作業成功。同樣的,當停用加密機制後,也將因為更改磁碟格式及重新格式化等作業,當儲存資料量龐大時將會花費大量的時間進行資料遷移作業。
  • 由於 vSAN Encryption 加密機制,是透過 KMIP (Key Management Interoperability Protocol)通訊協定,在 vSAN 叢集主機與 KMS 伺服器之間進行溝通。因此,VMware vCenter Server PSC等 VM 虛擬主機,是能夠在啟用加密的 vSAN Datastore 中運作的。
  • 由於業界的資安準則中需要定期重新產生新的加密金鑰,以便降低加密金鑰被暴力破解的危害。只要在 vSAN 管理介面進行簡單的組態設定,便可以重新產生新的加密金鑰
  • vSAN Encryption 加密機制,適用於 vSAN All-Flash 及 Hybrid儲存運作架構,並且與 KMIP 1.1金鑰管理機制整合及協同運作。
  • vSAN Encryption 加密機制,目前僅支援新版 vSAN 6.6 的 vSAN Datastore,尚未支援其它舊版 vSAN Datastore。

圖、透過 vCenter Server 組態設定 KMS Server

圖、啟用 vSAN Encryption 加密機制

圖、重新產生新的加密金鑰



參考資源

CentOS 6.8 基礎設定 - 系列文章

$
0
0

前言

Red Hat Enterprise LinuxRed Hat公司推薦使用於企業伺服器網路服務上的 Linux 發行版本,通常大多數的人會將此 Linux 發行版本簡稱為 RHEL(雖然 Red Hat 公司官方並不建議這樣簡稱)。在正常的情況下 RHEL 大約以每 18 ~ 24 個月的頻率,發佈下一版的作業系統。但是實際運作上 RHEL 作業系統版本的發行頻率,取決於 Fedora Linux 的更新。Fedora Linux 為 Red Hat 公司贊助的知名開放原始碼計畫,Red Hat 公司會將許多新技術先行導入至 Fedora Linux 發行版本中,待經過一段時間測試至穩定階段而且符合企業需求後,便會將該技術加入至下一個發行的 RHEL 版本中。每當 Fedora Linux發行 3 個版本後大約就會發佈 1 個 RHEL 新版本

而本文所要介紹的 CentOS (Community ENTerprise Operating System)為眾多 Linux 發行版本之一。CentOS 其源碼來自 RHEL 作業系統的開放原始碼,將其源碼重新編譯而成的,移除了無法自由使用的商標及 Red Hat 所擁有的封閉原始碼軟體。由於 CentOS Linux 與 Red Hat Enterprise Linux 具有大量相同的原始碼內容,因此也適合在需要高度穩定性的企業營運環境。

目前有些中小企業的 IT 人員為了建置預算上面的考量使用 CentOS Linux 發行版本來替代 RedHat Linux 企業版本。但是相對來說使用 CentOS Linux 發行版本除了得不到商業支援以外,當然也不包含 Red Hat 公司所擁有的封閉原始碼軟體。因此建議 IT 人員在使用 CentOS Linux 發行版本來建置企業網路服務以前,除了要先了解所使用的硬體伺服器是否支援 CentOS Linux 之外,更要了解所架設的商業服務是否會使用到 Red Hat 公司封閉原始碼軟體。

CentOS Linux 作業系統版本命名規則分為二個部份,分別是主要版本及次要版本來進行版本表示。其中主要及次要版本號碼,則是相對應於紅帽公司所發行的 RHEL 作業系統主要版本與更新版本號碼,例如,CentOS 6.8 版本便是相對應於 RHEL 6 update 8 版




實作環境





基礎設定

由於 CentOS 6.x版本的維護更新至「2020/11/30」,看來還可以再戰個幾年 (再騙吃幾年)。😈


同時,新版的 CentOS 7 與舊有 CentOS 6 有很大的不同,例如,預設檔案系統由 ext4 改為採用 xfs、預設防火牆由 IPTables 改為採用 firewalld……等。所以,先從以前熟悉的 CentOS 6.x 版本開始暖機吧。同時,虛擬化平台將採用最新的 Windows Server 2016 中的 Hyper-V為基礎。💪

  • CentOS 6.8 基礎設定 (1) - 安裝整合服務並建立一般使用者帳號
  • CentOS 6.8 基礎設定 (2) - 組態設定網路功能
  • CentOS 6.8 基礎設定 (3) - 簡述 SELinux 安全性增強機制
  • CentOS 6.8 基礎設定 (4) - 組態設定 Bash Shell 操作環境
  • CentOS 6.8 基礎設定 (5) - 組態設定 VIM 操作環境
  • CentOS 6.8 基礎設定 (6) - 設定 sudo 管理員帳號管理機制
  • CentOS 6.8 基礎設定 (7) - 禁止 Root 帳號本機及 SSH 遠端登入
  • CentOS 6.8 基礎設定 (8) - 變更 SSH Listen Port
  • CentOS 6.8 基礎設定 (9) - 簡述 YUM 套件管理工具
  • CentOS 6.8 基礎設定 (10) - 擴充 YUM 套件數量
  • CentOS 6.8 基礎設定 (11) - 簡述 Runlevel 啟動模式等級
  • CentOS 6.8 基礎設定 (12) - 調整 IPTables 防火牆規則
  • CentOS 6.8 基礎設定 (13) - 定期寄送 CentOS 主機系統資訊 Log
  • CentOS 6.8 基礎設定 (14) - 關閉不必要的系統服務
  • CentOS 6.8 基礎設定 (15) - 了解 70-persistent-net.rules 檔案內容及功用
  • CentOS 6.8 基礎設定 (16) - 檢查相關組態設定是否正確
  • CentOS 6.8 基礎設定 (17) - Export / Import Base VM

CentOS 6.8 基礎設定 (1) - 安裝整合服務並建立一般使用者帳號

$
0
0

前言

最近工作關係開始又要回味 CentOS 了,在本次實作環境中採用的是 CentOS-6.8-x86_64-minimal.iso 映像檔,也就是 CentOS 6.8 最小化安裝版本 (Minimal Install)。為何不用最新的 CentOS 6.9 版本? 因為,最新的 LIS 4.1.3-2 僅支援至 CentOS 6.8,所以便以 CentOS 6.8 版本開始回味起了,那麼開始來玩玩吧。💪



實作環境




建立 CentOS 6.8 VM 虛擬主機

在 Windows Server 2016 Hyper-V 虛擬化平台中,建立 CentOS 6.8 的 VM 虛擬主機,下列是這台 VM 虛擬主機的組態配置說明:
  • VM 虛擬主機名稱: CentOS68
  • 虛擬機器世代: 第 2 代
  • vCPU: 2 vCPU
  • vRAM: 8192 MB (啟用動態記憶體功能)
  • vHDD: 127 GB (VHDX,動態擴充)
  • vSwitch 名稱: VM-vSwitch
  • 安全開機: 停用
圖、建立 CentOS 6.8 VM 虛擬主機



安裝 CentOS 6.8 (Minimal Install)

至於,安裝程序的部分相信大家應該都很熟悉,我只提幾個我個人喜好的部分,例如,Mount Point 的切割方式,建議 /var 此掛載點的使用空間不要給太少,以免後續維護時發生問題。原因在於 /var 掛載點除了為預設所有記錄檔存放處以外,更重要的是當後續系統執行更新相關套件時,其暫存的資料便是存放於 /var/cache/yum內。因此 /var 掛載點空間太小將可能導致套件更新失敗的情況發生。(有關磁碟分割的詳細資訊,請參考 RHEL 6 - 9.15.5. 建議的磁碟分割方案)
  • 語系: English
  • Keyboard: U.S. English
  • Installation involve: Basic Storage Devices
  • Hostname: centos68.weithenn.org
  • Time zone: Asia / Taipei (取消勾選 System clock uses UTC)

圖、準備開始安裝 CentOS 6.8

圖、CentOS 6.8 的 Mount Point 資訊

圖、BootLoader 安裝資訊

圖、採用 Minimal Install 只要安裝 205 個套件即可

圖、CentOS 6.8 安裝完畢



安裝最新整合服務 (LIS 4.1.3-2)

每一種虛擬化平台都會需要幫其上運作的 VM 虛擬主機安裝適當的 Tools,以使其上運作的 VM 虛擬主機能夠與虛擬化平台進行最緊密的結合(例如,虛擬裝置最佳化…等),舉例來說 VMware vSphere 虛擬化平台便需要幫 VM 虛擬主機安裝 VMware Tools,而 Citrix XenServer 虛擬化平台便需要幫 VM 虛擬主機安裝 Xen Tools。

Microsoft Hyper-V 虛擬化平台則是需要幫其上運作的 VM 虛擬主機安裝「整合服務(Integration Services)」(目前最新版本為 LIS 4.1),安裝整合服務完畢後在驅動程式部份會更新 IDE、SCSI、網路、視訊、滑鼠…等方面進行最佳化,而在服務方面則是整合 作業系統關閉(Shutdown)、時間同步化(Time Synchronization)、資料交換(Key/Value Exchange)、活動訊號(Heartbeat)、線上備份(Volume Shadow copy Service,VSS)…等機制,以期 VM 虛擬主機跟 Microsoft Hyper-V 虛擬化平台不管是在效能運作上,或者是驅動程式最佳化方面都能進行完美的結合。

Supported CentOS and Red Hat Enterprise Linux virtual machines on Hyper-V | Microsoft Docs文章中可以看到,預設情況下 CentOS 6.8 版本其實已經有 Built in 整合服務。但是,登入 CentOS 6.8 後透過「/sbin/modinfo hv_vmbus」指令可以看到,目前系統中的 LIS 整合服務版本為「3.1」而非最新的「4.1.3-2」
# /sbin/modinfo hv_vmbus
filename: /lib/modules/2.6.32-642.el6.x86_64/kernel/drivers/hv/hv_vmbus.ko
version: 3.1
license: GPL
srcversion: 46197569AE3594138F1019D
alias: acpi*:VMBus:*
alias: acpi*:VMBUS:*
depends:
vermagic: 2.6.32-642.el6.x86_64 SMP mod_unload modversions
# /sbin/lsmod | egrep -i "^hv|hyperv"
hv_utils 14856 0
hv_netvsc 27466 1
hv_balloon 13149 0 [permanent]
hv_storvsc 12075 5
hyperv_fb 8933 1
hyperv_keyboard 3196 0
hid_hyperv 4310 0
hv_vmbus 246218 7 hv_utils,hv_netvsc,hv_balloon,hv_storvsc,hyperv_fb,hyperv_keyboard,hid_hyperv

圖、目前系統中的 LIS 整合服務版本為 3.1

請下載最新版本的 Linux Integration Services Version 4.1 for Hyper-V後,掛載給 CentOS 6.8 VM 虛擬主機。接著,執行「mount /dev/cdrom /media」指令便可以掛載 LIS 4.1 ISO 映像檔至 CentOS 6.8 的光碟機,然後再依序執行「cd /media/CentOS68 ; ./install.sh」即可安裝最新版本 LIS 4.1,當安裝完畢後重新啟動主機即可套用生效。

圖、掛載 LIS 4.1 ISO 映像檔

圖、安裝最新版本 LIS 4.1.3-2 整合服務

待 CentOS 6.8 VM 虛擬主機重新啟動完成後,採用同樣的「mount /dev/cdrom /media」指令再次確認,可以發現 LIS 整合服務版本已經更新為最新的「4.1.3-2」
# /sbin/modinfo hv_vmbus
filename: /lib/modules/2.6.32-642.el6.x86_64/extra/microsoft-hyper-v/hv_vmbus.ko
version: 4.1.3-2
license: GPL
srcversion: E1230EF73F5907F0112B52D
alias: acpi*:VMBus:*
alias: acpi*:VMBUS:*
depends:
vermagic: 2.6.32-642.el6.x86_64 SMP mod_unload modversions
# /sbin/lsmod | egrep -i "^hv|hyperv"
hv_netvsc 33502 0
hv_utils 20201 1
hv_balloon 13941 0 [permanent]
hv_storvsc 14491 5
hyperv_fb 8649 1
hid_hyperv 4406 0
hyperv_keyboard 3228 0
hv_vmbus 321708 7 hv_netvsc,hv_utils,hv_balloon,hv_storvsc,hyperv_fb,hid_hyperv,hyperv_keyboard

圖、最新版本 LIS 4.1.3-2 整合服務套用生效



建立一般使用者帳號

在安裝 CentOS 作業系統過程中會要求您順便設定 root 管理者帳號,作業系統安裝完成後請使用 root 管理者帳號登入系統。Linux 系統管理者應該具備如同管理 Microsoft Windows 主機時同樣的作業系統安全性觀念,也就是要先建立一般使用者帳號來登入系統進行操作,待需要執行的動作需要提升至管理者權限時,才著手轉換將權限提升。

因此,同樣的安全觀念當您首次登入 CentOS 作業系統後,建議您先為管理者建立一般使用者帳號後,再將該使用者帳號加入管理者群組當中。下列操作動作為先建立使用者家目錄資料夾,因為筆者習慣將使用者家目錄都集中於一個目錄內以便後續方便管理(預設使用者家目錄為存放至 /home 下)之後透過指令 adduser 建立一般使用者帳號 weithenn(-d 參數為指定該使用者家目錄位置),接著使用指令 passwd 設定使用者密碼,最後則是設定將該使用者加入管理者群組 wheel 當中。
# mkdir /home/user
# adduser -d /home/user/weithenn weithenn
# passwd weithenn
Changing password for user weithenn.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
# vi /etc/group
wheel:x:10:weithenn




參考資源

CentOS 6.8 基礎設定 (2) - 組態設定網路功能

$
0
0

前言

最近工作關係開始又要回味 CentOS 了,在本次實作環境中採用的是 CentOS-6.8-x86_64-minimal.iso 映像檔,也就是 CentOS 6.8 最小化安裝版本 (Minimal Install)。為何不用最新的 CentOS 6.9 版本? 因為,最新的 LIS 4.1.3-2 僅支援至 CentOS 6.8,所以便以 CentOS 6.8 版本開始回味起了,那麼開始來玩玩吧。💪



實作環境




組態設定網路功能

建立好使用者帳號後接下來便是設定 CentOS 的網路功能,在本文設定中網路功能是以設定固定 IP 位址來進行說明。你可以透過 2 種方式設定固定 IP 位址,一為使用指令 system-config-network來進行互動設定,另外一種方式則為手動將固定 IP 位址、網路遮罩等相關資訊寫入「/etc/sysconfig/network-scripts/ifcfg-eth0」網卡設定檔中,而預設閘道及主機名稱則是寫入「/etc/sysconfig/network」設定檔中,最後則是將 DNS 名稱解析資訊寫入「/etc/resolve.conf」設定檔中。
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.10.75.8
NETMASK=255.255.255.0
IPV6INIT=no
# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=centos68.weithenn.org
GATEWAY=10.10.75.254
# cat /etc/resolv.conf
search weithenn.org
nameserver 168.95.1.1
nameserver 8.8.8.8
# cat /etc/hosts
127.0.0.1 localhost
# service network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: Determining if ip address 10.10.75.8 is already in use for device eth0...
[ OK ]

圖、組態設定固定 IP 位址

當 CentOS 主機的網路服務重新啟動並套用新的組態設定後,接著便可以使用 ping 指令來判斷主機是否能順利連上網際網路及進行名稱解析的動作,或者藉此判斷此台主機的網路通訊是卡在哪個環節上以便除錯。
# ping -c2 127.0.0.1   //檢查 Loopback
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.024 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.045 ms
--- 127.0.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.024/0.034/0.045/0.012 ms
# ping -c2 10.10.75.8   //檢查固定 IP 位址
PING 10.10.75.8 (10.10.75.8) 56(84) bytes of data.
64 bytes from 10.10.75.8: icmp_seq=1 ttl=64 time=0.026 ms
64 bytes from 10.10.75.8: icmp_seq=2 ttl=64 time=0.047 ms
--- 10.10.75.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 0.026/0.036/0.047/0.012 ms
# ping -c2 10.10.75.254  //檢查 CentOS 與預設閘道之間的連線
PING 10.10.75.254 (10.10.75.254) 56(84) bytes of data.
64 bytes from 10.10.75.254: icmp_seq=1 ttl=128 time=0.774 ms
64 bytes from 10.10.75.254: icmp_seq=2 ttl=128 time=0.432 ms
--- 10.10.75.254 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1004ms
rtt min/avg/max/mdev = 0.432/0.603/0.774/0.171 ms
# ping -c2 8.8.8.8      //檢查 CentOS 是否能夠與指定的 DNS 伺服器連線
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=9.22 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=9.57 ms
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1012ms
rtt min/avg/max/mdev = 9.221/9.398/9.576/0.202 ms
# ping -c2 tw.yahoo.com  //檢查 CentOS 能否順利進行名稱解析
PING oob-media-router-fp1.prod.media.wg1.b.yahoo.com (106.10.178.36) 56(84) bytes of data.
64 bytes from media-router-fp1.prod.media.vip.sg3.yahoo.com (106.10.178.36): icmp_seq=1 ttl=128 time=89.1 ms
64 bytes from media-router-fp1.prod.media.vip.sg3.yahoo.com (106.10.178.36): icmp_seq=2 ttl=128 time=89.5 ms
--- oob-media-router-fp1.prod.media.wg1.b.yahoo.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1093ms
rtt min/avg/max/mdev = 89.173/89.382/89.592/0.365 ms

圖、檢查 CentOS 主機網路組態是否正確運作

CentOS 6.8 基礎設定 (3) - 簡述 SELinux 安全性增強機制

$
0
0

前言

最近工作關係開始又要回味 CentOS 了,在本次實作環境中採用的是 CentOS-6.8-x86_64-minimal.iso 映像檔,也就是 CentOS 6.8 最小化安裝版本 (Minimal Install)。為何不用最新的 CentOS 6.9 版本? 因為,最新的 LIS 4.1.3-2 僅支援至 CentOS 6.8,所以便以 CentOS 6.8 版本開始回味起了,那麼開始來玩玩吧。💪



實作環境




修改 SELinux 安全增強機制

Linux作業系統從核心 2.6 版本開始預設會自動載入安全增強機制 SELinux ( Security-Enhanced Linux)核心模組。SELinux 是由美國國家安全局 NSA (National Security Agency) 所開發,並且在 2000 年 12 月時將此核心模組發行給開放原始碼的開發社群,以便有效加強 Linux 整體安全性。

SELinux 為基於保護原則、作業系統中檔案結構及檔案權限的完整性原則所設計,此完整性原則可以有效針對入侵行為,以及企圖跨越系統安全架構等設計不良的應用程式對作業系統所造成的破壞,因此可以提供更安全的強制存取控制架構,來與作業系統的核心和主要子系統協同運作。在這樣的架構下相關的服務 (Daemon) 只能存取屬於該服務帳號所能存取的資料夾及檔案權限,若是超過所能存取的權限範圍則 SELinux 便會阻擋該服務的存取行為。所以若主機所架設的服務出現安全性漏洞導致被攻擊時 SELinux 能夠有效將攻擊所造成的損失降到最低。

簡單來說啟用了 SELinux 安全增強機制後的 Linux 作業系統,其檔案權限便不僅僅是傳統上的三種權限-讀取 r、寫入 w、執行 x-,及身份-擁有者 Owner、群組 Group、其它人 Others,而是整個主機內的檔案系統,將會套用更細微的權限及身份設定並且具有完整性架構。然而也因為 SELinux 安全增強機制及完整性原則,常常會造成 Linux 初學者因為不了解檔案系統及相關概念,進而導致設定相關網路服務時,因為違反了 SELinux 安全機制或者完整性原則,而導致網路服務無法啟動,或者無法存取系統資料(因為被 SELinux 安全機制給阻擋住了)。因此我通常會建議初學者可以先將此增強安全機制設定為警告通知,或者暫時關閉。等以後對於 CentOS 作業系統有更深的認識後再將此功能啟用。當然這樣的情況是自行測試或學習時,使用者若是用於企業營運時則強烈建議一定要開啟 SELinux 安全增強機制來提升及保護主機安全性。

要修改 SELinux 安全增強機制的設定,您可以透過修改「/etc/sysconfig/selinux」設定檔,或者使用指令 system-config-securitylevel 進入互動設定視窗進行設定之後再將主機重新啟動即可套用變更,SELinux 安全增強機制共有三種運作模式說明如下:

  • enforcing: 啟動模式 (預設值),SELinux 安全增強機制啟動將會阻擋不當的存取行為。
  • permissive: 寬容模式,當系統發生違反 SELinux 安全增強機制時僅僅顯示警告訊息而不會實際進行阻擋的動作,此模式很適合有心學習 SELinux 機制的學習者。
  • disabled: 禁用模式,完全將 SELinux 安全增強機制禁用。


筆者建議您可以將設定值修改為寬容模式 (permissive),因為當您的操作行為違反 SELinux 安全增強機制時會顯示警告通知您,因此您可以有效學習到哪些操作或者哪些動作是會被 SELinux 阻擋哪些不會,這樣可以讓您日後真正開啟 SELinux 安全增強機制時,不致被卡住並且早日提升您所管理的主機系統整體安全性。您可以透過 sestatus指令來判斷目前主機中 SELinux 的運作模式及狀態,此設定值變更後必須要將主機重新啟動才能套用變更,當重新啟動後請記得再次使用 sestatus 指令以便確認您的修改正確有效。
# sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
# vi /etc/sysconfig/selinux
SELINUX=enforcing //預設值
SELINUX=permissive //修改後
# setenforce 0 //將現有設定值改為 permissive
# sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: permissive
Policy version: 24
Policy from config file: targeted

圖、調整 SELinux 安全性增強機制

CentOS 6.8 基礎設定 (4) - 組態設定 VIM 及 Bash Shell 操作環境

$
0
0

前言

最近工作關係開始又要回味 CentOS 了,在本次實作環境中採用的是 CentOS-6.8-x86_64-minimal.iso 映像檔,也就是 CentOS 6.8 最小化安裝版本 (Minimal Install)。為何不用最新的 CentOS 6.9 版本? 因為,最新的 LIS 4.1.3-2 僅支援至 CentOS 6.8,所以便以 CentOS 6.8 版本開始回味起了,那麼開始來玩玩吧。💪



實作環境




設定 VIM 編輯器操作環境

VI (Visual Interface)為 Unix-Like 預設內建的檔案編輯器,然而此編輯器對於 Linux 初學者來說比較容易感覺到使用不易。CentOS 作業系統預設會安裝較容易使用而且功能更為強大的檔案編輯器 VIM (Vi Imitation),建議 Linux 初學者可以使用此編輯器進行檔案編修,相信可以較為順手。

在本文環境中,因為採用的是 CentOS 6.8 Minimal Install,所以預設並不會安裝 VIM 套件而是使用預設的 VI。因此,若是覺得 VI 不順手的話可以使用指令「yum -y install vim」安裝 VIM 套件。

圖、安裝 VIM 套件

圖、VIM 套件安裝成功

此外,VIM 檔案編輯器預設功能雖然已經很強大,但是您仍可以依需求加上相關參數設定使得 VIM 編輯器更為強大更為貼近您的使用需求。以下為個人習慣設定的 VIM 參數設定值:
# cat .vimrc
set number
set hls
set ic
set ai
set enc=utf8
# source ~/.vimrc


當重新套用 VIM 編輯器環境設定後,再次嘗試編輯檔案便會發現 VIM 環境已經套用生效。
圖、VIM 環境設定套用生效



設定 Bash Shell 操作環境

對於許多 Linux 的使用者來說習慣的 Shell 應該是系統預設使用的 bash (Bourne-Again Shell),CentOS 預設支援的 Shell 除了有 bash 之外還支援 sh (Bourne Shell)csh (C Shell)tcsh (TENEX C Shell)ksh (Korn Shell)等 Shell。基本上,使用哪種 Shell 全憑個人使用習慣也就是順手即可。

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

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

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

以採用 Bash Shell 為例當使用者登入 CentOS 主機後,該使用者帳號會依序載入「/etc/profile」通用環境設定檔,接著則是載入個人家目錄下的「~/.bash_profile」「~/.bashrc」個人環境設定檔。倘若,管理者設定的通用環境設定檔與個人環境設定檔內容發生衝突時,系統將會套用個人環境設定檔為最後結果(Last Match)。

當完成 Bash Shell 環境設定檔之後,可以使用指令「source ~/.bashrc」立即套用生效或是登出/登入也可以,以下為個人習慣設定於個人家目錄下 .bashrc 的個人環境設定檔內容:
# cat ~/.bashrc
setterm -blength 0
alias vi='vim -S /home/user/weithenn/.vimrc'
alias ll='ls -al --color'
alias grep='grep --color'
alias h='history 100'
# source ~/.bashrc


當重新套用 Bash Shell 環境設定後,嘗試執行一下 grep 指令功能便會發現已經套用生效。

圖、Bash Shell 環境設定套用生效

CentOS 6.8 基礎設定 (5) - 設定 sudo 管理員帳號管理機制

$
0
0

前言

最近工作關係開始又要回味 CentOS 了,在本次實作環境中採用的是 CentOS-6.8-x86_64-minimal.iso 映像檔,也就是 CentOS 6.8 最小化安裝版本 (Minimal Install)。為何不用最新的 CentOS 6.9 版本? 因為,最新的 LIS 4.1.3-2 僅支援至 CentOS 6.8,所以便以 CentOS 6.8 版本開始回味起了,那麼開始來玩玩吧。💪



實作環境




設定 sudo 管理員帳號管理機制

CentOS作業系統當中 root 使用者帳號被稱為超級使用者帳號,此帳號為整個作業系統中權限最大的管理帳號,權限大到可以直接將作業系統自我毀滅。由於 root 超級使用者帳號權限如此之大,因此強烈建議您應該使用一般使用者帳號登入主機進行操作,待需要執行的動作需要提升權限時才切換為管理帳號進行操作,以免因為一時疏忽或者不慎手誤,造成系統或服務損壞,例如,GitLab 史上最大危機:工程師誤刪大量資料,導致線上服務崩潰 | TechNews 科技新報。💣

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

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

首先,請先使用 rpm 及 which 指令來查詢系統中是否已經安裝 sudo 套件(預設情況下會安裝此套件)以及相關指令是否存在,確認目前系統中有安裝此套件時請接著使用 visudo指令來修改 sudo 設定檔內容。建議您不要直接使用 VI 或 VIM 編輯器來修改 sudo 設定檔,原因除了 visudo 指令會自行尋找 sudo 設定檔 (/etc/sudoers) 並且進入編輯模式之外,當我們修改完成後若設定檔內容中有發生語法或斷行等錯誤時,系統會在顯示警告訊息提醒我們哪裡發生語法錯誤。
# rpm -qa sudo
sudo-1.8.6p3-24.el6.x86_64
# which sudo visudo
/usr/bin/sudo
/usr/sbin/visudo


在此次實作中我們會修改 sudo 設定檔內容為將 wheel 群組那行的註解符號拿掉,並且加上 Log 記錄檔的內容「/var/log/sudo.log」,當此 sudo 設定檔設定完畢後,後續只要有人執行 sudo 指令提升權限至管理者身份時便會觸發到剛才設定檔中的 Log 設定,此時系統會自動產生 Log 檔案並將相關資訊寫入其中。相關操作如下所示:
# visudo
%wheel  ALL=(ALL)       ALL                   //拿掉開頭註解
Defaults log_host, logfile=/var/log/sudo.log  //加上此行


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

接下來我們著手來測試剛才設定的 sudo 記錄檔機制是否正常運作,請您另外開啟一個 SSH Client 視窗並使用一般使用者帳號遠端登入 CentOS 主機。例如,使用 weithenn 這個一般使用者帳號(請確定該使用者帳號已加入 wheel 群組)登入系統並嘗試執行 vipw 指令試圖修改使用者帳號設定檔內容,相信會得到權限被拒絕 (Permission denied) 的錯誤訊息回應。此時您可以使用 sudo 指令搭配剛才的 vipw 指令再次執行即可修改使用者帳號設定檔內容。
[weithenn@centos68 ~]$ vipw      //嘗試修改使用者帳號設定
vipw: Permission denied.
vipw: Couldn't lock file: Permission denied
vipw: /etc/passwd is unchanged
[weithenn@centos68 ~]$ id        //確認已加入 wheel 群組
uid=500(weithenn) gid=500(weithenn) groups=500(weithenn),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[weithenn@centos68 ~]$ sudo vipw //搭配 sudo 機制提升權限

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for weithenn:    //鍵入密碼,通過驗證程序執行提升權限

vipw: /etc/passwd is unchanged

圖、測試 sudo 機制

當上述指令執行完畢後您可以接著查看 sudo 記錄檔便會看到相關的記錄內容,從 sudo 記錄檔內容中我們可以確定 sudo 記錄檔機制目前正確運作中。從 sudo 記錄檔中可以清楚得知是在什麼時間點 (May 11 11:08:46)、系統中哪個使用者帳號 (weithenn)、在哪一台主機上 (centos68)、從遠端登入此台主機 (pts/1)、在系統中哪個路徑 (/home/user/weithenn)、切換成什麼身份 (root)、執行什麼指令 (/usr/sbin/vipw)
# tail /var/log/sudo.log
May 11 11:08:46 : weithenn : HOST=centos68 : TTY=pts/1 ; PWD=/home/user/weithenn
    ; USER=root ; COMMAND=/usr/sbin/vipw

圖、查看 sudo 記錄檔內容

CentOS 6.8 基礎設定 (6) - 禁止 Root 帳號本機及 SSH 遠端登入

$
0
0

前言

最近工作關係開始又要回味 CentOS 了,在本次實作環境中採用的是 CentOS-6.8-x86_64-minimal.iso 映像檔,也就是 CentOS 6.8 最小化安裝版本 (Minimal Install)。為何不用最新的 CentOS 6.9 版本? 因為,最新的 LIS 4.1.3-2 僅支援至 CentOS 6.8,所以便以 CentOS 6.8 版本開始回味起了,那麼開始來玩玩吧。💪



實作環境




禁止 root 管理帳號 SSH 遠端登入

在預設的情況下,您可以直接使用 root 管理帳號來遠端登入 Linux 作業系統進行管理,然而在管理作業系統上通常安全性便利性是相對的二個拉扯點。所以,當您所管理的作業系統其操作便利性愈高則安全性通常會相對的降低,在此建議您關閉 Linux 預設允許 root 管理者帳號可以遠端登入管理系統,原因如下:

  • 主機將會增加了被入侵的機會。因為,在管理者帳號已知的情況下,剩下就是嘗試登入密碼了,如此一來很容易遭受暴力猜測密碼攻擊。
  • 當一台主機有眾多管理者時大家皆使用 root 管理者帳號登入系統進行管理動作,則誰修改了某個檔案內容或執行了哪些動作均無法稽核,因為記錄的資料都是 root。
  • 直接使用 root 管理者帳號登入系統進行管理,若是在操作過程中不慎下錯指令時有極大的可能會把系統給毀掉。例如原本是想刪除根目錄下的 test 資料夾 rm –rf /test 若不慎在操作時不小心多個空格 rm –rf / test,則對於作業系統來說是要刪除根目錄 (/) 及目前所在的 test 資料夾。


要將 CentOS 主機預設允許 root 管理者帳號遠端登入的功能關閉 (PermitRootLogin yes -> no),可以透過修改「/etc/ssh/sshd_config」設定檔後再重新載入 SSH 服務即可套用變更,套用完成後您可以測試是否無法使用 root 管理帳號遠端登入主機以便確定修改是否生效。

此外,有時可能會遇到一種情況,便是遠端登入主機時輸入帳號後怎麼要等很久才能輸入密碼? 會有這樣的狀況發生是因為 CentOS 在啟動 SSH 服務時,預設會配合使用名稱解析所導致,所以您主機運作的網路環境中名稱解析服務已經運作正常則不會有此問題發生。倘若,發生這樣的問題時,請檢查 DNS 名稱解析中反向解析對於此主機的解析情況,若此台主機所在的網路環境中並沒有反向名稱解析的機制,您可取消 SSH 服務中預設會使用到名稱解析的動作即可解決此一問題 (UseDNS yes -> no)

最後,預設情況下 SSH 的 Listen Port 為 22,為了安全性考量也可以把預設 SSH Listen Port 改掉,例如,改為 Listen Port 22168
# vi /etc/ssh/sshd_config
#PermitRootLogin yes   //預設值,禁止 Root 帳號遠端登入
PermitRootLogin no    //修改後
#UseDNS yes            //預設值,啟用 DNS 名稱解析
UseDNS no             //修改後
#Port 22               //預設值,SSH Listen Port
Port 22168            //修改後
# service sshd reload
Reloading sshd:                           [  OK  ]

圖、修改 SSH 組態並重新載入服務

重新載入 SSH 服務後,可以使用「netstat -tunpl」指令確認 sshd 服務是否把 Listen Port 改為 22168。
# netstat -tunpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:22168              0.0.0.0:*                   LISTEN      3019/sshd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1116/master
tcp        0      0 :::22168                    :::*                        LISTEN      3019/sshd
tcp        0      0 ::1:25                      :::*                        LISTEN      1116/master

圖、確認 SSH 服務 Listen Port 是否變更

此時,要記得修改 IPTables 防火牆規則,把允許 SSH Port 22 通行的規則改為 Port 22168。有關 IPTables 防火牆規則的操作,請參考 CentOS 6.8 基礎設定 (10) - 調整 IPTables 防火牆規則 文章。
# service iptables reload
iptables: Trying to reload firewall rules:                 [  OK  ]
# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22168
5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

圖、調整 IPTables 防火牆規則

CentOS 6.8 基礎設定 (7) - 簡述 YUM 套件管理工具

$
0
0

前言

最近工作關係開始又要回味 CentOS 了,在本次實作環境中採用的是 CentOS-6.8-x86_64-minimal.iso 映像檔,也就是 CentOS 6.8 最小化安裝版本 (Minimal Install)。為何不用最新的 CentOS 6.9 版本? 因為,最新的 LIS 4.1.3-2 僅支援至 CentOS 6.8,所以便以 CentOS 6.8 版本開始回味起了,那麼開始來玩玩吧。💪



實作環境




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」將下載套件的鏡像網站指定至台灣境內各所大學或機構。目前台灣可以使用的鏡像網站約有 11 個(如下所示),請您依個人網路狀況選擇較適合您的網路環境進行設定以便加快套件下載速度,或者參考 CentOS 鏡像網站清單選擇位於您國家內的鏡像網站:

  • 樹德科技大學: http://ftp.stu.edu.tw/Linux/CentOS/
  • 元智大學: http://ftp.yzu.edu.tw/Linux/CentOS/
  • 義守大學: http://ftp.isu.edu.tw/pub/Linux/CentOS/
  • 崑山科大: http://ftp.ksu.edu.tw/pub/CentOS/
  • 國家高速網路與計算中心: http://ftp.twaren.net/Linux/CentOS/
  • 南臺科大: http://ftp.stust.edu.tw/pub/Linux/CentOS/
  • 臺中市政府教育局: http://ftp.tc.edu.tw/Linux/CentOS/
  • 靜宜大學: http://ftp.cs.pu.edu.tw/Linux/CentOS/
  • 中山大學: http://ftp.nsysu.edu.tw/CentOS/
  • Hinet IDC: http://mirror01.idc.hinet.net/CentOS/
  • 交通大學: http://centos.cs.nctu.edu.tw/


下列操作步驟中,我們將 YUM 設定檔內鏡像網站由預設國外站台修改為國內的 Hinet IDC
# cd /etc/yum.repos.d/
# cp CentOS-Base.repo CentOS-Base.repo.bak
# sed -i 's,mirror.centos.org/centos,mirror01.idc.hinet.net/CentOS,g' CentOS-Base.repo


上述設定完成後您便可以開始使用 YUM 配合相關指令管理套件,但是在開始以前建議確認 CentOS 主機時間是否正確,以免後續管理相關套件時,因為本機系統時間與 YUM 鏡像網站時間差異過大造成不可預期的錯誤。下列條列出使用 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 指令來幫助我們了解及管理套件,例如,使用 rpm 指令來了解已安裝的 IPTables 套件、設定檔及服務啟動檔在哪裡。
# rpm -qa iptables  //查詢套件版本
iptables-1.4.7-16.el6.x86_64
# rpm -qc iptables  //列出套件設定檔
/etc/sysconfig/iptables-config
# rpm -ql iptables  //列出套件所有檔案
/bin/iptables-xml-1.4.7
/etc/rc.d/init.d/iptables
/etc/sysconfig/iptables-config
/lib64/libip4tc.so.0-1.4.7
/lib64/libip4tc.so.0.0.0-1.4.7
...略...

圖、使用 rpm 指令查詢

CentOS 6.8 基礎設定 (8) - 擴充 YUM 套件數量

$
0
0

前言

最近工作關係開始又要回味 CentOS 了,在本次實作環境中採用的是 CentOS-6.8-x86_64-minimal.iso 映像檔,也就是 CentOS 6.8 最小化安裝版本 (Minimal Install)。為何不用最新的 CentOS 6.9 版本? 因為,最新的 LIS 4.1.3-2 僅支援至 CentOS 6.8,所以便以 CentOS 6.8 版本開始回味起了,那麼開始來玩玩吧。💪



實作環境




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

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

雖然我們可以自行下載 PhpMyAdmin 套件並手動安裝到系統上,但個人的主機管理習慣,是盡量使用 YUM 套件管理工具來處理 RPM 套件的安裝、移除、升級…等作業。因此,我們可以透過第 3 方且獲社群認可的軟體套件庫,在安裝後擴充 YUM 套件管理工具中的套件數量。

在本文中,我們將會安裝「EPEL (Extra Packages for Enterprise Linux)」「ELRepo (The Community Enterprise Linux Repository)」,獲社群認可的第 3 方軟體套件庫。在下列操作中,可以看到當系統尚未安裝 EPEL 軟體套件庫以前,透過 YUM 管理工具套件庫 (RPM Repository) 是搜尋不到 PhpMyAdmin套件的。
# yum search phpmyadmin
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: ftp.twaren.net
 * extras: ftp.twaren.net
 * updates: ftp.twaren.net
base                                             | 3.7 kB     00:00
extras                                           | 3.4 kB     00:00
updates                                          | 3.4 kB     00:00
Warning: No matches found for: phpmyadmin
No Matches found

圖、無法搜尋到 phpmyadmin 套件

請執行「yum -y install epel-release」指令安裝 EPEL 第 3 方軟體套件庫。
# yum -y install epel-release
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
 * base: ftp.twaren.net
 * extras: ftp.twaren.net
 * updates: ftp.twaren.net
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:6-8 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================
 Package             Arch        Version       Repository      Size
====================================================================
Installing:
 epel-release        noarch      6-8           extras          14 k

Transaction Summary
====================================================================
Install       1 Package(s)

Total download size: 14 k
Installed size: 22 k
Downloading Packages:
epel-release-6-8.noarch.rpm               |  14 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : epel-release-6-8.noarch            1/1
  Verifying  : epel-release-6-8.noarch            1/1

Installed:
  epel-release.noarch 0:6-8

Complete!

圖、安裝 EPEL 軟件庫

順利安裝 EPEL 軟體套件庫後,便可以順利找到 phpmyadmin 套件,當然後續也可以透過 yum 指令進行下載及安裝等套件管理作業。
# yum search phpmyadmin
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/metalink                         | 6.3 kB     00:00
 * base: ftp.twaren.net
 * epel: mirror01.idc.hinet.net
 * extras: ftp.twaren.net
 * updates: ftp.twaren.net
epel                                  | 4.3 kB     00:00
epel/primary_db                       | 5.9 MB     00:00
======================= N/S Matched: phpmyadmin ===============================
phpMyAdmin.noarch : Handle the administration of MySQL over the World Wide Web

  Name and summary matches only, use "search all" for everything.

圖、順利找到 phpmyadmin 套件

此時,可以執行「yum repolist」指令,查詢目前 CentOS 主機軟體套件庫中所支援的套件數量,從查詢結果中可以看到原本套件總數只有「7,040」,然而安裝EPEL 軟體套件庫後增加了「12,327」個套件,所以套件總數提升為「19,367」
# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.twaren.net
 * epel: mirror01.idc.hinet.net
 * extras: ftp.twaren.net
 * updates: ftp.twaren.net
repo id         repo name                                        status
base            CentOS-6 - Base                                   6,706
epel            Extra Packages for Enterprise Linux 6 - x86_64   12,327
extras          CentOS-6 - Extras                                    64
updates         CentOS-6 - Updates                                  270
repolist: 19,367

圖、EPEL 軟件庫增加 12,327 個套件

接著,我們執行相關指令來安裝 ELRepo 軟件庫。然後,再次執行「yum repolist」指令,查詢目前 CentOS 主機軟件庫中所支援的套件數量,從查詢結果中可以看到安裝 ELRepo 軟體套件庫後增加了「259」個套件,所以套件總數提升為「19,626」
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
Retrieving http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
Preparing...                ########################################### [100%]
   1:elrepo-release         ########################################### [100%]
# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.twaren.net
 * elrepo: ftp.yz.yamagata-u.ac.jp
 * epel: ftp.riken.jp
 * extras: ftp.twaren.net
 * updates: ftp.twaren.net
repo id        repo name                                                 status
base           CentOS-6 - Base                                            6,706
elrepo         ELRepo.org Community Enterprise Linux Repository - el6       259
epel           Extra Packages for Enterprise Linux 6 - x86_64            12,327
extras         CentOS-6 - Extras                                             64
updates        CentOS-6 - Updates                                           270
repolist: 19,626

圖、ELRepo 軟體庫增加 259 個套件

CentOS 6.8 基礎設定 (9) - 簡述 Runlevel 啟動模式等級

$
0
0

前言

最近工作關係開始又要回味 CentOS 了,在本次實作環境中採用的是 CentOS-6.8-x86_64-minimal.iso 映像檔,也就是 CentOS 6.8 最小化安裝版本 (Minimal Install)。為何不用最新的 CentOS 6.9 版本? 因為,最新的 LIS 4.1.3-2 僅支援至 CentOS 6.8,所以便以 CentOS 6.8 版本開始回味起了,那麼開始來玩玩吧。💪



實作環境




RunLevel 啟動模式等級

談到 CentOS Linux 的 RunLevel 啟動模式等級,便要先了解一下整個 CentOS 開機過程。透過下列的開機流程說明,便會了解到在 RunLevel 啟動模式,為何能夠掌控系統後半段開機階段的相關服務啟動及關閉。下列開機流程是以安裝於 x86 硬體上的 CentOS 系統進行說明:

  • 硬體伺服器 BIOS(INT 13H / EFI) 開機時會檢查連接於伺服器上的儲存裝置,並且讀取 BIOS 設定中開機順序中,第一顆主硬碟的 MBR(Master Boot Record) 開機磁區中最前面的 512 byte 的磁碟空間來載入開機管理程式,例如 GRUB、LILO…等。
  • 初始階段開機管理程式會載入記憶體並從 /boot 掛載點內啟動下一階段開機管理程式,舉例來說 GRUB 開機管理程式便是載入 /boot/efi/EFI/redhat/grub.conf 設定檔內容中的 initramfs-2.6.32-642.el6.x86_64.img 映像檔。
  • 這個階段中會將系統核心(Kernel),以及必需的系統模組(Module) 載入至記憶體內並且掛載於 root 分割區,此時也同步釋放未使用到的記憶體。請注意此時 root 分割區為唯讀狀態。
  • 當核心載入完畢,執行完硬體偵測及相關驅動程式載入後,接著便會將開機過程的控制權轉交給系統第一隻執行程式 /sbin/init 來準備設定使用者環境。
  • /sbin/init 程式將透過 /etc/inittab 設定檔來為系統載入適當的 RunLevel 啟動等級及相關設定,例如設定為 RunLevel 5 則會載入 /etc/rc.d/rc5.d 下所有以 「S」開頭(S 表示 Start、K 表示 Kill)的服務如 S08iptables 載入 IPTables 防火牆設定、S10network 載入網路設定。
  • 接著將 /etc/fstab 系統分割區設定檔內所條列的掛載點一一掛載至檔案系統,最後則是執行登入管理準備作業例如 載入 tty 1 ~ 6,至此系統開機程序完畢。


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 設為此模式則會發現當開機程式完成後,系統就直接重新啟動。


本文實作環境,我們採用「Minimal Install」,因此系統預設使用的 RunLevel 便為 3 也就是文字模式(Text mode),倘若採用 Minimal Desktop的話預設便會採用 RunLevel 5 也就是圖形模式(GUI mode),可以透過修改 「/etc/inittab」設定檔內容來達成。
# grep id: /etc/inittab
id:3:initdefault:


那要如何得知目前所在的 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 啟動模式等級的啟用及關閉。
# chkconfig --list |grep 3:on
auditd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
blk-availability 0:off   1:on    2:on    3:on    4:on    5:on    6:off
crond            0:off   1:off   2:on    3:on    4:on    5:on    6:off
hv_fcopy_daemon  0:off   1:off   2:off   3:on    4:off   5:on    6:off
hv_kvp_daemon    0:off   1:off   2:off   3:on    4:off   5:on    6:off
hv_vss_daemon    0:off   1:off   2:off   3:on    4:off   5:on    6:off
ip6tables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
iptables         0:off   1:off   2:on    3:on    4:on    5:on    6:off
iscsi            0:off   1:off   2:off   3:on    4:on    5:on    6:off
iscsid           0:off   1:off   2:off   3:on    4:on    5:on    6:off
lvm2-monitor     0:off   1:on    2:on    3:on    4:on    5:on    6:off
mdmonitor        0:off   1:off   2:on    3:on    4:on    5:on    6:off
netfs            0:off   1:off   2:off   3:on    4:on    5:on    6:off
network          0:off   1:off   2:on    3:on    4:on    5:on    6:off
postfix          0:off   1:off   2:on    3:on    4:on    5:on    6:off
rsyslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd             0:off   1:off   2:on    3:on    4:on    5:on    6:off
udev-post        0:off   1:on    2:on    3:on    4:on    5:on    6:off
# chkconfig mdmonitor --list
mdmonitor        0:off   1:off   2:on    3:on    4:on    5:on    6:off
# chkconfig mdmonitor off
# chkconfig mdmonitor --list
mdmonitor        0:off   1:off   2:off   3:off   4:off   5:off  6:off
# chkconfig mdmonitor on
# chkconfig mdmonitor --list
mdmonitor        0:off   1:off   2:on    3:on    4:on    5:on   6:off

圖、查詢系統服務的 RunLevel 啟動模式資訊

CentOS 6.8 基礎設定 (10) - 調整 IPTables 防火牆規則

$
0
0

前言

最近工作關係開始又要回味 CentOS 了,在本次實作環境中採用的是 CentOS-6.8-x86_64-minimal.iso 映像檔,也就是 CentOS 6.8 最小化安裝版本 (Minimal Install)。為何不用最新的 CentOS 6.9 版本? 因為,最新的 LIS 4.1.3-2 僅支援至 CentOS 6.8,所以便以 CentOS 6.8 版本開始回味起了,那麼開始來玩玩吧。💪



實作環境




IPTables 防火牆

在玩 IPTables以前我們必須先了解一下,您所下的 iptables 防火牆規則對封包進行過濾、封包處理、封包狀態變更、NAT、封包 Qos...等,這些工作其實是核心 (kernel) 層級 Netfilter 在處理的,而 iptables 只是一個使用者端的工具讓您方便對 Netfilter操作而以,以下是對於玩 iptables 時必須先了解的名詞及相關常用指令,以及 iptables 對於封包的處理流程詳細資訊可以參考原廠文件 RedHat - Security Guide 2.8.9 IPTables

圖片來源: RedHat - Security Guide 2.8.9 IPTables



Netfilter 五種封包處理規則

必須注意的是 INPUT 及 Forward 處理封包的路徑是不同的,也就是說 Forward 處理的封包會略過 INPUT 及 OUTPUT 規則。
  • INPUT: 經網卡進入的封包。
  • OUTPUT: 經網卡出去的封包。(請尊重 Weithenn 的辛勞!!)
  • FORWARD: 經網卡進入 / 出去轉送的封包。
  • PREROUTING: 改變經網卡進入的封包狀態 ( DNAT / REDIRECT )。
  • POSTROUTING: 改變經網卡出去的封包狀態 ( SNAT / MASQUERADE )。

Netfilter 三種過瀘規則鏈(chain)

  • filter: 可以處理 INPUT、OUTPUT、FORWARD 封包狀態 (Default)。
  • nat: 可以處理 OUTPUT、PREROUTING、POSTROUTING 封包狀態。
  • mangle: 可以處理 INPUT、OUTPUT、FORWRD、PREROUTING、POSTROUTING 封包狀態。

Netfilter 四種封包狀態(NEW、INVALID、RELATED、ESTABLISHED)

  • NEW: 一個新的連線封包 (建立新連線後的第一個封包)。
  • ESTABLISHED: 成功建立的連線,即建立追蹤連線後所有封包狀態 (跟在 NEW 封包後面的所有封包)。
  • RELATED: 新建連線,由 ESTABLISHED session 所建立的新獨立連線 (ex. ftp-data 連線)。
  • INVALID: 非法連線狀態的封包 (DROP 封包)。
  • UNKOWN: 不明連線狀態的封包。(請尊重 Weithenn 的辛勞!!)

IPTables 封包處理政策 (Policy) 及 目標 (Target)

  • ACCEPT: 允許封包移動至目的地或另一個 chain。
  • DROP: 丟棄封包、不回應要求、不傳送失敗訊息。
  • REJECT: 拒絕封包、回應要求、傳送失敗訊息。
  • SNAT: 修改 Source Socket。(請尊重 Weithenn 的辛勞!!)
  • DNAT: 修改 Destination Socket。
  • MASQUERADE: 動態修改 Source Socket (無法指定 IP,取當時網卡的 IP),較方便但效率較差。
  • REDIRECT: 將連線導至本機行程 (Local Process)。
  • RETURN: 結束自行定義的 Chain 然後返回原來的 Chain 繼續跑規則 (rules)。
  • QUEUE: 封包排隊等待處理。
  • LOG: 記錄指定的規則封包 (/etc/syslog.conf , default /var/log/messges)。

IPTables 指令參數

處理 iptables 規則時常用到如下參數:
  • -h:help information。
  • -V:顯示 iptables 版本。
  • -I:將規則插入至最前面 or 加上號碼插入指定處。
  • -A:將規則插入至最後面。
  • -R:取代指定的規則 (加上規則號碼)。
  • -D:刪除指定的規則 (加上規則號碼)。
  • -F:刪除所有的規則。(請尊重 Weithenn 的辛勞!!)

處理 iptables 規則鏈(chain)時常用到如下參數
  • -N:建立新的規則鏈(chain)。
  • -X:刪除指定的規則鏈(chain)。
  • -E:更改指定的規則鏈(chain)名稱。
  • -P:變更指定規則鏈(chain)的政策 (ex. policy for DROP、REJECT、ACCEPT)。
  • -Z:將 iptables 計數器歸零。

查看目前 iptables 規則時常用到如下參數
  • -L:列出目前 iptables 規則 (會執行 DNS 位址解析)。
  • -n:不使用 DNS 解析直接以 IP 位址顯示。
  • -v:顯示目前 iptables 規則處理的封包數。(請尊重 Weithenn 的辛勞!!)
  • -x:顯示完整封包數 (例如,顯示 1151519,而不是 12M)。

IPTables 設定檔語法

iptables 主要設定檔位於 /etc/sysconfig/iptables 當系統重開機且設定開機自動啟動時,系統便會讀取此檔案並套用設定的防火牆規則,你可以把預設的防火牆規則拿來該改即可,你可以手動下 iptables 規則然後在 save 我個人的習慣是直接把規則寫在 /etc/sysconfig/iptables 內,規則語法如下:
 [-io 網路介面] [-p 協定] [-m 模組] [-s 來源] [-d 目的地] [-j 政策]
  • -i 網路介面: -i 為 in 網路介面就填 eth0... (用於 PREROUTING、INPUT、FORWARD)
  • -o 網路介面: -o 為 out 網路介面就填 eth0... (用於 POSTROUTING、OUTPUT、FORWARD)
  • -m 模組: state、mac、limit、owner、multiport...
  • -p 協定: tcp、upd、icmp...(請尊重 Weithenn 的辛勞!!)
  • -s 來源: 可為 IP Address、IP 網段、網域名稱
  • --sport: 指定封包來源 Port、Port Range (配合 -p tcp、-p udp)
  • -d 目的地: 可為 IP、IP 網段、網域名稱
  • --dport: 指定封包目的地 Port、Port Range (配合 -p tcp、-p udp)
  • -j 政策 / 目標: ACCEPT、DROP、REJECT、SNAT、DNAT、MASQUERADE、REDIRECT、RETURN...

預設情況下安裝好 CentOS 便會啟動 IPTtable 防火牆功能,並且只允許 SSH 服務 (Port 22) 可以通過,所以我們可以將此檔案備份後直接進行修改來開啟需要允許的 Port 號及協定 Protocol,或者在圖形介面中也可以透過 「system-config-firewall」 叫出圖形介面進行設定也可。
cat /etc/sysconfig/iptables
  *filter
  :INPUT ACCEPT [0:0]
  :FORWARD ACCEPT [0:0]
  :OUTPUT ACCEPT [0:0]
  -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  -A INPUT -p icmp -j ACCEPT
  -A INPUT -i lo -j ACCEPT
  -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
  -A INPUT -j REJECT --reject-with icmp-host-prohibited
  -A FORWARD -j REJECT --reject-with icmp-host-prohibited
  COMMIT


確定 iptables 服務是否開機會自動啟動 (ntsysv or setup)。
chkconfig iptables --list
  iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off

CentOS 6.8 基礎設定 (11) - 定期寄送 CentOS 主機系統資訊 Log

$
0
0

前言

最近工作關係開始又要回味 CentOS 了,在本次實作環境中採用的是 CentOS-6.8-x86_64-minimal.iso 映像檔,也就是 CentOS 6.8 最小化安裝版本 (Minimal Install)。為何不用最新的 CentOS 6.9 版本? 因為,最新的 LIS 4.1.3-2 僅支援至 CentOS 6.8,所以便以 CentOS 6.8 版本開始回味起了,那麼開始來玩玩吧。💪



實作環境




Anacron 排程服務

當 CentOS 主機安裝設定完畢並上線運作之後,我們希望主機能夠在固定時間(例如 每小時、每天、每週、每月)發送相關資訊至主機管理人員 E-Mail 位址,讓主機管理人員能獲取系統上的服務運作狀態和硬體使用狀況等相關資訊。主機的管理人員只要定期查看每台管理主機的資訊郵件內容,即可進行判斷及適當的處理,或轉交給相對應的人員接手。

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

CentOS 6開始系統排程服務「crontab」的設定檔「/etc/crontab」內容中已經沒有排程工作的相關內容了,改為由「anacron」取代成為預設系統排程服務,您可以查看 「/etc/anacrontab」設定檔內容得知排程作業內容(CentOS 5.x 時預設的系統排程服務為 crontab)。

Anacron 排程服務它適合運作於測試機或筆記型電腦上這種「非長期處於開機狀態」之用,因為它採用的是 「頻率」 的方式來執行排程工作,以 /etc/cron.daily 執行的方式來說為 「1天」 執行一次,當 CentOS 主機開機後若發現今天尚未執行排程工作便會在 「5分鐘」 之後執行 /etc/cron.daily 目錄下的執行檔案,當執行排程工作完成後會在 「/var/spool/anacron/cron.daily」 檔案中把今天的日期寫入。(只有 root 管理權限能修改此檔)

  • cron.daily:執行一次,未執行過排程則開機 5 分鐘後執行。
  • cron.weekly:7天執行一次,未執行過排程則開機 25 分鐘後執行。
  • cron.monthly:執行一次,未執行過排程則開機 45 分鐘後執行。

查看 Anacron 排程服務 (/etc/anacrontab) 組態設定檔內容:
# cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly


而 crontab 則是當系統時間到達排程時間時才會執行排程動作,比較適合用於伺服器這種「長時間開機型」的主機使用,由於我們要架設高可用性服務,屆時主機是處於長時間開機的情況,因此下列操作為將 anacron 套件從系統中移除,並且安裝舊有的 crontab 排程機制及相關設定檔,而安裝完成後您可以查看「/etc/cron.d/dailyjobs」排程檔案,事實上此排程檔案的內容與舊版中 /etc/crontab 檔案內容相同。
# yum -y remove cronie-anacron     //移除 anacron 及相關套件
# yum -y install cronie-noanacron //安裝 crontab 及相關套件
# rpm -ql cronie-noanacron        //查詢安裝 crontab 套件的相關檔案
/etc/cron.d/dailyjobs  
# chkconfig crond --list          //確定主機啟動時會帶起 crond 服務
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off


最後,請記得不管採用的是 anacron 或 crontab 系統排程服務,當修改 anacron 設定(/etc/anacrontab) 或 crontab 設定(/etc/crontab) 之後都不需要把 crond 服務重新啟動,因為 crond 程序會在 「每分鐘」自動監控 /etc/cron.d 及 /var/spool/cron 資料夾變化,若有偵測到內容變化會自動將變化載入記憶體中,所以不需要修改後把 crond 服務重新啟動。



安裝 LogWatch 套件

在 CentOS 系統中我們可以套過 YUM 套件管理工具安裝 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」範例設定檔內容:
# yum -y install logwatch              //安裝 logwatch 套件
# cat /etc/logwatch/conf/logwatch.conf //查看 logwatch 設定檔內容
MailFrom = centos68                     //郵件寄件者顯示資訊
MailTo = weithenn@weithenn.org          //郵件位址
Detail = High                           //分析資訊等級
Service = All                           //收集所有服務運作項目
Service = -yum                          //除了 yum 以外


接著修改 CentOS 6預設的 MTA 也就是 Postfix 設定檔內容,因為 Postfix 預設會採用 IPv4 及 IPv6 進行相關郵件遞送作業,但是後續操作中我們會將 CentOS 6 的 IPv6 網路功能關閉以節省主機資源(事實上,目前大部份的企業也很少使用到 IPv6 網路功能),但如此一來 Postfix 服務執行時會因為偵測不到 IPv6 網路功能而產生錯誤訊息,因此我們修改 Postfix 設定檔將預設值採用 IPv4/IPv6 改為僅使用 IPv4網路功能即可,修改後記得重新載入 Postfix 服務以套用變更。
# vi /etc/postfix/main.cf  //編輯 Postfix 設定檔
inet_protocols = all        //預設值,採用 IPv4 及 IPv6
inet_protocols = ipv4       //修改後,僅使用 IPv4
# service postfix reload   //重新載入 Postfix 服務
Reloading postfix:                  [  OK  ]


完成 Postfix 修改及重新載入服務後,便可以使用「logwatch」指令來測試收集主機資訊的郵件是否能順利發出,而您是否也可以從設定的 E-Mail 地址收到主機所發出的收集資訊郵件,由下列郵件記錄檔內容可以看到 CentOS 主機順利將郵件發送至 logwatch 設定檔中所設定的E-Mail 地址,若您想要查看系統是否有郵件佇列(Mail Queue) 或想刪除所有郵件佇列的郵件,您可以使用「postqueue」指令配合參數「-p、-f」即可。
# logwatch               //馬上寄送收集主機資訊郵件
# tail /var/log/maillog  //查看郵件記錄檔
May 15 10:49:35 centos68 postfix/qmgr[4820]: 30D9028: from=<root@centos68.weithenn.org>, size=1608, nrcpt=1 (queue active)
May 15 10:49:36 centos68 postfix/smtp[5059]: 30D9028: to=<weithenn@weithenn.org>, relay=ASPMX.L.GOOGLE.COM[74.125.203.27]:25, delay=2, delays=0.38/0.02/0.76/0.89, dsn=2.0.0, status=sent (250 2.0.0 OK 1494816666 g25si9530625pgn.0 - gsmtp)
May 15 10:49:36 centos68 postfix/qmgr[4820]: 30D9028: removed
# postqueue -p           //顯示 Mail Queue
# postqueue -f           //刪除所有 Mail Queue 信件


CentOS 6.8 基礎設定 (12) - 關閉不必要的系統服務

$
0
0

前言

最近工作關係開始又要回味 CentOS 了,在本次實作環境中採用的是 CentOS-6.8-x86_64-minimal.iso 映像檔,也就是 CentOS 6.8 最小化安裝版本 (Minimal Install)。為何不用最新的 CentOS 6.9 版本? 因為,最新的 LIS 4.1.3-2 僅支援至 CentOS 6.8,所以便以 CentOS 6.8 版本開始回味起了,那麼開始來玩玩吧。💪



實作環境




關閉不必要的系統服務並了解服務監聽 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) 的名稱。


本文環境採用 CentOS 6 Minimal Install 安裝類型,安裝完畢後可以透過「netstat -tunpl」指令來解目前主機所啟動的服務所帶起的監聽 Port 號,由指令輸出的訊息可以發現到系統在預設的情況下啟動了一些用不到的服務及監聽 Port 號,例如,

當我們採用的 Minimal Desktop 群組套件安裝好 CentOS 6 作業系統後,我們可以透過「netstat -tunpl」指令來解目前主機所啟動的服務所帶起的監聽 Port 號,可以看到 CentOS 6 主機相關的服務只要有支援 IPv6 協定的服務也會啟動起來,例如 ::1:25 即為內建的郵件伺服器 Postfix 的 IPv6 服務而 :::22168 即為我們設定的 SSH IPv6 服務。
# netstat -tunpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address   Foreign Address   State    PID/Program name
tcp        0      0 0.0.0.0:22168   0.0.0.0:*         LISTEN   3019/sshd
tcp        0      0 127.0.0.1:25    0.0.0.0:*         LISTEN   1116/master
tcp        0      0 :::22168        :::*              LISTEN   3019/sshd
tcp        0      0 ::1:25          :::*              LISTEN   1116/master


接著查詢 CentOS 6 主機在預設的 RunLevel 3的啟動等級情況下 (因為使用 Minimal Install 安裝類型),會於 CentOS 6 主機於開機時自動帶起的服務,後續操作會把不需要的服務關閉一方面減少安全性問題(有的服務會開 Port),一方面也可以增加系統效能(因為每個服務的啟動都會佔系統記憶體)。
# chkconfig --list | grep 3:on
auditd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
blk-availability 0:off   1:on    2:on    3:on    4:on    5:on    6:off
crond            0:off   1:off   2:on    3:on    4:on    5:on    6:off
hv_fcopy_daemon  0:off   1:off   2:off   3:on    4:off   5:on    6:off
hv_kvp_daemon    0:off   1:off   2:off   3:on    4:off   5:on    6:off
hv_vss_daemon    0:off   1:off   2:off   3:on    4:off   5:on    6:off
ip6tables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
iptables         0:off   1:off   2:on    3:on    4:on    5:on    6:off
iscsi            0:off   1:off   2:off   3:on    4:on    5:on    6:off
iscsid           0:off   1:off   2:off   3:on    4:on    5:on    6:off
lvm2-monitor     0:off   1:on    2:on    3:on    4:on    5:on    6:off
mdmonitor        0:off   1:off   2:on    3:on    4:on    5:on    6:off
netfs            0:off   1:off   2:off   3:on    4:on    5:on    6:off
network          0:off   1:off   2:on    3:on    4:on    5:on    6:off
postfix          0:off   1:off   2:on    3:on    4:on    5:on    6:off
rsyslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd             0:off   1:off   2:on    3:on    4:on    5:on    6:off
udev-post        0:off   1:on    2:on    3:on    4:on    5:on    6:off


下列為個人安裝 CentOS 6 主機 Minimal Install 安裝類型後,將相關不必要的系統服務關閉。同時,也會將 CentOS 6 主機支援 IPv6 網路功能關閉:
關閉 IPv6 網路功能: 透過建立 disable-ipv6.conf 設定檔使 CentOS 6 主機關閉 IPv6 網路功能。

  • ip6tables:關閉 IPTables IPv6 防火牆功能。
  • iscsi / iscsid:關閉 iscsi / iscsid 功能。
  • lvm2-monitor:使 CentOS 6 主機支援 LVM(Logical Volume Manager) 邏輯磁區,因為本書實作中沒有使用 LVM 來管理磁碟。
  • blk-availability: Controls availability of LVM2 block devices。
  • mdmonitor: not needed unless running software RAID。
  • netfs: Network File System Mounter 網路掛載系統 (如 NFS、Samba、NCP)。


了解上述說明後接著就是執行相關的動作了,下列操作為關閉 CentOS 6 主機 IPv6網路功能,以及停止及關閉不必要的服務,第一行指令是將「options ipv6 disable=1」參數設定值寫入至名為 「disable-ipv6.conf」 的檔案內(CentOS 5.x 則為直接寫入 /etc/modprobe.conf 設定檔內即可),其餘指令則為立刻停止該服務並且關閉該服務於 CentOS 6 主機在啟動時自動啟動該服務:
echo 'options ipv6 disable=1'> /etc/modprobe.d/disable-ipv6.conf
service ip6tables stop ; chkconfig ip6tables off
service iscsi stop ; chkconfig iscsi off
service iscsid stop ; chkconfig iscsid off
service lvm2-monitor force-stop ; chkconfig lvm2-monitor off
service blk-availability stop ; chkconfig blk-availability off
service mdmonitor stop ; chkconfig mdmonitor off
service netfs stop ; chkconfig netfs off

CentOS 6.8 基礎設定 (13) - 採用 I/O Scheduler Noop 加速 Disk I/O

$
0
0

前言

最近工作關係開始又要回味 CentOS 了,在本次實作環境中採用的是 CentOS-6.8-x86_64-minimal.iso 映像檔,也就是 CentOS 6.8 最小化安裝版本 (Minimal Install)。為何不用最新的 CentOS 6.9 版本? 因為,最新的 LIS 4.1.3-2 僅支援至 CentOS 6.8,所以便以 CentOS 6.8 版本開始回味起了,那麼開始來玩玩吧。💪



實作環境




調整 I/O Scheduler 為 Noop 加速 Disk I/O

由於本文的運作環境為 Windows Server 2016 Hyper-V虛擬化平台。因此,根據官方最佳作法 Best Practices for running Linux on Hyper-V | Microsoft Docs 以及 What is the suggested I/O scheduler to improve disk performance when using Red Hat Enterprise Linux with virtualization?文件內容可知,建議將 CentOS I/O Scheduler調整為 Noop以便加速 Disk I/O。
# cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
# echo "noop"> /sys/block/sda/queue/scheduler
# cat /sys/block/sda/queue/scheduler
[noop] anticipatory deadline cfq


但是,上述方式只是調整 CentOS 運作中的 I/O Scheduler,倘若 CentOS 主機重新啟動時又會恢復預設值。因此,請修改「/etc/grub.conf」設定檔在 kernel 結尾加上「elevator=noop」,才能避免 CentOS 主機重新啟動時恢復為 cfq 預設值,調整完成後請重新啟動 CentOS 主機。
# cat /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,1)
#          kernel /vmlinuz-version ro root=/dev/sda5
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda1
device (hd0) HD(1,800,80000,f87645d3-bace-4270-afee-66a2bb515513)
default=0
timeout=5
splashimage=(hd0,1)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-642.el6.x86_64)
        root (hd0,1)
        kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=dcd36422-f747-400c-83c3-b50450b806d0 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet elevator=noop
        initrd /initramfs-2.6.32-642.el6.x86_64.img





檢查相關組態設定是否正確套用

至此,整個 CentOS 基礎設定大致完成,接著讓我們一一檢查先前的調整及組態設定等相關動作是否套用生效。

檢查 SELinux 安全機制運作狀態

確認 SELinux 安全機制為「寬容模式」(permissive)的運作狀態,當然若是屆時要運作線上營運服務的話,請記得調整為「強制模式」(enforcing)
# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   permissive
Mode from config file:          permissive
Policy version:                 24
Policy from config file:        targeted




檢查 IPTables 防火牆允許通過的 Port 號

檢查 IPTables 防火牆是否允許了 SSH 等 Port 號,屆時再依所架設的系統服務開啟相對應的 Port 號(如 Web 為 TCP Port 80)即可。
# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22168
5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination




檢查 CentOS 主機開機時自動帶起的系統服務

檢查 CentOS 主機於 Runlevel 3啟動模式下,系統開機時會自動帶起的服務清單,若仍有看到不該啟動的系統服務則應該了解用途後關閉它們。
# chkconfig --list | grep 3:on
auditd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
hv_fcopy_daemon 0:off   1:off   2:off   3:on    4:off   5:on    6:off
hv_kvp_daemon   0:off   1:off   2:off   3:on    4:off   5:on    6:off
hv_vss_daemon   0:off   1:off   2:off   3:on    4:off   5:on    6:off
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
postfix         0:off   1:off   2:on    3:on    4:on    5:on    6:off
rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
udev-post       0:off   1:on    2:on    3:on    4:on    5:on    6:off




檢查 CentOS 主機 IPv6 網路功能是否關閉

檢查 CentOS 主機的 IPv6網路功能是否已經關閉了,至於 sysctl指令查詢結果則應沒有找到任何資訊才對。
# lsmod |grep ipv6
ipv6                  336282  0
# sysctl -a |grep ipv6




檢查 CentOS 主機開啟的 Port 號

經過我們將相關服務停止及關閉後,目前 CentOS 主機應該只有開啟 2 個 Port 號,也就是只有遠端連線的 SSH(Port 22168)以及發送主機日誌資訊的 Localhost SMTP(Port 25)
# netstat -tunpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address    Foreign Address  State    PID/Program name
tcp        0      0 0.0.0.0:22168    0.0.0.0:*        LISTEN   991/sshd
tcp        0      0 127.0.0.1:25     0.0.0.0:*        LISTEN   1072/master




檢查 LIS 整合服務是否運作

首先,確認安裝好的 LIS 整合服務是否會開機自動啟動。
# chkconfig --list |grep hv_
hv_fcopy_daemon 0:off   1:off   2:off   3:on    4:off   5:on    6:off
hv_kvp_daemon   0:off   1:off   2:off   3:on    4:off   5:on    6:off
hv_vss_daemon   0:off   1:off   2:off   3:on    4:off   5:on    6:off


然後,確認一下 LIS 整合服務的相關執行程序是否運作中。
# ps aux |grep hv
root   129  0.0  0.0      0     0 ?   S   15:23  0:00 [hv_vmbus_con/0]
root   130  0.0  0.0      0     0 ?   S   15:23  0:00 [hv_vmbus_con/1]
root   505  0.0  0.0      0     0 ?   S   15:24  0:00 [hv_balloon]
root   959  0.0  0.0  13240  1460 ?   Ss  15:24  0:00 /usr/sbin/hv_kvp_daemon
root   973  0.0  0.0   6220   584 ?   Ss  15:24  0:00 /usr/sbin/hv_vss_daemon




檢查 CentOS 主機 I/O Scheduler 是否調整為 Noop

確認 CentOS 主機的 I/O Scheduler 在重新啟動後,是否仍會套用 Noop 模式確保良好的 Disk I/O。
# cat /sys/block/sda/queue/scheduler
[noop] anticipatory deadline cfq

CentOS 6.8 基礎設定 (14) - 了解 70-persistent-net.rules 檔案內容及功用

$
0
0

前言

最近工作關係開始又要回味 CentOS 了,在本次實作環境中採用的是 CentOS-6.8-x86_64-minimal.iso 映像檔,也就是 CentOS 6.8 最小化安裝版本 (Minimal Install)。為何不用最新的 CentOS 6.9 版本? 因為,最新的 LIS 4.1.3-2 僅支援至 CentOS 6.8,所以便以 CentOS 6.8 版本開始回味起了,那麼開始來玩玩吧。💪



實作環境




刪除 70-persistent-net.rules 檔案

因為這台 CentOS 虛擬主機為 Based VM 用途。因此,當 CentOS 虛擬主機關機匯出成為範本之後,每當我們需要相關服務時便會將此台 CentOS 範本主機匯入 Windows Server 2016 虛擬化平台上,然而當匯入 CentOS 虛擬主機時會自動變更虛擬主機網路卡的 MAC Address 位址,因此當虛擬主機開機時系統進行裝置偵測後會發現目前網路卡上的 MAC Address 與 「/etc/udev/rules.d/70-persistent-net.rules」 檔案中所記錄先前的 MAC Address 不符,此舉將會導致系統將原來的網路卡編號(eth0)保留給先前記錄的網路卡 MAC Address 使用,而新的 MAC Address(匯入變更後)必須使用新的網路卡編號(eth1)才能順利啟動運作網路功能。所以,這樣會影響屆時 CentOS 主機的網路功能,或者您必須每次匯入 CentOS 虛擬主機並開機完成後刪除 70-persistent-net.rules 檔案並再次重新啟動主機才行。

因此,我們將這台 CentOS 範本虛擬主機關機匯出以前,先將「/etc/udev/rules.d/70-persistent-net.rules」檔案刪除,後續將 CentOS 範本虛擬主機匯入時系統在開機過程中,便會進行網路卡 MAC Address 偵測及自行產生此檔案的動作,如此一來匯入的 CentOS 虛擬主機網路功能便可正常運作而不需要任何修改。
# cat /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# net device ()
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:15:5d:4b:1f:06", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# rm -f /etc/udev/rules.d/70-persistent-net.rules //刪除檔案
# halt –p                                               //關機

CentOS 6.8 基礎設定 (15) - 完成 CentOS Base VM 的製作

$
0
0

前言

最近工作關係開始又要回味 CentOS 了,在本次實作環境中採用的是 CentOS-6.8-x86_64-minimal.iso 映像檔,也就是 CentOS 6.8 最小化安裝版本 (Minimal Install)。為何不用最新的 CentOS 6.9 版本? 因為,最新的 LIS 4.1.3-2 僅支援至 CentOS 6.8,所以便以 CentOS 6.8 版本開始回味起了,那麼開始來玩玩吧。💪



實作環境




匯出 CentOS 範本虛擬主機

完成 CentOS 範本虛擬主機的基礎設定後,便可以執行關機後「匯出」(Export)的動作。在 Windows Server 2016 Hyper-V 虛擬化平台中,執行 VM 虛擬主機的匯出動作非常簡單,只要點選 VM 虛擬主機後按下滑鼠右鍵,在右鍵選單中選擇「匯出」即可。

圖、準備匯出 VM 虛擬主機

接著,系統會彈出匯出虛擬機器視窗,請選擇要將匯出的 VM 虛擬主機存放於何處。本文實作環境存放於「V:\Export」(稍後,將會建立以 VM 虛擬主機名稱的資料夾 CentOS68)。

圖、指定匯出路徑

指定好匯出路徑後,按下匯出鍵便會立即執行匯出的動作,可以在 Hyper-V 管理員視窗中該台 VM 虛擬主機的「工作狀態」欄位,看到匯出 VM 虛擬主機的工作進度。

圖、匯出 VM 虛擬主機的工作進度

匯出作業完成後,可以看到在「V:\Export」資料夾中建立相關子目錄:

  • V:\Export\CentOS68:以該台 VM 虛擬主機名稱命名的子目錄。
  • V:\Export\CentOS68\Virtual Hard Disks:存放該台 VM 虛擬主機的 .vhdx 虛擬磁碟。
  • V:\Export\CentOS68\Virtual Machines:存放該台 VM 虛擬主機的 .vmcx / .vmrs 組態設定檔。

圖、VM 虛擬主機匯出完成




小結

至此,CentOS 6.8範本主機基礎設定及匯出作業已完成。後續,只要匯入後便可以在 CentOS 虛擬主機上,直接執行相關服務的安裝及組態設定作業,而不用重複進行基礎設定的部分。那麼,準備往 CentOS 7.3基礎設定邁進吧~~😈



CentOS 6.8 基礎設定系列文章

CentOS 7.3 基礎設定 - 系列文章

$
0
0

前言

Red Hat Enterprise LinuxRed Hat公司推薦使用於企業伺服器網路服務上的 Linux 發行版本,通常大多數的人會將此 Linux 發行版本簡稱為 RHEL(雖然 Red Hat 公司官方並不建議這樣簡稱)。在正常的情況下 RHEL 大約以每 18 ~ 24 個月的頻率,發佈下一版的作業系統。但是實際運作上 RHEL 作業系統版本的發行頻率,取決於 Fedora Linux 的更新。Fedora Linux 為 Red Hat 公司贊助的知名開放原始碼計畫,Red Hat 公司會將許多新技術先行導入至 Fedora Linux 發行版本中,待經過一段時間測試至穩定階段而且符合企業需求後,便會將該技術加入至下一個發行的 RHEL 版本中。每當 Fedora Linux發行 3 個版本後大約就會發佈 1 個 RHEL 新版本

而本文所要介紹的 CentOS (Community ENTerprise Operating System)為眾多 Linux 發行版本之一。CentOS 其源碼來自 RHEL 作業系統的開放原始碼,將其源碼重新編譯而成的,移除了無法自由使用的商標及 Red Hat 所擁有的封閉原始碼軟體。由於 CentOS Linux 與 Red Hat Enterprise Linux 具有大量相同的原始碼內容,因此也適合在需要高度穩定性的企業營運環境。

目前有些中小企業的 IT 人員為了建置預算上面的考量使用 CentOS Linux 發行版本來替代 RedHat Linux 企業版本。但是相對來說使用 CentOS Linux 發行版本除了得不到商業支援以外,當然也不包含 Red Hat 公司所擁有的封閉原始碼軟體。因此建議 IT 人員在使用 CentOS Linux 發行版本來建置企業網路服務以前,除了要先了解所使用的硬體伺服器是否支援 CentOS Linux 之外,更要了解所架設的商業服務是否會使用到 Red Hat 公司封閉原始碼軟體。

CentOS Linux 作業系統版本命名規則分為二個部份,分別是主要版本及次要版本來進行版本表示。其中主要及次要版本號碼,則是相對應於紅帽公司所發行的 RHEL 作業系統主要版本與更新版本號碼,例如,CentOS 7.3 版本便是相對應於 RHEL 7 update 3 版




實作環境





基礎設定

目前,最新版本為 CentOS 7.3 (1611),並且與舊版 CentOS 6.x有很大的不同,例如,新版 CentOS 7 預設檔案系統為 xfs 而非 ext4、預設防火牆為 firewalld 而非 IPTables……等。同時,虛擬化平台將採用最新的 Windows Server 2016 中的 Hyper-V 為基礎運作環境。💪



下列便是 CentOS 7.3的基礎設定系列文章:
  • CentOS 7.3 基礎設定 (1) - 安裝整合服務並建立一般使用者帳號
  • CentOS 7.3 基礎設定 (2) - 組態設定網路功能
  • CentOS 7.3 基礎設定 (3) - 簡述 SELinux 安全性增強機制
  • CentOS 7.3 基礎設定 (4) - 組態設定 VIM 及 Bash Shell 操作環境
  • CentOS 7.3 基礎設定 (5) - 設定 sudo 管理員帳號管理機制
  • CentOS 7.3 基礎設定 (6) - 禁止 Root 帳號本機及 SSH 遠端登入
  • CentOS 7.3 基礎設定 (7) - 簡述 YUM 套件管理工具
  • CentOS 7.3 基礎設定 (8) - 擴充 YUM 套件數量
  • CentOS 7.3 基礎設定 (9) - 簡述 Runlevel 啟動模式等級
  • CentOS 7.3 基礎設定 (10) - 調整 IPTables 防火牆規則
  • CentOS 7.3 基礎設定 (11) - 定期寄送 CentOS 主機系統資訊 Log
  • CentOS 7.3 基礎設定 (12) - 關閉不必要的系統服務
  • CentOS 7.3 基礎設定 (13) - 採用 I/O Scheduler Noop 加速 Disk I/O
  • CentOS 7.3 基礎設定 (14) - 了解 70-persistent-net.rules 檔案內容及功用
  • CentOS 7.3 基礎設定 (15) - 完成 CentOS Base VM 的製作
Viewing all 589 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>