VerifyでLinuxに多要素認証を導入してみた。
投稿者:セキュリティ&ネットワーク事業本部 石井
昨今ではサイバー攻撃が増加し不正アクセスを行い、重要な情報を盗み出すことで大きな被害が出ています。通常のアクセスですとID、ユーザ名およびパスワードなどの知識情報が流出してしまえばログインが簡単にできてしまうというのが現状です。
しかし、多要素認証を用いることでパスワード以外の情報、例えばメールや指紋などでのログインが必要となり、不正アクセスを防止しセキュリティ向上につながります。アクセス管理製品であるIBM Security Verify(以下Verify)はハイブリッドマルチクラウド環境の認証およびアクセス制御を可能にします。また一度のログインで複数のアプリケーションやシステムにアクセスが可能となり、ユーザーの利便性を向上させつつ、セキュリティも確保することもできます。そこで今回はVerifyを用いてLinux環境に多要素認証であるワンタイムパスワードを実装してみたいと思います。
目次
- はじめに
- IBM Security Verify無料評価環境の登録
- APIクライアントの作成
- Verifyへのユーザー登録
- IBM Security Verify Gateway for Linux PAMのインストール
- 各設定ファイルの編集
- ワンタイムパスワードでの認証
- おわりに
1.はじめに
まずはじめに多要素認証を導入する方法について説明します。
①Verifyに登録する。
②VerifyでAPIクライアントを作成する。
③VerifyにLinuxユーザを追加する。
④IBM Security Verify Gateway for Linux PAMをインストールする。
⑤Linux上で設定ファイルを編集する。
⑥ワンタイムパスワードで認証を確認する。
といった流れで実装していきます。下記に一般的なアクセスと今回実装する多要素認証を図で示してみました。一般的なアクセスに比べて、多要素認証ではプロセスが増えていることが分かると思います。
2.IBM Security Verify無料評価環境の登録
はじめにIBM Security Verify無料評価版の環境を入手します。
3.APIクライアントの作成
流れとしてはVerify上でAPIクライアントを作成し、クライアントIDやクライアント秘密鍵を取得します。まずVerifyのAPIクライアントの作成を行うためにVerifyにログインし、APIクライアントを設定します。セキュリティタブからAPIアクセスを選択し、右上の「APIクライアントの追加」をクリックします。
設定を進めていき、最後に右下の「APIクライアントの作成」をクリックします。
APIクライアントの一覧で作成した APIクライアントが一覧に表示されていることを確認します。作成したAPIクライアントの右側に編集ボタンがあるのでクリックします。
クリックするとAPIクライアントのクライアントIDとクライアント秘密鍵が表示されます。これらはIBM Security Verify Gateway for Linux PAMのインストール後使うのでメモしておきます。
4.Verifyへのユーザー登録
次にVerifyに多要素認証を行うユーザーを登録します。左のメニューからユーザー&グループを選択し、ユーザータブに移動し、「ユーザーの追加」をクリックします。
ユーザーが登録されていない初回は初めにユーザー登録ダイアログが表示されるため、以下を指定して(他は適当に指定して)保存をクリックします。
アイデンティー・プロバイダー:Cloud Directory
ユーザー名:(これから作成するユーザーのログイン時のユーザー名)
優先Eメール:(これから作成するユーザーのメールアドレス、この後ここにメールが送信される)
新規アカウントにメールを送信:オン
ここまで完了したら新規に作成したユーザーでサインインするためにこのアカウントでは一旦サインアウトします。
先ほどユーザー作成時に指定したメールアドレスの受信ボックスを確認します。IBM Securityから「アカウントが作成されました」というタイトルのメールが届きました。また初期パスワードも表示されています。今回は記載されているURLをクリックし、 ログインします。
ログイン画面が表示され、ユーザー名とパスワードを入力します。1回目のログインでは初期パスワードから変更する必要があるので任意のパスワードに変更します。完了すると登録したユーザーで無事ログインできました。
次にこのユーザの多要素認証のため、メールアドレスを追加します。
セキュリティタブに移動すると登録時に指定したメールアドレスにワンタイムパスワードが届きます。そのコードを認証画面内に登録して認証します。次に検証方式の新しい方式の追加をクリックします。
今回はメールアドレスでの多要素認証を実装したいのでEメール欄を記載します。
ここまでの作業で多要素認証サービス(Verify)への登録作業が完了しました。
5.IBM Security Verify Gateway for Linux PAMのインストール
続いて IBM Security Verify Gateway for Linux PAM をダウンロードします。
まずhttps://exchange.xforce.ibmcloud.com/hubに移動します。「IBM Security Verify Gateway for Linux PAM」を検索して選択しアプリケーションをダウンロードします。
対象の Linux に root でログインし、ダウンロードしたファイルをアップロードします。そして以下の手順でパッケージを展開し、インストールします。
# unzip パッケージ名
# cd パッケージが展開されたディレクトリ
# unzip rhel-8.zip (RHEL 8 の場合)
rpm ファイルを使用してIBM Auth API for Verifyをインストールするには、以下の手順を実行します。
# rpm -i ibm-auth-api-1.0.7-0.x86_64.rpm
同様にVerify用の IBM PAMモジュールをインストールします。
# rpm -i pam-ibm-auth-1.0.7-0.x86_64.rpm
6.各設定ファイルの編集
今回、4ファイルをそれぞれ編集していきます。
まずsshd の設定を変更して、SSH 時の2段階認証を有効にします。
/etc/pam.d/password-auth ファイルを /etc/pam.d/civ-auth-choice というファイルにコピーし、/etc/pam.d/civ-auth-choice ファイルを編集します。以下の行を変更します。
auth sufficient pam_unix.so nullok try_first_pass
↓
auth requisite pam_unix.so nullok try_first_pass
auth sufficient pam_ibm_auth.so auth_method=choice-then-otp
作成した/etc/pam.d/civ-auth-choiceファイルを読み込むためにetc/pam.d/sshdファイルを下記に編集します。
auth required pam_sepermit.so
auth substack civ-auth-choice
続いてVerify サーバーと通信するように/etc/pam_ibm_auth.jsonを正しくセットアップします。以下の*をVerifyに合わせて変更します。
{
“ibm-auth-api”: {
“client-id”: “*********“,
“client-secret”: “*********”,
“protocol”: “https”,
“host”: “*********.verify.ibm.com”,
“port”: 443,
“authd-port”: 12,
“max-handles”: “16”
},
:
}
続いて/etc/ssh/sshd_config を編集します。このファイルを編集しSSH接続をした際に多要素認証を有効にする設定をします。
Verify PAM モジュールとのユーザー2FA対話を許可するように “ChallengeResponseAuthentication yes” を設定します。具体的にはChallengeResponseAuthentication で始まる行を探して、その値を yes に変更します。
# ChallengeResponseAuthentication yes
SSH をテストするLinuxユーザーを選択し、その GECOS値をVerify ユーザー名に編集します。 GECOS値を同じにすると内部的にVerifyとLinuxのユーザが同じであると認識します。
# usermod -c <GECOS値にいれたい文字(Verifyのユーザ名)> <ユーザ名>
またSELinuxの設定を行います。これを行うことでLinuxのセキュリティ機能を変更し、Verifyとの通信を可能にしていきます。2つ目のコマンドで()内の左側がオンになっていれば変更完了です。
# setsebool authlogin_yubikey on
# semanage boolean -l | fgrep authlogin_yubikey
# authlogin_yubikey (オン,オフ) Allow authlogin to yubikey
またsshd のプロセスは SELinux で守られていて、特定のポートを通じてのみアクセスできます。この部分も変更する必要がある為変更します。
# semanage port -a -t kerberos_port_t -p tcp 12
最後にsshd を再起動し、更新された構成オプションが確実に使用されるように下記のコマンドを実行します。
# systemctl restart sshd
7.ワンタイムパスワードでの認証
これで二要素認証が実装されました。ユーザーに SSH 接続し、多要素認証の実施を確認します。
パスワードを入力するとワンタイムパスワードが要求されました。登録したメールも届いており、無事アクセスすることが出来ました。
8.おわりに
今回、Verifyを活用することで、多要素認証の一環としてメールによるワンタイムパスワード認証を手軽に実装することができました。このように認証プロセスに多要素認証を追加することで、不正なアクセスを大幅に減少させ、サイバー攻撃による被害も最小限に抑えられると思います。セキュリティの堅牢性が一段と向上し、企業全体の情報資産をより強固に守ることができるのではないでしょうか。
最後までお読みいただきありがとうございました。
NI+CではVerifyの導入実績もあり、ほかにも様々なセキュリティソリューションを取り扱っております。セキュリティソリューションに関するご相談はぜひ日本情報通信にお任せください。
Verifyに関するご相談はこちら
