CentOs7 swatchを利用してログインを検知する

CentOs7 swatchを利用してログインを検知する

sshでログインやsudoの実行をwebhookを利用してrocket.chatで検知したかったので、その環境構築手順です。

Centos7バージョン

# cat /etc/centos-release
CentOS Linux release 7.7.1908 (Core)

rocket.chat webhook作成

管理画面よりサービス連携をクリック

右上にある「新しいサービス連携」をクリック

「着信WebHook」をクリック

有効:はい
名前:任意の名前
接続チャンネル:通知を着信するチャンネル

を入力

入力が終われば、ベージ下部にある「変更を保存」をクリック

以上で、最低限の設定は終了

CentOS7設定

centos7にログ監視ツールであるswatchをインストールします

## 必要パッケージのインストール
yum -y install perl-File-Tail

## swatchインストール
yum -y install swatch

通知用のシェルを作成します。作成後に権限も設定しておきます

## ssh用
touch /usr/local/bin/chat_ssh_alart.sh
chmod 750 /usr/local/bin/chat_ssh_alart.sh

## sudo用
touch /usr/local/bin/chat_sudo_alart.sh
chmod 750 /usr/local/bin/chat_sudo_alart.sh

それぞれのシェルを下記の通りに編集します。

chat_ssh_alart.sh

#!/bin/sh

WEBHOOK_URL="rocket chatで生成されたURL"
TEXT=$*
data=`cat << EOF
{"text":"新たなログインを検知","attachments":[
{
    "type": "centos login",
    "comment_count": "新たなログイン",
    "insert_date": "",
    "text": "$TEXT",
    "status": ""
}]}
EOF`

curl -X POST -H 'Content-Type: application/json' --data "$data" $WEBHOOK_URL

rocket chatで生成されたURLとは WebHook サービス連携 画面で確認できる。Webhook URLに表示されるURLです。

chat_sudo_alart.sh

#!/bin/sh

WEBHOOK_URL="rocket chatで生成されたURL"
TEXT=$*
data=`cat << EOF
{"text":"sudo実行","attachments":[
{
    "type": "centos login",    
    "insert_date": "",
    "text": "$TEXT",
    "status": ""
}]}
EOF`

curl -X POST -H 'Content-Type: application/json' --data "$data" $WEBHOOK_URL

次に /etc/swatch/conf/secure.conf を下記のように編集して、実行されるシェルを記述します

## SSHログイン
watchfor /Accepted/
        echo
        exec "\/usr\/local\/bin\/chat_ssh_alart.sh $_ > /dev/null 2>&1"

### sudo実行
watchfor /.*COMMAND.*/
         echo
         exec "\/usr\/local\/bin\/chat_sudo_alart.sh $* > /dev/null 2>&1"

swatch起動

監視対象のログを指定して、swatchを起動します

swatch -c /etc/swatch/conf/secure.conf -t /var/log/secure &

試しにsshでログインしてみます。

ちゃんとrocket.cat側で通知が確認できました。