SSH 인증: SSH 키 또는 일회용 비밀번호

SSH 인증: SSH 키 또는 일회용 비밀번호

저는 Ubuntu 10.04 Linux 서버를 가지고 있으며 일반적으로 SSH 액세스를 위해 SSH 키 인증(집 컴퓨터에서)을 사용합니다. 그러나 비밀번호가 노출될 수 있는 잠재적으로 보안되지 않은 컴퓨터(예: 인터넷 카페, 도서관의 공용 컴퓨터 등)에서 원격으로 SSH를 연결해야 하는 경우가 있습니다. 이 경우 다음과 같은 일회용 비밀번호 시스템을 사용하고 싶습니다.OTPW아니면 스티브 깁슨의완벽한 종이 비밀번호.

내 서버를 어떻게 구성하나요?먼저 SSH 키를 확인한 후 OTPW 시스템을 사용하세요.인증을 위해? (두 명의 사용자를 만들어야 하나요?)

답변1

이 방법은 1가지 인증 방법을 확인하지는 않지만 안전하지 않거나 신뢰할 수 없는 컴퓨터에서 OTP를 사용하여 로그인하는 문제를 해결합니다.

여러 포트(공개 키 인증용 하나, OTP 인증용 하나)를 수신하도록 SSH 데몬을 구성하려면 sshd_config 파일에 다른 포트 번호를 추가하기만 하면 됩니다.

Port 22 # For key-based auth
Port 60000 # For OTP-based auth

2-FA는 Google의 2단계 인증 기술을 기반으로 합니다. 라이브러리 및 프로그램을 설치하려면 다음을 수행하십시오.

$ sudo apt-get install libpam-google-authenticator

또한, 스마트폰에 Google Authenticator 앱을 설치하세요. 설치 후 터미널에서 프로그램을 시작하십시오.

$ google-authenticator

그러면 바코드, 비밀, 스크래치 코드가 제공됩니다. 그들을 안전하게 지켜주세요! 휴대폰에 접근할 수 없거나 긴급하게 접근해야 하는 경우 이 코드가 유일한 접근 방법입니다. 이 백업 메커니즘의 중요성을 과소평가하지 마십시오. 이로 인해 장기적으로 문제가 발생할 수 있습니다. Google Authenticator를 사용하도록 PAM 모듈을 구성합니다.

$ sudo nano /etc/pam.d/sshd

비밀번호 로그인을 비활성화하려면 @include common-auth 줄 앞에 #을 추가하세요. 또한 파일 맨 아래에 다음을 추가합니다.

auth required pam_google_authenticator.so

OTP 인증을 활성화하려면:

$ sudo nano /etc/ssh/sshd_config

문구가 포함된 행을 찾아 ChallengeResponseAuthentication"no"에서 "yes"로 변경합니다.

설정 PermitRootLogin no하고 PasswordAuthentication no.

파일 끝에서 "match" 매개변수를 사용하여 해당 포트에서 컴퓨터에 액세스하는 데 사용해야 하는 인증 메커니즘을 결정합니다. 예:

Match LocalPort 22
    PasswordAuthentication no
    AuthenticationMethods publickey
    PubKeyAuthentication yes
Match LocalPort 60000
    AuthenticationMethods keyboard-interactive:pam

"keyboard-interactive:pam" 매개변수는 SSH 데몬이 PAM 모듈 데몬(아래 구성됨)으로 이동하고 거기에 지정된 대로 인증하도록 강제합니다 (따라서 라인을 해싱하여 PAM 모듈에서 비밀번호 로그인을 비활성화 /etc/pam.d/sshd해야 합니다 ). common-auth변경 사항을 적용하려면 SSH 데몬을 다시 시작하는 것을 잊지 마세요.

$ sudo /etc/init.d/sshd restart

그런 다음 신뢰할 수 없는 시스템에서는 SSH를 통해 포트 60000(또는 설정한 포트)에 연결하고 OTP를 사용하여 인증하세요.

답변2

편집: 내 질문에 답변해서 죄송합니다! (다른 두 답변은 훌륭하지만 질문에 완전히 대답하지는 않습니다. 하지만 여전히 매우 도움이 됩니다!)

이것OTPassword 플러그형 인증 모듈Linux용 PAM에서 Steve Gibson의 완벽한 종이 암호화 시스템을 구현합니다. 설치 후 PPP 인증을 받게 됩니다. 하지만 SSH 키 우회는 어떻습니까? 해당 웹사이트의 FAQ는 이 질문에 대한 답변입니다.

원격 시스템에 자주 로그인하는 신뢰할 수 있는 컴퓨터가 있는 경우 SSH 키를 사용하세요. 를 사용하여 생성하고 ssh-keygen새 ~/.ssh/id_rsa.pub를 원격 시스템의 ~/.ssh/authorized_keys에 복사합니다.SSH가 키를 사용하여 사용자를 인증할 때 PAM은 무시됩니다.

자동으로 편리하게!

편집하다:구글 OTP그리고이중 보안좋은 해결책인 것 같습니다. 일회용 종이 비밀번호를 제공하지 않고 대신 스마트폰을 사용하여 끊임없이 변화하는 비밀번호를 생성합니다.TOTP 키. (Duo Security는 여러 개의 일회용 비밀번호가 포함된 문자 메시지를 보내 멍청한 기계와도 작동합니다. 하지만 Duo Security는 로컬이 아니므로 해당 서버에 의존해야 합니다...)

답변3

대체 수단으로 OTP를 사용한 공개 키 인증(그게 바로 그 뜻이죠?):

  1. 비밀번호 대체를 통한 공개 키 인증은 OpenSSH의 기본 동작입니다.
  2. 비밀번호를 확인하는 방법은 PAM 구성 파일에 가장 잘 정의되어 있습니다.

답변4

이는 간단할 수 있지만 피해야 할 몇 가지 함정이 있습니다.

대부분의 구성 변경은 일반적으로 /etc/ssh/sshd_config에 있는 sshd_config 파일에서 수행되어야 합니다.

이미 공유 키를 실행했으므로 여기서는 건너뛰겠습니다.

주목하고 싶은 라인은 다음과 같습니다.

PasswordAuthentication yes

알아야 할 사항은 로그인할 수 있는 사람과 방법이 제한되어 있다는 것입니다. 가능한 가장 작은 사용자 그룹에 대한 액세스를 제한하려면 다음 사항이 모두 마련되어 있어야 합니다.

PermitEmptyPasswords no
AllowUsers [email protected].*
AllowGroups sshusers

여기에서 설정할 수 있는 다양한 옵션이 있습니다.매뉴얼 페이지사용 가능한 전체 옵션에 대해 알아보세요.

SSH 권한만을 위한 그룹을 설정하는 것이 좋습니다.

아래 로고 역시강하게추천하다:

PermitRootLogin no

키가 전송/재검증되지 않으면 데몬이 비밀번호를 요청하게 됩니다. 원하는 경우 OTPW 장벽을 추가할 수 있지만 이론적으로는 암호화된 환경이므로 꼭 필요한 것은 아닙니다. OTPW 정보를 살펴보니 연결하신 코드에 다음과 같은 내용이 있는 것 같습니다.2003년에 마지막 업데이트됨동료 검토를 거치지 않았다면 사용하기를 꺼렸을 것입니다. 그 이후로 보안 코딩 관행과 환경 전체가 많이 바뀌었습니다.

관련 정보