2017年4月30日 星期日

[經驗分享]功能強大的集中式主機管理開源軟體



做為一個系統管理員,面對為數眾多的各種伺服器管理,如果沒有一套集中好用的遠端管理工具,難保不會在手忙腳亂之時出現意外,或者效率受到影響。

在此,推薦一套我已使用多年的好東西給大家參考,以 Windows 遠端桌面管理為主,搭配其它系統之管理方式。




主要需求


在企業裡面,我伺服器用到的有 Windows、Linux、FreeBSD。

在 Windows 領域,最好用的還是 RDP 遠端桌面,不僅系統直接內建,而且連線效率優異,即便在網路品質不佳時仍然表現出色,是遠端管理的不二選擇。

在 Linux/FreeBSD 系統,伺服器端以文字模式為主,所以 ssh 大量使用,其它則搭配一些 web 管理介面為輔,即可掌控一切。


「遠端桌面」



「Putty」



「VNC」



不過,問題來了。

這麼多不同平台的系統,當數量不多時每次手動連接倒還好處理,若達到一定程度再這樣做真的會搞死人。



集中式遠端桌面管理軟體


早期為了簡化管理,開始找到幾套可以集中管理的免費軟體,尤其是遠端桌面。



RDCMan



微軟有提供一款 RDCMan (Remote Desktop Connection Manager) 工具,可以提供方便的遠端桌面集中管理方案。





更多的集中式管理軟體


除了遠端桌面以外,如果也要集中使用其它方式連線,則有其它免費方案可以參考。


Royal TS







這兩套都是功能豐富的集中式管理工具,除了遠端桌面以外,還可以連接 Telnet、SSH、VNC 等模式,系統管理員最常用的幾種模式,一網打盡。




開源的集中式管理軟體


老議題,雖然有了極為好用的免費版軟體,但因為個人的偏執所致,我還是想再試著找找看開源方案。



mRemoteNG


果然,就有這麼一款非常優秀的開源軟體「mRemoteNG」,幾乎我需要的功能都有,也具備左側資料夾分類、上方頁籤分類等多種方便使用的設計,多個願望一次滿足。




基本功能


除了可以遠端桌面以外,其它 IT 管理者常用的功能均已內建,例如我們可以使用 SSH 協定連接 Linux、FreeBSD 等主機,也能使用 HTTP/HTTPS 協定進入網頁管理介面,整合在同一個入口,非常方便。


使用 SSH 連接 FreeBSD 管理



使用 HTTP 連接 Vigor Router 管理



使用 HTTP 連接 FreeNAS 管理



內建多種連接方式



進階設定


為了解決眾多主機的不同帳號密碼問題,mRemoteNG 提供了預先針對每一部主機設置帳號密碼的功能。

若是有許多主機採用相同的設置,只要該主機的帳號密碼留空,即可套用全域通用的帳號密碼,減少設定的負擔。


全域登入驗證設定




另一種方式,在連線清單裡建立資料夾後,在資料夾的節點設定協定、帳號、密碼等,再讓下面的各個主機繼承即可,可以針對不同協定類型的主機一次調整,亦是方便。

先點選左側樹狀清單中的主機,再點選組態視窗中的 [繼承] 按鈕,即可切換到設定頁。

繼承上層節點設定





資料保護


也因為如此,mRemoteNG 應運而支援了設定檔加密功能,以避免帳號密碼外洩。


設定檔加密儲存




如果要讓多人共用設定,或是想要集中儲存設定檔,可以採用儲存在資料庫的方式。

集中儲存設定於資料庫



或是參考我的作法,使用 mRemoteNG 可攜版,並透過資料夾同步(如 Synology Cloud Station、Dropbox、NextCloud 之類的套件)達成效果。




強化機能


如果上述的功能仍然無法滿足你的話,mRemoteNG 還有一招讓它的功能無限擴充。

自訂外部工具




透過 mRemoteNG 提供的「外部工具」功能,定義好名稱、檔案位置、參數,即可支援更多的管理能力,例如常用的網路檢測小工具等等。


呼叫外部工具選單



呼叫 ping 檢測主機狀態



呼叫 psexec 進入遠端主機的 cmd 命令提示字元



