어떤 경우에는 암호가없는 서버를 좋아한다는 것을 인정해야합니다. 일반적인 서버는 물리적으로 액세스 할 수있는 모든 사람에게 취약합니다. 따라서 어떤 경우에는 물리적으로 잠그고 물리적 액세스 를 신뢰 하는 것이 실용적 입니다.
기본 컨셉
이론적으로 그러한 서버에 실제로 도달 root
하면 로그인 으로 간단히 입력하여 비밀번호없이 관리 작업을 수행 할 수 있어야하며 비밀번호를 묻지 않아야합니다. 사용자 계정에도 동일하게 적용되지만 실제로는 실제로 액세스하지는 않습니다. 따라서 (가끔) 로컬 액세스에 시스템 암호가 필요하지 않습니다.
관리 또는 사용자 계정으로 서버에 원격으로 액세스 할 때는 항상 SSH 개인 키를 사용해야합니다. 방금 생성 한 계정에 SSH 키를 설정하는 것은 매우 쉬우므로 (일반) 원격 액세스에 시스템 암호가 필요하지 않습니다.
# user=...
#
# useradd -m "$user"
# sudo -i -u "$user"
$ keyurl=...
$
$ mkdir -p .ssh
$ curl -o .ssh/authorized_keys "$keyurl"
결론은 이론적으로, 우리는 neeed 않을 것이다 어떤 같은 사용 사례에 대한 시스템 암호를. 문제는 시스템과 사용자 계정이 일관되고 안전한 방식으로 이루어 지도록 구성하는 방법입니다.
로컬 액세스 세부 사항
암호없이 루트 계정에 로컬로 액세스 할 수 있도록하려면 어떻게해야합니까? passwd -d
루트 액세스가 너무 관대하고 권한이없는 사용자가 무료로 루트로 전환 할 수 있기 때문에 사용할 수 있다고 생각하지 않습니다 . passwd -l
로그인 할 수 없으므로 사용할 수 없습니다 .
로컬 액세스는 로컬 키보드를 사용한 액세스에 관한 것입니다. 따라서 유효한 솔루션 은 사용자 전환 ( su
또는 사용 여부)을 허용하지 않아야합니다sudo
.
원격 액세스 세부 사항
최근까지 위의 솔루션이 작동했지만 이제 SSH가 잠긴 사용자 계정을 확인하기 시작했습니다. 우리는 아마 passwd -d
같은 이유로 사용할 수 없습니다 . 우리는 passwd -u
그것이 무엇으로 이어질 것이라고 불평 하기 때문에 사용할 수 없습니다 passwd -d
.
이 부분에 더미 암호를 사용하는 해결 방법이 있습니다.
user=...
echo -ne "$user:`pwgen 16`\n" | chpasswd
SSH에서 잠긴 계정 검사를 완전히 해제 할 수도 있지만 잠긴 계정에 대한 지원을 유지하고 잠금을 해제하는 것이 더 좋습니다.
최종 노트
내가 관심이있는 것은 암호없이 로컬로 루트 계정과 루트를 포함하여 모든 계정을 원격으로 로그인 할 수있는 솔루션입니다. 반면에 솔루션은 명시 적으로 설명 된 방식을 제외하고 보안에 영향을 주어서는 안됩니다. 특히 원격 사용자가 루트 계정이나 다른 사용자 계정에 액세스 할 수 없도록해서는 안됩니다. 보안 문제가 간접적으로 발생하지 않도록 솔루션은 충분히 강력해야합니다.
승인되고 수여되는 답변은 개별 도구의 세부 구성을 설명하거나 설명하지 않을 수 있지만 명시된 목표를 달성하기위한 핵심 사항을 포함해야합니다. 이 아마 같은 도구의 일반적인 사용을 통해 해결 될 수 없습니다 passwd
, ssh
, su
, sudo
등이있다.
첫 번째 답변을 읽은 후 더 많은 아이디어
단지 아이디어 – 로그인 프로세스 대신 루트 쉘을 시작하여 로컬 루트 액세스를 달성 할 수 있습니다. 그러나 여전히 공개 키 인증이 아닌 비밀번호 인증 만 잠글 필요가 있습니다.