SSH : 이중 인증


30

현재 Samba 및 기타 몇 가지 서비스와 함께 OpenSSH를 실행하는 Ubuntu Server 12.04가 있습니다. 현재 공개 키 인증을 설정했으며 2 단계 인증을 설정할 수 있는지 궁금합니다. 현재 Gmail 계정에서 사용하는 Google OTP를보고있었습니다.

호환되는 것처럼 보이는 PAM 모듈을 찾았지만 암호와 코드를 생성해야합니다.

SSH 서버에 인증하기 위해 공개 키와 함께 Google OTP 응용 프로그램 (또는 이와 유사한 것)을 사용하는 방법이 있는지 궁금합니다.


대부분의 의견은 OpenSSH에서 PAM 및 공개 키 인증을 사용할 수 없다고 언급 한 버그 보고서 인 것 같습니다. 또한 키와 함께 암호 문구를 사용하므로 중복되는 부분을 발견했습니다. 모든 솔루션에서 Google OTP와 공개 키가 아닌 비밀번호 만 허용하는 것 같습니다. 나는 그것을 완전히 놓칠 수는 있지만 둘 다 구현하는 방법을 보지 못합니다.
콘크리트 당나귀

이 -1을 가지고 왜 확실하지, 이것은 매우 흥미로운 질문은 내가 너무 (I 가능성이있어 것을 사용하는, 그러나 그럼에도 불구하고, 좋은 지식 은행에 은닉하지 않는) 답을 알고 싶습니다
마크 헨더슨

@Pierre 공개 키 인증과 Google OTP 가 모두 필요한 가요?
mgorven

@mgorven 예, 공개 키와 Google OTP를 모두 설정하려고했습니다. 일부 사람들은 키 수에 암호를 두는 것으로 충분하다고 말했지만 암호화되지 않은 키를 메모리에서 훔치는 멀웨어에 대해 걱정하고 있습니다. 인증에 사용되는 두 개의 완전히 분리 된 장치를 원하지만 약간 편집증 적입니다.
콘크리트 당나귀

이것은 공식적으로 6.2에서 구현 될 것입니다 : bugzilla.mindrot.org/show_bug.cgi?id=983#c59
토비아스 Kienzler을

답변:


8

Red Hat은 여러 인증 메커니즘을 요구하기 위해 RHEL (및 CentOS) 6.3의 OpenSSH에 패치를 추가하여 다음과 같은 작업을 수행 할 수 있습니다.

RequiredAuthentications2 publickey,keyboard-interactive

자세한 내용은 릴리스 노트 를 참조하십시오 .

불행히도이 기능은 OpenSSH 업스트림이나 우분투 12.04에없는 것 같습니다. 패치를 찾고 OpenSSH를 다시 ​​컴파일하지 않으면 운이 나빠질 것 같습니다.


답변을 찾기 위해 노력한 것에 감사드립니다. 확실히 Google 검색 결과 몇 페이지를 살펴 보려고했지만 비밀번호와 OTP 만 사용해야한다는 것을 암시했습니다. 이 기능을 사용하기 위해 CentOS VM을 만들 것입니다.
콘크리트 당나귀

@Pierre 없음 것을 많은 노력, 내가 ;-) 전에이 기능에 대해 알고
mgorven

해당 버그추가 메모를 찾았습니다 . 버그는 패치를 첨부 파일로 포함합니다.
Robie Basak

그리고 여기 업스트림 openssh 버그가 있습니다. openssh에서 비슷한 기능이 곧 업스트림 될 것 같습니다.
Robie Basak

openssh 6.2는 Ubuntu의 개발 릴리스에 상주하므로 예상되는 13.10 릴리스에서이 지원이 발생할 수있는 모든 재해를 절약하십시오. 업스트림 AuthenticationMethods을 사용하여 여러 가지 필요한 방법을 지정하므로 PAM이 Google OTP를 수행하면서 ssh 키와 PAM을 모두 요구할 수 있습니다.
Robie Basak

8

당신은 듀오 보안을 찾고 있습니다


1
이. 예. 나는 이것을 좋아한다!
LVLAaron

확실하게 -Duo 는 Unix / Linux (답변 링크), OpenVPN ( duosecurity.com/docs/openvpn_as ) 또는 OATH TOTP 기반 2 단계 서비스 또는 LastPass 비밀번호 관리를 위해 쉽게 설정할 수 있습니다. TOTP를 사용하는 Google OTP와 호환되는 모든 서비스는 Duo의 모바일 앱 또는 TOTP를 지원하는 하드웨어 토큰과 함께 사용할 수 있습니다.
RichVel

5

Google OTP 모듈과 공개 키를 모두 사용할 수 있지만 주어진 인증에는 한 번에 하나만 사용됩니다. 즉, 사용자가 승인 된 공개 키로 로그인하면 토큰이 필요하지 않습니다.

또는 달리 말하면 토큰은 SSH 키가 아닌 비밀번호 인증에만 필요합니다.

이 제한은 Google OTP 모듈에서 오는 것이 아니라 SSH에서 ChallengeResponseAuthenticationPAM에 대해 2 단계 인증 (을 통해 ) 만 구현 하지만 유효한 공개 키가 제공 될 때 PAM을 호출하지 않는 SSH에서 온 것 입니다.


이것은 정확하지만 이제 변경되었습니다. openssh 6.2는 AuthenticationMethods이것을 뒤집을 수 있는 구성 매개 변수를 추가합니다 . 이제 둘 다 필요합니다.
Robie Basak

