SSH 비밀번호 인증이 보안 위험 인 이유는 무엇입니까?


68

OpenSSH 구성에 대한 대부분의 안내서는 키 기반 인증을 위해 암호 인증을 비활성화하는 것이 좋습니다. 그러나 필자의 의견으로는 암호 인증은 중요한 이점이 있습니다. 키없이 절대 어디에서나 연결할 수 있다는 것입니다. 항상 강력한 암호를 사용하면 보안 위험이 없어야합니다. 아니면해야합니까?


2
비밀번호는 스니핑, 추측 및 재생이 가능한 단일 인증입니다. 열쇠는 아마도 두 요소입니다. 일부 시스템에서는 한 가지 요소만으로 어디서나 로그인 할 수 없습니다.
Alex Holst

답변:


25

암호 또는 키 기반 인증에 대한 장단점이 있습니다.

예를 들어, 키 기반 인증은 암호 인증보다 안전합니다. 다른 경우에는 보안 기반이 덜 안전합니다. 어떤 경우에는 더 편리하고 다른 경우에는 덜 편리합니다.

키 기반 인증을 수행 할 때 암호로 키를 보호 해야합니다 . ssh-agent가 실행 중이 아니면 (ssh-agent가 매번 암호문을 입력하지 않아도 됨) 편의상 아무것도 얻지 못했습니다. 보안은 논란의 여지가 있습니다. 이제 공격 경로가 서버에서 귀하 또는 귀하의 계정 또는 개인 컴퓨터로 옮겨졌습니다. (...)-침입하기 쉬울 수도 있고 아닐 수도 있습니다.

이것을 결정할 때 상자 밖에서 생각하십시오. 보안 측면에서 얻었는지 느슨하게하는지 여부는 나머지 환경 및 기타 조치에 따라 다릅니다.

편집 : 아, 방금 당신이 홈 서버에 대해 이야기하는 것을 보았습니다. 나는 항상 "비밀번호"또는 "키가있는 USB 스틱"과 같은 상황에 있었습니까? 나는 전자로 갔지만 SSH 수신 포트를 22가 아닌 다른 포트로 변경했습니다. 그러면 모든 네트워크 범위를 강제하는 모든 불쾌한 스크립트 키디가 무차별 적으로 중지됩니다.


많은 경우 SSH 포트를 22에서 변경하는 것은 좋은 생각이 아닙니다. adayinthelifeof.nl/2012/03/12/…
Tymek

75

ssh 키를 사용하면 비밀번호 로그인에 비해 고유 한 기능이 하나 있습니다. 허용 된 명령을 지정할 수 있습니다. ~/.ssh/authorized_keys서버에서 파일을 수정하여 수행 할 수 있습니다 .

예를 들어

command="/usr/local/bin/your_backup_script.sh", ssh-rsa auiosfSAFfAFDFJL1234214DFAfDFa...

