手把手教你给 SSH 启用二次身份验证
2023-03-14 11:24:15 时间
目前来说,二次验证(这里就不做过多解释了)是比较常用的安全手段,通过设置二次验证(谷歌或其他工具),就可以有效的避免账户密码的泄露导致的安全问题。因为,每次登陆前都需要获取一次性验证码,如果没有验证码的话就无法成功登陆。
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: 使用 TOTP 验证
- # -f: 将配置保存到 ~/.google_authenticator 文件里面
- # -d: 不允许重复使用以前使用的令牌
- # -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 服务启用两步验证
- # 启用两步验证
- $ 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服务
- $ sudo systemctl restart ssh.service
4配置 sudo 二次验证
- # 保存并退出
- $ sudo vim /etc/pam.d/common-auth
- auth required pam_google_authenticator.so
- # 重启SSH服务
- $ sudo systemctl restart ssh.service
5手机安装 Google 身份验证器
- 1. 通过此工具扫描上一步生成的二维码图形,获取动态验证码
- 2. 之后,就可以使用手机进行二次认证了,才能登陆服务器了
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
- # 重启服务
- $ systemctl restart fail2ban
7从二次验证锁定中恢复
- # 禁用特定用户的二步验证(无法访问身份验证器应用程序)
- $ sudo vim /etc/ssh/sshd_config
- AuthenticationMethods publickey,keyboard-interactive
- AuthenticationMethods publickey
- # 重启SSH服务
- $ sudo systemctl restart ssh.service
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的