定義方式:

  • [檔案名稱]
    外部工具執行檔的位置,若無全域系統路徑變數,需指明。
       
  • [引數]
    要傳遞給外部工具程式的參數,可以搭配變數一起使用,如果是呼叫命令列下的程式,建議統一用 cmd.exe 搭配 /c 後接目標程式來執行,如「/c ping -t 127.0.0.1 」
       
  • [等待結束]
    某些必需等待外部工具結束才可以做下一件事的程式,需要勾選此項。要注意若該程式執行後不會主動結束者請勿選取。
       
  • [嘗試整合]
    若想要讓程式整合進 mRemoteNG 右方的視窗裡,如 putty 的模式,您可以勾選看看,不過據我所試除了 putty 與 filezilla 外,其它成功的較少,包括 cmd.exe。



可用變數:

  • %NAME%
  • %HOSTNAME% 👈  這最常用啦
  • %PORT%
  • %USERNAME%
  • %PASSWORD%
  • %DOMAIN%
  • %DESCRIPTION%
  • %MACADDRESS% 
  • %USERFIELD%



幾個外部工具設定範例:

  • [ping] 檢測目標主機連線狀態
    檔案名稱:cmd.exe
    執行引數:/c ping -t %HOSTNAME%
       
  • [traceroute] 檢測目標主機路由
    檔案名稱:cmd.exe
    執行引數:/c set /p = | tracert %HOSTNAME%
        
  • [psexec] 進入目標主機命令提示字元  👈  這招我超級愛用
    檔案名稱:psexec.exe
    執行引數:\\%HOSTNAME -u %USERNAME% -p cmd.exe
        
  • [psloggedon] 查看目標主機已登入使用者清單
    檔案名稱:cmd.exe
    執行引數:/c set /p = | psloggedon.exe \\%HOSTNAME%
        
  • [ultravnc] 進入目標主機遠端搖控 (使用 MS Logon 認證)
    檔案名稱:vncviewer.exe
    執行引數:%HOSTNAME%:%PORT% /user %USERNAME /password %PASSWORD%
        
  • [compmgmt] 進入目標主機的電腦管理
    檔案名稱:compmgmt.msc
    執行引數:/computer=%HOSTNAME%  
        
  • [filezilla] 進入對方主機做檔案管理  (使用免安裝版放一起)
    (本項於 2018/05/22 增加)
    檔案名稱:.\FileZillaPortable\filezilla.exe
    執行引數:sftp://%Username%:%!password%@%Hostname%:%Port%
    嘗試整合:勾選
        
  • [iwatchdvr] 直接查看 iCatch 系列監視器畫面  👈  相見恨晚
    (本項於 2018/05/27 增加)
    檔案名稱:.\dvr\iwatchdvr.exe
    執行引數:-host %hostname% -port %port% -user %username% -password %password%
    嘗試整合:勾選




參考資料






快速匯入


看完上面各種強大功能,以及自訂外部工具的擴充機制,相信您應該正著手把所有的主機都納進來 mRemoteNG 進行管理。

當您開始做著主機一筆一筆設定的時候,漸漸的會感到痛苦(是的,我也是),該怎麼辦呢?

它也設想到了,提供了多種批次匯入主機清單的功能,從功能表 [檔案] -> [Import] 展開:

  • 從 File 匯入
  • 從 Active Directory 匯入
  • 從 Port Scan 匯入



其中我最喜歡用的是「從 Active Directory 匯入」,只要選好 OU 節點,一次連著 OU 結構一起匯入,非常方便!


從 Active Directory 匯入主機清單




取用保護

(本節於 2017/05/03 增加)

看到這裡,肯定您已經建立了一大票主機的資訊跟帳號密碼,有沒有想到缺了什麼?

如果您設定好的 mRemoteNG 整個資料夾都被人偷走,呃.........
那也就是說,他可以直接存取您所有設定在 mRemoteNG 裡的所有主機 💀💀💀

別擔心!幸好 mRemoteNG 也想到了,這太貼心啦。


設定取用保護密碼



請在左側連線面版裡,點選根節點 [連線],再選取組態視窗裡的 [密碼保護],切換成 [是],再輸入要用來保護的密碼即可。



啟動程式要求輸入密碼



下次再啟動程式時,就會被要求輸入密碼才可以使用,即可保護您的 mRemoteNG,如果還要更進一步的保護,請期待我近期要撰寫的 VeraCrypt 套件文章!



原始程式


mRemoteNG 功能眾多,但如果您覺得還是不夠,或是想要研究這麼強大的工具是怎麼開發來的:「它山之石,可以攻錯」

mRemoteNG 提供了完整的原始程式碼,您可以實現「自己的工具自己改」理想。

在好幾個版本以前,我有遇到一個會導致崩潰的奇怪的問題,同時也想研究它的 VNC 機制如何實作,當時有下載它的程式碼進行研究。

mRemoteNG 原始程式碼



