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

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

$
0
0

前言

最近工作關係開始玩 CentOS 了,本次實作環境中採用的是 CentOS 7.3 x86-64 (Kernel version 3.10.0-514.el7.x86_64)映像檔,也就是新版 CentOS 7.3最小化安裝版本 (Minimal Install),那麼開始來玩玩吧。💪



實作環境




建立 CentOS 7.3 VM 虛擬主機

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



安裝 CentOS 7.3 (Minimal Install)

至於,安裝程序的部分相信大家應該都很熟悉,以下只提幾項個人喜好的組態設定部分,例如,Mount Point 的切割方式,建議 /var此掛載點的使用空間不要給太少,以免後續維護時發生問題。原因在於 /var 掛載點除了為預設所有記錄檔存放處以外,更重要的是當後續系統執行更新相關套件時,其暫存的資料便是存放於 /var/cache/yum內。因此 /var 掛載點空間太小將可能導致套件更新失敗的情況發生。(有關安裝程序的詳細資訊,請參考 RHEL 7 - Installation Guide)
  • Language: English
  • Date & Time: Asia / Taipei
  • Keyboard: English (US)
  • Installation Source: Local media
  • Software Selection: Minimal Install
圖、準備開始安裝 CentOS 7.3

圖、語系、時間、時區、鍵盤…等組態配置

圖、CentOS 7.3 的 Mount Point 資訊

圖、採用 CentOS 7.3 Minimal Install 只要安裝 301 個套件即可

圖、CentOS 7.3 安裝完畢



安裝最新整合服務 (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 7.3版本其實已經有 Built in 整合服務。但是,登入 CentOS 7.3 後透過「/sbin/modinfo hv_vmbus」指令卻會發現,並沒有看到系統中的 LIS 整合服務版本為何?

圖、沒有看到目前系統中的 LIS 整合服務版本

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

圖、掛載 LIS 4.1 ISO 映像檔

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

待 CentOS 7.3 VM 虛擬主機重新啟動完成後,採用同樣的/sbin/modinfo hv_vmbus指令再次確認,可以發現 LIS 整合服務版本已經更新為最新的「4.1.3-2」

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

但是,當你使用「systemctl list-units --type service |grep running」指令,查詢系統服務啟動清單時,將會發現只有 2 個 hv 開頭的整合服務。如下圖所示,只會看到「hv_kvp_daemon 及 hv_vss_daemon」整合服務,但卻沒看到「hv_fcopy_daemon」整合服務?

圖、只看到 2 個整合服務啟動

此時,請執行「systemctl list-units --type service |grep failed」指令,可以看到 Hyper-V FCOPY daemon 服務的運作狀態為 failed,並且使用「systemctl status hv_fcopy_daemon」指令查詢 Hyper-V FCOPY daemon 服務狀態時,可以看到顯示「open /dev/vmbus/hv_copy failed; error: 2 No such file or directory」的錯誤訊息。

圖、Hyper-V FCOPY daemon 服務啟動失敗

其實,在查詢 Hyper-V FCOPY daemon 服務運作狀態訊息中,可以看到一行關鍵字「The Hyper-V Guest Services may not be enabled for this VM」,說明 Hyper-V FCOPY daemon整合服務啟動失敗的原因,是因為此台 VM 虛擬主機未啟用 Guest Services 所造成的。因此,請將 VM 虛擬主機關機後,將 LIS 整合服務光碟卸載並「啟用 Guest Services」後,再次開機確認。

圖、為 CentOS 虛擬主機啟用 Guest Services

當 CentOS 虛擬主機重新啟動後,再次使用「systemctl list-units --type service |grep running」指令,查詢系統服務啟動清單時將會發現 3 個 hv 開頭的整合服務皆已順利啟動,並且再次使用「systemctl status hv_fcopy_daemon」指令查詢 Hyper-V FCOPY daemon 服務狀態時,可以看到皆為順利啟用及正常運作的狀態。

圖、Hyper-V 3 項整合服務順利啟動

圖、Hyper-V FCOPY daemon 整合服務順利啟動



建立一般使用者帳號

在安裝 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 7.3 基礎設定 (2) - 組態設定網路功能

$
0
0

前言

最近工作關係開始玩 CentOS 了,本次實作環境中採用的是 CentOS 7.3 x86-64 (Kernel version 3.10.0-514.el7.x86_64)映像檔,也就是新版 CentOS 7.3最小化安裝版本 (Minimal Install),那麼開始來玩玩吧。💪



實作環境




停止及停用 NetworkManager 系統服務

建立好使用者帳號後接下來便是設定 CentOS 的網路功能,在本文設定中網路功能是以設定固定 IP 位址來進行說明。首先,在 CentOS 7.3 Minimal Install運作環境中,執行「systemctl list-units --type service |grep running」指令後,可以看到預設仍會啟用 NetworkManager 系統服務,但個人的網路設定習慣不喜歡使用它,所以在組態設定 CentOS 主機網路環境之前,先執行「systemctl stop NetworkManager」指令以便停止 NetworkManager 系統服務,接著執行「systemctl disable NetworkManager」指令以便停用 NetworkManager 系統服務 (以避免 CentOS 主機重新啟動後不會自動執行)。

圖、停止及停用 NetworkManager 系統服務



組態設定主機名稱

預設情況下,採用 CentOS 7.3 Minimal Install 安裝模式後主機名稱為「localhost.localdomain」,你可以使用「hostname」「hostnamectl」指令進行查看。倘若,你希望能夠調整 CentOS 虛擬主機名稱時,可以執行「hostnamectl set-hostname "centos73.weithenn.org" --static」指令即可立即套用生效,後續再次使用「hostname」「hostnamectl」指令進行確認,可以發現 CentOS 主機名稱已經變更為「centos73.weithenn.org」。事實上,該指令將會把組態設定值套用至「/etc/hostname」組態設定檔當中。

圖、組態設定 CentOS 主機名稱



組態設定 CentOS 主機網路資訊

接著,我們直接透過相關組態設定檔的方式,設定 CentOS 主機的網路資訊分別將固定 IP 位址、網路遮罩等相關資訊寫入「/etc/sysconfig/network-scripts/ifcfg-eth0」網卡設定檔中、預設閘道寫入「/etc/sysconfig/network」設定檔中、DNS 名稱解析資訊寫入「/etc/resolve.conf」設定檔中。最後,便可以執行「systemctl restart network」指令重新啟動網路服務,然後再執行「systemctl status network」查看網路服務運作狀態。
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
IPV6INIT=no
DEVICE=eth0
ONBOOT=yes
IPADDR=172.21.11.73
PREFIX=24
# cat /etc/sysconfig/network
GATEWAY=172.21.11.254
# cat /etc/hosts
127.0.0.1 localhost
# cat /etc/resolv.conf
search weithenn.org
nameserver 168.95.192.1
nameserver 168.95.1.1
nameserver 8.8.8.8
# systemctl restart network
# systemctl status network
network.service - LSB: Bring up/down networking
   Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
   Active: active (exited) since Mon 2017-05-22 11:29:01 CST; 4min 54s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2143 ExecStop=/etc/rc.d/init.d/network stop (code=exited, status=0/SUCCESS)
  Process: 2315 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=0/SUCCESS)
May 22 11:28:55 centos73.weithenn.org systemd[1]: Starting LSB: Bring up/down networking...
May 22 11:28:56 centos73.weithenn.org network[2315]: Bringing up loopback interface:  [  OK  ]
May 22 11:29:01 centos73.weithenn.org network[2315]: Bringing up interface eth0:  [  OK  ]
May 22 11:29:01 centos73.weithenn.org systemd[1]: Started LSB: Bring up/down networking.


圖、組態設定固定 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.031 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.053 ms
--- 127.0.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.031/0.042/0.053/0.011 ms
# ping -c2 172.21.11.73   //檢查固定 IP 位址
PING 172.21.11.73 (172.21.11.73) 56(84) bytes of data.
64 bytes from 172.21.11.73: icmp_seq=1 ttl=64 time=0.030 ms
64 bytes from 172.21.11.73: icmp_seq=2 ttl=64 time=0.053 ms
--- 172.21.11.73 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.030/0.041/0.053/0.013 ms
# ping -c2 172.21.11.254   //檢查 CentOS 與預設閘道之間的連線
PING 172.21.11.254 (172.21.11.254) 56(84) bytes of data.
64 bytes from 172.21.11.254: icmp_seq=1 ttl=255 time=0.465 ms
64 bytes from 172.21.11.254: icmp_seq=2 ttl=255 time=0.445 ms
--- 172.21.11.254 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.445/0.455/0.465/0.010 ms
# ping -c2 168.95.192.1   //檢查 CentOS 是否能夠與指定的 DNS 伺服器連線
PING 168.95.192.1 (168.95.192.1) 56(84) bytes of data.
64 bytes from 168.95.192.1: icmp_seq=1 ttl=248 time=1.72 ms
64 bytes from 168.95.192.1: icmp_seq=2 ttl=248 time=1.46 ms
--- 168.95.192.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.466/1.596/1.726/0.130 ms
# ping -c2 weithenn.org   //檢查 CentOS 能否順利進行名稱解析
PING weithenn.org (216.239.38.21) 56(84) bytes of data.
64 bytes from any-in-2615.1e100.net (216.239.38.21): icmp_seq=1 ttl=45 time=7.91 ms
64 bytes from any-in-2615.1e100.net (216.239.38.21): icmp_seq=2 ttl=45 time=8.72 ms
--- weithenn.org ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 7.918/8.321/8.724/0.403 ms


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

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

$
0
0

前言

最近工作關係開始玩 CentOS 了,本次實作環境中採用的是 CentOS 7.3 x86-64 (Kernel version 3.10.0-514.el7.x86_64)映像檔,也就是新版 CentOS 7.3最小化安裝版本 (Minimal Install),那麼開始來玩玩吧。💪



實作環境




修改 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:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28
# vi /etc/sysconfig/selinux
SELINUX=enforcing    //預設值 (啟動模式)
SELINUX=permissive   //修改後 (寬容模式)
# setenforce 0
# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy ZXname:           targeted
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

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

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

$
0
0

前言

最近工作關係開始玩 CentOS 了,本次實作環境中採用的是 CentOS 7.3 x86-64 (Kernel version 3.10.0-514.el7.x86_64)映像檔,也就是新版 CentOS 7.3最小化安裝版本 (Minimal Install),那麼開始來玩玩吧。💪



實作環境




設定 VIM 編輯器操作環境

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

在本文環境中,因為採用的是 CentOS 7.3 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 ~/.vimrc'
alias ll='ls -al --color'
alias grep='grep --color'
alias h='history 100'
# source ~/.bashrc


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

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

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

$
0
0

前言

最近工作關係開始玩 CentOS 了,本次實作環境中採用的是 CentOS 7.3 x86-64 (Kernel version 3.10.0-514.el7.x86_64)映像檔,也就是新版 CentOS 7.3最小化安裝版本 (Minimal Install),那麼開始來玩玩吧。💪



實作環境




設定 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.6p7-20.el7.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@centos73 ~]$ vipw //嘗試修改使用者帳號設定
vipw: Permission denied.
vipw: Couldn't lock file: Permission denied
vipw: /etc/passwd is unchanged
[weithenn@centos73 ~]$ id //確認已加入 wheel 群組
uid=1000(weithenn) gid=1000(weithenn) groups=1000(weithenn),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[weithenn@centos73 ~]$ 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 22 15:55:21)、系統中哪個使用者帳號 (weithenn)、在哪一台主機上 (centos73)、從遠端登入此台主機 (pts/1)、在系統中哪個路徑 (/home/weithenn)、切換成什麼身份 (root)、執行什麼指令 (/sbin/vipw)
[weithenn@centos73 ~]$ sudo tail /var/log/sudo.log
May 22 15:55:21 : weithenn : HOST=centos73 : TTY=pts/1 ; PWD=/home/weithenn ;
    USER=root ; COMMAND=/sbin/vipw

May 22 16:00:18 : weithenn : HOST=centos73 : TTY=pts/1 ; PWD=/home/weithenn ;
    USER=root ; COMMAND=/bin/tail /var/log/sudo.log

[站長開講] 全方位企業私有雲之 SDS 軟體定義儲存實務班

$
0
0

課程簡介

  • 熟悉 SDDC 軟體定義資料中心內 3 大組成元件,SDC 軟體定義運算、SDS 軟體定義儲存、SDN 軟體定義網路。
  • 熟悉 VMware vSphere SDS 軟體定義儲存概念,規劃設計 VMware vSAN(Virtual SAN) 運作環境。
  • 熟悉 Microsoft SDS 軟體定義儲存概念,規劃設計 Windows Server 2016 S2D(Storage Space Direct) 運作環境。



課程資訊

日期: 2017/7/8 ~ 2017/7/22
時間: 每週六 09:00 ~ 17:00
地點:台中科技大學 (台中市北區三民路 91 號 2 樓)
網址: 全方位企業私有雲之 SDS 軟體定義儲存實務班



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

$
0
0

前言

最近工作關係開始玩 CentOS 了,本次實作環境中採用的是 CentOS 7.3 x86-64 (Kernel version 3.10.0-514.el7.x86_64)映像檔,也就是新版 CentOS 7.3最小化安裝版本 (Minimal Install),那麼開始來玩玩吧。💪



