루트 비밀번호가 서로 다른 시스템이 60개 있습니다.
3개월마다 비밀번호를 변경해야 합니다.
현재 저는 60개의 시스템에 수동으로 로그인해야 하고 60개의 서로 다른 비밀번호를 생각해내야 합니다.
이를 수행하는 현명한 방법이 있습니까? Ansible을 사용하여 이런 종류의 작업을 수행할 수 있나요?
답변1
이를 수행하는 한 가지 방법은 다음과 같습니다.
호스트 이름과 일반 텍스트 루트 비밀번호가 포함된 텍스트 파일(*)을 만듭니다. 원하는 필드 구분 기호를 사용하세요. 탭도 괜찮습니다.
makepasswd
이상적으로는 또는 같은 프로그램을 사용하여pwgen
충분한 길이와 복잡성의 비밀번호를 생성하는 것입니다. IMO에서는 지금 당장 사용을 고려해야 할 최소값은 16자이며, 길수록 좋습니다.예를 들어 에 호스트 이름 목록(한 줄에 하나씩)이 있는 경우
hosts.txt
다음과 같이 사용하세요.#!/bin/bash rm -f passwords.txt while read -r host ; do printf "%s\t%s\n" "$host" "$(pwgen -r \''`$' -y -c -n 32 1)" >> passwords.txt done < hosts.txt
-r
(아래 표시된 작은 따옴표, 백틱 및 $를 암호에 사용하는 것을 방지하는 데 사용됩니다.ssh
아래 표시된 작은 따옴표로 묶인 문자열 내부 큰 따옴표 명령에서 이를 처리하는 것은 PITA가 되기 때문입니다.예제를 실행하세요:
$ ./generate-passwords.sh $ cat passwords.txt host1 >?Mg^un=-Ipd8ZkY^TUC,_Gf/PAs%=9t host2 XS4?oZ@[+U\,(XeYOBcp{E^Q;!]2]ex< host3 SfupD}=a\J;}TJqqX.r}Kj;ab>Z|\=S2
이 목록이 필요합니다. 그렇지 않으면 원격 컴퓨터에 있는 암호가 무엇인지 알 수 없기 때문입니다.
ssh
각 호스트로 이동하여chpasswd
비밀번호를 설정하는 데 사용합니다. 원격 시스템의 프로세스 목록에 비밀번호가 일반 텍스트로 표시되는 것을 방지하려면openssl passwd
및 사용 옵션을 사용하여chpasswd
로컬 시스템의 비밀번호를 미리 암호화하십시오-e
(이는 시스템의 유일한 사용자인 경우에만 "안전"합니다. .. 및 "보안"이라는 단어의 정의는 다소 제한적입니다. 이 예에서는 해시-6
옵션을 사용하고 있습니다SHA-512
.#!/bin/bash while IFS=$'\t' read -r host pass; do enc=$(printf "%s" "$pass" | openssl passwd -6 stdin) ssh "$host" "echo 'root:$enc' | chpasswd -e" done < passwords.txt
정말 간단하고 원시적입니다. 오류 검사가 없습니다. 아니면 녹음하세요. 그러나 pwgen
, , 및 openssl
와 같은 기존 도구를 사용하여 chpasswd
비밀번호를 자동으로 변경하는 방법에 대한 기본 아이디어를 보여줍니다 .
나는 대학에서 매 학기마다 유사한 스크립트를 사용하여 특정 컴퓨터(메인 네트워크에서 격리된)에 대한 셸 액세스가 필요한 특정 과정의 신입생을 위한 비밀번호를 생성했습니다. 목록은 인쇄되어 조각으로 잘려져 있으며, 각 사용자에게는 ID가 공개될 때 비밀번호가 제공됩니다. 이는 완벽하지는 않지만 모든 사람이 알고 있는 기본 "비밀번호"를 갖는 것보다 훨씬 낫습니다.
분명히 대부분의 경우 비밀번호를 전혀 사용하지 않고 인증된 SSH 키를 사용하여 원격 시스템에 로그인하게 될 것입니다. 하지만 루트 비밀번호는 콘솔에 로그인할 때(또는 BMC 또는 기타 사용 시 여전히 유용합니다.) 원격 로그인). - 시설관리)를 통해 긴급상황에 대처할 수 있습니다.
(*) 이 passwords.txt
파일은 일반 텍스트이므로 권한과 액세스 권한에 대해 매우 주의해야 합니다. 그러나 이는 주로 이 Q&A의 범위를 벗어납니다.
chmod 600
파일을 암호화하려면 다음 방법을 사용하는 것이 좋습니다.GPG- 필요할 때만 복호화하세요. 또한 git
어떤 이유로 특정 호스트에서 비밀번호 업데이트가 실패하는 경우(예: 당시 오프라인 상태) 이전 비밀번호 기록을 잃지 않도록 암호화된 버전이나 다른 개정 제어 시스템을 유지하는 것이 좋습니다. 노력하다)
또는 사용통과gpg
과 를 결합합니다 git
.