authorized_keys의 중심 위치가 좋은 생각입니까?


29

다음 스택을 실행하도록 클라우드 서버를 구성하는 중입니다. Ruby, Passenger, Apache; 우분투 10.04 (루시 Lynx)에서.

에 내가 설정 RSA 키를 관리 할 서버를 쉽게하고자하는 과정에서 root, 그리고 www-data내가 할 수있는 ssh서버에. 내가 좋아하지 않는 것은 그 있었다 www-data.ssh디렉토리에 앉아 /var/www있는 아파치의 기본 디렉토리 설정입니다. 아파치가 제대로 구성되지 않으면 .ssh디렉토리가 노출 될 수 있습니다.

에서 ~/.ssh/authorized_keys를 변경 하여 파일을 중앙 위치로 이동하는 솔루션을 발견 AuthorizedKeysFile했습니다 /etc/ssh/sshd_config. 여기에는 두 가지 전문가가 있습니다. 키를위한 단일 위치이며 잘못된 아파치 구성에 대해 걱정할 필요가 없습니다. 내가 생각할 수있는 단 하나의 단점은 이제 모든 사용자가 서버에서 로그인 할 수 있다는 것입니다 (중앙 키 파일의 이중 칼).

이 구성에서 놓친 것이 있습니까? 과도하게 노출 authorized_keys되었습니까? 아니면 개별 파일 보다 더 나은 솔루션 입니까?

녹색 은 서버 관리에 올 때,하지만 나쁜 일을 나쁜 이름을 호출 할 수 완전히 준비가되어있다. :디


1
인터넷에서 공개 키가 노출 (읽기 전용)되는 것이 가장 큰 위험은 아닙니다 ... (공격자는 다른 곳에서 얻은 개인 키로 서버에 로그인 할 수 있는지 확인할 수 있지만, 그렇지 않을 수도 있습니다. 그냥 가져 와서 로그인 할 수는 없습니다 ...) (심각한 문제는 id_rsa파일이 ~/.ssh있고 그것을 읽을 수 있다면)
Gert van den Berg

답변:


51

모든 키 파일을 동일한 디렉토리에서 중앙 집중화 할 수 있으며 동일한 파일에서 혼합 할 수 없습니다.

다음 sshd_config과 같이 파일을 설정 하십시오.

AuthorizedKeysFile  /etc/ssh/authorized_keys/%u

서버에서 :

  • www-data 키는 /etc/ssh/authorized_keys/www-data
  • 루트 키는 /etc/ssh/authorized_keys/root

액세스 권한과 관련하여 다음 설정은 sshd에서 승인합니다.

/etc/ssh/authorized_keys가 소유 root:root및 755 키 파일을 소유하는 모드가 있습니다 root:root및 모드 (644)이있다.

다른 모드는 작동하지만 테스트하지는 않았습니다.


3
+1이지만 다른 비트는 설정하지 않았습니다. 필요하지 않도록 % u 파일의 소유권을 사용자에게 설정하십시오.
Aaron Copley

1
악의적 인 사용자가 다른 공개 키를 ~ / .ssh / authorized_keys에 추가하여 다른 사람에게 액세스 권한을 부여 할 수 있다는 문제에 대한 좋은 해결책입니다.
bbaassssiiee

방금 사용자의 승인 된 키 파일에 대한 모드 600이 작동하지 않음을 확인했습니다. 모드 644 여야합니다
Luis E.

@bbaassssiiee이 문제는 해결되지 않습니다. 액세스 권한을 부여하려는 사람과 개인 키를 공유 할 수 있습니다 (물론이 가능성은 완화 될 수 있지만 완화하기 위해이 답변은 절대로 0이 아닙니다)
DylanYoung

1
@DylanYoung 개인 키 공유는 가능합니다. 그러나 chattr을 사용하면 authorized_keys 파일에 대한 쓰기 권한을 취소하여 모든 파일에서 단일 행을 보호하여 독점적으로 배포 할 수 있습니다.
bbaassssiiee

