使用 Duo Secrity 二部验证保护你的 SSH 安全

Duo 可以轻松地使用在 Unix 系统中,以保护你的 SSH 或者本地连接。它已经在 Linux 系统 ( RedHat, Fedora, CentOS, Debian, Ubuntu, Gentoo, Amazon Linux)、BSD 系统 (FreeBSD, NetBSD, OpenBSD, MacOS X ) 、Solaris、HP-UX 以及 AIX 系统中经过测试。

Duo Unix - Two-Factor Authentication for SSH

工作原理

准备工作

首先,你需要一个 Duo Security 的帐号。https://signup.duosecurity.com/

注册后登入后台,部分的界面可以参照我的上一篇文章:Duo Security - 一款好用的双因素身份验证产品

选择左侧的 Applications 标签,然后选择 Protect an Application

然后,定位到 UNIX Application ,点击 Protect this Application

然后,记好我们的 Integration Key 、 Secret Key 以及 API hostname

配置

配置 login_duo

为了运行 login_suo ,我们必须先安装我们的运行环境。OpenSSL、libpam、zlib都是我们的运行所需要的。

下面仅仅列出常见的系统

Debian, Ubuntu

apt-get install libssl-dev libpam-dev

Red Hat, Fedora, CentOS, Amazon Linux

yum install openssl-devel pam-devel

当上面的依赖安装完成后,我们就可以进行 duo_unix 的编译安装了。

$ wget https://dl.duosecurity.com/duo_unix-latest.tar.gz
$ tar zxf duo_unix-latest.tar.gz
$ cd duo_unix-1.9.15
$ ./configure --prefix=/usr && make && sudo make install

如果你不想自己去编译安装的话,也可以添加官方的源然后从源进行安装。

Red Hat Enterprise Linux 经 6.4 32/64-bit and 7.0 64-bit 测试

保存下面的内容为 /etc/yum.repos.d/duosecurity.repo

[duosecurity]
name=Duo Security Repository
baseurl=http://pkg.duosecurity.com/RedHat/$releasever/$basearch
enabled=1
gpgcheck=1

然后运行以下的命令安装 duo_unix

# rpm --import https://www.duosecurity.com/RPM-GPG-KEY-DUO
# yum install duo_unix

CentOS 经5.9 32/64-bit and 6.4 32/64-bit 测试

保存下面的内容为 /etc/yum.repos.d/duosecurity.repo

[duosecurity]
name=Duo Security Repository
baseurl=http://pkg.duosecurity.com/CentOS/$releasever/$basearch
enabled=1
gpgcheck=1

然后运行以下的命令安装 duo_unix

# rpm --import https://www.duosecurity.com/RPM-GPG-KEY-DUO
# yum install duo_unix

Debian 经7.1 32/64-bit 测试

保存下面的内容为 /etc/apt/sources.list.d/duosecurity.list

deb http://pkg.duosecurity.com/Debian wheezy main

然后运行以下的命令安装 duo_unix

# curl -s https://www.duosecurity.com/APT-GPG-KEY-DUO | sudo apt-key add -
# apt-get update && apt-get install duo-unix

Ubuntu 经12.04.3 32/64-bit and 14.04 32/64-bit 测试

保存下面的内容为 /etc/apt/sources.list.d/duosecurity.list

deb http://pkg.duosecurity.com/Ubuntu precise main

或者

deb http://pkg.duosecurity.com/Ubuntu trusty main

然后运行以下的命令安装 duo_unix

# curl -s https://www.duosecurity.com/APT-GPG-KEY-DUO | sudo apt-key add -
# apt-get update && apt-get install duo-unix

当 duo_unix 安装完成后,我们需要修改 login_duo.conf 文件,一般来说,这个文件会在 /etc/duo 或者 /etc/security 。把我们刚刚拿到的 integration key, secret key, API hostname 添加进去

[duo]
; Duo integration key
ikey = INTEGRATION_KEY
; Duo secret key
skey = SECRET_KEY
; Duo API hostname
host = API_HOSTNAME

测试 login_duo

手动运行下面的命令即可手动测试 login_duo

$ /usr/sbin/login_duo

在另外一些操作系统中,也有可能是需要运行下面的命令

$ /usr/local/sbin/login_duo

如果设置正确的话,会出现一个地址来让你绑定你的帐号,这里由于我已经绑定过了所以没有截图,只能用官方的截图。

访问上面这个让你去 enroll 的地址,验证你的手机,进行绑定,然后就完成了操作了。

运行下面的命令,进行测试的验证,如果你看到 SUCCESS! 字样的话,说明你的绑定已经完成了。

$ /usr/sbin/login_duo echo 'SUCCESS!'

启用 login_duo

通过上面的操作,我们已经绑定了 duo_unix 的绑定以及测试工作了,下面就可以正式的进行启用了。

修改 /etc/ssh/sshd_config 文件,加入下面这一行

ForceCommand /usr/sbin/login_duo

Duo 强烈建议你禁止 SSH 代理,加入以下的行即可实现。

PermitTunnel no
AllowTcpForwarding no

你也可以限制进行二部验证的用户,用过 UID 等等的方式。

group = wheel

最后,重启 SSH 服务即可完成!

完成

当你完成上面操作的时候,断开当前的 SSH 连接,然后重新连接,具体效果应该和我的差不多了。