ページへ戻る

− Links

 印刷 

Gentoo Linuxな生活​/Apacheのワンタイムパスワードで悩む :: Nest Of Hawk

xpwiki:Gentoo Linuxな生活/Apacheのワンタイムパスワードで悩む

ページ内コンテンツ
  • 認証強化のおまけ
  • 認証モジュール導入
    • パッケージ取得
    • 展開&コンパイル
    • Apacheに設定
      • httpd.conf
      • vhostの設定ファイル
      • パスワードの設定
      • Apacheを再起動
  • 動作

認証強化のおまけ anchor.png[1]

ここ最近(2018年)セキュリティ関連のニュースが多いので、NextCloudに二段階認証を導入したついでに、ApacheのBASIC認証にも、OTP認証を導入してみようと思った次第です。

では、行ってみましょう

Page Top

認証モジュール導入 anchor.png[2]

Page Top

パッケージ取得 anchor.png[3]

2018年現在、OTPのモジュールは、Gentoo portageに取り込まれておりません。なので。GitHub[4]からダウンロードしてきます。Gitで同期もよし、ZIPをダウンロードしてくるもよし。

Page Top

展開&コンパイル anchor.png[5]

# unzip mod-authn-otp-master.zip

で解凍

# ./autogen.sh
# make
# make install

で問題なくインストールが済みます

Page Top

Apacheに設定 anchor.png[6]

Page Top

httpd.conf anchor.png[7]

httpd.confに以下の行を追記します。

LoadModule authn_otp_module modules/mod_authn_otp.so
Page Top

vhostの設定ファイル anchor.png[8]

<Directory "<認証したいHTTPファイルのあるディレクトリ">
  Options FollowSymLinks
  AllowOverride All
  AuthType Basic
  AuthName "OTP Authentication (Enter OTP as password)"
  AuthBasicProvider OTP
  Require valid-user
  OTPAuthUsersFile <パスワードファイルのあるパス>
  OTPAuthMaxLinger 1800
  OTPAuthLogoutOnIPChange On
</Directory>
  • OTP認証したいディレクトリのパスをDirectoryディレクティブに記載します。
  • OTPAuthUsersFileディレクティブに、ユーザ/パスワードを記載したファイルへのパスを記載します
  • OTPAuthMaxLingerに、パスワード認証したセッションの有効期限を書きます。この時間がすぎると、再度パスワードを問われますので、適当な値を。
Page Top

パスワードの設定 anchor.png[9]

これはなかなか難儀なのですが、こちらのWebサイトのシェル[10]を流用させて頂きました。

注意点は以下

  • 3行目 issuerは適当に自分のサイト名称に書き換えます
  • python -cの部分を、python2 -cに書き換えます。Gentooではpython3がデフォルトなのでエラーが出ます。明示的にpython2を指定します。
  • file=は、パスワードを置いてあるファイルへのパスです。変えたい場合は適当に書き換えましょう

で、これをapache_otp_user_add.shとかと適当な名前にして実行してみます。

# apache_otp_user_add.sh <ユーザ名>

と指定すると、<ユーザ名> と秘密鍵のセットのデータを登録してくれると同時に、QRコードを表示してくれるURLを表示してくれます。

URLをコピって、ブラウザで表示し、Google認証アプリや、IIJ SmartKeyアプリで読み込ませると、ワンタイムパスワードが生成されます。

Page Top

Apacheを再起動 anchor.png[11]

設定を有効にするために、Apacheを再起動します。

# /etc/init.d/apache2 restart
Page Top

動作 anchor.png[12]

認証させたいページにアクセスすると、おなじみApacheのBASIC認証画面が出てきます。

Username
先程apache_otp_user_add.shに指定した<ユーザ名>
Password
アプリで表示したワンタイムパスワード

を入力すると、めでたくワンタイムパスワード認証が出来ます。いやぁ、めでたし、めでたし。


Last-modified: 2018-01-23 (火) 06:56:30 (JST) (2278d) by maruo