3

이 질문은 2012 년에 한 것입니다. 이후 SSH가 변경되었고 SSH2 프로토콜이 구현되었습니다.

최신 SSH 버전 (> = 6.2)에서 man sshd_config는 다음을 언급합니다.

AuthenticationMethods
       Specifies the authentication methods that must be successfully completed for a user to be
       granted access.  This option must be followed by one or more comma-separated lists of
       authentication method names.  Successful authentication requires completion of every method
       in at least one of these lists.

       For example, an argument of ``publickey,password publickey,keyboard-interactive'' would
       require the user to complete public key authentication, followed by either password or key-
       board interactive authentication.  Only methods that are next in one or more lists are
       offered at each stage, so for this example, it would not be possible to attempt password or
       keyboard-interactive authentication before public key.

       This option is only available for SSH protocol 2 and will yield a fatal error if enabled if
       protocol 1 is also enabled.  Note that each authentication method listed should also be
       explicitly enabled in the configuration.  The default is not to require multiple authentica-
       tion; successful completion of a single authentication method is sufficient.

이 페이지 ( http://lwn.net/Articles/544640/) 는 공개 키와 PAM 인증을 동시에 사용할 가능성에 대해서도 언급하고 있습니다.


2

나는이 질문이 조금 오래되었다는 것을 알고 있지만 해결책을 찾고있는 미래의 사람들 (나 자신을 포함하여)을 위해 sshd_config 파일에서 ForceCommand 옵션을 사용하여 스크립트를 실행 한 다음 인증을 수행하는 것에 대해 이야기합니다. 예를 들어 스크립트있어 여기가 그 예에 그는 sshd_config에의 ForceCommand로 시스템 전체를 만드는 대신의 authorized_keys 파일에서 호출하지만, 당신이 당신의 요구에 조금 수정할 수 있습니다.


1

YubiKey를 받고이 가이드를 따르십시오 http://berrange.com/posts/2011/12/18/multi-factor-ssh-authentication-using-yubikey-and-ssh-public-keys-together/

AFAIK, 이것은 SSH 액세스를 위해 서버에서 Yubikey를 구현하는 가장 좋은 방법입니다. 위 가이드를 사용하면 공개 키 + yubikey를 사용할 수 있지만 공식 가이드 ( http://code.google.com/p/yubico-pam/wiki/YubikeyAndSSHViaPAM )를 작동하지 않습니다. 키.

감사합니다, VIP


0

개인 키에 암호를 설정하면 이중 인증이 이미있는 것입니다. 사람들을 로그인하려면 다음이 필요합니다.

  1. 당신이 가진 것-개인 키
  2. 당신이 알고있는 것-개인 키의 암호

3
두 개의 비밀번호는 이중 인증을 수행하지 않습니다 . 키 자체는 유효한 "무엇인가"가 아니며, 정보가 아니기 때문입니다. 인증 요소로 사용하려면 복사 할 수 없거나 최소한 복사 할 수 없어야합니다.
MadHatter는 Monica

2
전적으로 동의하지 않습니다. 키와 인증서가 "있는 것"이 ​​아닌 경우 무엇입니까? 그것들은 확실히 "알고있는 것"(SSH 키를 배우는 습관이 있습니까?)이 아니며 절대적으로 "당신이있는 것"이 ​​아닙니다. 그것들은 유일하게 세 가지 선택이므로, 제거 과정에서 가장 확실하게 "당신이 가진 것"입니다.
Bart B

1
동의한다; 나를 위해, 문제는 최대입니다 (당신이 알고있는 것). 이중 인증의 아이디어는 서로 다른 속성을 가진 두 클래스의 구성원을 요구하는 것입니다. 당신이 알고있는 것은 운반하기 쉽지만, 당신이 알고있는 것과 동시에 다른 사람에 의해 알려질 수 있습니다. 두 번째로 다른 요소를 추가합니다. "당신이 가진 것"은 복사 할 수 없거나 복사하기 어려운 경우에만 다릅니다. 그렇지 않으면, 그것은 당신이 알고있는 것이 아니지만, 당신이 알고있는 것과 질적으로 다르지 않습니다. 다른 사람이 당신과 동시에 그것을 가질 수 있기 때문입니다.
MadHatter는 Monica

2
암호로 보호 된 키 쌍이 일반 사용자 이름과 암호에 비해 보안이 크게 향상되었다는 데 동의합니다. 슬프게도, 그러한 쌍이 2 요소로 간주된다는 것에 동의하지 않으며, 우리는 아마도 그것에 동의하지 않을 것입니다.
MadHatter는 Monica

3
암호로 암호화 된 개인 키가있는 경우 클라이언트가 개인 키를 알고 있다는 것을 서버에 한 가지만 증명하면됩니다. 암호 문구를 서버에 알리는 것은 아닙니다. 서버는 암호 문구의 존재조차 알지 못합니다. 따라서 "고객이 알고 있기 때문에" "알고있는 것"일뿐입니다. 침입자가 단 한 가지 (개인 키) 만 보유하면 타협됩니다. 그것은 한 가지 요소입니다. 암호와 개인 키는 두 가지 요소로 계산된다는 주장은 단지 궤변의 연습 일뿐입니다. 중요한 것은 전선에서 일어나는 일입니다.
Robie Basak
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.