SSH 키가 사용될 때마다 이메일 보내기

SSH 키가 사용될 때마다 이메일 보내기

거의 동일한 CentOS 6 서버가 약 30개 있고 rsa 키를 사용하여 루트로 로그인하여 업데이트된 구성 파일을 자동으로 롤아웃할 수 있어야 합니다. 일반적으로 이것은 단지 rsync이지만 때로는 서버에서 명령을 실행해야 할 수도 있으므로 ssh도 필요합니다. 이는 30개의 서버를 모두 업데이트하는 스크립트로 실행되므로 키에 비밀번호를 설정하고 싶지 않습니다.

그 부분에서는 모든 것이 괜찮습니다. rsa 키를 생성하고 이를 루트의 Authorized_keys에 추가하여 비밀번호를 입력하지 않고도 서버에 ssh 또는 rsync를 수행할 수 있습니다.

단일 호스트 이름의 키만 허용하도록 Authorized_keys를 설정했습니다. 이렇게 하면 이 설정이 상대적으로 안전해집니다. 하지만 여전히 만족스럽지 않으며 이 키를 사용할 때마다 공유 기술 사서함으로 이메일을 보내도록 설정하고 싶습니다.

여러 번 나는 이 서버에 나 자신으로 로그인하고 루트 권한을 요청합니다. 이는 훌륭하며 로그인할 때마다 기술 메일함에 스팸 메일을 보내고 싶지 않습니다. SSH 키를 사용할 때만 이메일을 받고 싶습니다.

이것은 지금까지 server1[30부터].example.com에 있는 내용입니다.

cat /root/.ssh/authorized_keys
from="pusher.example.com",environment="SSHKEY=1" ssh-rsa AAAAB3NzaIwAAAxetcetc== root@pusher

tail -n 3 /root/.bash_profile
if [[ "${SSHKEY}" == "1" ]] ; then
echo 'Either we are getting hacked, or somebody used the SSH key on pusher to push something out to ' `hostname` ' at ' `date` | mail -s "WARNING - ROOT SSH KEY USED ON `hostname`!" [email protected]
fi

이는 SSH에 적합합니다. 루트를 얻기 위해 나 자신으로 로그인하고 su를 실행하면 이메일을 받지 못하지만, Pusher에 로그인하여 다음을 실행하면:

ssh -i /root/.ssh/server1.pri server1.example.com

이메일을 받았습니다. 문제는 파일을 푸시하는 것입니다. 다음 중 하나를 실행하는 경우:

scp -i /root/.ssh/server1.pri /tmp/file.txt server1.example.com:/tmp/
rsync -e 'ssh -i /root/.ssh/server1.pri' /tmp/test.txt server1.example.com:/tmp/

아직 이메일을 받지 못했습니다.

bash_profile에 의존하는 대신 키가 사용될 때 이메일을 보내도록 설정할 수 있는 방법이 있습니까? (아니면 scp나 rsync에 사용되는 경우에만 키를 실행하도록 제한할까요?)

답변1

남용할 수도 있다 /루트/.ssh/rc귀하의 목적에 맞게 (man sshd 참조) mailx거기에 명령을 포함하십시오.

답변2

bash가 대화형 로그인 셸로 호출되면 ~/.bash_profile이 사용됩니다. ~/.bashrc는 비로그인 쉘용입니다. 그러나 공격자가 셸 초기화 파일을 전혀 읽지 않도록 요구할 수 있으므로 이 파일을 사용하는 것은 신뢰할 수 없습니다.

답변3

sshd 매뉴얼 페이지의 "authorized_keys" 섹션에서:

명령="명령"

이 키가 인증에 사용될 때마다 명령이 실행되도록 지정합니다. 사용자가 제공한 명령이 있는 경우 무시됩니다. 클라이언트가 pty를 요청하면 명령은 pty에서 실행되고, 그렇지 않으면 tty 없이 실행됩니다. 8비트 클린 채널이 필요한 경우 pty를 요청하지 않거나 no-pty를 지정해야 합니다. 백슬래시를 사용하여 명령 내에 따옴표를 포함할 수 있습니다. 이 옵션은 특정 공개 키가 특정 작업만 수행하도록 제한하는 데 유용할 수 있습니다. 예를 들어 원격 백업을 허용하지만 다른 것은 허용하지 않는 키가 있을 수 있습니다. 명시적으로 금지되지 않는 한 클라이언트는 TCP 및/또는 X11 전달을 지정할 수 있습니다. 클라이언트가 원래 제공한 명령은 SSH_ORIGINAL_COMMAND 환경 변수에서 찾을 수 있습니다. 이 옵션은 셸, 명령 또는 하위 시스템 실행에 적용됩니다. 또한 이 명령은 sshd_config(5) ForceCommand 지시문이나 인증서에 포함된 명령으로 대체될 수 있습니다.

"from" 및 "environment" 옵션을 추가한 것처럼 이 옵션을 키에 추가할 수 있습니다.

cat /root/.ssh/authorized_keys
from="pusher.example.com",environment="SSHKEY=1" ssh-rsa AAAAB3NzaIwAAAxetcetc== root@pusher

관련 정보