首页 > 编程知识 正文

电子邮件系统双因子认证,双因子认证解决方案

时间:2023-05-03 19:01:14 阅读:227004 作者:3378

optw 双因子认证 1.安装otpw2.参数配置3.重启测试4.拓展用法5.批量部署懒人脚本

官方网站:https://www.cl.cam.ac.uk/~mgk25/otpw.html

软件下载:https://www.cl.cam.ac.uk/~mgk25/download

前言
等保安全项目里面有一个要求需要服务器登陆必须有二次验证,所以就用这个OTPW一次性密码的程序来实现,找了很多教程,大多都是比较老的,在centos7上配置有些出入,这个程序在2014年发布1.5版本后也不再更新了,所以也就是为了符合中国等保检查项目来折腾一下,以下安装操作在CentOS6和7上均测试通过。

重要: 配置该软件涉及到一些安全策略,所以一定要关闭SELinux,否则配置后在输入密码时不会显示序列号,配置完后再开启SELinux也不会显示序列号,所以直接永久关闭。

# 查看SELinux状态getenforce # 临时关闭SELinuxsetenforce 0# 修改配置文件为disable永久关闭SELinuxsed -ri 's#^(SELINUX=).*#1disabled#g' /etc/selinux/config 1.安装otpw # 安装依赖包yum -y install pam-devel psmisc rsync gcc perl pcre-devel# 下载安装包cd ~wget https://www.cl.cam.ac.uk/~mgk25/download/otpw-1.5.tar.gz# 解压安装包tar -zxf otpw-1.5.tar.gz # 进入目录cd /root/otpw#修改Makefile文件PAMLIB值(make install后会自动将pam_otpw.so复制到指定目录)# CentOS6执行sed -i 's#PAMLIB=/lib/x86_64-linux-gnu/security#PAMLIB=/lib64/security/#g' Makefile# CentOS7执行sed -i 's#PAMLIB=/lib/x86_64-linux-gnu/security#PAMLIB=/usr/lib64/security#g' Makefile#如果不确定pam_otpw.so该放哪,可以查找一下pam_nologin.so,放在同一目录就好find / -name pam_nologin.so# 编译并安装,完成安装会断开一次SSH连接make && make installcd otpw-1.5cp otpw-gen /usr/wwdwd #复制命令文件到系统otpw-gen > /root/passwd_list # 创建秘钥表# 执行该程序会让你输入一个前缀,之后下载保存目录下的passwd_list文件,以便下次登录时查阅# 用户目录下会生成一个.otpw的文件,里面是加密的秘钥,280个秘钥使用一个就会丢弃一条记录# 280条秘钥全部使用完毕需要重新生成秘钥表 2.参数配置 #配置/etc/pam.d/sshd# 允许密码和otpw混合登录,添加这两条即可sed -i '1s/^/session optional pam_otpw.son/' /etc/pam.d/sshdsed -i '1s/^/auth sufficient pam_otpw.son/' /etc/pam.d/sshd# 如果想只允许otpw的认证登录则执行以下三步操作(区别在第二条sufficient改成了required)sed -i '1s/^/session optional pam_otpw.son/' /etc/pam.d/sshdsed -i '1s/^/auth required pam_otpw.son/' /etc/pam.d/sshd# 在下这一条前面加一个#注释掉auth substack password-auth# 再将/etc/ssh/sshd_config密码登录功能yes改成no:PasswordAuthentication no# --------------------------------------------------------------## 配置完/etc/pam.d/sshd后,检查/etc/ssh/sshd_config 确保以下两条值是为yes,如果不存在,需手动添加ChallengeResponseAuthentication yesUsePAM yes 3.重启测试 # 重启sshd服务service sshd restart systemctl restart sshd

断开本次SSH连接重新登录才会生效(重要!!),也可以使用Windows的命令行输入以下命令测试

ssh root@192.168.200.128

显示如下,输入之前设置的前缀,再加上passwd_list表中205后面的字符

Password 205:# 如前缀为test,找到秘钥表205 k+82 nYGb ,则输入testk+82nYGb 即可登录

输入错误或取消登录会要求输入3个序列号的秘钥,输入前缀+三个位置对应的密码

Password 085/099/014:

想要恢复只输入一个序列号的秘钥,登录后删除家目录下的.otpw.lock文件即可

rm ~/.otpw.lock 4.拓展用法

如果是多台服务器想使用同一个秘钥表,所有服务器都按上文的配置,otpw-gen创建秘钥表时前缀必须设置成一样的,然后将第一台生成的.otpw文件上传到其他服务器覆盖掉即可

5.批量部署懒人脚本

因为安装otpw的时候make install会断开一次ssh连接,所以需要安装screen来保证断开后脚本继续执行

yum -y install screenscreen -S otpw #创建一个otpw会话chmod +x otpw.sh && ./otpw.shscreen -r otpw #断开ssh重新连接会恢复到otpw脚本允许的会话

复制以下代码保存为otpw.sh,文件换行符格式为Unix

#!/wwdwd/bash#otpw install scriptprefix="test" #配置密钥前缀,一些符号需要用转义(@#$%&等)os=`cat /etc/redhat-release|sed -r 's/.* ([0-9]+)..*/1/'` #判断系统版本yum -y install pam-devel psmisc rsync gcc perl pcre-devel cd ~wget https://www.cl.cam.ac.uk/~mgk25/download/otpw-1.5.tar.gztar -zxf otpw-1.5.tar.gzcd otpw-1.5case $os in6) sed -i 's#PAMLIB=/lib/x86_64-linux-gnu/security#PAMLIB=/lib64/security/#g' Makefile;; 7) sed -i 's#PAMLIB=/lib/x86_64-linux-gnu/security#PAMLIB=/usr/lib64/security#g' Makefile;; esacmake && make install #install会断开ssh连接cd otpw-1.5cp otpw-gen /usr/wwdwd #方便全局调用echo -e "$prefixn$prefixn" | otpw-gen > /root/passwd_list #自动交互输入前缀# 如果想多台服务器用同一个密钥表,上传一个otpw文件夹,里面有之前生成的.otpw文件#rm -rf /root/.otpw #删除生成的文件#cd ~ #cp otpw/.otpw /root #替换验证文件cp /etc/pam.d/sshd /etc/pam.d/sshd_bak #备份sed -i '1s/^/session optional pam_otpw.son/' /etc/pam.d/sshdsed -i '1s/^/auth sufficient pam_otpw.son/' /etc/pam.d/sshdcase $os in6) service sshd restart;; 7) systemctl restart sshd;; esac

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。