SSHGoogleAuthenticator安全加固
1. SSH连接
Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。虽然任何网络服务都可以通过SSH实现安全传输,SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。使用频率最高的场合类Unix系统,但是Windows操作系统也能有限度地使用SSH。
SSH本身是一个非常安全的认证连接方式。不过由于人过等方面的原因,难免会造成密码的泄露。针对这种问题我们不妨给SSH再加一把锁。当然,增加这层锁的方式有很多种。例如:knockd、S/KEY、OPIE/OPTW、Two-factor authentication等。
2. Google Authenticator
Google身份验证器是一款基于时间与哈希的一次性密码算法的两步验证软件令牌,此软件用于Google的认证服务。此项服务所使用的算法已列于 RFC 6238 和 RFC 4226 中。
Google身份验证器给予用户一个六位到八位的一次性密码用于进行登录Google或其他站点时的附加验证。其同样可以给第三方应用生成口令,例如密码管家程序或网络硬盘。先前版本的Google身份验证器开放源代码,但之后的版本以专有软件的形式公开。
3.Linux 中安装
3.1 系统环境说明
[root@clsn.io /root] clsn.io Blog WebSite
#cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@clsn.io /root] clsn.io Blog WebSite
#uname -a
Linux clsn.io 4.10.5-1.el6.elrepo.x86_64 #1 SMP Wed Mar 22 14:55:33 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@clsn.io /root] clsn.io Blog WebSite
#sestatus
SELinux status: disabled
3.2 安装 Google Authenticator
3.2.1 安装依赖包
yum -y install wget gcc make pam-devel libpng-devel
3.2.2 Google Authenticator PAM插件安装
# 可在google的github下载
wget https://github.com/google/google-authenticator/archive/1.02.tar.gz
tar xf 1.02.tar.gz
cd google-authenticator-1.02/libpam/
./bootstrap.sh
./configure
make && make install
安装完成后会在 /usr/local/lib/security/pam_google_authenticator.so生成一个 库文件,
系统还会多在/usr/local/bin目录生成一个google-authenticator可执行文件,通过运行该命令进行配置。
3.2.3 复制so文件
# cp /usr/local/lib/security/pam_google_authenticator.so /lib64/security/
4. 配置 SSH + Google Authenticator
4.1 初始配置 Google Authenticator
[root@clsn.io /lib64/security] clsn.io Blog WebSite
#google-authenticator
Do you want authentication tokens to be time-based (y/n) n
# 是否基于时间的认证,为了防止不同跨时区的问题,这里选择n
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://hotp/root@clsn.io%3Fsecret%3*****%26issuer%3Dclsn.io
# s生成的二维码
Your new secret key is: ****
Your verification code is 5****0
Your emergency scratch codes are:
40****84
19****95
60****78
83****92
31****58
# 这5个码用于在取不到或错的验证码有错时,用于应急用的。不过每个只能用一次,不能重复使用。
Do you want me to update your "/root/.google_authenticator" file? (y/n) y
By default, three tokens are valid at any one time. This accounts for
generated-but-not-used tokens and failed login attempts. In order to
decrease the likelihood of synchronization problems, this window can be
increased from its default size of 3 to 17. Do you want to do so (y/n) y
If the computer that you are logging into isn"t hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y
4.2 SSH调用及客户端配置
添加pam认证,在第一行添加
# vim /etc/pam.d/sshd
auth required pam_google_authenticator.so
------------------------------------------------------------------
#cat /etc/pam.d/sshd
#%PAM-1.0
auth required pam_sepermit.so
auth required pam_google_authenticator.so
auth include password-auth
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include password-auth
修改sshd配置
# vim /etc/ssh/sshd_config
ChallengeResponseAuthentication no
#把上面配置改成
重启 sshd 服务
# service sshd restart
5. 客户端使用
5.1 Android客户端
(版本5.00,更新日期 2017年9月27日)
下载地址:https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=zh
CLSN镜像地址 https://clsn.io/files/google/com.google.android.apps.authenticator.apk
6.2 浏览器客户端
获取30秒一次的动态码的客户端是浏览器(仅支持chrome、firefox)、Android设备、苹果IOS设备、Blackberry、WP手持设备。各自程序的下载地址为:
chrome google-authenticator插件
firefox google-authenticator插件
6.3 Python 客户端
import hmac, base64, struct, hashlib, time
def calGoogleCode(secretKey):
input = int(time.time())//30
key = base64.b32decode(secretKey)
msg = struct.pack(">Q", input)
googleCode = hmac.new(key, msg, hashlib.sha1).digest()
o = ord(googleCode[19]) & 15
googleCode = str((struct.unpack(">I", googleCode[o:o+4])[0] & 0x7fffffff) % 1000000)
if len(googleCode) == 5:
googleCode = "0" + googleCode
return googleCode
secretKey = "***这里填秘钥***"
print calGoogleCode(secretKey)
梦幻西游如果倒闭了,那些值钱的东西网易会赔偿给玩家吗?早啊!悟空大家好,我是博主,一位03年的内测玩家,17年梦幻骨灰玩家。点关注,不迷路首先看到这个问题,我个人的第一反应是震惊的,为什么?原因有以下几点1梦幻西游基本是不存在倒闭现象
东北菜虽不在八大菜系之列,却为何能名扬天下?我不是东北人,但喜欢吃东北菜,原因有三。第一,东北菜养人。东北菜朴实无华,用料实在,食材虽不稀奇,但都是实实在在的健康食材,白菜土豆萝卜,大肉大鱼大骨头,吃了几千年了,人的胃口已经
兰州八大碗指的是哪些菜?蒸酥肉需用蒸笼蒸到肉软。其特点是色泽红亮,咸鲜微辣。肉是肥而不腻,嫩而不糜,五香味浓郁。红烧肘子选用带皮去骨的猪肘子为主料,经过水煮,过油,蒸制而成,成品色泽红润明亮,造型优美大方
有人说一万元游戏本玩游戏不如六千元台式机好,是这样的么?这么说吧,除了便携性,笔记本在台式机面前都是弟中弟的存在。我就举例几个19年卖一万的笔记本和六千的台式机之间的差别把。惠普17。6寸的暗夜精灵,1060的显卡联想17。6寸神舟稍微
你对教师这一职业有何看法?正常职业。人人都有一份职业,职业没有高低贵贱之分。选择了一份职业就应爱岗敬业,努力把自己的工作干好。对国家,对社会,对家庭,奉献。对自己对良心负责。有一个曾做过教师的人说教师这工作
军官转业和自主择业,哪个更好?哨兵小虎第607条回答。转业和自主择业是军官退役的两种选择方式,也是大多数军官的最终归宿。首先,小虎向大家介绍下什么是转业和自主择业。1。转业(计划安置)。转业是军官从军队岗位退役
为什么说曹云金何伟出走是必然?先说结论是必然结果。当然我一直很反对何云伟曹云金出走才成就了岳云鹏这种说法,其实岳云鹏这种类型化演员,在德云社转型过程中是必要的,即使何云伟曹云金没有离开,岳云鹏也会被郭德纲推到第
WE的队长是腿哥957,那么LPL其他战队的队长是谁?解读游戏,品味生活,大家好,我是小良众所周知,LOL各个俱乐部战队都设有队长一职,队长的担任着必须具有宏观操控能力,对于全局比赛具有掌控能力,并且要有不错的应变能力。今天小良给大家
和平精英中新训练场里哪有信号枪?我是志强,一名游戏创作者。和平精英的训练场是没有信号枪的,只有实战游戏中有(不包括娱乐模式和团队竞技)给个采纳,谢谢啦!大家好,我是吸文儿经过我多次探寻,训练场内是没有信号枪刷新的
11年小牛夺冠为何被有些人称为21世纪最有含金量的冠军?导语201011赛季的NBA总决赛上达拉斯小牛队以大比分42战胜迈阿密热火队,获得总冠军,这也是小牛队史上的第一个总冠军,诺维斯基也凭借6场总决赛比赛场均26分9。7篮板2助攻的数
西安回民街为什么能成为旅游必去的地方?文化游,无论是从历史文化古迹文博等等方面去感受一个城市,自然也离不开当地美食文化。在西安市中心钟楼向西100多米穿过鼓楼门洞,有一条西安回民历史街区。区内有大小形态各异年代不一的1