mRemoteNG 採用 .NET 平台 C# 語言開發,對於有過 WinForm 經驗的開發者將會相當容易上手。





結論


mRemoteNG 如此強大的系統管理工具,提供彈性的功能擴充,甚至連原始碼都給你了,這樣的好東西還不用嗎?


👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍






同場加映:其它平台方案


那麼,在 Windows 平台以外,例如 macOS、iOS、Linux、Android 上也想要管理遠端桌面呢?



它是我使用很久的方案(從前名為 2X Client),有時人在外面手上只有手機,Parallels Client 就是我認為最完美的遠端桌面解決方案,在 macOS 上我也是使用它做為管理軟體。




極盡美化與酷炫的開源終端機介面



文字介面的終端機,是身為一個系統管理員必備技能,比起遠端桌面搖控傳輸效率快,用鍵盤輸入更是精準。

不過,面對呆版的介面看久了也會麻木。

對我來說,美觀好用的介面非常重要,為乏味的終端機加入一點有趣的元素,不僅用起來開心,還可以增進工作效率。



實用與美觀取向


powerline 是一款兼具美觀及實用的套件,掛上它以後,不僅讓命令提示字元變的漂亮,搭配 vim 修改後更是讓 vim 成為更好用的編輯器。


powerline 美化過後的提示字元




 powerline 美化過後的 vim






支援 Linux、macOS,Windows 則要透過 cygwin 來使用。




酷炫與復古取向


上面提到的 powerline 一試之後無法罷手,但無意中卻又發現一套更炫的終端機 app,幾乎在視覺效果上完勝 powerline。

先看圖再說。

Pixelated 主題




Amber 主題



