
AWS(HAProxy/Solr, PGPool/PostgreSQL)에서 실행되는 두 개의 클러스터가 있고 IP를 S3에 있는 구성 파일로 업데이트하여 새 슬레이브 인스턴스가 클러스터에 자동 포함될 수 있도록 스크립트를 설정했습니다. 그런 다음 마스터 인스턴스에 SSH를 연결하여 수정된 구성을 다운로드하고 서비스를 다시 시작합니다. 모두 잘 작동하지만 테스트에서는 SSH용 마스터 Pem을 사용하고 있습니다. 이는 인스턴스에 저장해야 함을 의미합니다. 안좋다.
다운로드 구성 및 재시작 스크립트를 실행하기 위해 sudo 액세스 권한을 갖고 AWS 키 쌍을 사용할 수 있는 루트가 아닌 사용자를 원하지만 그 외에는 아무 것도 없습니다. rbash가 좋은 방법인 것 같지만 올바르게 설정하지 않으면 안전하지 않을 수 있다는 것을 이해합니다.
따라서 이 접근 방식에는 어떤 보안 허점이 있습니까?
- user.pem에 대해 생성된 새로운 AWS 키 쌍(실제로는 'user'라고 부르지 않음)
- 인스턴스의 새 사용자: 사용자
- 사용자의 공개 키는 ~user/.ssh/authorized_keys에 있습니다(user.pem으로 새 인스턴스를 생성하고 /root/.ssh/authorized_keys에서 복사하여 가져옴).
- 사용자의 개인 키는 ~user/.ssh/user.pem에 있습니다.
- 'user'에는 /home/user/bin/rbash 로그인 쉘이 있습니다.
- ~user/bin/에는 /bin/rbash 및 /usr/bin/sudo에 대한 심볼릭 링크가 포함되어 있습니다.
- /etc/sudoers에는 "user ALL=(root) NOPASSWD: [스크립트 경로] 항목이 있습니다.
- ~user/.bashrc는 PATH를 /home/user/bin/으로만 설정합니다.
- ~user/.inputrc에는 경로를 찾기 위해 'sudo /'에서 이중 탭 이동을 방지하기 위해 '비활성화 완료 설정'이 있습니다.
- ~user/ -R은 사용자에 대한 쓰기 액세스 권한이 있는 ~user/.ssh(known_hosts 쓰기용) 및 +x인 ~user/bin/*를 제외하고 사용자에 대한 읽기 전용 액세스 권한이 있는 루트가 소유합니다.
- 인스턴스 간 통신은 'ssh -o StrictHostKeyChecking=no -i ~user/.ssh/user.pem user@[host] sudo [scriptname]'을 사용합니다.
어떤 생각이라도 환영합니다.
표시...
답변1
좋아, 누군가가 사용자 로그인에 들어가면 사용자의 PEM 키를 얻는다는 사실을 제외하고는 이것이 어떤 식으로든 끔찍하게 노출된다는 응답이 없습니다. 다른 곳으로 갈 수 없도록 해야 합니다*.
위의 접근 방식으로 작업하고 있습니다.
*일반적인 주의사항이 적용됩니다.