15

일반적으로 나는 당신이 제안하는 것을하지 않을 것입니다. ~/.ssh/authorized_keys사용자를 위해 일하는 것과 같은 일반적인 가정 을 어 기고 이미 질문에서 언급 한 문제를 소개합니다. 구현하기 전에 눈부신 문제가 발생하면 솔루션이 이상적이지 않다는 것을 의미합니다.

보안 측면에서 나는 모든 사람이 서비스 계정을 공유하게하는 것이 끔찍한 생각 이라고 생각 합니다. 지금 당장은 여러분뿐입니다. 5 년 동안 관리자가 5 명인 경우 누가 무엇을 변경했는지 알고 감사 로그를 통해 누가 어떤 키를 사용했는지 알기 원할 것입니다.
사람들이 자신으로 로그인하여 sudo자신의 권한을 에스컬레이션하고 필요한 모든 것을 수행하는 데 사용하는 것이 좋습니다.


여전히 SSH 키를 중앙 집중화하려면 Puppet 또는 radmind 와 같은 배포 시스템을 조사 하여 authorized_keys파일을 적절한 ~user/.ssh/디렉토리 에 관리 / 배포 하거나 가정에서 자체 개발 한 솔루션을 해킹하는 것이 좋습니다.
여러 서버로 확장 할 때 이전 버전의 OpenSSH (또는 최신 버전의 OpenSSH 의 지시문 및 해당 스크립트)에 대한 LDAP 공개 키 패치 를 확인 하여 사용자를 중앙 집중화 할 수 있으며 배포 할 필요가 없습니다. 네트워크 전체에서 키를 사용할 수 있지만 실제로는 훨씬 나아질 것입니다.AuthorizedKeysCommand


1
공유 인수의 경우 +1 그 의미를 깨닫는 데 시간이 걸렸기 때문에 짧았습니다. ~ www-data / .ssh 디렉토리가 없어야하므로 웹 브라우저에 의한 보안 위험이 없습니다.
thiton

피드백 감사드립니다! 내가 당신을 올바르게 이해한다면 ssh 키를 통해 액세스 할 수 root없거나 www-data액세스 할 수 없어야 합니까?
Gavin Miller

1
~www-data/.ssh디렉토리 를 갖는 것은 끔찍한 일이 아니며 (적절한 권한이 있으면 큰 위험은 아닙니다) 사용 하려는 경우 웹 루트 를 사용 ~www-data/.ssh하지 않는 것이 좋습니다 ~www-data(웹 루트 를 이동하거나 www-data홈 디렉토리를 이동 ). 사용자의 차별화는 더 큰 논쟁 IMHO입니다. jsmith로그인을 볼 경우 John Smith라는 것을 알고 있습니다. www-data로그인 하면 내가 누구인지 찾기 위해 더 많은 것을 파야합니다.
voretaq7

www-data에 ssh 키가 필요한 이유는 Beanstalk (SCM 및 배포 도구)를 사용하여 SFTP를 통한 배포를 수행하기 때문입니다. 그런 다음 Beanstalk가 ftp를 수행하기 위해 별도의 계정을 만들어야합니까? 가장 좋은 해결책은 무엇입니까?
Gavin Miller

1
대부분의 시스템 AuthorizedKeysFile에서 /etc/ssh/sshd_config기본적으로는로 설정됩니다 %h/.ssh/authorized_keys. 다음 %h은 홈 디렉토리의 자리 표시 자입니다. 당신이 그것을 /some/folder/ssh_keys_by_user/%h/또는 로 설정하지 못하게하는 것 /root/ssh_keys/%u. 심지어 개별 사용자에게 파일에 대한 액세스 권한을 부여하고 파일 만 표준 위치에 링크하여 (와 ln -s /root/ssh_keys_by_user/username /home/username/.ssh/authorized_keys) 파일을 무시하고 앞서 언급 한 가정을 어 기지 않아도됩니다.
콘 - F-사용
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.