Advertisement
D0cEvil

FTP - баним гостей

Sep 19th, 2022 (edited)
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.87 KB | Cybersecurity | 0 0
  1. #!/bin/bash
  2.  
  3. ##### Основные переменные #####
  4.  
  5. logfile='proftpd.log'
  6. logdir='/var/log/proftpd'
  7. basedir='/root/ftp'
  8. basename='users'
  9. i=0
  10.  
  11. ## Проверка наличия основных директорий и файлов ##
  12.  
  13. ## Очистка базы ##
  14.  
  15. if [ -d /tmp/users.txt ]; then
  16.     rm -R /tmp/users.txt
  17. fi
  18.  
  19. ##### Считываем файл лога FTP-сервера #####
  20.  
  21. awk -F " " '{print $4 " " $8 " " $9" "$10}' $logdir/$logfile |grep 'Login successful' > /tmp/1.txt
  22. awk -F " " '{print $2}' /tmp/1.txt > /tmp/2.txt
  23. rm -R /tmp/1.txt
  24. rev /tmp/2.txt |cut -c2- |rev > /tmp/3.txt
  25. rm -R /tmp/2.txt
  26.  
  27. ##### Считываем  построчно файл с пользователями #####
  28. ##### Пишем количество подключений юзеров из базы в файл #####
  29.  
  30. FILE=$basedir/$basename
  31. FILE2=/tmp/3.txt
  32.  
  33. while read line; do #Считывается строка из базы пользователей FTP
  34. #echo "$line" >> /tmp/line
  35. IN1=`echo $line | awk '{print $2}'` # Количество разрешенных коннектов
  36. #echo "$IN1" >> /tmp/IN.txt
  37. IN2=`echo $line | awk '{print $1}'` # Имя пользователя
  38.                     while read line2; do # Считывается строка из лога коннектов
  39.                             if [[ $IN2 == $line2 ]]; # Сравниваем строку из базы со строкой из лога. При совпадении, счетчик i увеличивается на 1
  40.                     then
  41.                             let "i = i+1"
  42.                     fi
  43.                     #echo "$line2" >> /tmp/line2
  44.             done < $FILE2
  45.             echo "$line" "$i" >> /tmp/users.txt
  46.             if [[ $i -ge $IN1 ]]; then
  47.                 passwd -l $IN2
  48.                 echo "Учетная запись $IN2 заблокирована" >> /var/log/proftpd/blocked.log
  49.             fi
  50.             i=0
  51. done < $FILE
  52. rm -R /tmp/3.txt
  53. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement