做 Ubuntu 14.04.1 的 VMware Template

公司有買 VMware license,但一直沒研究要如何做一份 VM template 出來,所以花了點時間研究到底怎麼做才會比較好。

這邊提供的方法是為了之後的通用性 (像是之後有可能用 KVM 堆虛擬機),所以不使用 VMware 獨規的設計,因此有些設定需要手動調整。

首先是先生出一台 Ubuntu 14.04.1 的 VM,在裝完基本系統後有些要先處理的:

  • 可以考慮用 DHCP 或是不開啟網路設定,反正不要設固定 IP address,以免同時裝多台機器時發生狀況。
  • 因為是 VMware 裡面,安裝 open-vm-tools 可以省下一些 puppet 安裝的時間。
  • 砍掉 /etc/ssh/ssh_host_*,每台機器的 host key 應該要不一樣。

做好 VM 後轉成 Template,之後每次在 deploy 完、開起來後,還要做這些事情:

  • /etc/hostname/etc/hosts 裡的機器名稱。
  • /etc/network/interfaces 裡的網路設定。
  • dpkg-reconfigure openssh-server 重新產生 SSH host key。

有些參考資料:

過程其實還蠻簡單的,只是有一些眉眉角角的東西要注意...

維基基金會選用 Phabricator 當作工作的協作平台

維基基金會選擇了 Phabricator 當作協作平台:「Welcome to Phabricator, Wikimedia’s new collaboration platform」。

維基維基基金會已經使用 Bugzilla 管理很多事情,這次的導入也在文章裡說明了不少好處以及已知的問題。

看起來後面幾個月會把一些既有的工具轉移上去。

另外也因為是開放的系統,要研究 Phabricator 怎麼運作的人也可以上去看看?

2014 年 re:Invent 的投影片、影片、錄音

一年一度的 AWS re:Invent 的投影片、影片、錄音檔放出來了:「Now Online - Audio, Video, and Presentations from re:Invent 2014」。

看影片與錄音會比較花時間,從投影片看會是不錯的方法。在 SlideShare 的「reinvent2014」這邊有官方放出的投影片。

量相當多,之後再來挑有興趣的題目來翻。

CloudHarmony 的市占率統計 (CDN、DNS、Cloud Computing)

CloudHarmony 發表了他們對 CDN、DNS、Cloud Computing 市占率的統計數據:

CDN 的部份可以看出來 Akamai 仍然是稱霸整個市場,不過 CloudFlare 也不是小數字就是了...

DNS 的部份比較沒有那麼明顯,由於 CloudFlare 免費方案必須把 DNS hosting 指到他們家,所以 CDN 連帶影響到 DNS 的部份,看起來頗亂,比較明顯的是 Route53 一直在成長。

Cloud Computing 的部份不知道是怎麼估算的,跟另外從營收數字估算的是另外一種面貌。雖然 EC2 還是很大,不過你要說 Rackspace 有 EC2 的 1/3 大?hmmm...

HIBP (Have I been pwned?) 有 RSS feed 可以訂了

Have I been pwned? 是個檢查個人資料是不是被外部網站洩漏的資料庫。拿 username 或是 email 搜尋,他會告訴你在哪次洩漏清單裡有找到。

現在有 RSS feed 可以訂,有更新的時候可以上去確認:「“Have I been pwned?” – now with RSS!

丟到 Feedly 放著...

AWS 官方提供 Public IP 清單 (JSON 格式)

以往 AWS 都是在 forum 上發表,現在居然提供 JSON 了:「AWS Public IP Address Ranges Now Available in JSON Form」,在 https://ip-ranges.amazonaws.com/ip-ranges.json 這邊,對應的說明在「AWS IP Address Ranges」這邊。

除了 EC2 以外,裡面包含了 CDN (CloudFront) 的範圍:

Valid values for the service key include "AMAZON", "EC2", "ROUTE53", "ROUTE53_HEALTHCHECKS", and "CLOUDFRONT." If you need to know all of the ranges and don't care about the service, use the "AMAZON" entries. The other entries are subsets of this one. Also, some of the services, such as S3, are represented in "AMAZON" and do not have an entry that is specific to the service. We plan to add additional values over time; code accordingly!

目前大約是一千萬個可用 IP。

用 CipherScan 在 command line 下檢查系統

在「SSL/TLS for the Pragmatic」這篇裡面提到了 CipherScan 這個工具,用起來很簡單而且輸出很清楚。

直接 git clone 下來後執行就可以了,另外因為檢測 ChaCha20+Poly1305 需要新版 OpenSSL (1.0.2 才有,目前還是開發版),所以 clone 下來的時候裡面包括了一個 Linux 版的 openssl,砍掉的話他會用系統的 openssl。

