ゆるふわカウンターアタック

Qiitaっぽい時はQiitaで、slideshareっぽい時はslideshareで、preziっぽい時はpreziで、ブログっぽい時はここで

BIG-IPをATS対応(バージョンあげ)

バージョンアップ

先日、個人的に数年ぶりにF5のロードバランサBIG-IPのバージョンアップをやった

結論、やり方は数年前と変わってなかった。えがった。その備忘録的な。

もちろんサービスインしている筐体で行う作業で、失敗したらリアルガチの百列肉球を食らうだろうが、成功したら「フムご苦労」で終わる悲しくも切ない作業である

うちのTMOS(BIG-IPのOS)はバージョンは11.xx.xx。そんな古くない。

ではなぜアプデするかというと、AppleのiOS9のATS対応です。

こちら↓

developer.apple.com



AppleがiOS9から要求するCipherSuiteに対応しないといけない、つまりSSL終端する機器でSSLのハンドシェイク時の暗号化方式をATS準拠しましょうという作業である。

Apple豪腕だが、こういう企業が押し進めないと進まないこともあるので、ある意味尊敬してしまう。

ちなみにAWSのロードバランサ(ELB)は既に対応されておりました。 フルマネージドと言うAWSの中のあんな人やこんな人ががんばるシステムの素晴らしさをあらめて感じた(・∀・)

f:id:pioho:20150919095736p:plain

調べたところ、BIG-IPはv11.5以降でATSの一部Cihper対応していて、v11.6以降でほぼ全て対応とのこと。(どのバージョンもまぁまぁ最近やないか・・)

v11.6.0はかなり最近だったのと、うちの使い方だと特に必要なアプデはなさそうだったので

https://support.f5.com/kb/en-us/products/big-ip_ltm/releasenotes/product/relnote-ltm-11-6-0.html

って、あれ!?9/18の昨日12.0.0が出てますね(´Д`)

https://support.f5.com/kb/en-us/products/big-ip_ltm/releasenotes/product/relnote-ltm-12-0-0.html#rn_new


とりあえず、v11.5系の最新11.5.3をターゲットとしました。

対応できてない状態はこちら↓

[root@lb01:Active:In Sync] config # tmm --clientciphers 'DEFAULT:!SSLLv3:ECDHE:ECDHE_ECDSA'
     ID SUITE                          BITS  PROT  METHOD CIPHER MAC    KEYX
 0:   5 RC4-SHA                         128  TLS1  Native RC4    SHA    RSA
 1:   5 RC4-SHA                         128  TLS1.1  Native RC4    SHA    RSA
 2:   5 RC4-SHA                         128  TLS1.2  Native RC4    SHA    RSA
 3:  47 AES128-SHA                      128  TLS1  Native AES    SHA    RSA
 4:  47 AES128-SHA                      128  TLS1.1  Native AES    SHA    RSA
 5:  47 AES128-SHA                      128  TLS1.2  Native AES    SHA    RSA
 6:  47 AES128-SHA                      128  DTLS1  Native AES    SHA    RSA
 7:  53 AES256-SHA                      256  TLS1  Native AES    SHA    RSA
 8:  53 AES256-SHA                      256  TLS1.1  Native AES    SHA    RSA
 9:  53 AES256-SHA                      256  TLS1.2  Native AES    SHA    RSA
10:  53 AES256-SHA                      256  DTLS1  Native AES    SHA    RSA
11:  10 DES-CBC3-SHA                    192  TLS1  Native DES    SHA    RSA
12:  10 DES-CBC3-SHA                    192  TLS1.1  Native DES    SHA    RSA
13:  10 DES-CBC3-SHA                    192  TLS1.2  Native DES    SHA    RSA
14:  10 DES-CBC3-SHA                    192  DTLS1  Native DES    SHA    RSA
15:  60 AES128-SHA256                   128  TLS1.2  Native AES    SHA256 RSA
16:  61 AES256-SHA256                   256  TLS1.2  Native AES    SHA256 RSA</span>



作業開始

念のためコンフィグバックアップ

まずは何事もバックアップ。

BIG-IPのバックアップファイルのUCSファイル取得しておきます。
system->archive->"Create"ボタンで作成したファイルをダウンロード

リアクティベート

リアクティベートを必ずしておく

新しいバージョンのOSよりライセンスの日付が古いと起動時に怒られ、リアクティベートが求められます。

ちなみにアップデート後にやるのは、ややめんどいのと、リアクティベート中オフラインにしておかないとなぜかステータスがアクティブになるという恐怖が起ることがあります(´Д`)

