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をインストールします
1 2 3 4 5 |
## 必要パッケージのインストール yum -y install perl-File-Tail ## swatchインストール yum -y install swatch |
通知用のシェルを作成します。作成後に権限も設定しておきます
1 2 3 4 5 6 7 |
## 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/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 を下記のように編集して、実行されるシェルを記述します
1 2 3 4 5 6 7 8 9 |
## 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を起動します
1 |
swatch -c /etc/swatch/conf/secure.conf -t /var/log/secure & |
試しにsshでログインしてみます。
ちゃんとrocket.cat側で通知が確認できました。

-
前の記事
Nuxt.js yarn start時に外部IPから接続できるように設定する 2019.12.02
-
次の記事
CentOs8に MeteorをインストールしてHello Worldまでしてみる 2019.12.02
コメントを書く