
키 비밀번호를 한 번 입력하면 ssh-agent가 실행되는 동안 비밀번호를 다시 입력하지 않고도 원격 시스템에 자유롭게 연결할 수 있다는 기사 Master Linux Now 2013
를 읽고 있었습니다 .OpenSSH: Easy Logins
ssh-agent
처음에 이 게시물에 관심을 갖게 된 이유는 암호를 백만 번 다시 입력할 필요가 없다는 것 외에도 서버의 컴퓨터에 있는 cron에서 rsync를 호출하는 ssh를 통해 원격 컴퓨터에서/로 자동 백업을 수행할 수 있다는 점이었습니다.
cron이 키를 사용하여 쉽게 로그인할 수 있도록 누군가가 암호를 건너뛰는 또 다른 게시물을 보았는데, 이는 옳지 않다고 느껴지지만 실제로는 괜찮습니까? 내 말은, 누군가가 해당 키 파일을 갖고 있다면 백업 중인 컴퓨터에 큰 피해를 줄 수 있다는 뜻입니다.
내 생각에는 사용자가 재부팅 시 로그인되어 있는지 확인하고 에이전트를 실행하기 위해 로그인할 때 비밀번호를 한 번 입력한 다음 화면이 잠긴 상태에서 cron 작업이 실행될 때까지 기다리는 것이 더 안전할 것입니다. 여기에는 cron 작업이 실행되는 사용자 또는 사용자 유형과 같은 내용이 누락되어 있습니다.
답변1
키를 눌러 호출할 수 있는 명령을 제한합니다.
모든 종류의 자동화 또는 무인 작업에 SSH 키를 사용하려면 키를 저장하는 방법과 위치에 대해 어떤 결정을 내렸는지에 관계없이 원격 컴퓨터에서 실행할 수 있는 명령을 제한해야 합니다.
다음과 같이 사용하십시오 ~/.ssh/authorized_keys
.
command="/usr/sbin/the-backup-daemon" ssh-rsa AAAAAAAAAAAABBBBBXXXXXX.....
그렇게 하면 최소한 당신이 말한 것처럼 열쇠가 큰 혼란을 일으키지는 않을 것입니다. 예상된 것에만 액세스할 수 있습니다. 여전히 손상을 입힐 가능성이 높지만 원격 시스템에 대한 전체 액세스 권한은 낮아야 합니다.
또한 이 키를 사용하여 연결이 허용되는 IP 주소를 제한하고 이 키를 사용하는 연결에 대한 포트 전달과 같은 다른 많은 SSH 기능을 비활성화할 수도 있습니다.
from="10.1.2.3",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/usr/sbin/the-backup-daemon" ssh-rsa AAAAAAAAAAAAXXXXXX.....
이들 모두가 에 있어야 합니다 ~/.ssh/authorized_keys
.
키를 보호하다
위협 모델이 무엇인지에 따라 다릅니다.
예를 들어, 키가 저장된 컴퓨터가 물리적으로 도난당한 경우와 같이 "콜드" 상태에서 키를 도난당할까봐 걱정된다면 해당 위치에 암호 없이 키를 저장하고 싶지 않을 것입니다.
너할 수 있다서버가 시작된 후 백그라운드 SSH 에이전트를 수동으로 시작하고, 에이전트에 키를 추가하고, 나중에 크론 작업에서 사용할 수 있도록 에이전트 키를 기록하는 $SSH_AUTH_SOCK
것은 솔직히 그만한 가치보다 더 많은 문제처럼 들립니다. 암호화되지 않은 키를 tmpfs
파일 시스템에 저장하고 cron 작업이 거기에서 액세스하도록 할 수도 있습니다. 어느 쪽이든 키는 메모리에만 존재합니다(스왑이나 암호화된 스왑이 없는 경우). 물론 해당 파일은 의도된 사용자만 접근할 수 있도록 chown
사용해야 합니다.chmod
그런 다음 다시 한 번, 이 문제가 걱정된다면 이 컴퓨터에 암호화된 루트 파일 시스템과 스왑(예: luks)이 이미 설정되어 있을 것이므로 걱정할 필요가 없습니다.
키가 "핫"(메모리에 로드됨)되는 동안 도난당할까봐 걱정된다면 이에 대해 할 수 있는 일이 많지 않습니다. cron 작업이 액세스할 수 있으면 동일한 액세스 권한을 성공적으로 얻은 다른 항목도 액세스할 수 있습니다. 그게 다입니다. 아니면 무인 작업 실행의 편리함을 포기하세요.
요약하자면 백업 서버는 백업하는 모든 머신의 전체 파일 시스템에 대한 읽기 전용 액세스 권한이 반드시 부여되므로 매우 권한이 있는 시스템으로 취급해야 합니다. 예를 들어 백업 서버는 인터넷에서 액세스할 수 없어야 합니다.