2018年12月4日 星期二

試用WireGuard

我只用過IPSEC與OpenVPN,其他的沒用過,所以不確定其他VPN軟體的架構與設計理念如何,不過WireGuard與前兩者相比的確有明顯的差異。

在Linux上頭的WireGuard是核心模組加上用戶端工具軟體,核心模組包含網路卡界面與整個VPN功能實做,用戶端工具是設置VPN與檢視狀態用。IPSEC或OpenVPN在運作時都需要在背景運行必要程式,WireGuard不需要。不過在非Linux平台,還是需要執行背景程式。

使用者管理也和其他VPN實做不同,是使用非對稱金鑰,伺服器與用戶端都需要產生非對稱金鑰並交換公鑰,如果要解除某個用戶的權限,只需要從設定檔把對應的設定刪除。其他實做使用CA產生使用者的公鑰,要解除用戶權限需要撤除(revoke)對應的金鑰,不直覺也不方便。

性能部份因為沒有做測試所以不評論,不過WireGuard網站上的測試結果都顯示更高的Throughput與更低的延遲。

2018年10月30日 星期二

Linux桌面多使用者登入,類似LTSP的作法

LTSP就是Linux版本的Terminal Server,可以讓多個使用者共用一台伺服器的資源去使用桌面環境,但是Client端OS必須也要是Linux是缺點。

之後找的方案是在Ubuntu Mate 18.04中啟用LightDM的XDMCP功能,在Linux上使用Xephyr連線非常順暢,但是在Windows上試了好多種軟體(包含Xming),都會出現畫面顯示異常或卡住,程式啟動當掉的問題,只能放棄。

再來則是XDMCP + VNC,網路上許多文章都會提到這個替代方案,我參考這一篇做設定,但是不透過SSH連線。設定完成,連上去看起來都沒什麼問題,直到我發現fctix的選字框無法顯示。 Orz

根據Ubuntu社群WIKI關於VNC Server的文章,其中提到只有TigerVNC支援compositing window managers像是Gnome Shell,原本我安裝的是vnc4server,換成tigervnc-standalone-server問題就解決了。而且換成TighterVNC Server還有個好處,Client也使用TigerVNC的話,就支援動態變更桌面尺寸,變更TigerVNC Viewer視窗的尺寸就會連帶變更Linux桌面的尺寸。

2018年10月3日 星期三

Supermicro的IPMI Virtual CD-ROM功能

最近要把某些機器重裝OS,要使用IPMI提供的虛擬光碟機,沒想到沒辦法把映像檔掛載上去。

把SAMBA Server的log debug功能開啟,出現 NTLMv1 passwords NOT PERMITTED for user 這個訊息。經查詢後發現,SAMBA較新的版本(4.5.10以後?)預設關閉NTMLv1驗證方式,這是因為這個驗證方式不安全。

解決的方式很簡單,只要在SAMBA設定檔的 global 區塊加上 ntlm auth = yes 這個設定即可。不過之前有說到這個驗證方式不安全,如果要使用要多注意。

2018年7月9日 星期一

SSL憑證購買

管地購買進階型SSL憑證碰到一些問題,根據該網站wiki的資料:
  1. 需要公司登記證明與公司代表人的身份證明
    這個沒什麼問題,但是我碰到的情況是Gandi的每個帳號下面可以建立組織,組織名稱必須與公司登記證明的名稱相符,我當初填寫公司資料是用英文,客服來信要求提供與中文名稱相符的相關證明。
  2. 要進行電話驗證
    在台灣的電話驗證是透過鄧白氏(Dun&Bradstreet)電話資料庫,但是我沒法確定我們公司的資料有登錄在他們的資料庫中肯定沒有登錄,鄧白氏企業認證D&B D-U-N-S® Registered ™服務基本版費用16800,有效期一年,每年都需要重新認證。
因此我取消訂單,應該會跟TWCA詢價與採購吧。不過價錢真的差蠻多的,管地的兩年期進階版單一網域SSL憑證包含25萬美元擔保的價格是3490,台灣任何一家SSL CA的價格都超過10000。把鄧白氏企業認證的費用加進去之後,台灣本地業者還比較便宜?

2018年6月7日 星期四

4G連線裝置的遠端管理

最近碰到一個情況是需要在特定地點放置網路設備,上面建置的服務需要連外,但又無法連接有線網路,看起來比較簡單而且立即可用的方案就是租用4G網路。

