1. 程式人生 > >Google Authenticator實現Linux使用者登入雙認證

Google Authenticator實現Linux使用者登入雙認證

#安裝開發者工具

yum groupinstall "Development Tools" -y

#安裝pam 開發包

yum install pam-devel -y

#安裝chrony軟體,chrony 是網路時間協議的(NTP)的另一種實現,因為動態口令再驗證時用到了時間,所以要保持時間上的一致性

yum install chrony -y

vi /etc/chrony.conf

server 2.cn.pool.ntp.org iburst

systemctl restart chronyd

chronyc sources

#如果時區不對的話,可以拷貝你當前地區所在地的時區到系統執行的時區

#cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

###安裝google-authenticator

cd /opt

git clone https://github.com/google/google-authenticator-libpam.git

cd google-authenticator-libpam/

./bootstrap.sh

./configure

make && make install

ln -s /usr/local/lib/security/pam_google_authenticator.so /usr/lib64/security/pam_google_authenticator.so

#配置系統PAM模組,修改sshd支援谷歌的認證,在sshd檔案的第一行

vi /etc/pam.d/sshd

auth      required pam_google_authenticator.so

vi /etc/ssh/sshd_config

...

ChallengeResponseAuthentication yes

#安裝二維碼生成工具,這步也可以省略,如果不裝的話,因為下一步生成的二維碼就會成一個連結,

#到時將連結複製到你的瀏覽器中,也是可以出現二維碼的,到時利用智慧手機開啟google author 進行掃描。

cd /opt

yum -y install libpng libpng-devel

wget -c https://fukuchi.org/works/qrencode/qrencode-4.0.2.tar.bz2

tar jxvf qrencode-4.0.2.tar.bz2

cd qrencode-4.0.2

./configure

make && make install

#執行google-authenticator命令,它將會在當前登陸使用者的家目錄中生成一個新的金鑰

cd ~

google-authenticator

#Your emergency scratch codes are:

#  98627355

#  45083255

#  48589468

#  91373042

#  22191496

#上述共需回答5個y

#第1個:問你是否想做一個基於時間的令×××y

#第2個:是否更新你的google認證檔案,由於第一次設定,所以一定選y 

#第3個:是否禁止口令多用,這裡選擇y,禁止它,以防止中間人欺騙。y

#第4個:預設情況,1個口令的有效期是30s,這裡是為了防止主機時間和口令客戶端時間不一致,設定的誤差,可以選擇y,也可選n,看要求嚴謹程度y

#第5個:是否開啟嘗試次數限制,預設情況,30s內不得超過3次登陸測試,防止別人暴力破解。y

#並且上面這些設定將被儲存在使用者的/.google_authenticator檔案中,emergency scratch codes 中的5個程式碼是緊急程式碼,務必牢記,

#這是在你的動態口令無法使用的情況下使用的,記住,用一個失效一個。後期可以登陸上去後,重新生成!

#此時開啟手機上的Google Authenticator應用掃描二維碼

#最後重啟sshd服務

systemctl restart sshd

###--- secureCRT設定keyboard interactive需要放在第一位 ---###

### 解決內網主機跳過二次認證

#編輯pam.d下的sshd 檔案,在第一行增加內容,主要是指定允許的主機資訊檔案

more -2 /etc/pam.d/sshd

auth [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-localhost.conf

auth      required pam_google_authenticator.so no_increment_hotp

#然後在/etc/security/目錄下建立access-localhost.conf檔案

cat /etc/security/access-localhost.conf

# skipped local network for google auth...

+ : ALL : 192.168.11.0/24

+ : ALL : LOCAL

- : ALL : ALL

#最後重啟sshd服務

systemctl restart sshd