BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【インフラ設計】CISベンチマークからパスワードポリシーを考える

はじめに

こんばんは!
BFT名古屋支店・インフラ女子(?)の山口 です。

名古屋の冬は関東に比べると寒いと聞いていたのですが、おそらく家の断熱効果が高く今までよりも快適に冬を越せそうで嬉しい限りです。お風呂出た後でも寒さを感じないって…なんて素晴らしいんだ!

たまには真面目に技術の話を書こうと思い、CISベンチマークについてパスワードポリシーに着目した記事を書こうと思います。

基本設計を進める上で、パスワードを何文字にするか、どういう組み合わせにするか(大文字、小文字、記号、数字など)などパスワードの設計について深く語られることはあまりないように思います。
分類的には非機能のセキュリティ部分になりますが、パスワードの設計よりも外部からの攻撃や内部での不正操作にどう対応するかということに重点を置き、パスワードに関しては今のシステム(または他のシステム)での法則を踏襲するとか理由はないけど8文字(大文字、小文字、数字、記号どれか一つずつ含む)というような設計にすることが多いのではないでしょうか。

この記事ではCISベンチマークという一つの基準から、パスワードポリシーをどう決めるべきなのか考察した内容を記載します。

CISベンチマークとは

CISベンチマークとは米国のCIS社(Center For Internet Security)が発行しているシステムを安全に構成するための構成基準およびベストプラクティスが記載されたガイドラインです。

f:id:bftnagoya:20201223174438p:plain
OSやプラットフォームごとにベストプラクティスがまとめられている
上図はOperating Systemsでフィルタしていますが、AWSAmazon LinuxRed Hat Enterprise Linux, Windowsなどに分かれて資料がまとめられています。 [ Download CIS Benchmark ]を押すと名前や会社の入力をする画面に遷移し、その後送信されたメールのリンクからダウンロードができるようになります。

f:id:bftnagoya:20201223175254p:plain
更にOSのバージョンごとに分かれている

上図で言えば、RHELのバージョンごとにPDFでまとめられているので必要なPDFごとダウンロードをして中を確認していきます。

ところでこのCISベンチマークがインフラの設計構築においていつどこでどのように使われるのかというと、多くはシステムを堅牢にするための脆弱性診断で利用されます。

AWSだとAmazon Inspector、サードパーティだとTenable社のNessusという製品でCISベンチマークを基準とした脆弱性診断が行われ、私たちエンジニアからするとここで引っかかった項目を一つ一つ精査(設定を現行から変更すべきか)する必要があるため、変更の工数含めかなりの労力がかかります。

ちなみにCISベンチマークのチェック項目はパッケージの有無やバージョンではなくその機能における細かい設定となるため、デフォルトだとかなりの項目に引っかかります。

例えば「CIS Red Hat Enterprise Linux 8 Benchmark_v1.0.0」の1.1.11には、ログが肥大化してディスクを食いつぶすのを防ぐ&監査ログを保護するために/var/logはパーティションを分けろと記載されています。

f:id:bftnagoya:20201223182607p:plain
全て英語なのでできるだけひっかかってほしくないのが心情

しかしこれを構築と単体テストが終わってアプリ開発への引渡し前にどうにかしろと言われてもいや今更ちょっと大変なんでやりたくないです…となってしまう(けどやらないといけないのでそれはもう大変な日々が待ち受けている)。

なのでできるだけ早い段階で検査して設計構築にフィードバックしたり、別案件での対応をAnsible化しておいてそれを流すことで対応したりすることになります。

CISベンチマークではパスワードをどうしろと書かれているのか

先ほど例に挙げた「CIS Red Hat Enterprise Linux 8 Benchmark_v1.0.0」でパスワードポリシーについて記載されているところを抜粋したのが以下の項目です(ユーザアカウントのパスワードポリシーに限ります)。

  • 5.4.1 パスワード作成における要求事項

    • 最小文字数…14
    • 大文字…最低1つ
    • 小文字…最低1つ
    • 数字…最低1つ
    • 記号…最低1つ
  • 5.4.2 パスワード施行回数の制限、ロックアウト時間の設定

  • 5.4.3 パスワード再利用の制限

    • 過去のパスワード5回分と異なるパスワードとなるようにする
  • 5.4.4 パスワードのハッシュ化アルゴリズムをSHA-512にする

  • 5.5.1.1 パスワード期限を365日以内にする

  • 5.5.1.2 パスワードを変更できる最小期間を7日以上にする

  • 5.5.1.3 パスワード期限切れの警告を7日以上にする

  • 5.5.1.4 未利用アカウントの無効化を30日以内にする

  • 5.5.1.5 パスワード変更日を過去にする

ここで驚くべきは最小文字数が14という部分です(MFA(多要素認証)であれば8文字でもよいそう)。体感ですがパスワードは今まで8文字とか多くても12文字だったと思います。

これはOSがRHELだからではなく、見たところWindows Server 2019でもAmazon Linuxでも同じでした。きっとこれからはパスワードは14文字以上というのがデフォルトになっていくのだと思います。

ちなみにCISベンチマーク以外ではどんな推奨になっているかというと、内閣サイバーセキュリティセンター(NISC)ではログインパスワードについて「英大文字小文字+数字+記号混じりで少なくとも 10 桁以上」、米国政府機関であるアメリカ国立標準技術研究所(NIST)の出すガイドライン(NIST SP 800-63-3)ではユーザが決めるなら文字の制限はなく8文字以上。ただしシステム側で脆弱なパスワードは設定できないようにしろというもの。

私たちインフラエンジニアにはセキュリティに関して「厳しい方に合わせる」という慣習があります。ここはやはり一番厳しいCISベンチマークに準拠するのが最も説明がつきますし問題が起こりにくいと思われます。

終わりに

CISベンチマークは対処している間は英語との格闘と打ち合わせと設定変更で忙しいのですがやってみるとなぜその設定にしなければいけないのかということも含めて最新の推奨設定を学べるとてもよいガイドラインです。

今後もセキュアなインフラ構築を目指し、CISベンチマークに準拠したシステムを作っていければと思います。