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

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

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

그 부분은 모두 잘 작동하고 있습니다. rsa 키를 생성하고 이를 루트의 authenticate_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_profile은 bash가 대화형 로그인 셸로 호출되는 경우 사용됩니다. ~/.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

관련 정보