Google Authenticator とは
Google が開発している2段階認証(2要素認証)用トークンソフトウェア。
wikipedia あった。詳しくはこちらを見て。
今回は Apache のベーシック認証に OTP (ワンタイムパスワード) を利用する。
設定
apache
Apacheをインストールする。
sudo yum install httpd sudo systemctl start httpd
http://127.0.0.1 にアクセスし Apache の画面が出ることを確認。
今回 Basic 認証を設定するページを作成する。 DocumentRoot 以下に適当なページを作成。
vi /var/www/html/index.html sudo systemctl restart httpd
http://127.0.0.1/index.html にアクセスし test と出ることを確認。
続いて Basic認証を設定する。
vi /etc/httpd/conf/httpd.conf
<Location /> AuthType Basic AuthName "Basic Auth" AuthUserFile /etc/httpd/conf/.htpasswd Require valid-user </Location>
お試しで test ユーザを作成する。
htpasswd -c /etc/httpd/conf/.htpasswd test
Apache 再起動。
sudo systemctl restart httpd
http://127.0.0.1/index.html にアクセスし test ユーザで認証できることを確認。
mod-authn-otp
Apache に 2要素認証を設定するため、 mod-authn-otp を利用する。
mod-authn-otp は make install が必要なので必要ツールをインストールしておく。
sudo yum install httpd-devel openssl-devel automake gcc
mod-authn-otp を git cloneで取得し、make install。
git clone https://github.com/archiecobbs/mod-authn-otp cd mod-authn-otp ./autogen.sh -c make sudo make install
mod-authn-otp は下記に作成されている。
ls -la /etc/httpd/modules/mod_authn_otp.so
Apache 設定に追加。 /etc/httpd/conf.modules.d 配下に集めておく。
echo "LoadModule authn_otp_module modules/mod_authn_otp.so" | sudo tee /etc/httpd/conf.modules.d/00-otp.conf > /dev/null
Basic 認証を OTP 認証に設定する。
<Location /> AuthType Basic AuthName "OTP Authentication" AuthBasicProvider OTP Require valid-user OTPAuthUsersFile /var/www/otp/users OTPAuthMaxLinger 3600 OTPAuthMaxOTPFailure 20 OTPAuthPINAuthProvider file OTPAuthLogoutOnIPChange On </Location>
Apache再起動。
sudo systemctl restart httpd
Google Authenticator に登録する
基本はこちらの記事通りにやれば良い。
OTP用ユーザを作成する。上記記事のスクリプトをコピーしてシェルファイルを作り、ユーザを指定して実行する。/var/www/otp/users にユーザが追加される。
$ sh otp.sh otp-user
実行するとURLが出力される。このURLにアクセスするとQRコードが表示されるので、Google AuthinticatorアプリのQRコードスキャナで読み取れば、登録が完了する。
http://127.0.0.1/index.html にアクセスし otp-user ユーザで、OTP 認証でログインできることを確認。
コメント