mr_*_*omo 9 security password ssh authentication pam
我有一个 Ubuntu 10.04 Linux 服务器,我通常使用 ssh 密钥身份验证通过 ssh 进入(从我的家用机器)。但是,有时我需要从可能不安全的机器(如网吧、图书馆的公共计算机等)远程 ssh,在这些机器上我的密码可能会被泄露。在这种情况下,我想使用一次性密码系统,如OTPW或 Steve Gibson 的Perfect Paper Passwords。
如何配置我的服务器以首先检查 ssh 密钥,然后使用 OTPW 系统进行身份验证?(我是否必须创建两个用户?)
小智 5
尽管此方法不检查 1 种身份验证方法,但它确实解决了使用 OTP 从不安全/不可信机器登录的问题。
要将 SSH 守护进程配置为侦听多个端口(一个用于公钥身份验证,另一个用于 OTP 身份验证),只需在 sshd_config 文件中添加另一个端口号,即
Port 22 # For key-based auth
Port 60000 # For OTP-based auth
Run Code Online (Sandbox Code Playgroud)
2-FA 基于 Google 的两步验证技术。要安装库和程序:
$ sudo apt-get install libpam-google-authenticator
Run Code Online (Sandbox Code Playgroud)
同时,在您的智能手机上安装 Google Authenticator 应用程序。安装后,从终端启动程序:
$ google-authenticator
Run Code Online (Sandbox Code Playgroud)
这会给你一个条形码、一个秘密和一堆划痕代码。保证他们的安全!!!如果您无法使用手机或需要紧急访问,这些代码将是您进入的唯一途径。不要低估此备份机制的重要性。从长远来看,它可能会让你失望。配置 PAM 模块以使用 Google Authenticator:
$ sudo nano /etc/pam.d/sshd
Run Code Online (Sandbox Code Playgroud)
要禁用密码登录之后,请在@include common-auth 行前面加上#。另外,在文件底部,添加:
auth required pam_google_authenticator.so
Run Code Online (Sandbox Code Playgroud)
要启用 OTP 身份验证:
$ sudo nano /etc/ssh/sshd_config
Run Code Online (Sandbox Code Playgroud)
找到带有短语的行:ChallengeResponseAuthentication
并将其从“否”更改为“是”。
设置PermitRootLogin no
和PasswordAuthentication no
。
在文件末尾,使用“match”参数来确定必须使用哪种身份验证机制才能从该端口访问机器,例如:
Match LocalPort 22
PasswordAuthentication no
AuthenticationMethods publickey
PubKeyAuthentication yes
?
Match LocalPort 60000
AuthenticationMethods keyboard-interactive:pam
Run Code Online (Sandbox Code Playgroud)
参数“keyboard-interactive:pam”强制 SSH 守护进程进入 PAM 模块守护进程(在 下配置/etc/pam.d/sshd
)并按照那里指定的方式进行身份验证(因此需要禁用 PAM 模块的密码登录,通过散列common-auth
行) . 不要忘记重新启动 SSH 守护程序以使更改生效:
$ sudo /etc/init.d/sshd restart
Run Code Online (Sandbox Code Playgroud)
然后,当在不受信任的机器上时,只需通过 SSH 连接到端口 60000(或您设置的任何端口)并使用 OTP 进行身份验证。
编辑:很抱歉回答我自己的问题!(另外两个答案很好,但没有完全回答问题。但仍然非常有帮助!)
OTPassword可插入身份验证模块在 Linux 的 PAM 中实现了 Steve Gibson 的完美纸质密码系统。安装后,您将获得 PPP 身份验证。但是 ssh 密钥绕过又如何呢?他们网站上的常见问题解答回答了这个问题:
如果您有一台经常登录远程系统的受信任计算机,请使用 ssh 密钥。使用 生成它们
ssh-keygen
,并将新的 ~/.ssh/id_rsa.pub 复制到远程计算机上的 ~/.ssh/authorized_keys 中。当 SSH 使用密钥对用户进行身份验证时,它会忽略 PAM。
自动方便!
编辑:Google Authenticator和Duo Security似乎也是不错的解决方案。他们不提供一次性纸质密码;相反,他们使用您的智能手机生成不断变化的TOTP 密钥。(Duo Security 还可以通过向哑机发送一条带有几个一次性密码的短信来与哑机配合使用。但是 Duo Security 不是本地的;您必须依赖他们的服务器...)
归档时间: |
|
查看次数: |
9229 次 |
最近记录: |