로그인을 rsyslog를 통해 slack에 알리기

소개



서버 (CentOS)에 대한 모든 로그인을 슬랙으로 알리고 싶었습니다.

그런 다음 rsyslog에서 쉘 스크립트를 호출하여 slack에 알립니다.

슬랙 토큰 획득



이번에는 여기을 참고로 취득하였습니다.

rsyslog 설정



rsyslog 설정을 추가합니다. /etc/rsyslog.d/slack.conf를 작성하고 다음을 작성하십시오. 이제 로그인 할 때 slack.sh가 실행됩니다.

/etc/rsyslog.d/slack.conf
$template login_msg, "%fromhost% %msg%"

if \
      ( $msg contains 'pam_unix(' ) \
  and ( $msg contains 'session opened' ) \
then ^/etc/rsyslog.d/slack.sh;login_msg

그런 다음 /etc/rsyslog.d/slack.sh를 만듭니다. 예를 들어 채널 이름은 alert입니다.

/etc/rsyslog.d/slack.sh
#!/bin/sh
curl -XPOST -d "token=アクセストークン" -d "channel=#alert" -d "text=${1#* * * * * }" "https://slack.com/api/chat.postMessage"
text=${1#* * * * * * } 의 부분에서 아래의 예와 같은 형태로 로그를 잘라내고 있다.
pam_unix(sshd:session): session opened for user root by xxxxx(uid=xxxx)
#これを切り出すと
root by xxxxx(uid=0)

동작 확인



우선은 보통 SSH로 로그인 해 본다.

제대로 통지가 왔다.

다음으로 sudosu - 를 사용해 본다.

루트에 로그인하는 것도 알림을 받았습니다.

마지막으로



자신 만이 사용자가있는 서버에서 움직이기 때문에 갑작스런 알림이 오지 않도록 기도합니다.

참고문헌


  • 【ssmtp】CentOS로 로그인 알림 【rsyslog】
  • Slack API를 사용하여 메시지 보내기
  • 좋은 웹페이지 즐겨찾기