LoginSignup
2
0

More than 3 years have passed since last update.

ssh ログインしている人をslack に晒す

Posted at

やりたいこと

雪犬は、素人のためセキュリティが非常に弱い!
誰かに入られてもわからない!
サーバー怖い!

という事で、sshログインしているかどうかを確認したい。

なので、ただソースコピペしてパパーっとやりたい人向け。
★改行したい、ダブルクォート挟むなどの場合は、別のソースを探してください。

出来なかった事

  • リアルタイムでのログイン確認
  • 実行コマンド内の改行?空白?を改行としてそのまま送信

やること

  • スクリプト: ssh ログインの確認, slack にbotとして送信
  • CRON: X分, X時間毎に実行させる

ssh ログインの確認

こちら の方のソースを使わせていただいております。
詳細はサイトをご確認ください。

コマンド who w でssh がログインしているユーザを確認出来る。
変数msgへコマンドを代入し、それを送信している、というスクリプト。

slack.sh
#!/bin/bash

set -eu

msg=`w`

SLACK_WEBHOOK_URL="https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX"

post_slack() {
  channel="#bot"
  user="my_bot"
  emoji="ghost"
  message=${msg}
  # list: good / danger
  color=""

  file=$(mktemp)
  trap "rm ${file}" EXIT

  cat << EOJ > $file
    {
      "link_names": 1,
      "channel": "${channel}",
      "username": "${user}",
      "icon_emoji": ":${emoji}:",
      "attachments": [
        {
          "color": "${color}",
          "text": "${message}"
        }
      ]
    }
EOJ

  curl -s -S -X POST -d @$file ${SLACK_WEBHOOK_URL}
}

post_slack

X分、X時間毎に実行する

参考 cronサイト

# リストの確認
$ crontab -l
# 編集
$ crontab -e

crontab -e を実行したら、vi と同じになるので、以下のように追記

# 3分毎に実行
*/3 * * * * /home/user/slack.sh
# 1h毎に実行
0 */1 * * * /home/user/slack.sh

最後に

お疲れさまでした。
別のソースで、改行やダブルクォート対応ソースあったのですが、知識なさすぎて・・・実行出来なかったので><

本来はリアルタイムで通知したかったんですが、どうやったらリアルタイムで持ってこれるかわからず!!
ログの更新がされたら〜とかっていう事なのかも???

知識なくてわかりませんが、とりま現状はこの運用で。

ではではではではー、雪犬-snowdog-でした★

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0