コマンド

SSHでワンタイムパスワード(OTP)を導入|セキュリティ強化

SANA

本ブログ内のSSHに関するまとめ記事を書いたので、こちらもご覧ください。

【総集編】SSHの基本的な使い方とその応用方法
【総集編】SSHの基本的な使い方とその応用方法

今回は、SSHのセキュリティを強化のため、公開鍵認証に加えてワンタイムパスワード(OTP)を導入する方法について解説します。また、OTPの生成には「Google Authenticator」を使用します。

公開鍵認証については以下の記事で解説してます。

【30分で完了】SSH公開鍵認証の設定方法を解説
【30分で完了】SSH公開鍵認証の設定方法を解説

SSHは便利である一方、セキュリティ面でのリスクも存在します。特に、外部からのサーバー乗っ取りなどの危険が伴う可能性があります。しかし、ワンタイムパスワード(OTP)を導入することで、不正アクセスのリスクを大幅に低減することができます。

設定方法

今回導入するサーバ情報は以下です。

<SSH接続先サーバ情報>
サーバ:ConoHa VPS
OS:Ubuntu22.04
その他設定:SSHの公開鍵認証を設定済み。

【30分で完了】SSH公開鍵認証の設定方法を解説
【30分で完了】SSH公開鍵認証の設定方法を解説

導入の流れは以下となります。

Google Authenticatorアプリのインストール

Google Play StoreやApp Storeにあります。

PAMモジュールのインストール

SSH接続するサーバ側にパッケージをインストールします。

SSH設定の変更

SSH接続するサーバ側の設定ファイルを変更してOTPを有効化します。

Google Authenticatorアプリの設定

STEP2〜STEP3での設定内容を端末アプリと紐づけます。

確認

OTPを使ってSSH接続できるかを確認します。

STEP1は省略して、STEP2から解説をしていきます。

PAMモジュールのインストール

まずは、Google Authenticator のワンタイムパスワード(OTP)を利用するためのPAM(Pluggable Authentication Module)モジュールをインストールします。

OTPを利用するための部品だと思ってもらえればOKです。

sudo apt update #パッケージリストを最新化
sudo apt-get install libpam-google-authenticator #パッケージをインストール

SSH設定の変更

まずはsshd_configを管理者権限で変更をします。ちなみに似たようなssh_confgファイルがありますがそちらは更新しません。

sshd_config: サーバー側のSSHを制御する。

ssh_config: クライアント側のSSUを制御する。

sudo vi /etc/ssh/sshd_config

ファイルを開いたら以下の項目を追加してください。

ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive

ChallengeResponseAuthenticationはOTP認証を有効にするもので、AuthenticationMethodsは公開鍵認証(publickey)に加えて、OTP認証(keyboard-interactive)の追加認証が可能となります。

次にsshdファイルも同様に管理者権限で変更をします。

sudo vi  /etc/pam.d/sshd

ファイルを開いたら以下の項目を追加してください。

auth required pam_google_authenticator.so

これでログインの際にGoogle AuthenticatorによるOTP認証を要求することができます。

sshdのサービスを再起動します。

sudo systemctl restart sshd

これでSSH接続先サーバの設定は完了です。

Google Authenticatorアプリの設定

Google Authenticatorアプリの設定をします。以下のコマンドを打ってください。

google-authenticator

端末にQRコードリーダがある場合はQRコードを読み取ります。ない場合は下の方にあるsecret keyを入力します。

端末にこんな感じ追加されてればOKです。

動作確認

正しくOTPが機能しているかを確認するため、設定をしたサーバに対してSSHしてみます。

パスワードの次にVerification codeでOTPが要求されているのがわかります。

OTPをOFFにしたい場合

以下のようにsshd_configを変更すると、通常通りの公開鍵認証のみとなります。

ChallengeResponseAuthentication yes
#AuthenticationMethods publickey,keyboard-interactive  #コメントアウト(消しても大丈夫です)
AuthenticationMethods publickey #publickeyのみにする

今回は以上となります。

Xからの読者コメントをお待ちしています。
ブログ更新の励みになります!
ABOUT ME
さな夫
さな夫
JTC エクストリーム中間管理職
東京生まれ。30代。大学院修了後に今のSIer会社へ就職。普段はアプリ開発の設計を担当。奥さんと子供2人とほのぼのとした日常を過ごしながら技術系のブログを執筆中。
記事URLをコピーしました