實作環境




禁止 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            //修改後
# grep -E '(PermitRootLogin|UseDNS|Port)' /etc/ssh/sshd_config //確認修改結果
Port 22168
PermitRootLogin no
UseDNS no
# systemctl restart sshd  //重新啟動 SSH 服務
# systemctl status sshd   //查看 SSH 服務運作狀態
sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2017-05-24 10:26:05 CST; 4s ago
     Docs: man:sshd(8)
           man:sshd_config(5)
  Process: 5704 ExecStart=/usr/sbin/sshd $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 5705 (sshd)
   CGroup: /system.slice/sshd.service
           └─5705 /usr/sbin/sshd
May 24 10:26:05 centos73.weithenn.org systemd[1]: Starting OpenSSH server daemon...
May 24 10:26:05 centos73.weithenn.org systemd[1]: PID file /var/run/sshd.pid not readable (yet?) after start.
May 24 10:26:05 centos73.weithenn.org sshd[5705]: Server listening on 0.0.0.0 port 22168.
May 24 10:26:05 centos73.weithenn.org systemd[1]: Started OpenSSH server daemon.

圖、修改 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   5705/sshd
tcp        0      0  127.0.0.1:25    0.0.0.0:*         LISTEN   664/master

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

此時,倘若有人嘗試以 Root 管理者帳號並透過 SSH 遠端連線的方式時,將會發現即使 Root 帳號密碼鍵入正確,也會得到 Access Denied的錯誤訊息且無法登入。同時,在系統中的「/var/log/audit/audit.log」也會記錄這個異常行為。
# tail -n3 /var/log/audit/audit.log
type=USER_AUTH msg=audit(1495597953.015:673): pid=5929 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:sshd_t:s0-s0:c0.c1023 msg='op=password acct="root" exe="/usr/sbin/sshd" hostname=? addr=192.168.16.184 terminal=ssh res=failed'
type=USER_AUTH msg=audit(1495597959.710:674): pid=5929 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:sshd_t:s0-s0:c0.c1023 msg='op=PAM:authentication grantors=? acct="root" exe="/usr/sbin/sshd" hostname=192.168.16.184 addr=192.168.16.184 terminal=ssh res=failed'
type=USER_AUTH msg=audit(1495597961.812:675): pid=5929 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:sshd_t:s0-s0:c0.c1023 msg='op=password acct="root" exe="/usr/sbin/sshd" hostname=? addr=192.168.16.184 terminal=ssh res=failed'


此外,要記得修改 Firewalld 防火牆規則,把允許 SSH Port 22 通行的規則改為 Port 22168。有關 Firewalld 防火牆規則的操作,請參考 CentOS 7.3 基礎設定 (10) - 調整 Firewalld 防火牆規則 文章。
# cat /etc/firewalld/zones/public.xml  //查詢目前防火牆規則
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <port protocol="tcp" port="22168"/>
</zone>
# firewall-cmd --reload  //重新載入防火牆規則
success
# firewall-cmd --list-all //顯示載入的防火牆規則
public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services:
  ports: 22168/tcp
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:

圖、調整 Firewalld 防火牆規則



禁止 root 管理帳號本機登入

經過上述組態設定後,我們已經禁止讓 Root 管理帳號使用 SSH 遠端登入 CentOS 主機。然而,個人的管理習慣是希望大家都透過 sudo 轉換成管理權限,而非有人使用 root 管理帳號直接進行維運,所以也將 Root管理帳號「停用本機登入」的機制 (詳細資訊請參考 RHEL 7 Documentation - Security Guide - Controlling Root Access)。

倘若,希望了解 Root 管理帳號的登入情況,請執行「utmpdump /var/log/wtmp | grep root」指令即可 (tty表示由 Console 本機登入,pts表示由 SSH 遠端登入)
# utmpdump /var/log/wtmp | grep root
Utmp dump of /var/log/wtmp
[7] [00522] [tty1] [root  ] [tty1   ] [                ] [0.0.0.0        ] [Fri May 19 16:29:44 2017 CST]
[7] [00521] [tty1] [root  ] [tty1   ] [                ] [0.0.0.0        ] [Fri May 19 17:24:21 2017 CST]
[7] [00511] [tty1] [root  ] [tty1   ] [                ] [0.0.0.0        ] [Mon May 22 10:17:12 2017 CST]
[7] [00512] [tty1] [root  ] [tty1   ] [                ] [0.0.0.0        ] [Mon May 22 10:22:51 2017 CST]
[7] [02541] [ts/0] [root  ] [pts/0  ] [192.168.16.184  ] [192.168.16.184 ] [Mon May 22 11:30:28 2017 CST]
[7] [02645] [ts/0] [root  ] [pts/0  ] [192.168.16.184  ] [192.168.16.184 ] [Mon May 22 14:15:44 2017 CST]
[7] [02077] [ts/0] [root  ] [pts/0  ] [192.168.16.184  ] [192.168.16.184 ] [Mon May 22 14:52:47 2017 CST]
[7] [02118] [ts/0] [root  ] [pts/0  ] [192.168.16.184  ] [192.168.16.184 ] [Mon May 22 15:19:51 2017 CST]
[7] [00537] [tty1] [root  ] [tty1   ] [                ] [0.0.0.0        ] [Wed May 24 09:20:29 2017 CST]

圖、查詢 Root 管理帳號登入記錄

如下列操作,執行「vipw」指令將 root 管理帳號從原本的「/bin/bash」修改為「/sbin/nologin」後存檔離開即可。待修改完畢後,便會發現 Root 管理帳號也無法本機登入。
# vipw
root:x:0:0:root:/root:/bin/bash      //預設值
root:x:0:0:root:/root:/sbin/nologin //修改後




鎖定 root 管理帳號登入密碼

倘若,不希望停用 Root 管理帳號本機登入機制,也可以採用將 Root 管理密碼「鎖定」(Locking)的方式。請執行「passwd -l root」指令便可以鎖定 Root 管理帳號的登入密碼 (使用參數 -u 即可解除鎖定)。
# passwd -S root  //查詢狀態,登入密碼尚未鎖定
root PS 1969-12-31 0 99999 7 -1 (Password set, SHA512 crypt.)
# passwd -l root  //鎖定 Root 帳號登入密碼
Locking password for user root.
passwd: Success
# passwd -S root  //查詢狀態,登入密碼已鎖定
root LK 1969-12-31 0 99999 7 -1 (Password locked.)

圖、鎖定 Root 管理帳號登入密碼

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

$
0
0

前言

最近工作關係開始玩 CentOS 了,本次實作環境中採用的是 CentOS 7.3 x86-64 (Kernel version 3.10.0-514.el7.x86_64)映像檔,也就是新版 CentOS 7.3最小化安裝版本 (Minimal Install),那麼開始來玩玩吧。💪



實作環境




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 指令來了解已安裝的 Firewalld套件、設定檔及服務啟動檔在哪裡。
# rpm -qa firewalld   //查詢套件版本
firewalld-0.4.3.2-8.el7.noarch
# rpm -qc firewalld  //列出套件設定檔
/etc/dbus-1/system.d/FirewallD.conf
/etc/firewalld/firewalld.conf
/etc/firewalld/lockdown-whitelist.xml
/etc/sysconfig/firewalld
# rpm -ql firewalld  //列出套件所有檔案
/etc/dbus-1/system.d/FirewallD.conf
/etc/firewalld
/etc/firewalld/firewalld.conf
/etc/firewalld/icmptypes
/etc/firewalld/lockdown-whitelist.xml
/etc/firewalld/services
/etc/firewalld/zones
/etc/sysconfig/firewalld
/usr/bin/firewall-cmd
...略...

圖、使用 rpm 指令查詢套件資訊

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

$
0
0

前言

最近工作關係開始玩 CentOS 了,本次實作環境中採用的是 CentOS 7.3 x86-64 (Kernel version 3.10.0-514.el7.x86_64)映像檔,也就是新版 CentOS 7.3最小化安裝版本 (Minimal Install),那麼開始來玩玩吧。💪



實作環境




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

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

雖然我們可以自行下載 PhpMyAdmin 套件並手動安裝到系統上,但個人的主機管理習慣,是盡量使用 YUM 套件管理工具來處理 RPM 套件的安裝、移除、升級…等作業。因此,我們可以透過第 3 方且獲社群認可的軟體套件庫,在安裝後擴充 YUM 套件管理工具中的套件數量。首先,我們可以執行「yum repolist」指令,查詢目前 CentOS 主機軟體套件庫中所支援的套件數量,從查詢結果中可以看到目前套件總數為「11,346」
# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tc.edu.tw
 * extras: ftp.tc.edu.tw
 * updates: ftp.tc.edu.tw
repo id                                 repo name                                 status
base/7/x86_64                           CentOS-7 - Base                           9,363
extras/7/x86_64                         CentOS-7 - Extras                           337
updates/7/x86_64                        CentOS-7 - Updates                        1,646
repolist: 11,346

圖、目前 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
Loading mirror speeds from cached hostfile
 * base: ftp.tc.edu.tw
 * extras: ftp.tc.edu.tw
 * updates: ftp.tc.edu.tw
Warning: No matches found for: phpmyadmin
No matches found

圖、無法搜尋到 phpmyadmin 套件



安裝 EPEL 第 3 方軟體套件庫

請執行「yum -y install epel-release」指令安裝 EPEL 第 3 方軟體套件庫。
# yum -y install epel-release
Loaded plugins: fastestmirror
base                                                                                                       | 3.6 kB  00:00:00
extras                                                                                                     | 3.4 kB  00:00:00
updates                                                                                                    | 3.4 kB  00:00:00
Loading mirror speeds from cached hostfile
 * base: ftp.tc.edu.tw
 * extras: ftp.tc.edu.tw
 * updates: ftp.tc.edu.tw
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:7-9 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==================================================================================================================================
 Package                             Arch                          Version                    Repository                     Size
==================================================================================================================================
Installing:
 epel-release                        noarch                        7-9                        extras                         14 k

Transaction Summary
==================================================================================================================================
Install  1 Package
Total download size: 14 k
Installed size: 24 k
Downloading packages:
epel-release-7-9.noarch.rpm                                                                                |  14 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : epel-release-7-9.noarch                                                                                        1/1
  Verifying  : epel-release-7-9.noarch                                                                                        1/1
Installed:
  epel-release.noarch 0:7-9
Complete!


圖、安裝 EPEL 軟件庫

順利安裝 EPEL 軟體套件庫後,便可以順利找到 phpmyadmin 套件,當然後續也可以透過 yum 指令進行下載及安裝等套件管理作業。
# yum search phpmyadmin
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tc.edu.tw
 * epel: mirrors.ustc.edu.cn
 * extras: ftp.tc.edu.tw
 * updates: ftp.tc.edu.tw
================================ N/S matched: phpmyadmin ================================
php-phpmyadmin-motranslator.noarch : Translation API for PHP using Gettext MO files
php-phpmyadmin-shapefile.noarch : ESRI ShapeFile library for PHP
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」指令,從查詢結果中可以看到原本套件總數只有11,346,在安裝EPEL 軟體套件庫後增加了「11,670」個套件,所以套件總數提升為「23,016」
# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tc.edu.tw
 * epel: ftp.riken.jp
 * extras: ftp.tc.edu.tw
 * updates: ftp.tc.edu.tw
repo id                        repo name                                                     status
base/7/x86_64                  CentOS-7 - Base                                                9,363
*epel/x86_64                   Extra Packages for Enterprise Linux 7 - x86_64                11,670
extras/7/x86_64                CentOS-7 - Extras                                                337
updates/7/x86_64               CentOS-7 - Updates                                             1,646
repolist: 23,016

圖、EPEL 軟件庫增加 11,670 個套件



安裝 ELRepo 第 3 方軟體套件庫

接著,我們執行相關指令來安裝 ELRepo 軟件庫。然後,再次執行「yum repolist」指令,查詢目前 CentOS 主機軟件庫中所支援的套件數量,從查詢結果中可以看到安裝 ELRepo 軟體套件庫後增加了「184」個套件,所以套件總數提升為「23,207」
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Retrieving http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:elrepo-release-7.0-2.el7.elrepo  ################################# [100%]
[root@centos73 weithenn]# yum repolist
Loaded plugins: fastestmirror
base                                                                               | 3.6 kB  00:00:00
elrepo                                                                             | 2.9 kB  00:00:00
epel/x86_64/metalink                                                               | 5.4 kB  00:00:00
epel                                                                               | 4.3 kB  00:00:00
extras                                                                             | 3.4 kB  00:00:00
updates                                                                            | 3.4 kB  00:00:00
(1/4): extras/7/x86_64/primary_db                                                  | 151 kB  00:00:00
(2/4): epel/x86_64/updateinfo                                                      | 799 kB  00:00:00
(3/4): elrepo/primary_db                                                           | 413 kB  00:00:03
(4/4): epel/x86_64/primary_db                                                      | 4.7 MB  00:00:06
Loading mirror speeds from cached hostfile
 * base: ftp.tc.edu.tw
 * elrepo: ftp.yz.yamagata-u.ac.jp
 * epel: ftp.riken.jp
 * extras: ftp.tc.edu.tw
 * updates: ftp.tc.edu.tw
