प्रति उपयोगकर्ता SSH- ट्रैफ़िक की निगरानी करें


9

हमारे पास एक बैकअप एप्लिकेशन है जो हर 12 घंटे में एक बार चलता है।

एकाधिक सर्वर, डेस्कटॉप और लैपटॉप एक EC2-उदाहरण से कनेक्ट होते हैं और अपने स्वयं के लॉग-इन क्रेडेंशियल्स का उपयोग करके SFTP के माध्यम से बैकअप को धक्का देते हैं।

यदि उन्हें कोई फ़ाइल पुनर्प्राप्त करने की आवश्यकता होती है, तो वे एक साधारण SFTP- क्लाइंट के माध्यम से फ़ाइलों को ब्राउज़ कर सकते हैं और अपनी फ़ाइलों को पुनर्स्थापित कर सकते हैं। यह पिछले 8 महीनों से बहुत अच्छा चल रहा है।

मैं जानना चाहता हूं कि एसएसएच के माध्यम से प्रति उपयोगकर्ता मासिक आधार पर कितने डेटा स्थानांतरित किए जाते हैं। मुझे पिछले 8 महीनों के लिए लॉग की आवश्यकता नहीं है, लेकिन ऐसा कुछ जो इसे अब शुरू करेगा, वह बहुत अच्छा होगा।

क्या ऐसा कुछ है जो मुझे ऐसा करने की अनुमति देता है?

OS: उबंटू 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 मिनट तक का समय लग सकता है (ईसी 2 माइक्रो पर परीक्षण)।


शर्म की बात है कि आप अपने खुद के इनाम प्राप्त नहीं कर सकते ...
वॉरन

2
मुझे खुशी है कि मुझे कुछ मिला जो काम करता है :-)। इसने मुझे पिछले पतंगों के आंकड़े प्राप्त करने की भी अनुमति दी। मैं एक खुश आदमी हूँ ;-)
बार्ट डी वोस

1

आप IP द्वारा उपयोगकर्ता लॉगऑनों को ट्रैक कर सकते हैं (लॉग फ़ाइलों में उपलब्ध), और फिर उस आईपी द्वारा पोर्ट 22 ट्रैफ़िक का ट्रैक रखने के लिए लगभग किसी भी यातायात निगरानी समाधान (नेटफ्लो और आईपीट्राफ का ध्यान रखें) का उपयोग करें।

दुर्भाग्य से, पिछले कुछ महीनों का ऐतिहासिक उपयोग तब तक उपलब्ध नहीं है जब तक कि आपके पास पहले से ही इस आशय के लिए कुछ न हो।



0

ऑडिट हर फाइल में क्या किया गया है, यह जानने के लिए एक अच्छी उपयोगिता है। यह वह नहीं हो सकता है जो आपको कठिन चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.