リアクティベートは事前にやっておきましょう!

必要ファイル取得


対象のOSをダウンロードします。

scpでBIG-IPに転送し、md5checkもしっかりやりましょう

F5 - Signon



起動OSの確認


Currentが現在のOSで、Defaultが起動時に選ばれるOS、Availableは内包してるその他OS。

[root@lb01:Active:In Sync] config # switchboot -l

Current boot image:
    HD1.2 - title BIG-IP 11.x.x Build xxx.0
Default boot image:
    HD1.2 - title BIG-IP 11.x.x Build xxx.0
Available boot image(s):
    HD1.1 - title BIG-IP 11.y.y Build yyy.0
    HD1.2 - title BIG-IP 11.x.x Build xxx.0    



スロット設定をインストール先スロットに引き継ぐBIGのDB設定確認


全てEnableにしておくと新しいOSでの起動時に設定を引き継いでくれます。

[root@lb01:Active:In Sync] config # tmsh list sys db liveinstall.moveconfig
sys db liveinstall.moveconfig {
    value "enable"
}
[root@lb01:Active:In Sync] config # tmsh list sys db liveinstall.movelicense
sys db liveinstall.movelicense {
    value "enable"
}
[root@lb01:Active:In Sync] config # tmsh list sys db liveinstall.saveconfig
sys db liveinstall.saveconfig {
    value "enable"
}
[root@lb01:Active:In Sync] config # tmsh list sys db liveinstall.savelicense
sys db liveinstall.savelicense {
    value "enable"
}



新規ボリューム作成とインスト


新しいディスクHD1.3作ってそこにインストールします。

[root@lb01:Active:In Sync] images # tmsh install sys software image BIGIP-11.5.3.0.0.163.iso volume HD1.3 create-volume
[root@lb01:Active:In Sync] images # tmsh show sys software status

---------------------------------------------------------------
Sys::Software Status
Volume  Product  Version    Build  Active                Status
---------------------------------------------------------------
HD1.1    BIG-IP   11.y.y    yyy.0     yes              complete
HD1.2    BIG-IP   11.x.x    xxx.0      no              complete
HD1.3    BIG-IP   11.5.3  0.0.163      no  installing 6.000 pct



スタンバイから実施していく


上記を2台のBIG-IPで実施したら、ここからがいよいよサービス影響が出る作業です。

スタンバイ側の起動デバイスを変更


事前にオフラインモードにしておくのがいいと思います。

新しいOSが入ったデバイスのHD1.3をデフォルト起動デバイスにします。

switchboot -b HD1.3

リブートします。

sync;sync;sync;reboot


問題なければオンラインモードに戻して、アクトスタンバイを切替えてもう一台も実施。



ふぅ


「ふぅ、、」と一息つきましょう

対応できた。ECDHEのCihperSuiteが入ってますね。

[root@lb01:Active:In Sync] config # tmm --clientciphers 'DEFAULT:!SSLLv3:ECDHE:ECDHE_ECDSA'
       ID  SUITE                            BITS PROT    METHOD  CIPHER  MAC     KEYX
 0:    61  AES256-SHA256                    256  TLS1.2  Native  AES     SHA256  RSA
 1:    53  AES256-SHA                       256  TLS1    Native  AES     SHA     RSA
 2:    53  AES256-SHA                       256  TLS1.1  Native  AES     SHA     RSA
 3:    53  AES256-SHA                       256  TLS1.2  Native  AES     SHA     RSA
 4:    53  AES256-SHA                       256  DTLS1   Native  AES     SHA     RSA
 5:    60  AES128-SHA256                    128  TLS1.2  Native  AES     SHA256  RSA
 6:    47  AES128-SHA                       128  TLS1    Native  AES     SHA     RSA
 7:    47  AES128-SHA                       128  TLS1.1  Native  AES     SHA     RSA
 8:    47  AES128-SHA                       128  TLS1.2  Native  AES     SHA     RSA
 9:    47  AES128-SHA                       128  DTLS1   Native  AES     SHA     RSA