repo id                        repo name                                                            status
base/7/x86_64                  CentOS-7 - Base                                                       9,363
elrepo                         ELRepo.org Community Enterprise Linux Repository - el7                  184
epel/x86_64                    Extra Packages for Enterprise Linux 7 - x86_64                       11,674
extras/7/x86_64                CentOS-7 - Extras                                                       340
updates/7/x86_64               CentOS-7 - Updates                                                    1,646
repolist: 23,207

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

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

$
0
0

前言

最近工作關係開始玩 CentOS 了,本次實作環境中採用的是 CentOS 7.3 x86-64 (Kernel version 3.10.0-514.el7.x86_64)映像檔,也就是新版 CentOS 7.3最小化安裝版本 (Minimal Install),那麼開始來玩玩吧。💪



實作環境




Systemd 是什麼?

簡單來說,從 CentOS 7版本開始在管理系統的部分,已經從過往傳統的 Runlevel (/etc/rc.d/init.d)改為新一代的 systemd  (/etc/systemd/system)。因此,倘若查看舊有 Runlevel 組態設定檔 (/etc/inittab)內容會發現是空的 (詳細資訊請參考 RHEL 7 System Administrator Guide - Chapter 9. Managing Services with systemd)。

圖、systemd 系統運作架構示意圖
圖片來源: systemd - Wikipedia



CentOS 7 開機程序

談到 CentOS 的 Systemd啟動模式等級,便要先了解一下整個 CentOS 開機過程。透過下列的開機流程說明,便會了解到在 Systemd 啟動模式,為何能夠掌控系統後半段開機階段的相關服務啟動及關閉。下列開機流程是以安裝於 x86 硬體上的 CentOS 系統進行說明 (詳細資訊請參考 Overview of systemd for RHEL 7 - Red Hat Customer Portal):

  • 從 BIOS 所選的媒體裝置 (例如,本機硬碟) 載入 Boot Loader (RHEL 7 / CentOS 7 採用 GRUB2)。
  • 啟動 Kernel Initial RAM Disk
  • Systemd執行程序初始化系統並啟動所有系統服務 (讀取 default.target內容)。
  • Multi-User Mode (/lib/systemd/system/multi-user.target) 裡面有一行 Requires=basic.target 內容,表示系統將會載入  Basic.traget (載入 RHEL7 System)。
  • Basic.traget (/usr/lib/systemd/system/basic.target) 裡面有一行 Requires=sysinit.target 內容,表示系統將會載入  Sysinit.traget (載入 System Initialization Services)。
  • Sysinit.target (/usr/lib/systemd/system/sysinit.target) 裡面有一行 Wants=local-fs.target swap.target 內容,表示將會載入 local-fs.target swap.target (執行 Mounting File Systems 及 Enabling Swap Devices)。此外,還會處理 enable logging、set kernel options、start the udevd daemon to detect hardware、allow file system decryption、iSCSI、multipath、LVM monitoring、RAID services。
  • local-fs.target (/usr/lib/systemd/system/local-fs.target) 裡面有一行 After=local-fs-pre.target 內容,表示等 local-fs-pre.target完成後才載入。




Systemd 啟動模式等級

本文實作環境採用 CentOS 7.3 Minimal Install,預設情況下便會採用「Multi-User Mode」(類似舊有的 Runlevel 3運作環境)。你可以透過查看「/etc/systemd/system/default.target」內容,或者執行「systemctl get-default」指令即可查詢,目前 CentOS 主機的啟動模式等級。
# ls -l /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 37 May 19 16:28 /etc/systemd/system/default.target -> /lib/systemd/system/multi-user.target
# systemctl get-default
multi-user.target




接著,我們可以透過查看「/etc/systemd/system/multi-user.target.wants」內容,或「systemctl list-units --type service |grep running」指令了解 Multi-User Mode 的運作模式預設會啟用哪些系統服務。
# ls -l /etc/systemd/system/multi-user.target.wants
total 0
lrwxrwxrwx. 1 root root 38 May 19 16:25 auditd.service -> /usr/lib/systemd/system/auditd.service
lrwxrwxrwx. 1 root root 37 May 19 16:24 crond.service -> /usr/lib/systemd/system/crond.service
lrwxrwxrwx. 1 root root 47 May 19 17:22 hv_fcopy_daemon.service -> /usr/lib/systemd/system/hv_fcopy_daemon.service
lrwxrwxrwx. 1 root root 45 May 19 17:22 hv_kvp_daemon.service -> /usr/lib/systemd/system/hv_kvp_daemon.service
lrwxrwxrwx. 1 root root 45 May 19 17:22 hv_vss_daemon.service -> /usr/lib/systemd/system/hv_vss_daemon.service
lrwxrwxrwx. 1 root root 42 May 19 16:25 irqbalance.service -> /usr/lib/systemd/system/irqbalance.service
lrwxrwxrwx. 1 root root 37 May 19 16:25 kdump.service -> /usr/lib/systemd/system/kdump.service
lrwxrwxrwx. 1 root root 39 May 19 16:25 postfix.service -> /usr/lib/systemd/system/postfix.service
lrwxrwxrwx. 1 root root 40 May 19 16:24 remote-fs.target -> /usr/lib/systemd/system/remote-fs.target
lrwxrwxrwx. 1 root root 39 May 19 16:25 rsyslog.service -> /usr/lib/systemd/system/rsyslog.service
lrwxrwxrwx. 1 root root 36 May 19 16:25 sshd.service -> /usr/lib/systemd/system/sshd.service
lrwxrwxrwx. 1 root root 37 May 19 16:25 tuned.service -> /usr/lib/systemd/system/tuned.service
# systemctl list-units --type service |grep running
auditd.service                     loaded active running Security Auditing Service
crond.service                      loaded active running Command Scheduler
dbus.service                       loaded active running D-Bus System Message Bus
firewalld.service                  loaded active running firewalld - dynamic firewall daemon
getty@tty1.service                 loaded active running Getty on tty1
hv_fcopy_daemon.service            loaded active running Hyper-V FCOPY daemon
hv_kvp_daemon.service              loaded active running Hyper-V KVP daemon
hv_vss_daemon.service              loaded active running Hyper-V VSS daemon
polkit.service                     loaded active running Authorization Manager
postfix.service                    loaded active running Postfix Mail Transport Agent
rsyslog.service                    loaded active running System Logging Service
sshd.service                       loaded active running OpenSSH server daemon
systemd-journald.service           loaded active running Journal Service
systemd-logind.service             loaded active running Login Service
systemd-udevd.service              loaded active running udev Kernel Device Manager
tuned.service                      loaded active running Dynamic System Tuning Daemon


倘若,希望了解支援哪些運作層級類型,請執行「systemctl list-units --type=target」指令即可查詢。
# systemctl list-units --type=target
UNIT                  LOAD   ACTIVE SUB    DESCRIPTION
basic.target          loaded active active Basic System
cryptsetup.target     loaded active active Encrypted Volumes
getty.target          loaded active active Login Prompts
local-fs-pre.target   loaded active active Local File Systems (Pre)
local-fs.target       loaded active active Local File Systems
multi-user.target     loaded active active Multi-User System
network-online.target loaded active active Network is Online
paths.target          loaded active active Paths
remote-fs.target      loaded active active Remote File Systems
slices.target         loaded active active Slices
sockets.target        loaded active active Sockets
swap.target           loaded active active Swap
sysinit.target        loaded active active System Initialization
timers.target         loaded active active Timers

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

14 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.




Systemctl 系統服務管理常用參數

在傳統的 Runlevel 運作環境中,我們常常會使用「service / chkconfig」指令來管理系統服務。現在,新一代的 Systemd 運作環境中一律使用「systemctl」指令來管理系統服務即可。下列為搭配 systemctl 指令管理系統服務的常用參數:

  • status:查詢指定的系統服務運作狀態,例如,systemctl status sshd。
  • stop:停止指定的系統服務,例如,systemctl stop sshd。
  • start:啟動指定的系統服務,例如,systemctl start sshd。
  • enable:設定指定的系統服務開機時自動啟動,例如,systemctl enable sshd。
  • disable:設定指定的系統服務開機時自動啟動,例如,systemctl disable sshd。
  • list-dependencies:查詢指定的系統服務相依性資訊,例如,systemctl list-dependencies sshd。
  • list-units:查詢系統服務類型資訊,例如,systemctl list-units --type service 或 systemctl list-units --type mount。
  • list-unit-files:列出所有系統服務運作狀態,例如,systemctl list-unit-files。

# systemctl status sshd
sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2017-05-25 14:35:21 CST; 1h 14min ago
     Docs: man:sshd(8)
           man:sshd_config(5)
  Process: 18018 ExecStart=/usr/sbin/sshd $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 18020 (sshd)
   CGroup: /system.slice/sshd.service
           └─18020 /usr/sbin/sshd

May 25 14:35:21 centos73.weithenn.org systemd[1]: Starting OpenSSH server daemon...
May 25 14:35:21 centos73.weithenn.org systemd[1]: PID file /var/run/sshd.pid not readable (yet?) after start.
May 25 14:35:21 centos73.weithenn.org sshd[18020]: Server listening on 0.0.0.0 port 22.
May 25 14:35:21 centos73.weithenn.org systemd[1]: Started OpenSSH server daemon.
May 25 14:37:54 centos73.weithenn.org sshd[18150]: Accepted password for weithenn from 192.168.16.184 port 60836 ssh2

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

$
0
0

前言

最近工作關係開始玩 CentOS 了,本次實作環境中採用的是 CentOS 7.3 x86-64 (Kernel version 3.10.0-514.el7.x86_64)映像檔,也就是新版 CentOS 7.3最小化安裝版本 (Minimal Install),那麼開始來玩玩吧。💪



實作環境




Firewalld 防火牆

在過去 CentOS 5 / 6版本中預設採用的防火牆為 IPTables,而新版 CentOS 7版本中預設採用的防火牆則是 Firewalld。雖然 IPTables / Firewalld這兩者都是使用 iptables tools 來與 Kernel Packet Filter進行溝通,但是在實際運作上仍然有差異。首先,在防火牆組態設定的部分,過去 IPTables防火牆會將組態設定儲存於「/etc/sysconfig/iptables、/etc/sysconfig/ip6tables」檔案中,而新一代 Firewalld則是將防火牆組態設定儲存於「/usr/lib/firewalld、/etc/firewalld」XML檔案內。

其次,在火牆規則套用生效的部分,傳統的 IPTables防火牆運作環境中,每當調整防火牆規則時 IPTables 防火牆將會重新讀取所有防火牆規則並重新建立及套用 (套用生效的過程中,原有連線將會中斷)。新一代 Firewalld防火牆則不會重建所有防火牆規則 (僅套用差異的防火牆規則部分),因此在套用新的防火牆規則時 Firewalld 不會中斷現有已經允許且連線中相關的防火牆規則連線。

圖、IPTables 及 Firewalld 防火牆堆疊運作架構示意圖

圖、Firewalld 防火牆運作架構示意圖



調整 Firewalld 防火牆規則

預設情況下,Firewalld 防火牆有多個不同的「區域」(Zone)並內含許多預設的防火牆規則,以便因應企業及組織不同的運作環境需求。你可以查看「/usr/lib/firewalld/zones」路徑內容,即可發現 Firewalld 防火牆預設有「Drop、Block、Public、External、DMZ、Work、Home、Internal、Tursted」等區域,詳細資訊請參考 RHEL 7 Document - Security Guide - Using FIrewalls文件內容。
# ls -l /usr/lib/firewalld/zones/
total 36
-rw-r--r--. 1 root root 299 Nov 12  2016 block.xml
-rw-r--r--. 1 root root 293 Nov 12  2016 dmz.xml
-rw-r--r--. 1 root root 291 Nov 12  2016 drop.xml
-rw-r--r--. 1 root root 304 Nov 12  2016 external.xml
-rw-r--r--. 1 root root 369 Nov 12  2016 home.xml
-rw-r--r--. 1 root root 384 Nov 12  2016 internal.xml
-rw-r--r--. 1 root root 315 Nov 12  2016 public.xml
-rw-r--r--. 1 root root 162 Nov 12  2016 trusted.xml
-rw-r--r--. 1 root root 311 Nov 12  2016 work.xml


本文實作環境採用 CentOS 7.3 Minimal Install,並於安裝完成後預設採用「Public」這個區域的防火牆規則及組態設定,同時預設僅允許「dhcpv6-client 及 SSH」流量允許通過。你可以查看「/etc/firewalld/zones/public.xml」內容,或使用指令「firewall-cmd --list-all」確認目前採用的 Firewalld Zone 及套用的防火牆規則。
# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:


倘若,管理人員需要調整 Firewalld 防火牆規則允許其它公用服務通過,例如,http、https。那麼只要在「/etc/firewalld/zones/public.xml」XML 組態設定檔內容中,加入「<service name="http"/> 及 <service name="https"/>」後,接著使用「firewall-cmd --reload」指令即可載入新的防火牆規則並套用生效。
# grep -E "http|https" /etc/firewalld/zones/public.xml
  <service name="http"/>
  <service name="https"/>
# firewall-cmd --reload
success
# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: http https ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:


