사용자 당 SSH 트래픽 모니터링


9

12 시간마다 한 번씩 실행되는 백업 응용 프로그램이 있습니다.

여러 서버, 데스크톱 및 랩톱이 EC2 인스턴스에 연결하고 자체 로그인 자격 증명을 사용하여 SFTP를 통해 백업을 푸시합니다.

파일을 복구해야하는 경우 간단한 SFTP-Client를 통해 파일을 찾아보고 파일을 복원 할 수 있습니다. 이것은 지난 8 개월 동안 매우 잘 운영되고 있습니다.

SSH를 통해 사용자별로 매월 전송되는 데이터 수를 알고 싶습니다. 지난 8 개월 동안 로그가 필요하지 않지만 지금 시작하여 기록 할 수있는 것이 좋습니다.

내가 할 수있는 일이 있습니까?

운영체제 : Ubuntu 10.10

답변:


6

그것은 어색한 마술이 필요했습니다. 이것이 내 동료와 내가 함께 할 수있는 곳입니다.

#!/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

1

IP (로그 파일에서 사용 가능)로 사용자 로그온을 추적 한 다음 거의 모든 트래픽 모니터링 솔루션 (Netflow 및 IPtraf를 염두에 두어야 함)을 사용하여 해당 IP의 포트 22 트래픽을 추적 할 수 있습니다.

불행히도, 이미이 효과를 설정하지 않았다면 지난 몇 달 동안의 과거 사용량을 사용할 수 없습니다.



0

auditd는 모든 파일에 수행 된 작업을 알 수있는 유용한 유틸리티입니다. 힘든 일이 아닐 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.