手把手教你给 SSH 启用二次身份验证

系统 Linux
目前来说,二次验证(这里就不做过多解释了)是比较常用的安全手段,通过设置二次验证(谷歌或其他工具),就可以有效的避免账户密码的泄露导致的安全问题。

[[440376]]

 目前来说,二次验证(这里就不做过多解释了)是比较常用的安全手段,通过设置二次验证(谷歌或其他工具),就可以有效的避免账户密码的泄露导致的安全问题。因为,每次登陆前都需要获取一次性验证码,如果没有验证码的话就无法成功登陆。

1安装 PAM 模块

# 时间与客户端进行校验 

  1. $ ntpdate pool.ntp.org  
  2. # Ubuntu  
  3. $ sudo apt install -y libpam-google-authenticator  
  4. # CentOS7  
  5. $ yum install -y epel-release  
  6. $ yum install -y google-authenticator 

2生成二次验证代码 

  1. # 生成验证码  
  2. # 哪个账号需要动态验证码,请切换到该账号下操作  
  3. # -t: 使用 TOTP 验证  
  4. # -f: 将配置保存到 ~/.google_authenticator 文件里面  
  5. # -d: 不允许重复使用以前使用的令牌  
  6. # -w 3: 使用令牌进行身份验证以进行时钟偏移  
  7. # -e 10: 生成 10 个紧急备用代码  
  8. # -r 3 -R 30: 限速 - 每 30 秒允许 3 次登录  
  9. $ google-authenticator -t -f -d -w 3 -e 10 -r 3 -R 30  
  10. Warning: pasting the following URL into your browser exposes the OTP secret to Google: 
  11.   https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/vagrant@vagrant%3Fsecret%3DKZ7QPA11115XTQJQGBFWAIUJBY%26issuer%3Dvagrant  
  12. Your new secret key is: KZ7xxx7EI5123xxx123  
  13. Your verification code is 90xx71  
  14. Your emergency scratch codes are:  
  15.   1571xx03  
  16.   9968xx56  
  17.   2319xx89  
  18.   8321xx97  
  19.   9730xx15  
  20.   3424xx23  
  21.   5667xx03  
  22.   9408xx86  
  23.   7502xx41  
  24.   4677xx14 

3配置 SSH 服务启用两步验证 

  1. # 启用两步验证  
  2. $ sudo vim /etc/pam.d/sshd  
  3. # @include common-auth  # 将禁用密码身份验证  
  4. auth required pam_google_authenticator.so  # 禁用密码验证  
  5. # 修改SSH配置文件  
  6. $ sudo vim /etc/ssh/sshd_config  
  7. Port 1090  
  8. ChallengeResponseAuthentication yes  
  9. PubkeyAuthentication yes  
  10. PasswordAuthentication no  
  11. AuthenticationMethods publickey,keyboard-interactive  
  12. # 重启SSH服务  
  13. $ sudo systemctl restart ssh.service 

4配置 sudo 二次验证 

  1. # 保存并退出  
  2. $ sudo vim /etc/pam.d/common-auth  
  3. auth required pam_google_authenticator.so  
  4. # 重启SSH服务  
  5. $ sudo systemctl restart ssh.service  

5手机安装 Google 身份验证器 

  1. 1. 通过此工具扫描上一步生成的二维码图形,获取动态验证码  
  2. 2. 之后,就可以使用手机进行二次认证了,才能登陆服务器了  

6使用 Fail2ban 去屏蔽多次尝试密码的 IP 

  1. # 安装软件  
  2. $ sudo apt install -y fail2ban  
  3. # 配置文件  
  4. $ vim /etc/fail2ban/jail.local  
  5. [DEFAULT]  
  6. ignoreip = 127.0.0.1/8  
  7. bantime  = 86400  
  8. findtime = 600  
  9. maxretry = 5  
  10. banaction = firewallcmd-ipset  
  11. action = %(action_mwl)s  
  12. [sshd]  
  13. enabled = true  
  14. filter  = sshd  
  15. port    = 1090  
  16. action = %(action_mwl)s  
  17. logpath = /var/log/secure  
  1. # 重启服务  
  2. $ systemctl restart fail2ban 

7从二次验证锁定中恢复 

  1. # 禁用特定用户的二步验证(无法访问身份验证器应用程序)  
  2. $ sudo vim /etc/ssh/sshd_config  
  3. AuthenticationMethods publickey,keyboard-interactive  
  4. AuthenticationMethods publickey  
  5. # 重启SSH服务  
  6. $ sudo systemctl restart ssh.service  

 

责任编辑:庞桂玉 来源: 良许Linux
相关推荐

2020-08-12 07:41:39

SQL 优化语句

2021-03-12 10:01:24

JavaScript 前端表单验证

2021-11-09 06:55:03

水印图像开发

2011-01-10 14:41:26

2011-05-03 15:59:00

黑盒打印机

2021-07-14 09:00:00

JavaFX开发应用

2022-04-01 09:00:00

Linux安全SSH

2021-08-18 07:29:41

密码验证 PAT

2011-02-22 13:46:27

微软SQL.NET

2021-02-26 11:54:38

MyBatis 插件接口

2021-12-28 08:38:26

Linux 中断唤醒系统Linux 系统

2022-12-07 08:42:35

2022-07-27 08:16:22

搜索引擎Lucene

2023-04-26 12:46:43

DockerSpringKubernetes

2022-03-14 14:47:21

HarmonyOS操作系统鸿蒙

2022-01-08 20:04:20

拦截系统调用

2021-09-30 18:27:38

数据仓库ETL

2020-07-09 08:59:52

if else模板Service

2020-04-14 10:20:12

MySQL数据库死锁

2009-04-22 09:17:19

LINQSQL基础
点赞
收藏

51CTO技术栈公众号