BIG-IPをATS対応(バージョンあげ)
バージョンアップ
先日、個人的に数年ぶりにF5のロードバランサBIG-IPのバージョンアップをやった
結論、やり方は数年前と変わってなかった。えがった。その備忘録的な。
もちろんサービスインしている筐体で行う作業で、失敗したらリアルガチの百列肉球を食らうだろうが、成功したら「フムご苦労」で終わる悲しくも切ない作業である
うちのTMOS(BIG-IPのOS)はバージョンは11.xx.xx。そんな古くない。
ではなぜアプデするかというと、AppleのiOS9のATS対応です。
こちら↓
AppleがiOS9から要求するCipherSuiteに対応しないといけない、つまりSSL終端する機器でSSLのハンドシェイク時の暗号化方式をATS準拠しましょうという作業である。
Apple豪腕だが、こういう企業が押し進めないと進まないこともあるので、ある意味尊敬してしまう。
ちなみにAWSのロードバランサ(ELB)は既に対応されておりました。
フルマネージドと言うAWSの中のあんな人やこんな人ががんばるシステムの素晴らしさをあらめて感じた(・∀・)
調べたところ、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が出てますね(´Д`)
とりあえず、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もしっかりやりましょう
起動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
ちなみに、バージョン上げたらアイコンがちょっとかわいくなった?
動作確認
もちろん動確を忘れずに インフラレイヤをやりつつ、アプリ側にも協力を仰ぎます。HipChatやSlackやChatworkで「確認よろ!」と投げて、 「確認完了。乙!」とか来たら完了ですね。
所感
ちなみに、「フムご苦労」で終わると思ってたけど、思いのほか労を労ってもらった。いい職場やないかぁ^^