上網的問題解決了,但是又冒出其他問題。因為IPv4的IP可用數量不足的關係,4G網路大多是採用Carrier-grade NAT的技術去解決IP不足的問題,但這也代表著無法在遠端主動連入這個4G連網裝置進行管理。

為了解決遠端管理的問題,我最後想到使用SSH Tunnel,讓這些裝置主動開啟逆向SSH Tunnel連線到我的主控端伺服器,那我就可以從主控端伺服器連入這些設備進行管理。

不過之後發現SSH Tunnel建立一段時間之後就會沒有回應,看起來應該是4G不穩定,連線已經中斷,但是主控端的ssh server沒有把連線關閉。因此我在ssh server加上keep alive的設置,每30秒會發送封包給client進行檢查,如果連續三次都無回應就會關閉連線。設置此設定後連線都正常。

2018年4月3日 星期二

VSFTPD的安全性設定


更新:為了符合PCI DSS的要求,通訊協定只能支援TLS 1.2以上版本,須把ssl_ciphers設定為TLSv1.2,參考來源



這年頭還會用FTP服務就是為了滿足B to B的需求吧…。


chroot_local_user=YES
#把使用者關在自己的家目錄
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
#ssl金鑰一般用自我產生的就好了,長度至少要在2048bit以上
ssl_enable=YES
#啟用FTP over TLS/SSL
ssl_ciphers=HIGH
#加密演算法使用HIGH,演算法是128位元以上的都會使用,這裡也可以自訂想要使用的加密演算法。
implicit_ssl=YES
#預設值是NO,使用FTPES,啟用此選項會改成FTPS
pasv_min_port=30000
pasv_max_port=31000
#明確指定pasv模式使用的port範圍,比較容易設定防火牆

強制開啟FTP over TLS/SSL後,有時會很難做troubleshooting,建議可以先關掉,然後就會出現明確的錯誤訊息。

啟用chroot_local_user後用Filezilla去連,會出現ssl交握錯誤這種不明確的訊息,但是把ssl模式關閉後,就會出現500 OOPS: vsftpd: refusing to run with writable root inside chroot()這樣的訊息。

關於500 OOPS: vsftpd: refusing to run with writable root inside chroot()這個錯誤,網路上大多數的解法都是在設定檔加上allow_writeable_chroot=YES這個設定,但是這個作法有潛在安全性問題,所以後面的版本就把這個設定拿掉,在manpage裡頭也看不到此設定選項的說明。(經實測Debian 9的vsftpd有此選項,但是manpage裡頭一樣看不到)正確的作法是把使用者家目錄的寫入權限拿掉,在新增使用者後在使用者的家目錄中設置一個上傳專用的目錄。

2018年1月12日 星期五

使用Redis之後碰到的一些地雷雷雷...(Orz

最近開始嘗試使用Redis Sentinel建置高可用性服務,在測試的時候碰到一些問題。我在一個由三個Redis實體組成的Master-Slave Cluster倒入約4GB的資料,然後在Master下KEYS *把所有鍵列出來,沒過幾秒在Sentinel出現Master down然後重新推舉Master的訊息。

我在Sentinel裡頭設定Master在5秒內無回應就會判定為down,那也就是說我做了列出所有鍵的操作阻擋了後續所有連線的作業,這是怎麼回事?

回想一下Redis的特性,大概是:
  • 單執行緒、單行程
  • 所有操作是以atomic方式進行,因此確保了資料的一致性
  • 雖然運作時資料是存放於記憶體中,但是可回存為檔案,確保資料的持久性
  • 因為資料是存放於記憶體,所以速度很快
Redis不像一般的RDBMS有實做Transaction Isolation,任何操作都要等到前一個操作執行完才會進行,無法平行處理,Redis才能保證資料的一致性。因此非常不適合使用Redis進行以下操作:
  • 列出所有鍵:KEYS *
    如果存入的鍵很多,就得花很多時間處理。以我測試的情況,4GB的資料有將近1500萬個鍵,列出操作就花了183秒。
  • 搜尋特定鍵:KEYS *name*
    跟前一個是同樣的情況,列出了154個卻花了9秒多來處理。
我本職是系統管理者不是程式開發人員,所以有可能有其他的情況不適合使用Redis。如果要更有效率的使用Redis,那就盡量不要使用KEYS指令來列出或搜尋鍵。