123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #!/bin/bash
- clear
- MAX=1
- if [ -e "/var/log/auth.log" ]; then
- OS=1;
- LOG="/var/log/auth.log";
- fi
- if [ -e "/var/log/secure" ]; then
- OS=2;
- LOG="/var/log/secure";
- fi
- if [ $OS -eq 1 ]; then
- service ssh restart > /dev/null 2>&1;
- fi
- if [ $OS -eq 2 ]; then
- service sshd restart > /dev/null 2>&1;
- fi
- service dropbear restart > /dev/null 2>&1;
-
- if [[ ${1+x} ]]; then
- MAX=$1;
- fi
- cat /etc/passwd | grep "/home/" | cut -d":" -f1 > /root/user.txt
- username1=( `cat "/root/user.txt" `);
- i="0";
- for user in "${username1[@]}"
- do
- username[$i]=`echo $user | sed 's/'\''//g'`;
- jumlah[$i]=0;
- i=$i+1;
- done
- cat $LOG | grep -i dropbear | grep -i "Password auth succeeded" > /tmp/log-db.txt
- proc=( `ps aux | grep -i dropbear | awk '{print $2}'`);
- for PID in "${proc[@]}"
- do
- cat /tmp/log-db.txt | grep "dropbear\[$PID\]" > /tmp/log-db-pid.txt
- NUM=`cat /tmp/log-db-pid.txt | wc -l`;
- USER=`cat /tmp/log-db-pid.txt | awk '{print $10}' | sed 's/'\''//g'`;
- IP=`cat /tmp/log-db-pid.txt | awk '{print $12}'`;
- if [ $NUM -eq 1 ]; then
- i=0;
- for user1 in "${username[@]}"
- do
- if [ "$USER" == "$user1" ]; then
- jumlah[$i]=`expr ${jumlah[$i]} + 1`;
- pid[$i]="${pid[$i]} $PID"
- fi
- i=$i+1;
- done
- fi
- done
- cat $LOG | grep -i sshd | grep -i "Accepted password for" > /tmp/log-db.txt
- data=( `ps aux | grep "\[priv\]" | sort -k 72 | awk '{print $2}'`);
- for PID in "${data[@]}"
- do
- cat /tmp/log-db.txt | grep "sshd\[$PID\]" > /tmp/log-db-pid.txt;
- NUM=`cat /tmp/log-db-pid.txt | wc -l`;
- USER=`cat /tmp/log-db-pid.txt | awk '{print $9}'`;
- IP=`cat /tmp/log-db-pid.txt | awk '{print $11}'`;
- if [ $NUM -eq 1 ]; then
- i=0;
- for user1 in "${username[@]}"
- do
- if [ "$USER" == "$user1" ]; then
- jumlah[$i]=`expr ${jumlah[$i]} + 1`;
- pid[$i]="${pid[$i]} $PID"
- fi
- i=$i+1;
- done
- fi
- done
- j="0";
- for i in ${!username[*]}
- do
- if [ ${jumlah[$i]} -gt $MAX ]; then
- date=`date +"%Y-%m-%d %X"`;
- echo "$date - ${username[$i]} - ${jumlah[$i]}";
- echo "$date - ${username[$i]} - ${jumlah[$i]}" >> /root/log-limit.txt;
- kill ${pid[$i]};
- pid[$i]="";
- j=`expr $j + 1`;
- fi
- done
- if [ $j -gt 0 ]; then
- if [ $OS -eq 1 ]; then
- service ssh restart > /dev/null 2>&1;
- fi
- if [ $OS -eq 2 ]; then
- service sshd restart > /dev/null 2>&1;
- fi
- service dropbear restart > /dev/null 2>&1;
- j=0;
- fi
|