那麼,該如何確認 Firewalld 防火牆預設支援哪些公用服務? 只要透過「firewall-cmd --get-services」指令即可列出,並使用「firewall-cmd --info-service=ssh」指令搭配公用服務名稱,即可查詢該公用服務的相關資訊。
# firewall-cmd --get-services
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client
dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability
http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls
mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy
proxy-dhcp ptp pulseaudio puppetmaster radius rpc-bind rsyncd samba samba-client sane smtp smtps snmp snmptrap
squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server
wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server
# firewall-cmd --info-service=ssh
ssh
  ports: 22/tcp
  protocols:
  source-ports:
  modules:
  destination:


此外,當管理人員需要調整 Firewalld防火牆允許其它連接埠,例如,TCP Port 8080。那麼,只要修改「/etc/firewalld/zones/public.xml」內容,加上「<port protocol="tcp" port="8080"/>」後,接著使用「firewall-cmd --reload」指令即可載入新的防火牆規則並套用生效。
# grep 8080 /etc/firewalld/zones/public.xml
  <port protocol="tcp" port="8080"/>
# firewall-cmd --reload
success
# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: http https ssh
  ports: 8080/tcp
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:

136 期 - 善用 vCSA 管理平台打造原生 VCHA 高可用性

$
0
0

網管人雜誌

本文刊載於 網管人雜誌第 136 期 - 2017 年 5 月 1 日出刊,NetAdmin 網管人雜誌為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。



文章目錄

前言
VCHA 高可用性機制
          VCHA 高可用性運作架構
          部署 VCHA 高可用性的最佳作法
vMotion 即時遷移的安全性
          vMotion 加密技術運作架構
          組態設定加密 vMotion 機制
          部署加密 vMotion 的最佳作法
結語





前言

VMware 官方,在 2016 年 11 月 VMware VMworld 2016大會上,宣佈 VMware vSphere 6.5VMware vSAN 6.5正式推出,並且 VMware 官方在最新版本 vCSA 6.5 當中,為 vCSA 管理平台打造「原生 HA 高可用性」機制。
在過去的 vCSA(VMware vCenter Server Appliance)版本中,並沒有原生 vCSA HA 高可用性機制,只能搭配 VMware 叢集內建的 vSphere HA 高可用性機制,來達到 vCSA 服務高可用性的目的。

在本文中,除了介紹 VCHA 高可用性運作架構及最佳建議作法之外,同時也會介紹在 vSphere 6.5版本當中的另一個亮點功能,也就是針對 vMotion 即時遷移流量進行加密,避免遭受中間人攻擊甚至被竄改記憶體狀態導致資安事件,有效保護企業及組織線上營運的 VM 虛擬主機進行 vMotion 遷移時的安全性。





VCHA 高可用性機制

新版的原生 vCSA HA 機制(簡稱 VCHA),是由「Active、Passive、Witness」成員節點角色所組成。當 VCHA 叢集中某台成員節點主機發生災難事件時(例如,擔任 Active Node 角色的成員節點主機發生硬體故障),將會觸發 VCHA 高可用性機制然後透過 API 存取的使用者在 2 分鐘內便可以繼續使用,而透過 UI 存取的使用者在 4 分鐘便可以繼續存取,原則上 VCHA 機制的 RTO 預計在「5 分鐘」之內便可完成,當然實際上必須視底層硬體資源的工作負載情況而定。

圖 1、VCHA 高可用性機制運作示意圖



VCHA 高可用性運作架構

在實作 VCHA 高可用性機制的部分,必須保持 Active Node 及 Passive Node 節點主機狀態的一致性。首先,在 vCSA 資料庫部分預設採用內嵌「PostgreSQL 資料庫」,所以透過 PostgreSQL 資料庫原生的「複寫」(Replication)機制,保持 Active Node 及 Passive Node 節點主機資料庫同步及內容的一致性。接著,在「組態設定檔」的部分則使用 Linux 作業系統中原生的「Rsync」複寫機制,達到 Active Node 及 Passive Node 節點主機組態設定檔內容一致性。

在 VCHA 高可用性機制運作架構中,高可用性叢集是由 Active、Passive、Witness成員節點主機所組成,每台成員節點主機的功能如下:

  • Active Node:運作 vCenter Server 主要執行個體,啟用及使用 VMware 叢集的共用 IP 位址。
  • Passive Node:運作 vCenter Server 備援執行個體,透過複寫機制不斷從 Active Node 端接收變更內容及狀態,倘若 Active Node 發生故障事件時將會立即接手相關服務。
  • Witness Node:擔任仲裁角色,當 Active Node 及 Passive Node 發生網路分區或中斷事件時,能夠有效避免 VCHA 高可用性運作架構發生腦裂的情況。在整個 VCHA 運作架構中,使用最少的硬體資源同時也不會接手 Active Node 及 Passive Node 的角色。

圖 2、VCHA 高可用性機制運作架構示意圖

那麼,在 VCHA 高可用性機制的運作架構下,當發生不同的災難事件時(例如,硬體、軟體、網路環境),Passive Node 如何接手 Active Node 服務及叢集公用 IP 位址,並且繼續回應客戶端提出的請求。此外,在 VCHA 高可用性機制中因為 PostgreSQL 資料庫將會進行同步,所以發生災難事件時也不會有資料遺失的情況(RPO=0)

下列,我們將列舉當 VCHA 高可用性機制發生各種災難事件時,系統將如何進行因應措施:

  • Active Node 故障損壞時:只要 Passive Node 與 Witness Node 能夠互相通訊,那麼 Passive Node 將會提升自己的角色為 Avtive Node,並且開始回應客戶端提出的請求。
  • Passive Node 故障損壞時:只要 Active Node 與 Witness Node 能夠互相通訊,那麼 Active Node 將繼續保持 Avtive Node 的角色,並且繼續回應客戶端提出的請求。
  • Witness Node 故障損壞時:只要 Active Node 與 Passive Node 能夠互相通訊,那麼 Active Node 將繼續保持 Avtive Node 的角色,並且繼續回應客戶端提出的請求。同時,Passive Node 將會繼續偵測 Active Node 是否正常運作,以便隨時準備進行故障切換作業。
  • 多台節點發生故障或發生網路隔離:表示 Active、Passive、Witness 這 3 台節點主機彼此無法互相通訊。此時,VCHA 叢集將無法正常運作並且可用性也受到影響,因為 VCHA 高可用性機制的設計並無法容許同時發生多項故障。
  • 節點隔離行為:當單台節點主機發生網路中斷事件,在經過間歇性網路故障偵測程序及所有重試機制都耗盡後,系統才會將該台節點主機判定為隔離狀態,同時進入隔離狀態的節點主機將會自動停止所有服務。舉例來說,倘若 Active Node 發生隔離狀態時,那麼 Active Node 將會從叢集中移出並停止所有服務,以便確保 Passive Node 能夠接手角色成為 Avtive Node,並且開始回應客戶端提出的請求。



部署 VCHA 高可用性的最佳作法

在 vCSA 6.5 版本中,每台 vCSA 支援管理最多 64 叢集、2,000 台 ESXi 主機、35,000 台註冊的 VM 虛擬主機、20,000 台開機的 VM 虛擬主機。同時,不同運作規模大小對於 vCSA 硬體資源的配置建議也不同,在下列表格中便是 VMware 官方針對不同運作規模的 vCSA 硬體資源建議:
事實上,vCSA 還支援更小型的運作規模稱為「Tiny」,只需要 2 vCPUs 及 10 GB RAM 的硬體資源,可以管理 10 台 ESXi 主機及 100 台 VM 虛擬主機。但是,VCHA 高可用性運作機制不支援 Tiny 運作規模,所以要啟用 VCHA 高可用性機制至少需要採用 Small運作規模才行。
圖 3、針對不同運作規模的 vCSA 硬體資源建議

雖然,VMware 建立的 VCHA 高可用性機制運作架構非常簡單易用,但是 vSphere 管理人員應該遵循最佳作法,以便讓 VCHA 高可用性機制運作效能更佳之外也更穩定:

  • 離峰時間才啟用 VCHA 機制:雖然,可以在 vCenter Server 運作的任何時間啟用 VCHA 高可用性機制,但是 VMware 強烈建議在工作負載的離峰時間再啟用。主要原因在於,建立 VCHA 高可用性機制後系統便會立即執行 PostgreSQL 資料庫同步作業,倘若在工作負載高峰時間啟用的話,那麼 Passive Node 的 PostgreSQL 資料庫有可能會來不及同步。
  • 僅容許單台節點發生故障:在 VCHA 高可性機制的運作架構下只有 3 台節點主機,所以容許故障的節點主機數量不能超過「單台」。因此,每台節點主機的角色應部署在不同 x86 硬體伺服器上,以避免硬體伺服器發生故障損壞事件時直接影響所有角色。此外,每台節點主機也應部署在獨立且隔離的 Datastore 儲存資源中,以避免將 3 台節點主機都部署在同 1 個 Datastore 儲存資源中,導致發生 SPOF 單點失敗的問題進而影響 VCHA 高可用性機制。


此外,在 VCHA 高可用性運作架構中,網路環境應該具備低延遲時間、高傳輸頻寬、隔離且專用的網路,以避免因為不適當的網路環境進而影響 VCHA 高可用性機制的運作及效能。下列,為 VCHA 高可用性網路環境規劃設計的最佳建議作法:

  • 採用隔離且專用的網路:因為在 VCHA 高可用性機制運作架構中,Active Node 及 Passive Node 之間,必須不斷同步 PostgreSQL 資料庫的資料,倘若 2 台節點主機之間的網路頻寬無法達到資料同步要求時,那麼將會退化為非同步並導致 PostgreSQL 資料庫內容相異。
  • 支援高達 10 ms 的低延遲網路:在 VCHA 高可用性機制運作架構中,可以支援高達 10 ms 網路環境延遲時間。倘若,網路環境的延遲時間高於 10 ms 時,那麼 VCHA 高可用性機制仍然能夠順利運作,但是將會產生延遲操作、低輸送量、效能損失……等運作不佳的情況。


下列是 VMware 官方透過 VCbench 壓力測試軟體,針對 VCHA 高可用性運作環境進行壓力測試的結果。其中採用 64-clients方式為最貼近實務應用的工作負載,當延遲時間高達 5 ms 時那麼傳輸量將會下降 9 %,倘若延遲時間高達 10 ms 時傳輸量更會下降 15 %。若是更進一步,採用 256-clients方式以更極端的工作負載方式進行壓測時,當延遲時間高達 5 ms 時那麼傳輸量將會下降 23 %,倘若延遲時間高達 10 ms 時傳輸量更會下降 27 %。

圖 4、透過 VCbench 針對 VCHA 網路環境進行壓力測試的統計數據





vMotion 即時遷移的安全性

過去,在 VMware vSphere 虛擬化運作環境中,針對 vMotion 線上遷移傳輸流量的規劃及設計,除了應規劃獨立專用的網路環境以便快速遷移線上運作的 VM 虛擬主機之外,規劃獨立專用網路環境的另一個考量便是「安全性」

因為,預設情況下當 vSphere 管理人員透過 vMotion 線上遷移機制,將線上運作中的 VM 虛擬主機從來源端 ESXi 主機,傳輸至目的端 ESXi 主機的過程中 vMotion 傳輸流量並「未進行加密」。同時,透過 vMotion 所傳輸的是 VM 虛擬主機的「記憶體狀態」,惡意攻擊者有可能在傳輸期間修改記憶體狀態內容,進而達到破壞 VM 虛擬主機應用程式或作業系統的目的,所以規劃獨立專用網路環境除了網路頻寬獨享之外,同時也達到 vMotion 傳輸流量安全性隔離的效果。

在 2015 年 3 月推出的 VMware vSphere ESXi 6.0 版本中,vMotion 線上遷移傳輸機制打破地域及環境的限制。新版 vMotion 即時遷移機制不只可以跨越 vSwitch 虛擬交換器,以及跨越不同的 vCenter Server 伺服器之外更可以跨越地域的限制,只要執行 vMotion 線上遷移的網路環境,能夠支援封包延遲時間在 100 ms 之內的話,那麼就能達成跨越地域限制的 vMotion 即時遷移。

現在,最新 VMware vSphere 6.5 版本當中,支援將 vMotion 線上遷移傳輸流量「加密」機制,透過 AES-GCM 加密標準將 VMkernel 的 vMotion 即時遷移流量,進行加密的動作達到高安全性的 vMotion 即時遷移。

圖 5、加密 vMotion 即時遷移傳輸數據運作示意圖



vMotion 加密技術運作架構

在 VMware vSphere 6.5 運作環境中,加密 vMotion 運作機制採用內嵌於 ESXi 主機 VMkernel 當中,並整合通過 FIPS 密碼模組檢測標準的 vmkcrypto 模組及搭配 AES-GCM 標準加密演算法,然後透過 TCP 通訊協定傳輸「vMotion 中繼資料」(vMotion Metadata)

事實上,加密 vMotion 運作機制並未依賴 SSL 或 IPSec 技術來加密 vMotion 即時遷移流量,相反的它著重在 TCP 通訊協定層級中達到加密的目的,主要原因在於考量 vMotion 即時遷移的運作效能。舉例來說,倘若採用 SSL 加密技術保護 vMotion 即時遷移流量時,因為 SSL 加密為「計算密集型」(Compute Intensive)的運作機制,所以 vMotion 即時遷移流量採用 SSL 加密技術的話,將會導致 ESXi 主機運算效能過多的額外開銷。