Apple ][ 主題



IBM DOCs 主題



Transparent Green (透明背景)






看起來酷炫到很像只是效果,但它是真正可以使用的終端機。

本來想說裝了 powerline 就很潮很炫,沒想到這傢伙,才是最酷的終端機 app。 

它除了有酷炫的復刻 CRT 顯示器介面,甚至連掃描線雜訊殘影弧面等特性完美呈現,還有多種主題可以切換!!

😍😍😍


支援 Linux、macOS。




2017年4月23日 星期日

[經驗分享]資訊全面的系統監控神器 - Glances

[本圖取自官網]



眾所周知,在 Linux 伺服器的世界通常只有文字介面,要做系統管理就非常依賴設計簡潔、功能好用,呈現資訊容易閱讀等要素的工具軟體。




傳統的味道


說到系統監控,你可以使用 ps aux 指令,也可以用 top 來管理,top 提供了文字介面下的呈現環境。

top


可是問題來了,這個單色調的介面看久了感到枯燥乏味,對於資訊的陳列也不是那麼容易閱讀,更別說操作熱鍵了,但 top 卻是所有 UNIX Like 必定擁有的指令,不得不會。



強化的 top


還好,有一款進化後的 top 出現,名稱是「htop」,據說前面這個「h」指的是「Human」給人類看的意思。

htop


這個介面好看多了,CPU、RAM 等資源用類似圖表方示顯示,管理員可以一眼知道目前負載的程度,不用像 top 苦苦找尋數字在哪.... 😵😵

並且搭配不同的顏色呈現,除了增加閱讀的持久力,也可以較快的辨識出需要的資料在那裡,下方還有熱鍵提示,減少指令查詢的時間浪費。



聽起很棒,但...


htop 確實夠好,對我而言還是不夠,我還想要更多的功能:

  • 介面要更美觀直覺
  • 呈現磁碟讀寫速度
  • 呈現網路傳輸速度
  • 顯示磁碟可用容量
  • 清楚標示效能瓶頸
  • 列出最近警告事件
  • 提供遠端監看資源

這些功能,top、htop 都沒有辦法做到,尋尋覓覓,終於找到一套很棒的工具,一用就是好幾年。



全面進化的 top


當時,經過試用各種不同的工具,最後我選定了一款完全可以符合我需求的工具軟體,它的名字是「Glances」。

Glances on Linux」


這款 Glances 採用 Python 開發,幾乎橫跨所有平台,而且開源、自由。

他的標語「 An Eye on your system 」完完全全打到我的心坎裡啊!😍


Glances on macOS」


Glances on FreeBSD」


在 FreeBSD 也可以使用,而且更強力推薦搭配 FreeNAS,因為在 FreeNAS 下想要查看 Storage 各個磁碟的指令「systat -io」,用起來並不是那麼理想,但是改用 Glances 後,在文字模式下的監控能力完全提升。





記憶體使用量紅色警戒

在 Glances 介面中,會用醒目的橘色、紫色甚至紅色來標示已經造成系統效能瓶頸的項目,以及對系統有警告的事件,這可以讓管理者減少很多到處查看的時間,一個入口一次搞定。


預設的顏色表示:
  • 綠色:ok
  • 藍色:careful
  • 紫色:warning
  • 紅色:critical



安裝超級容易


安裝 Glances 方式相當多元也容易,以下提供我使用過的方法。

Linux (Ubuntu/Debian)

# apt-get install glances

Linux (Other)

# wget -O- https://bit.ly/glances | /bin/bash

MacOS (homebrew)

$ brew install python
$ pip install glances

macOS (MacPorts)

$ sudo port install glances

FreeBSD
# pkg install py27-glances


其它平台如 Windows、Android、Docker 等,可參考官網:
https://github.com/nicolargo/glances#installation



好用的遠端監看


管理伺服器我們要儘量避免 ssh 登入本機操作,以免發生意外,例如經典的「rm -rf」案例。

Glances 的遠端監看有兩種模式,依需求選用。


1.客戶端模式


這個模式的好處,是提供與本機操作完全一樣的功能,不過遠端的電腦也需要安裝有 Glances 才可以。

設定為伺服器模式,並設定密碼
$ glances -s --password

設定為客戶端連線到伺服器監看,並指定密碼
$ glances -c xxx.xxx.xxx.xxx --password

掃描有執行 Glances 伺服器模式的主機
$ glances --browser


註:
有些主機做為客戶端模式要連線到伺服器,會出現錯誤,正在等新版看會不會修正。


2.網頁模式


這模式最大的好處,就是不用安裝任何軟體就可以直接監看主機狀態,而且該呈現的資訊仍然豐富,並會定時刷新。

設定為網頁伺服器模式
$ glances -w



更厲害的是,這個網頁模式還支援 RWD 響應式頁面呈現,所以任何地方,你都可以方便的用手機或平板電腦掌握系統狀況。






最後提醒,由於它是 Python 開發且功能又多,所以是較吃效能的,若在資源吃緊的伺服器上請斟酌使用喔。


FreeNAS 整合 AD + CIFS/SMB 設定完全經驗分享




企業為了集中認證與管理,大都使用微軟 Windows Server 伺服器的 AD (Active Directory) 做為認證核心,有加入 AD 的伺服器與電腦就可以方便的整合權限機制,對管理人員來說,是一個非常重要的功能。


為什麼不用 Windows


沒錯,用 AD 認證,並結合檔案伺服器確實很好用。

問題出在用 Windows Server 做為檔案伺服器這件事,它的確提供很多方便的介面以及豐富的管理功能,但是「效能」、「費用」這兩件事對中小企業來說卻是一大困擾。

例如檔案存取效率,製作以前的版本速度,都是一個個的瓶頸。

需要用高規格的硬體來換取更好的效能,這是一個很容易看出的道理,但是沒有這麼多錢可以投資在主機上,更別說檔案伺服器上面跑的 Windows Server 也是要購買授權的。


這張投影片真好用,一次製作常常用到(誤)




替代方案 FreeNAS


FreeNAS 是一款相當成熟的 Storage 套件,基於 FreeBSD 作業系統開發,最重要的是搭載 ZFS 這個強大檔案系統。

不過 FreeNAS 整合 AD、SMB 畢竟不是正統的 Windows Server 系列程式,搭配不同開源的套件總是容易出現許多奇怪的問題,有些地方稍一不甚沒設好,就無法好好的運作起來。

由於我有迫切的效能需求,要把一些檔案服務優先移到 FreeNAS 換取更好的存取效能,以及最重要的歷史版本功能(基於 ZFS 快照),因此花了一段時間研究把設定方法確立,以下提供經驗分享。

以下操作是設定在:

FreeNAS 已經安裝起來並具資料集與網路連線能力


同時提醒:

至少用 9.10.2-U6 版本以減少踩到 Samba 套件的坑


FreeNAS 加入 AD


進入 [服務] > [SMB] 的設定頁

  • NetBIOS:輸入您要呈現的主機名稱,如 fileserver
  • 工作群組:輸入您 AD 網域名稱,如 test.com.tw
  • DOS 字元編碼:CP950
  • UNIX 字元編碼:UTF-8
  • 此網域的時間伺服器:若有加入 AD/LDAP,請取消勾選


進入 [服務] 

  • 將 SMB 切換至 [ON]



進入 [目錄] > [Active Directory] 頁籤

  • 按下 [進階模式] 按鈕
  • 網域名稱:輸入您 AD 網域名稱,如 test.com.tw
  • Domain Account Name:輸入您 AD 具有讀取使用者、群組、電腦權限的帳號,如 Administrator
  • Domain Account Password:承上,輸入密碼
  • Allow Trusted Domains:打勾
  • Use Default Domain:打勾
  • Allow DNS updates:打勾
  • Domain Controller:輸入您的網域控制站名稱,如 dc1.test.com.tw
  • Global Catalog Server:輸入您的 GC 網域控制站名稱,如 dc1.test.com.tw
  • Enable:打勾




進入 [目錄] > [Kerberos Realms] 頁籤

  • 按下 [Add kerberos realm] 按鈕,打開後再按下 [進階模式] 按鈕
  • Realm:輸入您 AD 網域名稱,如 test.com.tw
  • KDC:輸入您的 KDC 網域控制站名稱,如 dc1.test.com.tw
  • Admin Server:輸入您的 Admin 網域控制站名稱,如 dc1.test.com.tw
  • Password Server:輸入您的 Password 網域控制站名稱,如 dc1.test.com.tw




設定 CIFS/SMB 分享權限


進入 [儲存] > [磁區] 頁籤

  • 選取要設定分享的資料集,並按左下角的 [變更權限] 按鈕
  • Apply Owner (user):打勾
  • 所有者(帳號):輸入網域中的帳號,如 Administrator
  • Apply Owner (group):打勾
  • 所有者(群組):輸入網域中的群組,如 Domain Admins
  • Apply Mode:打勾
  • Permission Type:選取 Windows
  • 最後按下 [變更] 



進入 [共享] > [Windows (SMB)] 頁籤

  • 按下 [Add Windows (SMB) Share] 按鈕
  • 按下 [進階模式] 按鈕
  • 路徑:選取要分享的 Dataset 位置
  • 名稱:輸入要顯示於分享的名稱
  • Apply Default Permissions:打勾
  • 瀏覽用戶端網路:打勾
  • 允許訪客連線:不勾
  • 只允許訪客連線:不勾
  • 定期快照工作:選取這個 Dataset 的排程快照工作,可以用來提供「以前的版本」功能,非常好用又重要!
 



設定 CIFS/SMB 分享對象



在 FreeNAS 上沒有提供這個設定能力,需要找一台 Windows 電腦進行。

使用 [電腦管理] 連線

  • 根節點按滑鼠右鍵,選取 [連線到另一台電腦] 項目
  • 在 [另一台電腦] 輸入 FreeNAS 主機的位址並按下 [確定]
  • 展開根節點,展開 [系統工具],中間會出現錯誤訊息「RPC 伺服器無法使用」請不用理會



進行 [共用權限] 設定

  • 進入 [系統工具] > [共用資料夾] > [共用]
  • 於右方可見 FreeNAS 上設定的共用,滑鼠右鍵點選,並按下 [內容] 項目
  • 切換 [共用權限] 頁籤
  • 於下方可見目前已有的權限對象,可參考 Windows 設定方法進行修改




取用以前的版本


這是一個 Windows 上極為好用的設計,要找回誤刪或誤改檔案可以很方便的從時間點來找回。

不過,若是用 Windows Server 做為檔案伺服器,它做歷史版本與查看歷始版本時效率都較慢,我們採用的 FreeNAS 因為有了 ZFS 強力支援,具有非常快速的操作能力。

題外話:
有一點我非常很納悶,這功能超級好用,可是為什麼微軟非要給它取一個這麼沒力的名字呢?😂😂😂
看看隔壁 Apple,在時間軸還原部份用起來的功能兩者接近,但 Apple 就給它配上一個具有科幻感的「 Time Machine 」,瞬間就潮啦。


使用 [以前的版本] 連線

  • 在任一個分享資料夾或檔案上按滑鼠右鍵,選取 [內容] 項目
  • 切換 [以前的版本] 頁籤
  • 若有設定對應到定期快照工作,也有確實產生快照,這裡就會有時間點可以選擇



其它應用:NextCloud


FreeNAS 搭配 AD CIFS/SMB 設定完後,還可以另外結合 NextCloud 做為介面提供服務,而且一樣吃 AD 的驗證機制與 NTFS 安全性管理,非常好用與方便!

日後再來寫一篇教學分享,因為當時 FreeNAS 整合 AD CIFS/SMB 成功後,要跟 NextCloud 結合同樣認證與權限,讓我吃足了苦頭。