1.はじめに:2要素認証とは
二要素ID認証は、あなたが知っていることとあなたが持つことができることを組み合わせることによってのみ機能するID認証システムです。二要素認証は、時刻同期技術を使用するシステムであり、時間、イベント、キーの3つの変数に基づくワンタイムパスワードを使用して、従来の静的パスワードを置き換えます。各動的パスワードカードには一意のキーがあり、サーバー側に同時に保存されます。動的パスワードカードとサーバーは、それぞれ同じキー、同じランダムパラメータ(時間、イベント)、および同じアルゴリズムに基づいています。認証用の動的パスワードを計算して、パスワードの一貫性を確保し、ユーザーの認証を実現します。
率直に言って、数年前にカードを申請するために銀行に送ったマウストークンや、NetEaseゲームの一般的な注文のように、オンラインバンキングを使用したり、ゲームにログインしたりすると、動的パスワードを再入力します。
2.製品分類
市場にはハードウェアベースとソフトウェアベースの製品があります。詳細は個別に検索できます。私はオープンソースのDongdongが好きで、Googleのオープンソースの二次認証システムであるGoogle AuthenticatorOpenSourceを見つけました。スマートフォン。Linuxシステムにログインすると、認証システムは6桁のワンタイムパスワードを提供します。現在、iOSとAndroidの両方にダウンロード用のクライアントがあります。
3.目的
1. Linuxサーバーにログインするときは、最初に動的パスワードを入力します。認証が成功したら、次の手順でユーザーパスワードを入力します。パスワードが失敗した場合、次のローカルパスワード認証は実行されません。
2.展開が完了した後、サーバーがインターネットにアクセスできない場合、またはモバイルクライアントがインターネットにアクセスできない場合でも、2段階認証システム全体が正常に動作します。
4つの基本+展開手順
4.1基本環境:
OS:Centos 7(最小インストール)
IP:192.168.1.125
4.2必要なソフトウェア:
chrony
pam-devel
libpam-google-authenticator-1.0-source.tar.bz2
qrencode-3.4.4
libpng、libpng-devel
4.3展開
4.3.1開発者ツールをインストールします。メインのフォローアップをコンパイルする必要があります。gccなどのコンパイラーと、使用する必要のあるライブラリーがあります。
[root@test ~]# yum groupinstall "Development Tools" -y
4.3.2pam開発キットをインストールします
[root@test ~]# yum install pam-devel -y
4.3.3動的パスワードの再検証には時間がかかるため、chronyソフトウェアをインストールします。そのため、時間の一貫性を維持する必要があります。簡単に言うと、chrony:chronyはネットワークタイムプロトコル(NTP)の別の実装です。ネットワークタイムプロトコルデーモン(ntpd)とは異なり、システムをより迅速かつ正確に同期できます。ntpを使用する場合は、別途インストールする必要があります。
以下は、chronydの構成ファイルをインストールおよび変更して、中国で最も有用なntpサーバーを(おそらく6行目以降に)追加することです。https://www.pool.ntp.org/zone/cn
[root@test ~]# yum install chrony -y
[root@test ~]# vim /etc/chrony.conf
…
server 2.cn.pool.ntp.org iburst
サービスを再起動し、コマンドを使用して同期を表示します(注:202.118.1.130は、前の手順で追加したntpサーバーです)
[root@test ~]# systemctl restart chronyd
[root@test ~]# chronyc sources
210 Number of sources = 3
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 202.118.1.130 2 6 17 54 -58us[ +132us] +/- 85ms
^+ news.neu.edu.cn 2 6 17 54 +542us[ +732us] +/- 89ms
^- dns1.synet.edu.cn 2 6 251 46 +25ms[ +25ms] +/- 60ms
タイムゾーンが間違っている場合は、次のように、現在地のタイムゾーンをシステム操作のタイムゾーンにコピーできます。
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
4.3.4次に、Googleのgitハブに移動してソースファイルをダウンロードします
[root@test ~]# git clone https://github.com/google/google-authenticator-libpam.git
gitでダウンロードしたディレクトリを入力し、コンパイルしてインストールします
[root@test ~]# cd google-authenticator/libpam/
[root@test libpam]# ./bootstrap.sh
[root@test libpam]# make && make install
インストールが完了したら、Google認証をサポートするようにsshdを変更するようにシステムP AMモジュールを構成します。これにより、すべてのユーザーがGoogleを使用してSSH認証を検証する必要があります。sshdファイルの最初の行の内容は次のとおりです。
[root@test ~]# vim /etc/pam.d/sshd
auth required pam_google_authenticator.so no_increment_hotp
sshdサービス/ etc / ssh / sshd_configを構成し、主に次の3つの値を変更します。
[root@test ~]# vim /etc/ssh/sshd_config
...
PasswordAuthentication yes
ChallengeResponseAuthentication yes
UsePAM yes
**注:**テスト中に発生したエラーレコードをここに挿入します。
[root@test ~]# tail -40f /var/log/secure
....
May 21 13:43:01 test sshd[3344]: PAM unable to dlopen(/usr/lib64/security/pam_google_authenticator.so): /usr/lib64/security/pam_google_authenticator.so: cannot open shared object file: No such file or directory
May 21 13:43:01 test sshd[3344]: PAM adding faulty module: /usr/lib64/security/pam_google_authenticator.so
May 21 13:43:03 test sshd[3346]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
**変更方法:**ソフトリンクを作成するだけです。作成する必要があります。または、直接コピーすることもできます。
[root@test ~]# ln -s /usr/local/lib/security/pam_google_authenticator.so /usr/lib64/security/pam_google_authenticator.so
その後、sshdサービスを再起動します
[root@test ~]# systemctl restart sshd
4.3.5QRコード生成ツールをインストールします。このステップ✌も省略できます。インストールしない場合、次のステップで生成されたQRコードがリンクになります。そのときにブラウザにリンクをコピーすると、QRコードも表示されます。スマートオープンを使用してください。スキャンする電話のグーグル作者。
[root@test ~]# wget -c http://fukuchi.org/works/qrencode/qrencode-3.4.4.tar.gz
[root@test ~]# tar zxvf qrencode-3.4.4.tar.gz
[root@test ~]# cd qrencode-3.4.4
[root@test qrencode-3.4.4]# yum install libpng libpng-devel
[root@test qrencode-3.4.4]# ./configure
[root@test qrencode-3.4.4]# make && make install
4.3.6ユーザーを設定するには、次の手順に従います。
google-authenticatorコマンドを実行すると、現在ログインしているユーザーのホームディレクトリに新しいキーが生成されます()
[root@test qrencode-3.4.4]# cd ~
[root@test ~]# google-authenticator
Do you want authentication tokens to be time-based (y/n) y
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@test%3Fsecret%3DSLZTXLFJ5KT5TWMP%26issuer%3Dtest
参照リンク:
https://mp.weixin.qq.com/s/sTh3xJRemRdIJecTEPqlmg