我有一个在家里托管的个人服务器,该服务器的 22 端口向外界开放,用于 SSH。不管怎样,我都会以 root 身份登录。我知道这会带来多大的安全风险,当有人开始尝试通过 root 身份暴力破解我的服务器时,我就开始感受到了这一点。我决定启用 google auth,而不是关闭端口并使用 openvpn 或远程桌面访问我的网络。为了双重安全,我进行了如下配置:
/etc/pam.d/sshd:
\# Standard Un\*x authentication.
\#@include common-auth
@include google-auth
/etc/pam.d/sshd/google-auth:
auth required pam_google_authenticator.so forward_pass
auth [success=1 default=ignore] pam_unix.so use_first_pass
auth requisite pam_deny.so
auth required pam_permit.so
auth optional pam_cap.so
我这样做是为了可以不编辑默认文件的情况下进行尝试,并随时轻松恢复。它还允许我稍微调整一下 PAM 模块顺序。
目标是让它同时请求“密码和验证”。它起作用了!有点。
login as: root
Using keyboard-interactive authentication.
Password & verification code:
Access denied
Using keyboard-interactive authentication.
Password & verification code:
Access denied
Using keyboard-interactive authentication.
Password & verification code:
Access denied
[email protected]'s password:
Access denied
[email protected]'s password:
因此,如果密码和验证尝试失败 3 次,它就会直接要求输入密码。输入密码本身或密码和验证都不起作用。它总是以失败告终,这是好事。坏事是,如果有人强行破解它,有时它甚至会在第一次登录尝试时只要求输入密码。这会将我从服务器锁定!
此时,这更多的是一种好奇。我总是可以关闭端口并解决问题,但我真的很想解决这个难题。有什么想法吗?