우리는 20개의 Linux 시스템(RaspberryPI, NAS, 데스크톱 컴퓨터)으로 소규모 연구실을 운영하고 있으며 모두 sudo 권한이 필요한 4명의 과학자와 함께 연구를 진행하고 있습니다.
우리는 4명의 사용자가 모두 sudo 권한과 물리적 액세스 권한을 갖고 있기 때문에 신뢰합니다. 연구실 네트워크는 로컬 네트워크이므로 인터넷에서 액세스할 수 없습니다.
이제 자격 증명을 동기화하려고 합니다. 한 사용자가 비밀번호를 변경하는 경우 다른 19개 시스템에서 비밀번호를 수동으로 변경하면 안 됩니다.
LDAP와 같은 복잡한 솔루션은 피하고 싶습니다. 내 마음에 떠오른 첫 번째 아이디어는 NAS의 자격 증명을 단일 소스로 유지하고 scp를 통해 systemd 모듈의 클라이언트에 복사하는 것이었습니다.
하지만 나는 바퀴를 재발명하고 패키지/솔루션을 준비하고 있는데 잘못된 검색어를 시도하고 있는 것 같습니다.
이 시나리오에는 일반적으로 어떤 패키지 또는 솔루션이 사용됩니까?
답변1
이제 자격 증명을 동기화하려고 합니다. 한 사용자가 비밀번호를 변경하는 경우 다른 19개 시스템에서 비밀번호를 수동으로 변경하면 안 됩니다.
LDAP는 UID/GID 또는 홈 디렉토리와 같은 사용자 속성을 저장하는 데 사용됩니다.설마가장 먼저 할 일은 자격 증명을 저장하는 것입니다(물론 그렇게 할 수도 있습니다).
내 제안은 예를 들어 MIT의 krb5-kdc를 사용하여 Kerberos를 설정하는 것입니다.
- 데비안에 설치
krb5-user
,krb5-kdc
, .krb5-admin-server
- 도메인 이름 선택(최대실제 DNS 도메인 이름에 해당하지만 반드시 필요한 것은 아니지만 항상 대문자로 표시됩니다.
kdb5_util create -s
KDC 데이터베이스 초기화를 수행합니다 . (이렇게-s
하면 데이터베이스 옆의 파일에 마스터 키가 저장됩니다.)kadmin.local
항목 생성을 시작하려면 다음을 실행하세요 .- 사용자 계정 추가:
addprinc fred
- 서버 추가:
addprinc -nokey host/fredpc.example.com
- 호스트의 키탭을 추출합니다.
ktadd -k /tmp/fredpc.keytab host/fredpc.example.com
- (호스트의 경우 다음 부분은
host/
호스트 자체가 FQDN으로 간주하는 것, 즉hostname -f
해당 서버에 보고되는 내용과 일치해야 합니다.)
- 사용자 계정 추가:
- 시작
krb5-kdc.service
하고 서버의 방화벽이 인바운드 포트 88(TCP)을 허용하는지 확인하십시오.그리고UDP)(Kerberos 요청의 경우).
(Kerberos를 통해 UID 또는 로그인 셸을 정의하지 않는다는 점에 유의하십시오. 이는 일반 /etc/passwd에 남겨 둘 수 있으며 호스트 간에 동일할 필요는 없습니다. Kerberos는 계정 소스에 관계없이 인증에 사용될 수 있습니다.)
모든 서버에서:
krb5-user
데비안에 설치하세요libpam-krb5
.- 메시지가 표시되면 영역 이름과 KDC 호스트 이름을 입력합니다. (후자는 DNS SRV 레코드를 통해 구성하여 호스트당 단계를 줄일 수 있습니다. 두 옵션 모두 /etc/krb5.conf에 있으므로 여기에서 직접 배포할 수 있습니다
scp
.) - 호스트의 키 탭을
/etc/krb5.keytab
(모드 0600)에 복사합니다.
이건 좀 아닌데단순한, 그러나 (IMHO) 여전히 LDAP보다 간단합니다.
옵션:
PAM을 엉망으로 만들고 싶지 않다면 OpenSSH에는 실제로 Kerberos 인증 비밀번호에 대한 지원이 내장되어 있습니다. 이는
KerberosAuthentication
sshd_config의 옵션입니다. PAM 모듈(krb5.conf, krb5.keytab)과 요구 사항이 동일합니다. 그러나 PAM은 "passwd"를 통해 비밀번호 변경도 처리하므로 이를 사용하지 않는 경우 사용자에게 이를 실행하도록 가르쳐야 합니다kpasswd
.보너스로 Kerberos는 한 호스트에서 다른 호스트로 비밀번호 없는 SSH인 SSO를 제공합니다. 이것은 sshd_config 의 또 다른 옵션입니다
GSSAPIAuthentication
. pam_krb5를 통해 얻은 티켓이나 수동으로 얻은 티켓을 사용합니다kinit
. (GNOME과 Windows는 이를 자동으로 처리하여 SSH 키처럼 투명하게 만듭니다.)