10:    10  DES-CBC3-SHA                     192  TLS1    Native  DES     SHA     RSA
11:    10  DES-CBC3-SHA                     192  TLS1.1  Native  DES     SHA     RSA
12:    10  DES-CBC3-SHA                     192  TLS1.2  Native  DES     SHA     RSA
13:    10  DES-CBC3-SHA                     192  DTLS1   Native  DES     SHA     RSA
14:     5  RC4-SHA                          128  TLS1    Native  RC4     SHA     RSA
15:     5  RC4-SHA                          128  TLS1.1  Native  RC4     SHA     RSA
16:     5  RC4-SHA                          128  TLS1.2  Native  RC4     SHA     RSA
17: 49192  ECDHE-RSA-AES256-SHA384          256  TLS1.2  Native  AES     SHA384  ECDHE_RSA
18: 49172  ECDHE-RSA-AES256-CBC-SHA         256  TLS1    Native  AES     SHA     ECDHE_RSA
19: 49172  ECDHE-RSA-AES256-CBC-SHA         256  TLS1.1  Native  AES     SHA     ECDHE_RSA
20: 49172  ECDHE-RSA-AES256-CBC-SHA         256  TLS1.2  Native  AES     SHA     ECDHE_RSA
21: 49191  ECDHE-RSA-AES128-SHA256          128  TLS1.2  Native  AES     SHA256  ECDHE_RSA
22: 49171  ECDHE-RSA-AES128-CBC-SHA         128  TLS1    Native  AES     SHA     ECDHE_RSA
23: 49171  ECDHE-RSA-AES128-CBC-SHA         128  TLS1.1  Native  AES     SHA     ECDHE_RSA
24: 49171  ECDHE-RSA-AES128-CBC-SHA         128  TLS1.2  Native  AES     SHA     ECDHE_RSA
25: 49170  ECDHE-RSA-DES-CBC3-SHA           192  TLS1    Native  DES     SHA     ECDHE_RSA
26: 49170  ECDHE-RSA-DES-CBC3-SHA           192  TLS1.1  Native  DES     SHA     ECDHE_RSA
27: 49170  ECDHE-RSA-DES-CBC3-SHA           192  TLS1.2  Native  DES     SHA     ECDHE_RSA
28: 49200  ECDHE-RSA-AES256-GCM-SHA384      256  TLS1.2  Native  AES-GCM  SHA384  ECDHE_RSA
29: 49199  ECDHE-RSA-AES128-GCM-SHA256      128  TLS1.2  Native  AES-GCM  SHA256  ECDHE_RSA
30: 49196  ECDHE-ECDSA-AES256-GCM-SHA384    256  TLS1.2  Native  AES-GCM  SHA384  ECDHE_ECDSA
31: 49188  ECDHE-ECDSA-AES256-SHA384        256  TLS1.2  Native  AES     SHA384  ECDHE_ECDSA
32: 49162  ECDHE-ECDSA-AES256-SHA           256  TLS1    Native  AES     SHA     ECDHE_ECDSA
33: 49162  ECDHE-ECDSA-AES256-SHA           256  TLS1.1  Native  AES     SHA     ECDHE_ECDSA
34: 49162  ECDHE-ECDSA-AES256-SHA           256  TLS1.2  Native  AES     SHA     ECDHE_ECDSA
35: 49160  ECDHE-ECDSA-DES-CBC3-SHA         192  TLS1    Native  DES     SHA     ECDHE_ECDSA
36: 49160  ECDHE-ECDSA-DES-CBC3-SHA         192  TLS1.1  Native  DES     SHA     ECDHE_ECDSA
37: 49160  ECDHE-ECDSA-DES-CBC3-SHA         192  TLS1.2  Native  DES     SHA     ECDHE_ECDSA
38: 49195  ECDHE-ECDSA-AES128-GCM-SHA256    128  TLS1.2  Native  AES-GCM  SHA256  ECDHE_ECDSA
39: 49187  ECDHE-ECDSA-AES128-SHA256        128  TLS1.2  Native  AES     SHA256  ECDHE_ECDSA
40: 49161  ECDHE-ECDSA-AES128-SHA           128  TLS1    Native  AES     SHA     ECDHE_ECDSA
41: 49161  ECDHE-ECDSA-AES128-SHA           128  TLS1.1  Native  AES     SHA     ECDHE_ECDSA
42: 49161  ECDHE-ECDSA-AES128-SHA           128  TLS1.2  Native  AES     SHA     ECDHE_ECDSA



ちなみに、バージョン上げたらアイコンがちょっとかわいくなった?

f:id:pioho:20150919130403p:plain

動作確認

もちろん動確を忘れずに インフラレイヤをやりつつ、アプリ側にも協力を仰ぎます。HipChatやSlackやChatworkで「確認よろ!」と投げて、 「確認完了。乙!」とか来たら完了ですね。

所感


ちなみに、「フムご苦労」で終わると思ってたけど、思いのほか労を労ってもらった。いい職場やないかぁ^^