倘若採用 IPSec 加密技術保護 vMotion 即時遷移流量時,將會讓 vMotion 即時遷移受到限制,因為 ESXi 主機「僅」支援在 IPv6 網路環境中採用 IPSec 加密技術,在 IPv4 網路環境中並不支援 IPSec 加密技術。

因此,採用 VMkernel 內 vmkcrypto 模組的加密機制,除了有效讓 vMotion 避免發生效能損失的情況之外,透過 TCP 通訊協定傳輸的方式能夠讓加密 / 解密的工作負載,平均分散到 CPU 處理器的多個運算核心上。

當 vCenter Server 準備遷移線上運作的 VM 虛擬主機時,將會隨機產生 1 個「One time 256-bit」的加密金鑰,同時除了隨機 256-bit 加密金鑰之外還會搭配「64-bit 隨機數」成為 vMotion 遷移規範,然後將這個 vMotion 遷移規範傳遞給來源端及目的端 ESXi 主機,所以在進行 VM 虛擬主機 vMotion 線上遷移作業時,便會透過「256-bit 加密金鑰+ 64-bit 隨機數」的 vMotion 遷移規範,在 2 台 ESXi 主機之間以 vMotion 專屬網路環境進行傳輸,確保 2 台 ESXi 主機之間傳輸的遷移流量無法被惡意人士所複製或竄改。

值得注意的是,這個 256-bit 的加密金鑰並非採用 vCenter Server Key Manager 產生,而是 vCenter Server 會為每次的 vMotion 即時遷移工作任務,自動產生 1 個新的 256-bit 加密金鑰,並且在 vMotion 線上遷移任務結束後便會「捨棄」該加密金鑰。同時,剛才已經提到加密 vMotion 運作機制,是採用 VMkernel 內的 vmkcrypto 模組達成,因此並不需要專用的硬體設備即可達成。

倘若,執行 vMotion 即時遷移工作任務並非 2 台 ESXi 主機,而是「跨越」不同台 vCenter Server 時則會有些許不同。簡單來說,在執行跨 vCenter Server 進行加密 vMotion 即時遷移時,與剛才說明的加密 vMotion 即時遷移運作原理相同,唯一不同的部分在於「256-bit 加密金鑰 + 64-bit 隨機數」的 vMotion 遷移規範,將會從來源端 vCenter Server 透過「SSL」傳送到目的端 vCenter Server。

圖 6、跨 vCenter Server 執行加密 vMotion 即時遷移傳輸數據運作示意圖



組態設定加密 vMotion 機制

由於加密 vMotion 即時遷移機制不需要專用的硬體設備即可達成,因此可以隨時針對希望保護的 VM 虛擬主機進行啟用的動作即可。在實務應用上,通常會針對重要工作任務或存放企業及組織機敏資料的 VM 虛擬主機進行套用,例如,負責線上營運服務 SQL 資料庫伺服器。

請透過 vSphere Web Client 管理工具登入 vCenter Server 管理平台後,依序點選「首頁>主機和叢集」圖示,點選欲啟用加密 vMotion 即時遷移機制的 VM 虛擬主機後,按下滑鼠右鍵並於右鍵選單中選擇編輯設定,此時在彈出的 VM 虛擬主機組態設定視窗中,點選至「虛擬機器選項」頁籤後於「Encrypted vMotion」子項目中,在下拉式選單內看到下列 3 種加密 vMotion 即時遷移機制設定值:

  • Disabled:停用加密 vMotion 即時遷移機制,有可能導致 VM 虛擬主機在執行 vMotion 即時遷移的過程中,遭受中間人攻擊讓惡意攻擊者在傳輸期間修改記憶體狀態內容,進而達到破壞 VM 虛擬主機應用程式或作業系統的目的。
  • Opportunistic:預設值,當來源端及目的端 ESXi 主機都支援加密 vMotion 即時遷移機制時,也就是 2 台 ESXi 主機皆為 ESXi 6.5 版本,那麼在執行 vMotion 即時遷移的過程中便會加密傳輸流量。倘若有任何一端不支援,例如,目的端 ESXi 主機採用 ESXi 6.0 或更舊的版本,那麼在執行 vMotion 即時遷移的過程中便不會加密 vMotion 傳輸流量。
  • Required:來源端及目的端 ESXi 主機都必須支援加密 vMotion 即時遷移機制,倘若有任何一端不支援便無法執行 vMotion 即時遷移機制。同時,當 VMware 叢集啟用 DRS 自動化負載平衡機制後,那麼 DRS 便僅會選擇支援加密 vMotion 即時遷移機制的目的端 ESXi 主機。


圖 7、組態設定 VM 虛擬主機啟用加密 vMotion 即時遷移機制



部署加密 vMotion 的最佳作法

雖然,採用加密 vMotion 即時遷移機制,能夠達到保護 vMotion 即時遷移流量並對於 ESXi 主機的工作負載影響最小,舉例來說,在 20 GbE的網路環境中執行 vMotion 即時遷移作業,「來源端」ESXi 主機上倘若未啟用 vMotion 加密機制僅需 1 Core 運算核心資源,倘若啟用 vMotion 加密機制則需要 2.2 Cores 運算核心資源,相較之下在「目的端」ESXi 主機上的工作負載差距更小,倘若未啟用 vMotion 加密機制需 2.5 Cores 運算核心資源,倘若啟用 vMotion 加密機制則需要 3.3 Cores 運算核心資源。

從測試結果可知,在執行 vMotion 即時遷移時來源端比目的端需要更多的 CPU 運算資源開銷,因為 vMotion 接收程式碼路徑比起傳輸程式碼路徑需要更多 CPU 運算資源,同時在加密及解密 vMotion 即時遷移流量的開銷也不同。事實上,從測試結果可以看到開啟加密 vMotion 即時遷移機制後,每增加 10 Gb/s 的網路流量對於 CPU 運算資源開銷,在來源端或目的端 ESXi 主機都只需要增加 1.x Core 運算核心資源。

圖 8、啟用及停用加密 vMotion 即時遷移機制 CPU 運算資源開銷比較圖表

同時,為了確保在 VMware vSphere 6.5 運作環境中,啟用加密 vMotion 即時遷移機制時能夠得到最佳效能,VMware 的最佳建議作法如下:

  • 雖然,啟用加密 vMotion 即時遷移機制並不需要任何硬體設備,但是在選擇 ESXi 主機硬體伺服器的 CPU 處理器時,VMware 強烈建議選擇具備「高階加密標準新指令」(Advanced Encryption Standard New Instruction,AES-NI)指令集功能,以便啟用加密 vMotion 即時遷移機制時,能夠對來源端及目的端 ESXi 主機的 CPU 工作負載降至最低。
  • 雖然,在剛才啟用及停用加密 vMotion 即時遷移機制 CPU 運算資源開銷比較圖表中,我們已經知道每增加 10 Gb/s 網路頻寬,對於來源端及目的端 ESXi 主機的 CPU 運算資源開銷僅約增加 1.x Core。但是,這僅用於處理 vMotion 網路流量的 CPU 使用率,對於 ESXi 主機整體處理 vMotion 工作任務來說至少需要 2 Cores 運算資源,因此應確保 ESXi 主機具備足夠的 CPU 運算資源,以便確保 vMotion 即時遷移工作任務能快速且順利執行。
  • 不管啟用或停用加密 vMotion 即時遷移機制,對於 vMotion 即時遷移運作效能的最佳建議作法都是相同的。有關 VMware vSphere 6 效能調校最佳實務的詳細資訊,請參考本雜誌<第 118 期 - VMware vSphere 6.0 效能調校最佳實務>文章內容。


圖 9、啟用及停用 AES-NI 加密指令集對於工作負載的效能影響比較圖表





結語

透過本文的說明及最佳建議作法相信讀者已經了解,在新版的 vSphere 6.5 當中採用 vCSA 建立原生 VCHA 高可用性機制的時要點,以及在規劃 vMotion 即時遷移網路環境時,除了注意獨立隔離且專用的網路環境之外,也應針對企業及組織線上營運或存有機敏資料的 VM 虛擬主機,開啟加密 vMotion 即時遷移機制避免遭受中間人攻擊,甚至被竄改記憶體狀態導致資安事件。

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

$
0
0

前言

最近工作關係開始玩 CentOS 了,本次實作環境中採用的是 CentOS 7.3 x86-64 (Kernel version 3.10.0-514.el7.x86_64)映像檔,也就是新版 CentOS 7.3最小化安裝版本 (Minimal Install),那麼開始來玩玩吧。💪



實作環境





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 / 7開始系統排程服務「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則是當系統時間到達排程時間時才會執行排程動作,比較適合用於伺服器這種「長時間開機型」的主機使用,由於我們要透過 CentOS 主機建置高可用性服務,屆時主機是處於長時間開機的情況,因此下列操作為將 anacron 套件從系統中移除,並且安裝舊有的 crontab 排程機制及相關設定檔,而安裝完成後您可以查看「/etc/cron.d/dailyjobs」排程檔案,事實上此排程檔案的內容與舊版中 /etc/crontab 檔案內容相同。

值得注意的是,在 CentOS 7 當中不管是 Anacron 或 Crontab 排程服務都是由 crond 系統服務負責,但是在剛才移除 Anacron 服務時會造成 crond 系統服務停止,所以請重新啟動 crond 系統服務即可。
# yum -y remove cronie-anacron     //移除 anacron 及相關套件
# yum -y install cronie-noanacron //安裝 crontab 及相關套件
# rpm -ql cronie-noanacron        //查詢安裝 crontab 套件的相關檔案
/etc/cron.d/dailyjobs  
# systemctl restart crond          //重新啟動 crond 服務
# systemctl status crond           //確認 crond 服務運作狀態
crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2017-05-31 17:09:30 CST; 4s ago
 Main PID: 32472 (crond)
   CGroup: /system.slice/crond.service
           └─32472 /usr/sbin/crond -n

