태그 보관물: two-factor

two-factor

yubikey가 포함 된 SSH 2 단계 인증 (2FA) 합니까? (ubuntu 14.04 – trusty) /etc/pam.d/common-auth: auth

그래서 나는이 매끄러운 작은 yubikey를 얻었고 ssh 세션을 인증 할 때 추가 보안 계층을 추가하고 싶습니다. 서버 측에서 이미 비밀번호 인증을 비활성화했으며 로그인 할 때 ssh 키 사용 만 허용합니다.

문제는 yubikey 인증을 위해 sshd 및 PAM을 구성한 후에도 sshd에는 여전히 ssh 키만 필요하다는 것입니다.

ssh 키 yubikey 가 모두 필요 합니까?

(ubuntu 14.04 - trusty)

/etc/pam.d/common-auth:

auth    required    pam_yubico.so mode=client try_first_pass id=<id> key=<secret>
auth    [success=1 default=ignore]  pam_unix.so nullok_secure try_first_pass
# here's the fallback if no module succeeds
auth    requisite           pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required            pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth    optional            pam_cap.so
# end of pam-auth-update config

/etc/ssh/sshd_config:

...

PasswordAuthentication no
ChallengeResponseAuthentication yes
UsePAM yes



답변

좋아, 나는 그것을 유지했고 나는 합리적인 해결책을 생각해 냈다고 생각한다. 내가 이전에 놓친 주요한 것은 sshd ‘s AuthenticationMethods publickey,password입니다. 이로 인해 공개 키 암호 ( “암호”)가 요구됩니다 PAM->auth-yubi. 추가 변경도 필요했습니다 (아래 참조).

(우분투 14.04-신뢰할 수있는) :

/etc/pam.d/yubi-auth

auth    required pam_yubico.so mode=client try_first_pass id=<id> key=<key>

참고 : 여기에서 액세스 ID와 비밀 키를 얻을 수 있습니다

/etc/pam.d/sshd

# Standard Un*x authentication.
#@include common-auth

# Yubikey auth
@include yubi-auth

/ etc / ssh / sshd_config

UsePAM yes
ChallengeResponseAuthentication no
AuthenticationMethods publickey,password
PasswordAuthentication yes

service ssh restart

확인

공개 키가 없는 원격 호스트의 SSH

root@0a6442bcb21c:/# ssh ben@192.168.1.20
The authenticity of host '192.168.1.20 (192.168.1.20)' can't be established.
ECDSA key fingerprint is ea:2a:e3:98:35:72:66:b1:e0:65:6b:3f:60:8a:af:ab.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.20' (ECDSA) to the list of known hosts.
Permission denied (publickey).

원격 호스트에서 SSH 공개 키

$ ssh ben@192.168.1.20
Authenticated with partial success.
ben@192.168.1.20's password:
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.19.0-33-generic x86_64)

개량

인증시 원격 ssh 서버에서 “password :”대신 “Yubikey Auth :”가 표시되는 것이 좋습니다.

ssh 서버가 yubico의 인증 확인 시스템에 접속할 수없는 경우 어떻게됩니까? 이상적인 솔루션은 완전히 독립적입니다.

의견과 제안에 감사드립니다.


답변

Yubikey로 2FA를 설정하는 것은 까다로울 수 있지만 ( U2F 용 openssh 패치 가 있다고 생각 ) 가장 쉬운 방법은 Yubico 공식 웹 사이트 에 설명 된 방법 일 것입니다 .

기본적으로 Yubikey에 개인 키를 저장하고 PIN으로 보호하는 방법입니다. 그것은 당신이 묘사 한 2FA가 아니지만 (그러나 당신 이 가지고 있고 알고있는 것입니다 ) 보안을 훨씬 향상시킵니다 (실패 시도 후 유비 키 잠금).

TL : DR;

OPENSC_LIBS=`locate opensc-pkcs11.so`
yubico-piv-tool -s 9a -a generate -o public.pem
yubico-piv-tool -a verify-pin -P 123456 -a selfsign-certificate -s 9a \
  -S "/CN=SSH key/" -i public.pem -o cert.pem
yubico-piv-tool -a import-certificate -s 9a -i cert.pem
ssh-keygen -D $OPENSC_LIBS/opensc-pkcs11.so -e
ssh -I $OPENSC_LIBS/opensc-pkcs11.so user@remote.example.com


답변