ユーザーごとのSSHトラフィックを監視する


9

12時間ごとに実行されるバックアップアプリケーションがあります。

複数のサーバー、デスクトップ、ラップトップがEC2インスタンスに接続し、独自のログイン認証情報を使用してSFTP経由でバックアップをプッシュします。

ファイルを回復する必要がある場合は、シンプルなSFTPクライアントを介してファイルを参照し、ファイルを復元できます。これは過去8か月間、非常に順調に稼働しています。

SSH経由でユーザーごとに毎月転送されるデータ数を教えてください。過去8か月間はログは必要ありませんが、今からそれを記録するものは素晴らしいです。

これを可能にするものはありますか?

OS:Ubuntu 10.10

回答:


6

それはいくつかのawk-magicを要しました、これは私の同僚と私が一緒にできる場所です。

#!/bin/bash

main() {
  if [ -e $1 ] ; then
    MONTH=$(date | awk '{ print $2 }')
  elif [ $1 -ge 1 -a $1 -le 12 ] ; then
    month $1
  else
    exit 1
  fi

  echo
  echo "Usage statistics for month $MONTH"
  echo

  USERS=(`awk '/^'$MONTH'.*session opened for local user.*$/ { print $(NF-2) } ' /var/log/auth.log* | sort | uniq`)
  for i in "${USERS[@]}"
  do :
    echo "################################"
    echo "Usage for user: $i"
    READ=0
    WRITTEN=0
    #processes for this user  
    PROCS=(`awk '/^'$MONTH'.*session opened for local user '$i'.*$/ { gsub("\\[|]|sftp-server|:","", $(NF-8)); print $(NF-8) } ' /var/log/auth.log* | sort | uniq`)
    for j in "${PROCS[@]}"
    do :

      TEMP_READ=$(awk '/^'$MONTH'.*\['$j'\].*\ read\ [0-9]+\ written\ [0-9]+$/ { sum+=$(NF-2)}END{ print sum}' /var/log/auth.log*)
      READ=$(($TEMP_READ+$READ))
      TEMP_WRITTEN=$(awk '/^'$MONTH'.*\['$j'\].*\ read\ [0-9]+\ written\ [0-9]+$/ { sum+=$(NF)}END{ print sum}' /var/log/auth.log*)
      WRITTEN=$(($TEMP_WRITTEN+$WRITTEN))
    done
    echo "Read     $(($READ/(1024*1024))) MiB"
    echo "Written  $(($WRITTEN/(1024*1024))) MiB"
    echo "################################"
    echo
  done
}

month() {
case "$1" in
  1)  MONTH='Jan'
    ;;
  2)  MONTH='Feb'
    ;;
  3)  MONTH='Mar'
    ;;
  4)  MONTH='Apr'
    ;;
  5)  MONTH='May'
    ;;
  6)  MONTH='Jun'
    ;;
  7)  MONTH='Jul'
    ;;
  8)  MONTH='Aug'
    ;;
  9)  MONTH='Sep'
    ;;
  10)  MONTH='Oct'
    ;;
  11)  MONTH='Nov'
    ;;
  12)  MONTH='Dec'
    ;;
  *) echo 'Crash and Burn!'
     exit 1
   ;;
esac
}

main $1
exit 0

sshd_configにこれを入れました:

 Subsystem sftp /usr/lib/openssh/sftp-server -l VERBOSE

警告:このスクリプトはメモリを消費します!大きなログファイルがある場合、スクリプトが完了するまでに最大10分かかることがあります(EC2 Microでテスト済み)。


自分の報奨金を受け取ることができないのは残念です
。–ウォーレン

2
うまくいくものを手に入れられてうれしいです:-)。過去の蛾の統計をとることもできました。私は幸せな人です;-)。
Bart De Vos 2011年

1

ユーザーログオンをIP(ログファイルで利用可能)で追跡し、ほぼすべてのトラフィック監視ソリューション(NetflowとIPtrafが思い浮かぶ)を使用して、そのIPでポート22トラフィックを追跡できます。

残念ながら、過去数か月の使用履歴は、この効果を設定するための準備が整っていない限り利用できません。



0

auditdは、すべてのファイルに対して何が行われたかを知るための優れたユーティリティです。それはあなたがタフな必要があるものではないかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.