手把手教你給 SSH 啟用二次身份驗證
作者:佚名
目前來說,二次驗證(這里就不做過多解釋了)是比較常用的安全手段,通過設(shè)置二次驗證(谷歌或其他工具),就可以有效的避免賬戶密碼的泄露導(dǎo)致的安全問題。
目前來說,二次驗證(這里就不做過多解釋了)是比較常用的安全手段,通過設(shè)置二次驗證(谷歌或其他工具),就可以有效的避免賬戶密碼的泄露導(dǎo)致的安全問題。因為,每次登陸前都需要獲取一次性驗證碼,如果沒有驗證碼的話就無法成功登陸。
1安裝 PAM 模塊
# 時間與客戶端進行校驗
- $ ntpdate pool.ntp.org
- # Ubuntu
- $ sudo apt install -y libpam-google-authenticator
- # CentOS7
- $ yum install -y epel-release
- $ yum install -y google-authenticator
2生成二次驗證代碼
- # 生成驗證碼
- # 哪個賬號需要動態(tài)驗證碼,請切換到該賬號下操作
- # -t: 使用 TOTP 驗證
- # -f: 將配置保存到 ~/.google_authenticator 文件里面
- # -d: 不允許重復(fù)使用以前使用的令牌
- # -w 3: 使用令牌進行身份驗證以進行時鐘偏移
- # -e 10: 生成 10 個緊急備用代碼
- # -r 3 -R 30: 限速 - 每 30 秒允許 3 次登錄
- $ google-authenticator -t -f -d -w 3 -e 10 -r 3 -R 30
- Warning: pasting the following URL into your browser exposes the OTP secret to Google:
- https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/vagrant@vagrant%3Fsecret%3DKZ7QPA11115XTQJQGBFWAIUJBY%26issuer%3Dvagrant
- Your new secret key is: KZ7xxx7EI5123xxx123
- Your verification code is 90xx71
- Your emergency scratch codes are:
- 1571xx03
- 9968xx56
- 2319xx89
- 8321xx97
- 9730xx15
- 3424xx23
- 5667xx03
- 9408xx86
- 7502xx41
- 4677xx14
3配置 SSH 服務(wù)啟用兩步驗證
- # 啟用兩步驗證
- $ sudo vim /etc/pam.d/sshd
- # @include common-auth # 將禁用密碼身份驗證
- auth required pam_google_authenticator.so # 禁用密碼驗證
- # 修改SSH配置文件
- $ sudo vim /etc/ssh/sshd_config
- Port 1090
- ChallengeResponseAuthentication yes
- PubkeyAuthentication yes
- PasswordAuthentication no
- AuthenticationMethods publickey,keyboard-interactive
- # 重啟SSH服務(wù)
- $ sudo systemctl restart ssh.service
4配置 sudo 二次驗證
- # 保存并退出
- $ sudo vim /etc/pam.d/common-auth
- auth required pam_google_authenticator.so
- # 重啟SSH服務(wù)
- $ sudo systemctl restart ssh.service
5手機安裝 Google 身份驗證器
- 1. 通過此工具掃描上一步生成的二維碼圖形,獲取動態(tài)驗證碼
- 2. 之后,就可以使用手機進行二次認證了,才能登陸服務(wù)器了
6使用 Fail2ban 去屏蔽多次嘗試密碼的 IP
- # 安裝軟件
- $ sudo apt install -y fail2ban
- # 配置文件
- $ vim /etc/fail2ban/jail.local
- [DEFAULT]
- ignoreip = 127.0.0.1/8
- bantime = 86400
- findtime = 600
- maxretry = 5
- banaction = firewallcmd-ipset
- action = %(action_mwl)s
- [sshd]
- enabled = true
- filter = sshd
- port = 1090
- action = %(action_mwl)s
- logpath = /var/log/secure
- # 重啟服務(wù)
- $ systemctl restart fail2ban
7從二次驗證鎖定中恢復(fù)
- # 禁用特定用戶的二步驗證(無法訪問身份驗證器應(yīng)用程序)
- $ sudo vim /etc/ssh/sshd_config
- AuthenticationMethods publickey,keyboard-interactive
- AuthenticationMethods publickey
- # 重啟SSH服務(wù)
- $ sudo systemctl restart ssh.service
責(zé)任編輯:龐桂玉
來源:
良許Linux