パスワード認証」+「OTP認証」のニ要素認証を実現したいと思います。通常、AzureでCentOSサーバを初期構築した場合のログイン方法はSSHキー認証もしくはパスワード認証となっていますので、OTP認証を導入することでよりセキュアなログインになると思います。module」を利用したいと思います。moduleとはGoogleが開発した手軽にOTP認証を実現するPAMモジュールです。動作概要として、予めログインサーバで秘密鍵を生成、その秘密鍵を携帯端末などにインストールされたトークンソフトウェアに転送します。トークンソフトウェアは秘密鍵から認証コードを生成し、それをログイン時に入力することでOTP認証を実現します。ログインサーバとトークンソフトウェアには同じ秘密鍵が登録されたいるため、同じ方式で生成された双方の認証コードは一致するはずなので、認証が成り立つ訳です。OTP認証の方式OTP認証には以下の二つの方式があります。Algorithm):時刻をベースに認証コードを生成どちらが安全かというと、詳しい説明はここでは省略しますが、前者のHOTPとなります。HOTPは非常にシビアです。認証回数と認証コードの生成回数を一致させる必要があり、認証を誤った場合でも認証回数がカウントされてしまうため、更新回数とずれる可能性が非常に大きいです。そのため、厳密な運用管理が必要となります。今回は様々なアプリケーションやサービスで実績のあるTOTPを実装します。OTP認証の実装では早速、構築してみましょう。以降はroot権限のあるユーザでの操作を想定しています。x86_64パッケージのインストール必要なパッケージをインストールします。moduleはGitHubからダウンロードし、ビルドする必要があります。user=[ユーザ名]:シークレットファイルを読み取るユーザを指定。nullok:シークレットファイルが指定の格納場所に無かった場合はOTP認証を無視(認証したことに)する。※この設定は危険なオプションのため、安定動作後に削除した方がいいです。postlogin(省略)OTP認証の実装はこれで終わりです。OTP認証の事前作業ここからはOTP認証するための事前準備となります。テスト用ユーザ作成テスト用ユーザを作成します。testuserシークレットファイルの生成デフォルトではユーザホーム配下にシークレットファイルが作成されます。シークレットファイルは秘密鍵や緊急用バックアップコードなどが記載されている非常に危険なファイルです。今回はホーム配下には作成せず、/var/mfa/配下にユーザ名のディレクトリを作成し、そこに秘密鍵を生成するようにします。""■google-authenticator-s:秘密鍵の生成場所を指定します。-l:トークンソフトウェア上で表示されるラベル名です。デフォルトでは”ユーザ名@ホスト名”となります。-i:トークンソフトウェア上で表示される発行名です。デフォルトでは”ホスト名”となります。is」のコードをを手入力することで、認証コードが表示されます。OTP認証ログインでは、ログインテストをしてみましょう。サーバにログインするターミナルの種類により、若干ログイン操作が異なります。Termの場合1ユーザ名を入力し、「チャレンジレスポンス認証を使う」を選択します。2パスワードを入力します。3トークンソフトウェアを参照し、認証コードを入力します。Puttyの場合1ユーザ名を入力します。2パスワードを入力します。3トークンソフトウェアを参照し、認証コードを入力します。module」を利用して、OTP認証の実装をご紹介させて頂きましたが、運用するためにはシークレットファイルの管理をどうするかが肝となると思います。シークレットファイルは上記でも記載しましたが秘密鍵などを含む非常に危険なファイルです。ログインするサーバ単位でシークレットファイルを作成した場合は、その分をトークンソフトウェアにも登録する必要があるため、管理が非常に煩雑になります。踏み台となるログインサーバでシークレットファイルを集中管理するなど、運用を十分考慮した上で実装頂ければと思います。雑誌等の執筆依頼を受付しております。役に立たなかった0人がこの投稿は役に立ったと言っています。コメントをキャンセルメールアドレスは表示されません。Reserved.本サイトに掲載されている社名、製品名、サービス名等は各社の商標または登録商標です。プライバシーポリシーお問い合わせ。