12時間に1回実行されるバックアップアプリケーションがあります。
複数のサーバー、デスクトップ、ラップトップがEC2インスタンスに接続し、独自のログイン認証情報を使用してSFTP経由でバックアップをプッシュします。
ファイルを回復する必要がある場合は、単純なSFTPクライアントを介してファイルを参照し、ファイルを復元できます。これは過去8か月間非常にうまく機能しています。
SSH経由でユーザーごとに毎月転送されるデータの数を知りたいのですが。過去8か月間のログは必要ありませんが、今からログを記録するものがあれば素晴らしいでしょう。
これを可能にするものはありますか?
OS:Ubuntu 10.10
それはいくつかの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でテスト済み)。
ユーザーのログオンをIP(ログファイルで利用可能)で追跡し、ほぼすべてのトラフィック監視ソリューション(NetflowとIPtrafが思い浮かびます)を使用して、そのIPによるポート22トラフィックを追跡できます。
残念ながら、この効果のために何かを設定していない限り、過去数か月の過去の使用法は利用できません。
あなたはチェックアウトしたいかもしれません sftpロギングに関するこの投稿 。ログを解析するための追加の作業が少しあれば、必要なものが得られると思います。
auditdは、すべてのファイルに対して何が行われたかを知るための優れたユーティリティです。それはあなたがタフに必要なものではないかもしれません。