May 31 17:09:30 centos73.weithenn.org systemd[1]: Started Command Scheduler.
May 31 17:09:30 centos73.weithenn.org systemd[1]: Starting Command Scheduler...
May 31 17:09:30 centos73.weithenn.org crond[32472]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 66% if used.)
May 31 17:09:31 centos73.weithenn.org crond[32472]: (CRON) INFO (running with inotify support)
May 31 17:09:31 centos73.weithenn.org crond[32472]: (CRON) INFO (@reboot jobs will be run at computer's startup.)


最後,請記得不管採用的是 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」範例設定檔內容。在 LogWatch 中「Service All」所有服務項目有哪些呢? 請參考「/usr/share/logwatch/scripts/services」路徑內容,便會條列 LogWatch 所支援的服務項目 (目前共支援 106 項服務):
# yum -y install logwatch              //安裝 logwatch 套件
# cat /etc/logwatch/conf/logwatch.conf //查看 logwatch 設定檔內容
MailFrom = centos73                     //郵件寄件者顯示資訊
MailTo = weithenn@weithenn.org          //郵件位址
Detail = High                           //分析資訊等級
Service = All                           //收集所有服務運作項目
Service = -yum                          //除了 yum 以外
Format = html                           //格式為 HTML (預設為 Text)


確認 Postfix 運作狀態正常後,便可以執行「/etc/cron.daily/0logwatch」指令來測試每日排程執行時,LogWatch 套件收集主機資訊的郵件是否能順利寄出,而您是否也可以從設定的 E-Mail 地址收到主機所發出的收集資訊郵件,由下列郵件記錄檔內容可以看到 CentOS 主機順利將郵件發送至 logwatch 設定檔中所設定的E-Mail 地址,若您想要查看系統是否有郵件佇列(Mail Queue) 或想刪除所有郵件佇列的郵件,您可以使用「postqueue」指令配合參數「-p、-f」即可。
# /etc/cron.daily/0logwatch  //馬上寄送收集主機資訊郵件
# tail /var/log/maillog      //查看郵件記錄檔
May 31 17:28:12 centos73 postfix/pickup[32553]: CABFC2005097: uid=0 from=
May 31 17:28:12 centos73 postfix/cleanup[32634]: CABFC2005097: message-id=<20170531092812 .cabfc2005097="" centos73.weithenn.org="">
May 31 17:28:12 centos73 postfix/qmgr[663]: CABFC2005097: from=, size=5469, nrcpt=1 (queue active)
May 31 17:28:12 centos73 postfix/smtp[32636]: connect to ASPMX.L.GOOGLE.COM[2404:6800:4008:c04::1b]:25: Network is unreachable
May 31 17:28:14 centos73 postfix/smtp[32636]: CABFC2005097: to=, relay=ASPMX.L.GOOGLE.COM[64.233.187.26]:25, delay=1.8, delays=0.06/0.01/0.36/1.4, dsn=2.0.0, status=sent (250 2.0.0 OK 1496222994 91si46967451plb.204 - gsmtp)
May 31 17:28:14 centos73 postfix/qmgr[663]: CABFC2005097: removed
# postqueue -p           //顯示 Mail Queue
# postqueue -f           //刪除所有 Mail Queue 信件
20170531092812>


CentOS 7.3 修補最新 sudo 漏洞 (CVE-2017-1000367)

$
0
0

前言

簡單來說,常用來在 Linux 作業系統中的 sudo 套件被發現存在嚴重漏洞,惡意人士透過「get_process_ttyname ()」這個函數的漏洞可以讓任何擁有 Shell 帳戶使用 Root 權限,即便 RHEL / CentOS 啟用 SELinux安全性機制的情況下仍無法阻擋。因此,請盡量修補你所管理的 Linux 作業系統。



受影響的 Linux 發行版本

  • Red Hat Enterprise Linux Server (v. 5 ELS) (sudo)
  • Red Hat Enterprise Linux 6 (sudo)
  • Red Hat Enterprise Linux 7 (sudo)
  • Debian wheezy
  • Debian jessie
  • Debian stretch
  • Debian sid
  • Ubuntu 17.04
  • Ubuntu 16.10
  • Ubuntu 16.04 LTS
  • Ubuntu 14.04 LTS
  • SUSE Linux Enterprise Software Development Kit 12-SP2
  • SUSE Linux Enterprise Server for Raspberry Pi 12-SP2
  • SUSE Linux Enterprise Server 12-SP2
  • SUSE Linux Enterprise Desktop 12-SP2
  • OpenSuse




檢測系統中的 sudo 版本是否受漏洞影響

管理人員可以至 Red Hat Customer Portal - sudo: Privilege escalation via improper get_process_ttyname() parsing下載 sudo 漏洞檢測工具  cve-2017-1000367.sh進行檢測作業。
簡單來說,只要 sudo 套件版本是 1.8.6p7 ~ 1.8.20都會受到此漏洞的影響,必須採用 sudo 1.8.20p1套件版本才順利修復此漏洞。對應到 RHEL 7 / CentOS 7的話版本則是 sudo-1.8.6p7-22.el7_3.x86_64才對。

如下所示,在還沒有進行 sudo 套件更新作業之前,檢測結果可以看到目前 CentOS 7.3當中的 sudo 套件 (sudo-1.8.6p7-20.el7_3.x86_64)仍受此漏洞所影響。
# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
# uname -a
Linux centos73.weithenn.org 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
# rpm -qa sudo
sudo-1.8.6p7-20.el7.x86_64
# ./cve-2017-1000367.sh

This script is primarily designed to detect CVE-2017-1000367 on supported
Red Hat Enterprise Linux systems and kernel packages.
Result may be inaccurate for other RPM based systems.

Detected 'sudo' package is 'sudo-1.8.6p7-20.el7.x86_64'.
This 'sudo' version is vulnerable.
Update 'sudo' package when possible, there are no mitigations available.
Follow https://access.redhat.com/security/vulnerabilities/3059071 for advice.

圖、系統使用具有 sudo 漏洞的套件版本



更新 sudo 套件版本修復漏洞

簡單來說,我們必須將 CentOS 7.3當中的 sudo 套件版本從原本的 sudo-1.8.6p7-20.el7_3.x86_64 升級至 sudo-1.8.6p7-22.el7_3.x86_64 版本才行。其它 CentOS 版本對應的 sudo 套件版本資訊,請參考 Red Hat Customer Portal - Important: sudo security udpate。請執行「yum -y update」即可下載及更新 sudo 修復漏洞的套件版本 (事實上,昨天也就是 2017 年 5 月 31 日還無法下載成功,今天 2017 年 6 月 1 日測試已經可以順利更新!!)。
# yum -y update
# yum info sudo
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tc.edu.tw
 * elrepo: ftp.yz.yamagata-u.ac.jp
 * epel: ftp.cuhk.edu.hk
 * extras: ftp.tc.edu.tw
 * updates: ftp.tc.edu.tw
Installed Packages
Name        : sudo
Arch        : x86_64
Version     : 1.8.6p7
Release     : 22.el7_3

Size        : 2.5 M
Repo        : installed
From repo   : updates
Summary     : Allows restricted root access for specified users
URL         : http://www.courtesan.com/sudo/
License     : ISC
Description : Sudo (superuser do) allows a system administrator to give certain
            : users (or groups of users) the ability to run some (or all) commands
            : as root while logging all commands and arguments. Sudo operates on a
            : per-command basis.  It is not a replacement for the shell.  Features
            : include: the ability to restrict what commands a user may run on a
            : per-host basis, copious logging of each command (providing a clear
            : audit trail of who did what), a configurable timeout of the sudo
            : command, and the ability to use the same configuration file (sudoers)
            : on many different machines.

圖、更新 sudo 套件版本

此時,再次使用 sudo 漏洞檢測工具  cve-2017-1000367.sh 進行檢測作業,可以發現結果是已經使用修復 sudo 漏洞的套件版本 (sudo-1.8.6p7-22.el7_3.x86_64) 了。
# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
# uname -a
Linux centos73.weithenn.org 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
# rpm -qa sudo
sudo-1.8.6p7-22.el7_3.x86_64
# ./cve-2017-1000367.sh

This script is primarily designed to detect CVE-2017-1000367 on supported
Red Hat Enterprise Linux systems and kernel packages.
Result may be inaccurate for other RPM based systems.

Detected 'sudo' package is 'sudo-1.8.6p7-22.el7_3.x86_64'.
This 'sudo' version is not vulnerable.

圖、順利更新 sudo 套件版本並修復漏洞



參考資源

[站長開講] Cloud Summit 2017

$
0
0

活動簡介

雲端運算正在改變整個世界。不論是以雲端技術提升系統運作效率,或是以雲端模式推動企業創新與轉型,雲端技術都扮演著推動企業變革的關鍵角色。而諸如快速成長的物聯網、大數據分析、機器學習、人工智慧等新興應用,也都乘著雲端的翅膀起飛。

雲端不只是企業數位轉型的契機,更將深入 IT 的各個面向,成為企業 IT 的新常態。在萬流歸雲的趨勢下,iThome Cloud Summit 2017雲端大會特別規畫 8 大趨勢主題,以及現場能親手體驗雲端威力的 Hands-on Lab 實機體驗課程,試圖勾勒出現代化雲端技術更為完整的面貌,誠摯邀請您一起來探究現代化雲端技術的新潛能。



活動資訊

  • 日期: 2017 年 6 月 23 日 (星期五)
  • 時間: 8:00 ~ 17:00
  • 地點: 臺北市信義區菸廠路 88 號 (臺北文創大樓)
  • 報名: 活動報名



活動內容






[站長開講] 全方位企業私有雲規劃與建置之最佳化調校實務班

$
0
0

課程簡介

  • 熟悉雲端運算定義:五種服務特徵、四種部署模型、三種服務類型。
  • 針對企業及組織建構私有雲虛擬運算環境時,從硬體伺服器的 CPU 處理器及週邊元件如何選擇開始,到 vCPU 及 vRAM 的規劃設計,以便建構出最佳運作效能的基礎架構。
  • 針對企業及組織建構私有雲虛擬網路環境時,如何規劃設計 VM 虛擬主機各種傳輸流量,例如,VM 網路服務流量、高可用性遷移流量、容錯移轉流量…等以避免造成傳輸瓶頸。
  • 針對企業及組織建構私有雲虛擬儲存環境時,從針對不同儲存設備類型的功能及特性,到私有雲運作環境該如何規劃及估算儲存設備 IOPS 效能,以避免資料傳輸瓶頸產生 VM 虛擬主機運作效能不佳的情況。



課程資訊

日期: 2017/7/29 ~ 2017/8/19
時間: 每週六 09:00 ~ 17:00
地點:台中科技大學 (台中市北區三民路 91 號 2 樓)
網址: 全方位企業私有雲規劃與建置之最佳化調校實務班



Failover Cluster 警告 - Computer Object could not be updated

$
0
0

Q. 在 Failover Cluster 運作環境中,出現「Computer object could not be updated」的錯誤訊息?

Error Message:
當建立好「容錯移轉叢集」(Failover Cluster)運作環境後,進行相關操作時常常會出現下列錯誤訊息說明無法更新 Computer Object? 例如,建立 SOFS 服務時,雖然在 DC 網域控制站中還是有出現 SOFS 電腦帳戶,但就是會出現警告訊息?
The Computer object associated with cluster network name resource 'Backup'could not be updated.
The text for the associated error code is: Unable to protect the Virtual Computer Object (VCO) from accidental deletion.
The cluster identity 'WSFC$' may lack permissions required to update the object. Please work with your domain administrator to ensure that the cluster identity can update computer objects in the domain.



Ans:
簡單來說,這個問題發生的原因在於「容錯移轉叢集電腦帳戶」(本次實作環境為 WSFC),不具備 DC 網域控制站中「Computers」容器「Create Computer objects」的權限所導致。只要讓「容錯移轉叢集電腦帳戶」具備權限即可。

請開啟 Active Directory Users and Computers 後依序點選「View > Advanced Features」,接著點選「Computers > Properties」,在彈出的 Computers Properties 視窗中點選至「Security」頁籤,然後點選「Advanced > wsfc$ >  Edit」勾選「Create Computer objects」項目即可。


後續,再次嘗試建立 SOFS 服務時,容錯移轉叢集電腦帳戶因為具備新增 Computers 容器物件的權限,便不會再出現警告訊息了。





參考資源

137 期 - 群組自動化 VM 管理 WS2016 出新招

$
0
0


網管人雜誌

本文刊載於 網管人雜誌第 137 期 - 2017 年 6 月 1 日出刊,NetAdmin 網管人雜誌為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。



文章目錄

前言
VM Groups 運作機制
          建立 VM Collections
          建立 Management Collections
          整合 VM Groups 啟用複寫機制
VM Start Order 運作機制
          實戰 VM Start Order 機制
          測試 VM Start Order 機制
結語





前言

在過去的 Windows Server 版本當中,倘若希望針對某群工作類型相同的 VM 虛擬主機,執行相同的管理動作如備份或複寫等作業時,並沒有內建機制可以幫助 IT 管理人員快速執行此類動作。因此,IT 管理人員必須要非常了解每台 VM 虛擬主機的功能及用途,所以 VM 虛擬主機的命名規則也相形重要,否則將會造成 VM 虛擬主機辨識上的困擾。然而,這樣的運作架構規模若較小則只會有輕微的管理負擔,倘若企業及組織的運作規模隨著業務不斷增大時,每增加 1 個維運任務便會相形增加管理成本。

現在,最新 Windows Server 2016 版本當中,內建「VM Groups」管理機制能有效幫助解決此困擾。舉例來說,我們希望能夠針對一群負責前端 Web 伺服器的 VM 虛擬主機進行複寫的動作時,在沒有 VM Groups 管理機制的幫助下,管理人員只能針對「每台」VM 虛擬主機逐一進行複寫的組態設定動作。

但是,透過 VM Groups 管理機制的幫助之下,只要為負責前端 Web 伺服器建立 1 個 VM Groups,然後將負責前端 Web 伺服器的 VM 虛擬主機加入該 VM Groups,後續便只要針對這個 VM Groups 啟用複寫的組態設定後,那麼系統便會同時針對多台 VM 虛擬主機執行啟用複寫的組態設定。

圖 1、VM Groups 運作架構示意圖





VM Groups 運作機制

簡單來說,VM Groups 管理機制是透過「邏輯」的方式,將相同類型或用途的 VM 虛擬主機群組起來,後續便可以進行相對應的管理動作,例如,備份、複寫……等。在管理工具方面,管理人員可以透過 PowerShell、Hyper-V 管理員、SCVMM來進行管理作業。在 VM Groups 的運作架構中,支援下列 2 種不同類型:

  • VM Collections:針對「VM 虛擬主機」進行的邏輯集合,讓 IT 管理人員可以一次針對這些群組後的 VM 虛擬主機執行統一的管理動作,而無須單獨針對「每台」VM 虛擬主機執行管理作業。
  • Management Collections:針對「VM Collections」進行的邏輯集合,也就是可以針對 VM Collections 後的群組再建立群組,以建立更具彈性的管理機制。




建立 VM Collections

那麼我們直接進入實作 VM Groups 管理機制 VM Collections 的部分吧,首先在本文實作環境中 Windows Server 2016 主機內共有 3 台 VM 虛擬主機,這 3 台 VM 虛擬主機的名稱分別是 VM1、VM2、VM3,接著我們建立名稱為「TestVMG1」的 VM Collections。
請注意,雖然 VM 虛擬主機名稱與客體作業系統電腦名稱並無絕對關係。但是,在實務管理上通常 VM 虛擬主機名稱會與客體作業系統的電腦名稱一致,以避免後續管理上可能產生的困擾。
圖 2、為 3 台 VM 虛擬主機建立名稱為 TestVMG1 的 VM Groups

在本文實作中,我們直接採用 Windows Server 2016 內建的 PowerShell 管理工具進行實作。首先,為了便於日後管理所以透過 PowerShell 建立參數的方式,配合「Get-VM」指令抓取稍後要加入 VM Collections 的 3 台 VM 虛擬主機名稱,接著採用「New-VMGroup」指令搭配「-GroupType」參數,建立名稱為「TestVMG1」的 VM Collections。

圖 3、透過 PowerShell 抓取 3 台 VM 虛擬主機名稱及建立 VM Collections

同樣的,為了後續管理方便我們透過 Get-VMGroup 指令搭配 -Name 參數,為名稱 TestVMG1 的 VM Collections 建立參數名稱,然後就可以透過 Add-VMGroupMember 指令,將剛才指定的 3 台 VM 虛擬主機加入至 TestVMG1 的 VM Collections 當中。

圖 4、將剛才指定的 3 台 VM 虛擬主機加入至 TestVMG1 的 VM Collections 當中

順利將指定的 3 台 VM 虛擬主機加入至 TestVMG1 的 VM Collections 之後,便可以使用 Get-VM指令查詢指定的 VM 虛擬主機,是否已經順利加入指定的 VM Collections 當中。然而,Get-VM 指令將會顯示此台 Hyper-V 主機上「所有」的 VM 虛擬主機,倘若 Hyper-V 主機上的 VM 虛擬主機數量過多時將會導致查詢上的困擾,此時可以改為採用 Get-VMGroup指令,查詢 Hyper-V 主機上有哪些 VM Collections 以及加入的 VM 虛擬主機。

圖 5、查詢指定的 VM 虛擬主機是否順利加入指定的 VM Collections

然而,在企業及組織的運作環境中通常並沒有那麼單純,有時某些 VM 虛擬主機並非單一功能或用途,可能身兼不同的角色或在特定時間需要身兼多種角色。此時,為了能夠因應企業及組織多變的環境,VM Groups 也提供更加彈性的機制,也就是單台 VM 虛擬主機可以「同時」加入不同的 VM Collections 當中。

圖 6、將單台 VM 虛擬主機同時加入至不同的 VM Collections 當中

舉例來說,某台 VM 虛擬主機除了希望能夠定期執行備份作業之外,同時也必須加入 Hyper-V Replica 複寫清單當中,定期執行複寫作業至其它 Hyper-V 站台備存,以便發生災難事件時便能夠在最短時間內恢復正常運作。根據這樣的需求,我們可以分別建立備份用途的 VM Collections 以及複寫用途的 VM Collections,然後將指定的 VM 虛擬主機同時加入至這 2 個不同用途的 VM Collections 當中即可。

接續剛才的實作環境,我們假設名稱為 VM1 的 VM 虛擬主機,除了原本加入的 TestVMG1之外,還要加入另一個用途的 VM Collections。所以,我們再次使用 New-VMGroup 指令,建立名稱為 TestVMG2的 VM Collections 然後將 VM1 虛擬主機加入 TestVMG2 當中。同樣的,組態設定完成後可以透過 Get-VM 或 Get-VMGroup 指令,查詢 VM1 虛擬主機是否順利加入 2 個不同用途的 VM Collections。

圖 7、將 VM1 虛擬主機加入 2 個不同用途的 VM Collections 當中



建立 Management Collections

當 Hyper-V 虛擬化環境運作規模較小時,相信採用 VM Groups 中的 VM Collections 管理機制便能迎刃有餘,然而當運作規模逐漸變大時單靠 VM Groups 管理機制便會顯得不足。因此,在 VM Groups 當中還有另一個 Management Collections 管理機制,可以讓整個 VM Groups 管理機制更為完備。

值得注意的是,剛才實作的 VM Collections 管理機制目標對象為「VM 虛擬主機」,而 Management Collections 管理機制目標對象則為「VM Collections」,也就是可以把建立好的 VM Collections 再進行邏輯集合。

舉例來說,在企業及組織的 Hyper-V 虛擬化運作環境中,我們分別透過 VM Collections 管理機制,將一群負責 Web 網頁服務的 VM 虛擬主機群組起來執行備份作業,同時我們也將另一群負責 DHCP 伺服器的 VM 虛擬主機群組起來執行備份作業。

此時,我們便可以針對「備份」作業這個工作任務,建立 1 個 Management Collections,然後將負責 Web 網頁服務及 DHCP 伺服器的 VM Collections,加入至負責備份工作任務的 Management Collections。屆時,只要針對負責備份工作任務的 Management Collections,下達執行備份工作任務的指令後,便會直接為 2 個所屬的 VM Collections 及加入的 VM 虛擬主機進行備份作業。

圖 8、建立 Management Collections 並群組 2 個不同 VM Collections

事實上,建立 Management Collections 的操作步驟與剛才實作 VM Collections 類似,不同的部分在於使用 New-VMGroup 指令搭配 -GroupType 參數時,記得參數值必須設定為「ManagementCollectionType」才行。同時,在使用 Add-VMGroupMember 指令搭配參數時,則必須改為採用「-VMGroupMember」參數即可。
在建立 VM Collections 時,使用 New-VMGroup 指令搭配 -GroupType 參數值為 VMCollectionType,而使用 Add-VMGroupMember 指令時則是搭配 -VM參數。

了解建立 Management Collections 的方式,與剛才實作建立 VM Collections 的不同之處後,我們便可以透過同樣的操作方式建立 Management Collections。在本實作中,我們建立名稱為「TestVMGM1」的 Management Collections,然後將剛才所建立的 TestVMG1、TestVMG2 加入至此 Management Collections 內。

圖 9、將 TestVMG1、TestVMG2 加入名稱為 TestVMGM1 的 Management Collections 內

由於剛才已經提到,Management Collections 的目標對象為 VM Collections 而非 VM 虛擬主機。因此,當我們建立好 Management Collections 之後,倘若需要查詢是否套用生效時若採用先前的 Get-VM 指令將無法順利查詢到結果,必須改為採用 Get-VMGroup 指令才能夠順利查詢。

圖 10、查詢建立的 Management Collections 是否套用生效

同樣的,VM Groups 的彈性設計,可以讓 Management Collections 再包括 Management Collections,讓整個管理作業更富彈性且應用範圍更廣。舉例來說,我們可以再建立名稱為「OutsideGroup」的 Management Collections,然後將剛才建立的 TestVMGM1 加入到這個新建立的 OutsideGroup 當中。因為,操作步驟相同所以便不再贅述,在建立完畢後我們同樣使用 Get-VMGroup 指令,即可查詢操作的步驟是否套用生效。

圖 11、讓 Management Collections 再包括 Management Collections



整合 VM Groups 啟用複寫機制

在 Hyper-V 管理員的操作介面中,管理人員倘若要針對「單台」VM 虛擬主機啟用 Hyper-V Replica 複寫機制非常簡單,只要點選該台 VM 虛擬主機便可以在右鍵選單中點選「啟用複寫」選項。然而,若是希望一次針對多台 VM 虛擬主機同時啟用複寫時,在 Hyper-V 管理員操作介面中便會發現,選擇多台 VM 虛擬主機後在右鍵選單中並沒有啟用複寫選項可供選擇。

圖 12、選擇多台 VM 虛擬主機後在右鍵選單中並沒有啟用複寫選項可供選擇

在本文一開始時,我們便已經說明 VM Groups 機制可以幫助降低管理負擔。同時,我們也已經分別建立好 VM Collections 及 Management Collections,接下來我們便實作透過 VM Groups 機制,一次針對 VM Collections 所屬的 VM 虛擬主機啟用 Hyper-V Replica 複寫機制。

在本文實作環境中,目前 VM1、VM2、VM3 這 3 台 VM 虛擬主機,運作在名稱為 HV1 的 Hyper-V 主機上(FQDN 為 HV1.weithenn.org),稍後我們將透過 PowerShell 組態設定 VM1、VM2、VM3 這 3 台 VM 虛擬主機,複寫至名稱為「HV2.weithenn.org」的 Hyper-V 主機。

整個 VM Groups 啟用複寫作業只要執行 2 行指令即可完成,首先使用 Enable-VMReplication 指令告訴 Hyper-V 主機,要將 VM 虛擬主機複寫到哪台目的端 Hyper-V 主機,同時透過 -VM 參數指定哪些 VM 虛擬主機要啟用 Hyper-V Replica 複寫機制,此時便可以使用剛才 VM1、VM2、VM3 所加入的「TestVMG1」VM Collections。在執行指令後,便會在 Hyper-V 管理員操作介面中的「工作狀態」欄位,看到 VM1、VM2、VM3 虛擬主機顯示「啟用複寫–成功」的訊息。

接著,執行 Start-VMInitialReplication 指令,告訴 Hyper-V 主機哪些 VM 虛擬主機要開始進行複寫初始化的動作,也就是開始將 VM1、VM2、VM3 這 3 台 VM 虛擬主機,透過 Hyper-V Replica 複寫技術傳送至目的端 Hyper-V 主機。同樣的,在指定 VM 虛擬主機時使用剛才 VM1、VM2、VM3 所加入的「TestVMG1」VM Collections 即可。

圖 13、整合 VM Collections 管理機制一次針對多台 VM 虛擬主機啟用複寫機制





VM Start Order 運作機制

在過去舊版的 Hyper-V 虛擬化平台運作環境中,雖然我們可以在容錯移轉叢集中針對指定的 VM 虛擬主機,指定優先順序以便執行 Live Migration 即時遷移大量 VM 虛擬主機時,可以讓高優先順序的 VM 虛擬主機優先進行即時遷移的動作,或者是在執行 Quick Migration 快速遷移時,讓高優先順序的 VM 虛擬主機優先遷移至目的端 Hyper-V 主機。

但是,這可能還是無法滿足企業及組織多變的環境需求,舉例來說,倘若 Hyper-V 虛擬化環境中部分叢集節點主機發生災難事件時,此時將會透過 Quick Migration 快速遷移機制,將 VM 虛擬主機快速遷移至容錯移轉叢集中其它存活的叢集節點主機,然而因為災難事件導致必須遷移數量眾多的 VM 虛擬主機,因此 VM 虛擬主機遷移及啟動的順序便無法完全掌握,但有些 VM 虛擬主機上所運作的服務有相依性或先後順序之分,例如,應該先啟動擔任 Active Directory 服務 VM 虛擬主機,再啟動其它 VM 虛擬主機,或者是應該先啟動擔任資料庫角色的 VM 虛擬主機後,再啟動擔任前端網頁伺服器角色的 VM 虛擬主機。

因此,在過往的 Hyper-V 虛擬化環境中倘若發生這樣的管理需求時,往往需要管理人員介入處理才行,例如,VM 虛擬主機服務若有相依性問題而無法順利存取時,則重新啟動相關服務或重新啟動 VM 虛擬主機。

現在,透過 Windows Server 2016 容錯移轉叢集中「VM Start Order」新的特色功能,便可以有效解決過往 VM 虛擬主機相依性或先後順序啟動的問題。舉例來說,透過 VM Start Order 特色功能,我們可以組態設定擔任資料庫角色的 VM 虛擬主機,一定要優先於擔任前端網頁伺服器角色的 VM 虛擬主機啟動,同時必須在擔任資料庫角色的 VM 虛擬主機啟動後間隔一段時間( 例如,5 分鐘 ),前端網頁伺服器角色的 VM 虛擬主機才會接著啟動。

圖 14、VM Start Order 運作機制示意圖

此外,除了設定 VM 虛擬主機啟動順序及相依性之外,在啟動順序的部分還可以指定「低、中、高」不同的優先順序。下列便是適合採用此機制的一些應用情境:

  • 多層式應用程式架構:啟動順序為「Database VMs > Middle-Tier VMs > Front-End VMs」。
  • CPS 整合式系統:啟動順序為「Infrastructure VMs( 例如,Active Directory) > Application VMs(例如,SQL)> Front-End VMs」。
  • 超融合式容錯移轉叢集:啟動順序為「Utility VMs > Management VMs > Tenant VMs」。
  • 融合式容錯移轉叢集:啟動順序為「Active Directory VM > Hosting VMs」。




實戰 VM Start Order 機制

在開始實作 VM Start Order 機制之前,為了讓讀者能夠更了解整個組態設定的原則,以便 VM 虛擬主機能夠依照你希望的優先順序進行啟動。在 VM Start Order 運作機制的組態設定上,共區分為「Set、Group、Resource」等 3 個層級以便管理人員能夠更加彈性的調整 VM 虛擬主機啟動的優先順序。

圖 15、VM Start Order 運作機制 3 個層級架構示意圖

在本文實作環境中容錯移轉叢集內,共有 3 台 VM 虛擬主機分別是 Database、App01、App02。那麼,我們開始實作 VM Start Order 機制,組態設定 Database這台 VM 虛擬主機開機後經過 20 秒,接著系統才會自動啟動 App01、App02這 2 台 VM 虛擬主機。

圖 16、目前容錯移轉叢集內共有 3 台 VM 虛擬主機

請開啟 PowerShell 指令視窗,首先以 New-CimSession 指令與容錯移轉叢集建立連線,接著透過 New-ClusterGroupSet 指令,建立 2 個名稱為「DB-VMs 及 App-VMs」類型的 Set 層級。那麼,我們來了解一下目前已知欄位的意義為何:

  • Name:顯示 Set 層級的名稱,此實作環境為 DB-VMs 及 App-VMs。
  • PSComputerName:此 Set 層級作用的容錯移轉叢集名稱,此實作環境容錯移轉叢集名稱為 HV-Cluster (FQDN 為 HV-Cluster.weithenn.org)。

圖 17、建立 2 個名稱為 DB-VMs 及 App-VMs 類型的 Set 層級

然後,透過 Add-ClusterGroupToSet 指令,分別將 Database 虛擬主機加入至 DB-VMs 的 Set 層級當中,以及將 App01、App02 虛擬主機加入至 App-VMs 的 Set 層級當中。接著,再透過 Get-ClusterGroupSet 指令,確認是否將指定的 VM 虛擬主機加入至相對應的 Set 層級內。那麼,我們來了解一下目前已知欄位的意義為何:

  • GroupNames:加入此 Set 層級的 VM 虛擬主機,此實作環境中加入 App-VMs 的有 App01、App02 虛擬主機,而加入 DB-VMs 的則是 Database 虛擬主機。

圖 18、將指定的 VM 虛擬主機加入至相對應的 Set 層級當中

最後,我們設定這 2 個 Set 層級之間的依賴關係,也就是組態設定當 Database 虛擬主機開機經過 20 秒之後,那麼系統才會自動啟動 App01、App02 這 2 台 VM 虛擬主機。請透過 Add-ClusterGroupSetDependency 指令,組態設定 DB-VMs 為 App-VMs 的提供者,也就是 DB-VMs 內的 VM 虛擬主機開機並經過 20 秒之後,才會啟動 App-VMs 內的 VM 虛擬主機。那麼,我們來了解一下目前已知欄位的意義為何:

  • ProviderNames:此 Set 層級的提供者,此實作環境中 DB-VMs 為 App-VMs 的提供者,所以加入 App-VMs 的 VM 虛擬主機,必須等到 DB-VMs 所屬的 VM 虛擬主機啟動並等待指定的時間後才能啟動。
  • StartupDelayTrigger:定義延遲啟動的觸發動作為何共支援 2 個選項分別是 Delay 及 Online,預設值為「Delay」也就是等待提供者 Set 層級中 StartupDelay 欄位的秒數後,那麼這個 Set 層所屬的 VM 虛擬主機才能啟動。倘若組態設定為「Online」時,那麼必須等到提供者 Set 層級中 VM 虛擬主機的狀態為 Online 之後才能啟動。
  • StartupCount:定義更具彈性的啟動順序。
  • StartupDelay:定義延遲多少秒之後才執行啟動 VM 虛擬主機的動作。

圖 19、設定這 2 個 Set 層級之間的依賴關係 DB-VMs 為 App-VMs 的提供者

當然,後續可以採用 Set-ClusterGroupSet 指令調整組態設定值,例如,希望 Database 虛擬主機啟動後延遲 5 分鐘才啟動 App01、App02 虛擬主機,請使用「Set-ClusterGroupSet -Name DB-VMs -StartupDelay 300指令即可。



測試 VM Start Order 機制

組態設定完畢之後,我們可以快速驗證 VM Start Order 機制是否能夠順利運作。請開啟容錯移轉叢集管理員,選擇本文實作的 3 台 VM 虛擬主機之後,在右鍵選單中選擇「啟動」項目,也就是執行 3 台 VM 虛擬主機「同時」啟動的動作,然後觀察 VM 虛擬主機會發生什麼樣的情況。

圖 20、執行 3 台 VM 虛擬主機同時啟動的動作

倘若未組態設定 VM Start Order 運作機制的話,那麼正常情況下 3 台 VM 虛擬主機應該會同時執行啟動的動作。然而,在前面的 VM Start Order 組態設定中,我們已經定義必須要 Database 虛擬主機啟動並等待 20 秒之後,那麼 App01、App02 虛擬主機才會執行啟動的動作。

因此,你可以發現執行 3 台 VM 虛擬主機同時啟動的動作後,只有 Database虛擬主機自己先啟動,然後 App01、App02虛擬主機狀態為「正在啟動」(等待中),然後經過 20 秒之後才會正式執行啟動的動作。
倘若,不要執行 3 台 VM 虛擬主機同時啟動的動作,而是刻意只選擇 App01、App02這 2 台虛擬主機執行啟動的動作時,那麼會發生什麼事情呢 ?你將會發現系統仍會自動先啟動 Database 虛擬主機,並等待 20 秒之後才啟動 App01、App02 虛擬主機。
圖 21、VM Start Order 運作機制順利運作





結語

透過本文的說明及實作演練,相信讀者已經完全了解 VM Group 及 VM Start Order 這 2 項機制,確實可以幫助企業及組織降低維運成本,同時也能降低管理人員的管理負擔。

[站長翻譯] VMware vSphere 6 企業級專家手冊

$
0
0

[天瓏 - 雙書合購特價 74 折]💪

即日起,天瓏書局針對本專家手冊推出雙書合購特價 74 折活動,有興趣的朋友可以參考看看。😁



書籍簡介

在本書中,我們將會指導你如何規劃及調校 VMware vSphere 6.x 的基礎架構。我們將會為你提供相關的專業知識及操作技巧,以便引導你順利建構高可用性、高效能的 VMware vSphere 虛擬化基礎架構。同時,我們將會一步一步帶領你進行操作並輔以畫面截圖。

經由專業認證的 VMware 專業人士,基於各種真實狀況,親自分享實務性的操作步驟以及詳細的概念解釋。使你可以透過本書瞭解 VMware vSphere 6.x 的完整功能,並能夠藉此應付作業環境中的各項挑戰。

本書內容涵蓋從安裝、設定、操作及安全性控制等方面的詳細步驟,協助你克服大型虛擬化環境的管理及自動化難題。藉由對 VMware vSphere 的全方位教學,本書可引令初學者成為虛擬化技術的專家,或是作為資深管理者的重要參考書目。



誰適合閱讀此書

本書是專為希望加強 vSphere 6.0 虛擬化基礎架構,以及進階虛擬化技術的 IT 專業人士所寫。對於剛開始學習虛擬化技術的 IT 管理人員,可以依循本書中每個章節一步一步進行實作,進而學習到完整的虛擬化技術及虛擬化環境管理技巧。不過,讀者仍應先具備以下基礎:
  • 對於網路基礎架構有基本認識。
  • Microsoft Windows 運作環境的操作經驗。
  • DNS 及 DHCP 網路服務的管理經驗。
  • 對於虛擬化環境與傳統實體架構之差異有基本認識。
  • 對標準 x86 及 x64 伺服器硬體架構及軟體元件有基本認識。



網路購書





    本書導讀

    在本書中,我們將會詳盡說明 VMware vSphere 6.0 虛擬化環境的安裝、設定、管理及監控。在本書中除了深入剖析 vSphere 虛擬化產品,以及相關進階技術的特色功能外,更輔以實作,讓你可以詳細了解產品的安裝及組態設定。

    這些組態設定包括 vSphere 虛擬網路及儲存功能,以及 HA 高可用性、容錯移轉和資源使用率⋯⋯等。當完成基礎架構的安裝及組態設定後,我們將會進入 VM 虛擬主機的建立及管理,然後深入到效能監控及故障排除。通讀本書能夠使你了解如何建置一個全新的vSphere 虛擬化環境,或者如果你是一名 IT 專業人員,對虛擬化技術已有所了解,則本書可視為是一部參考書,使你可以藉由書中的提示、訣竅與最佳實踐,來增強自己的技能。

    本書將以提供虛擬化專業技術為導向,幫助你建置、整合、管理、維運企業等級的虛擬化解決方案。

    VMware vSphere 6 企業級專家手冊 (上)

    • 《第 1 章:簡介 VMware vSphere 6》,開始討論有關 vSphere 6.0 虛擬化產品。在本章中,將介紹 vSphere 軟體授權資訊,以及企業及組織採用 vSphere 虛擬化解決方案時的實際使用案例。
    • 《第 2 章:規劃設計及安裝 VMware ESXi》,本章將著重在選擇實體伺服器、VMware ESXi 版本、規劃設計及安裝、以及手動和自動化部署 VMware ESXi 運作環境。
    • 《第 3 章:安裝及組態設定 vCenter Server》,在本章中我們將深入討論如何規劃vCenter Server,以及 vCenter Server 相關運作元件,同時也將討論如何規劃設計、安裝、組態設定 vCenter Server 運作環境。
    • 《第 4 章:vSphere Update Manager 及 vCenter Support Tools》,在本章中將說明規劃設計、安裝及組態配置 vSphere Update Manager。透過 vCenter Update Manager 更新機制,將能確保 vSphere 運作環境擁有最新的安全性更新。
    • 《第 5 章:建立及組態設定 vNetwork 虛擬網路》,在本章中我們將討論虛擬網路的規劃設計、管理及最佳化,同時也將討論相關更新功能如 VDS 分散式交換器,以及協力廠商的虛擬網路交換器。在本章中,我們將討論虛擬網路及實體網路的運作架構整合,以及網路運作環境的安全性,同時提供相關解決方案。
    • 《第 6 章:建立及組態設定 vStorage 儲存資源》,在本章中我們將深入討論 vSphere 儲存架構,包括光纖通道、iSCSI 及 NAS 儲存設備的規劃設計及最佳化,以及相關進階功能的使用如精簡佈建、MPIO 多重路徑和負載平衡。
    • 《第 7 章:確認 HA 高可用性及商務連續性》,在本章中我們將深入剖析商務連續性及災難復原等熱門議題,我將提供有關 VM 虛擬主機建立 HA 高可用性,以及伺服器叢集的詳細資訊。此外,本章也將討論如何建構 vSphere HA(High Availability)及 vSphere FT(Fault Tolerance)等機制,以便為 vSphere 運作環境中的 VM 虛擬主機,提供高可用性及容錯移轉的運作機制,同時也將討論如何透過 vSphere Storage API 進行備份作業。


    VMware vSphere 6 企業級專家手冊 (下)

    • 《第 8 章:VMware vSphere 安全性》,安全性一直是基礎架構的重要組成部分,在本章中我們將討論不同層面的安全性管理機制,例如,管控 ESXi 主機的存取以及透過 Active Directory 整合身分驗證機制。同時,在本章中也將介紹在多層次的運作環境中,如何進行系統管理以及使用者身分驗證機制,同時針對 Windows 使用者及群組和 vSphere 安全性模組進行整合,達到企業等級的部署及權限管理和委派作業。
    • 《第 9 章:建立及管理 VM 虛擬主機》,在本章中將介紹如何透過 vCenter Server 部署 VM 虛擬主機。此外也將介紹多項可節省時間的技巧、VM 虛擬主機最佳化、以及最佳實踐作法,讓 VM 虛擬主機即便隨著時間而不斷增加數量,也能夠簡化管理程序。
    • 《第 10 章:建立範本及 vApp》,在本章中將為你介紹範本的運作概念,以及透過VM 虛擬主機映像檔機制,達到標準化及快速部署 VM 虛擬主機的目的。同時,我們也將討論複製及 vApp 的運作概念,以便在眾多 VM 虛擬主機的運作環境中,建立及使用 vSphere 的多用途容器。此外,我們也將討論 VMware 所採用的 OVF 標準,以便輕鬆匯入並使用協力廠商所提供的 VM 虛擬主機。
    • 《第 11 章:管理資源集區》,在本章中我們將全面審視資源的分配及管理,從單台VM 虛擬主機到 ESXi 主機和叢集,深入探討在 vSphere 運作環境中如何使用資源,以及管理人員如何透過「共享」(Share)、「保留」(Reservations)、「限制」(Limits)等機制,管理及調整資源的使用及分配方式。
    • 《第 12 章:負載平衡資源使用率》,在上一章節中我們已經了解到資源的使用及分配,接著在本章中我們將會探討 vSphere 負載平衡資源使用率的方式。在本章中,你將會了解到 vSphere vMotion、EVC(Enhanced vMotion Compatibility)、vSphere DRS(Distributed Resource Scheduler)、Storage vMotion 以及 Storage DRS。
    • 《第 13 章:監控 VMware vSphere 運作效能》,在本章中我們將透過 vSphere 內建工具,讓管理人員能夠審視及解決基礎架構的效能問題,本章將著重於監控 ESXi 主機及叢集中的 vCenter Server,在 CPU、記憶體、磁碟及網路等硬體資源的使用率,同時你也將學習到有關 vCenter Operations Manager 的部分。
    • 《第 14 章:VMware vSphere 自動化》,在 VMware vSphere 運作環境中,管理人員常常面臨的是重複性的管理作業,我們在本章中所介紹的自動化機制將能有效幫助管理人員,輕鬆建構各種自動化機制的方式,包括 vCenter Orchestrator 及 PowerCLI。
    • 《附錄》,在每一章節的結語當中,我們將針對每項問題提供給管理人員最佳建議作法及解決方案。

    Microsoft Azure Stack 正式 GA

    $
    0
    0

    前言

    今天微軟混合雲平台 Microsoft Azure Stack 正式 GA 了 (詳細資訊請參考 Microsoft Azure Stack is ready to order now | Blog | Microsoft Azure)。





    目前,可以銷售「Azure Stack Integrated Systems」的廠商只有 3 家,分別是 Dell / EMC, HPE, Lenovo。


    在銷售上有分別「Azure Stack Software pricing and availability」,搭配「pay-as-you-use」及「capacity-based model」,或是用於開發用途單台「ASDK (Azure Stack Development Kit)」,至於計價的詳細資訊請參考 Microsoft Azure Stack packaging and pricing




    Azure Stack 運作架構簡述

    Azure Stack 運作架構的設計原則為「1、1、4 ~ 12」,分別是「1 Region」、「1 Scale Unit」、「4 ~ 12 Node」


    同時,在 Microsoft Azure Stack 的運作架構中,分為「User Portal」「Administrator Portal」







    然而即便是 Azure Stack 的管理者也碰觸不到底層的各項運作元件。




    至於更新機制的部分,即同樣套用 Microsoft Azure 的管理經驗進行更新。







    參考資源

    Viewing all 589 articles
    Browse latest View live


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