像是我的 blog 就可以掃出這樣的結果:

gslin@home [~/git/cipherscan] [17:57/W4] (master) ./cipherscan blog.gslin.org:443
........................
Target: blog.gslin.org:443

prio  ciphersuite                  protocols              pfs_keysize
1     DHE-RSA-AES256-GCM-SHA384    TLSv1.2                DH,2048bits
2     ECDHE-RSA-AES256-GCM-SHA384  TLSv1.2                ECDH,P-256,256bits
3     ECDHE-RSA-AES256-SHA384      TLSv1.2                ECDH,P-256,256bits
4     ECDHE-RSA-AES256-SHA         TLSv1,TLSv1.1,TLSv1.2  ECDH,P-256,256bits
5     DHE-RSA-AES256-SHA256        TLSv1.2                DH,2048bits
6     DHE-RSA-AES256-SHA           TLSv1,TLSv1.1,TLSv1.2  DH,2048bits
7     DHE-RSA-CAMELLIA256-SHA      TLSv1,TLSv1.1,TLSv1.2  DH,2048bits
8     AES256-GCM-SHA384            TLSv1.2
9     AES256-SHA256                TLSv1.2
10    AES256-SHA                   TLSv1,TLSv1.1,TLSv1.2
11    CAMELLIA256-SHA              TLSv1,TLSv1.1,TLSv1.2
12    ECDHE-RSA-AES128-GCM-SHA256  TLSv1.2                ECDH,P-256,256bits
13    ECDHE-RSA-AES128-SHA256      TLSv1.2                ECDH,P-256,256bits
14    ECDHE-RSA-AES128-SHA         TLSv1,TLSv1.1,TLSv1.2  ECDH,P-256,256bits
15    DHE-RSA-AES128-GCM-SHA256    TLSv1.2                DH,2048bits
16    DHE-RSA-AES128-SHA256        TLSv1.2                DH,2048bits
17    DHE-RSA-AES128-SHA           TLSv1,TLSv1.1,TLSv1.2  DH,2048bits
18    DHE-RSA-CAMELLIA128-SHA      TLSv1,TLSv1.1,TLSv1.2  DH,2048bits
19    AES128-GCM-SHA256            TLSv1.2
20    AES128-SHA256                TLSv1.2
21    AES128-SHA                   TLSv1,TLSv1.1,TLSv1.2
22    CAMELLIA128-SHA              TLSv1,TLSv1.1,TLSv1.2
23    DES-CBC3-SHA                 TLSv1,TLSv1.1,TLSv1.2

Certificate: trusted, 2048 bit, sha256WithRSAEncryption signature
TLS ticket lifetime hint: 600
OCSP stapling: supported
Server side cipher ordering

Mozilla 提供的 SSL/TLS Server Side 設定

最近一直在看這方面的資料,所以就一直看一直寫...

Mozilla 有一份 wiki document 把 server side 的設定給整理出來,可以當作起點來看,不過裡面還是講得很省略,如果沒有背景知識的話,應該會理解得很辛苦:「Security/Server Side TLS」。

裡面給了一些速食套餐 (算是 cheatsheet),像是 cipher 的部份可以參考相容性說明後直接拿來用。

OpenSSL 產生並簽出 SHA2 (SHA256) 的憑證

因為 Google Chrome 39 出來的關係,一些以前簽出來只包含 SHA-1 的 SSL certificate 因此導致了綠色 icon 變成黃色 icon,所以都要重簽一次產生 SHA-2 資訊。

有人說可以只要在簽名產生 crt 的部份做就好,不過這邊還是都提出來,並且給驗證的方式。

如果本來就已經有寫好 script,那麼只要在產生 csr 與簽名產生 crt 的步驟都加上 -sha256 就可以解決了。

這是產生 csr 的:(${HOST} 以及 subj 的內容自己代換)

openssl req -new -key ${HOST}.key -subj "/C=TW/ST=Taiwan/L=Taipei/O=MyOrganization/OU=MyUnit/CN=${HOST}" -sha256 -out ${HOST}.csr

而 csr 檢查的方式是:

openssl req -in ${HOST}.csr -text

看 Signature Algorithm 是不是 sha256WithRSAEncryption。

簽名產生 crt 也要加上 -sha256

openssl x509 -req -days 365 -in ${HOST}.csr -CA ca/ca.crt -CAkey ca/ca.key -sha256 -out ${HOST}.crt

而 crt 檢查的方式是:

openssl x509 -in ${HOST}.crt -text

一樣是看 Signature Algorithm 這邊是不是 sha256WithRSAEncryption。