0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ssh接続時のログの記録&Discordに通知させる

Last updated at Posted at 2024-09-17

前回のスクリプトを、セキュリティ対策としてSSHのログの記録を記載していたが、結局痕跡を消されては意味が無いためログイン成功or失敗時にDiscordへ通知させるように、改良してみた。

本来はLINE Keepにしたかったが Discordのwebhookがあまりにも簡単だったので採用した

# ログファイルのパス
LOGFILE="$HOME/.ssh/.log/all_sshauthlog.log"

# ログディレクトリが存在しない場合は作成
if [ ! -d "$HOME/.ssh/.log" ]; then
    mkdir -p "$HOME/.ssh/.log"
fi

# ログファイルにSSH認証の成功・失敗の履歴を記録
sudo journalctl -u ssh | grep -E "Accepted|Failed password" >> "$LOGFILE"

# カラーコードの設定
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # 色リセット

# ログイン履歴の最後の3回をフォーマットして表示
echo -e "最後の3回のログイン履歴:\n"
tail -n 3 "$LOGFILE" | while read line; do
    # 日付を抽出
    DATE=$(echo "$line" | awk '{print $1, $2, $3}')
    # 成功か失敗かを判定
    if echo "$line" | grep -q "Accepted"; then
        STATUS="Accepted"
    else
        STATUS="Failed"
    fi
    # IPアドレスを抽出
    IP=$(echo "$line" | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}')

    # 結果を表示
    echo -e "${YELLOW}$DATE${NC}"
    echo -e "  Status: $STATUS"
    echo -e "  IP Address: ${YELLOW}$IP${NC}\n"

    # メッセージを作成
    msg="Date: $DATE\nStatus: $STATUS\nIP Address: $IP"

    # senddiscord.sh Discord送信用スクリプトにメッセージを送信
    .ssh/senddiscord.sh "$msg"
done

senddiscord.sh


#!/bin/bash

# DiscordのウェブフックURL
WEBHOOK_URL="https://discord.com/api/...."

# 送信したいメッセージ(引数1で指定)
MESSAGE="$1"

# メッセージが指定されていない場合のエラーメッセージ
if [ -z "$MESSAGE" ]; then
    echo "Usage: $0 <message>"
    exit 1
fi

# 特殊文字をエスケープ
ESCAPED_MESSAGE=$(echo "$MESSAGE" | sed 's/"/\\"/g' | sed "s/'/\\'/g")

# curlを使ってメッセージを送信
curl -H "Content-Type: application/json" \
     -d "{\"content\": \"$ESCAPED_MESSAGE\"}" \
     $WEBHOOK_URL

結果 Discord

Date: Sep 17 19:12:21
Status: Accepted
IP Address: xx.xxx.xx.xx
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?