특정 키와 함께`/usr/local/bin/your_backup_script.sh '명령 만 허용합니다.

키에 허용되는 호스트를 지정할 수도 있습니다.

from="yourclient,yourotherclient", ssh-rsa auiosfSAFfAFDFJL1234214DFAfDFa...

또는 두 가지를 결합하십시오.

from="yourbackupserver", command="/usr/local/bin/your_backup_script.sh", ssh-rsa auiosfSAFfAFDFJL1234214DFAfDFa...

키를 사용하면 특정 계정의 암호를 공개하지 않고도 서버에 일부 사용자 (예 : 컨설턴트)에게 임시 액세스 권한을 부여 할 수도 있습니다. 컨설턴트가 작업을 마치면 임시 키를 제거 할 수 있습니다.


매우 유용한 팁.
Sachin Divekar

3
D : 또한 그 사용 키에 (물론 기술적으로는 더 강도) 수동으로 단말기에 입력 할 수 있습니다 무엇에 비해 긴 2,000 자의 암호를하는 것과 같다
Abhishek Dujari

3
SSH 인증에 관한 두 가지 유용한 팁이지만 실제로 나에게 질문에 대한 답변을 제공하지 않습니다 ...
MikeMurko

비밀번호 인증 된 사용자가 특정 명령을 수행하게하려면 로그인 쉘을 변경하십시오. 또한 "암호를 공개하지 않고 임시 액세스 권한을 부여하는 것"은 매우 나쁜 생각입니다. 나중에 액세스를 유지할 수있는 수백 가지 방법이 있습니다.
b0fh

마지막 단락에서만 IMO-키를 사용하면 세분화 취소가 가능하다는 질문에 답할 수 있으며 암호를 사용하면 모든 사람에게 변경 사실을 알려야합니다.
Riking

48

네트워크 내에서만 비밀번호 인증을 허용하여 두 가지 이점을 모두 누릴 수 있습니다. 끝에 다음을 추가하십시오 sshd_config.

PasswordAuthentication no
Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
    PasswordAuthentication yes

7

질문에 부분적으로 응답했습니다. 공격자가 연결할 수있는 곳이 많을수록 무차별 공격 (DDoS 고려)을 통해 서버에 침입 할 가능성이 높아집니다.

또한 비밀번호 길이와 키 크기 (보통 수천 비트)를 비교하십시오.


4
엔트로피 96 비트는 영어로 작성된 80 자 암호를 의미합니다. 인쇄 가능한 문자 집합에서 임의의 횡설수설 인 경우 15 자. ssh 암호가 길고 강하다는 것을 확신합니까?
MadHatter

3
사전 공격에 취약하지 않은 96 비트 엔트로피를 가진 여러 개의 암호가있는 경우 어쨌든 일종의 암호 관리 소프트웨어를 사용해야 할 수 있으므로 암호 사용의 모든 요소에 효과적으로 액세스 할 수 없게됩니다. .
Nick Downton

5
@SachinDivekar는 영어 단어가 아닌 [a-zA-Z] 집합에서 임의의 암호를 사용하는 경우에만 96 비트의 엔트로피입니다.
Jaap Eldering

16
@NickDownton-키 패스 소프트웨어를 사용하지 않고도 긴 암호를 사용할 수 있습니다. 같은 뭔가 mywifesnameisangelaandshehasanicebutt, 사전 공격에 invunlerable 매우 강력하고 기억하기 매우 간단하지만 추측하기 불가능하다. 그리고 브라우니가 아내에게 암호를 제공 해야하는 경우 보너스가 제공됩니다.
Mark Henderson

7
미안, 마크,하지만 그건 잘못이야 당신이 제공하는 암호문에는 37 개의 문자가 있으며, 대략 44 비트의 엔트로피가 있습니다. 자세한 내용은 Claude Shannon의 작업에 대한 Wikipedia의 기사를 읽으십시오. 그러나 "mywifesname"다음에 "is"라는 단어가 거의 보장된다는 것은 영어로 작성된 것을 예측할 수 있다는 것입니다. 단어가 포함 된 강력한 암호의 경우 , 사전에서 함께 묶인 4 개의 임의의 단어는 약 77 비트의 엔트로피 인 10 ** 23 가능성을 제공합니다. 여전히 크지는 않지만 나쁘지는 않습니다.
MadHatter

7

비밀번호로 로그인하면 비밀번호가 서버로 전송됩니다. 이는 서버 운영자가 SSHD를 수정하여 비밀번호에 액세스 할 수 있음을 의미합니다. 공개 키 인증을 사용하면 모든 공개 키만 서버로 이동하므로 개인 키를 얻을 수 없습니다.


2
오타로 인해 잘못된 서버에 연결할 때 특히 관련이 있습니다. 예를 들어, 어떤 시점에서 .cg는 ssh가 활성화 된 단일 시스템을 가리키는 와일드 카드였습니다. .ch에 대해 .cg를 잘못 입력하면 결국 해당 상자에 연결하여 암호를 유출하게됩니다.
b0fh

참으로 @ b0fh. 내가 알 수있는 한, 이것은 ssh와 함께 암호를 사용하여 발생하는 유일한 취약점입니다. 누군가 이미 연결중인 서버를 소유하고 있거나 연결중인 IP 주소를 스푸핑 할 수있는 경우 (MITM) 이미 손실 된 것입니다.
호브

6

ssh 키는 사용자의 암호에 대한 중간 공격을 방지합니다.

키로 로그인을 시도하면 서버는 공개 키를 기반으로 챌린지를 구성하여 클라이언트로 보냅니다. 암호를 해독하고 보낼 적절한 응답을 구성합니다.

개인 키는 서버로 전송되지 않으며 청취하는 사람은 단일 세션을 가로채는 것 외에는 아무것도 할 수 없습니다.

암호를 사용하면 자격 증명이 생깁니다.

내 솔루션은 USB 키의 암호화 된 파티션에 적합한 형식의 휴대용 ssh 키를 사용하는 것입니다.
키를 잃어 버렸을 때 키를 쉽게 넣을 수 있습니다 .
내가 액세스 할 수있는 서버를 제한
하고 여전히 가지고 다닐 수 있습니다

마운트 소프트웨어를 설치하는 데 어려움이 있지만 (truecrypt)


1
이것은 잘못이다. 서버의 공개 키 (캐시에 추가하고 첫 번째 연결에서 MITM을 얻지 못한 경우 수행)를 알게 되 자마자 MITM 공격에 영향을받지 않습니다. 키 / 암호 기반 인증은 이와 관련이 없습니다. 암호는 유선상으로 절대 명확하게 전송 되지 않으며 , 기계 수준 인증 (귀하의 / 내 공개 키)의 보안 연결은 항상 사용자 수준 인증 전에 설정됩니다 (비밀번호 /이 공개 키는 본인의 것임) .
Thomas

3
토마스, 실제로 많은 사람들이 지문 변경에 대한 경고를 무시합니다. Pubkey auth는 서버의 개인 키가 어떻게 든 훼손되거나 사람 유형이 "yes"인 경우에도 MITM 보호를 보장합니다. 공격자는 트래픽을 볼 수없고 로그인 할 수없는 공개 키를 보내도록 선택해야합니다. 승리.
Score_Under

5
응답자에게 : truecrypt를 사용할 필요가 없으며 openssh 개인 키에는 고유 한 암호 기반 암호화 옵션이 제공됩니다.
Score_Under

5

@MartinVejmelka가 말한 것처럼 그것은 절충입니다.

키 기반 인증을 사용하는 이유는 키가 현재 또는 미래의 무차별 강제력 보다 훨씬 높기 때문에 자신의 PC에서 가져 오거나 USB 스틱 또는 이와 유사한 키를 가져야하기 때문입니다.

비밀번호에는 다음과 같은 문제가 있습니다.

  • 짧으면 무차별적일 수 있습니다
  • 그것이 길면 쉽게 잊혀진다
  • 어깨 서핑을 할 수 있습니다

키는 수십배 더 길며 어떤 시점에도 표시되지 않으므로이 세 가지 문제를 피할 수 있습니다.


그러나 키 파일을 사용하면 펜 드라이브 또는 사용중인 저장 장치가 손실되는 문제가 추가됩니다.
João Portela

1
이때 손실 된 키를 제거하고 새 키를 추가 할 수 있습니다. 암호 (특히 공유 암호)를 사용하면 심각한 고통을 겪을 수 있으며 많은 신음 소리가납니다.
SplinterReality

(최근 은퇴 한) 비밀번호 중 하나 : 08Forging2?seminal*^Rajas-(Posed/|. 무작위로 생성되었지만 기억하는 데 아무런 문제가 없습니다. 그리고 행운을 빕니다.
finnw

1
@finnw 올바른 말 배터리 스테이플 :-) security.stackexchange.com/q/6095/485
Rory Alsop

2

여기에 이미 언급 된 좋은 점.

강력한 암호를 사용하여 기본 사항을 처리 한 경우 가장 큰 위험은 사용자가 모르게 키로거를 설치 한 컴퓨터가 많다는 것입니다. 트로이 목마가 포함 된 유용한 유틸리티의 전체 사이트를 작성하는 사람들도 있으므로 우리에게 최선을 다할 수 있습니다. 키로거는 예를 들어 로그인 정보를 해커에게 이메일로 보낸 다음 서버에 쉽게 액세스 할 수 있습니다.

나는 최근에 Norton에서 Minecraft jar에 비행을 추가하기 위해 Zombee Mod 설치 프로그램 (jar이 아닌 설치 프로그램이 아닌)을 다운로드하는 것에 대해 경고했습니다. 자세한 내용을보고 Norton은이 사이트에 트로이 목마가있는 것으로 표시된 많은 유틸리티를 나열했습니다. 이것이 올바른지 아닌지는 모르겠지만 파일 이름과 관련이 있습니다. 또한 트로이 목마가 배포되기 전에 (일부) warez에 들어가는 것은 알려진 사실입니다.


2

비밀번호에 비해 SSH의 잠재적 이점 중 하나는 SSH 비밀번호 문구를 지정하지 않으면 비밀번호를 다시 입력 할 필요가 없다는 것입니다. 컴퓨터는 키를 가지고 있기 때문에 서버에서 본질적으로 신뢰할 수 있습니다. 즉, 나는 항상 SSH 암호를 항상 사용하므로 이점을 배제합니다.

사용자 가이드가 SSH over 비밀번호 인증을 권장하는 이유에 대한 가장 좋은 대답은 SSHOpenSSHKeys의 Ubuntu 매뉴얼에서 나온 것입니다. 나는 인용한다.

중요하지 않다고 생각되면 다음 주에 발생할 수있는 모든 악의적 인 로그인 시도를 기록해보십시오. 완전히 평범한 데스크톱 PC 인 내 컴퓨터는 지난 주에만 4,000 번 이상 암호를 추측하고 거의 2,500 건의 침입 시도를했습니다. 공격자가 비밀번호를 우연히 발견하기까지 수천 건의 무작위 추측이 필요하다고 생각하십니까?

기본적으로 문장 부호, 대소 문자 및 숫자가 포함 된 견고하고 길이가 긴 비밀번호가있는 경우 비밀번호 인증을 사용하는 것이 좋습니다. 또한 로그를 모니터링 할 계획이고 네트워크를 통해 "슈퍼 보안"작업을 수행하지 않는 경우 (예 : 홈 서버에 사용). 그런 다음 비밀번호가 제대로 작동합니다.


1

Passwd 인증 방법은 실제로 안전하지 않습니다 (imho). 이 메커니즘을 사용하면 비밀번호가 sshd 서버로 전송됩니다 (@ramon이 이미 말했듯이). 이는 일부 개인이 sshd 서버를 수정하여 비밀번호를 검색 할 수 있음을 의미합니다. MITM (Man-In-The-Middle) 공격을 사용하면 로컬 네트워크에서 매우 쉽게 수행 할 수 있습니다.

이 패치 ( https://github.com/jtesta/ssh-mitm )를 설치하여 sshd 서버를 패치 할 수 있습니다 . 사용 arpspoofiptables클라이언트와 정통 SSHD 서버 사이에 패치 서버를 넣어.

비밀번호 인증을 비활성화하십시오 : 구성 파일을 열고 /etc/ssh/ssh_config행을 추가하십시오 PasswordAuthentication no.


SSH 클라이언트가 서버에 RSA 지문이 있는지 확인하지 않습니까? 이 특정 서버에 한 번 이상 썰매면 지문이 기억되므로 MITM 공격이 발생할 경우 SSH가 경고를 표시합니다.
Septagram

1
네. 경고가 나타나지만 OS 재설치로 인해 발생하는 시간의 99 %가 발생합니다. 구성 변경 ecc, 대부분의 사용자는 경고를 무시하고 계속 진행합니다.
Pioz

@Septagram 많은 쉘 계정 제공 업체들이 새로운 서버 등으로 사용자 계정의 마이그레이션, 신규 가입자에 대한 현재 서버 키 지문을 게시하는 습관 없습니다
데미안 Yerrick

-2

-o StrictHostKeyChecking=no옵션으로 with를 무시할 수 있습니다 . 쉘 스크립트에서 ssh를 사용할 때 매우 유용합니다.

ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o PasswordAuthentication=no -o ConnectionAttempts=5 xxUser@xxxHost
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.