Advertisement
D0cEvil

Bash - file2ban log parcing

Dec 27th, 2022
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.91 KB | Cybersecurity | 0 0
  1. ###########################################ИСПРАВИЛ###########################################
  2.  
  3. #!/bin/bash
  4.  
  5. #Переменные
  6.  
  7. tmpdir='/tmp'
  8. logdir='/var/log'
  9. badip='badip.list'
  10.  
  11.  
  12. #Парсим логи на предмет строк с IP-адресами тех кто ошибается с авторизацией
  13. #и пишем их в текстовый файл.
  14.  
  15.  
  16. cat $logdir/auth.log | grep 'Failed password' > $tmpdir/badip.tmp
  17. cat $logdir/auth.log | grep 'authentication failure' >> $tmpdir/badip.tmp
  18. cat $logdir/proftpd/proftpd.log |grep 'no such user' >> $tmpdir/badip.tmp
  19. cat $logdir/proftpd/proftpd.log |grep 'SECURITY VIOLATION' >> $tmpdir/badip.tmp
  20.  
  21. #Найти IP-адреса в текстовом файле. Внимание! Адрес может бы некорректным!!!
  22.  
  23. grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" $tmpdir/badip.tmp >> $tmpdir/badip.tmp1
  24.  
  25. #Удаляем лишний файлик ;-)
  26.  
  27. rm -R $tmpdir/badip.tmp
  28.  
  29. #Проверка файла на повторяющиеся строки и вывод уникальных строк в файл
  30.  
  31. awk '!_[$0]++' $tmpdir/badip.tmp1 > $tmpdir/$badip
  32.  
  33. #Удаляем лишний файлик
  34.  
  35. rm -R $tmpdir/badip.tmp1
  36.  
  37. #Проверяем наличие блек-листа IPSET
  38. #Если нет, создадим
  39.  
  40. ipset -L blacklist | grep 'ipset v6.20.1: The set with the given name does not exist'
  41. if [ $? -ne 1 ];
  42.     then
  43.     ipset -N blacklist iphash
  44. fi
  45.  
  46. #Проверяем наличие своего IP-адреса в БАН-листе
  47. #Если есть свой IP в базе (сам ошибся с авторизацией в системе)
  48. #то в этом случае строка с нашими адресами выпиливается со списка
  49.  
  50. sed -i '/172.16.0.2/d' $tmpdir/$badip
  51. sed -i '/172.16.0.3/d' $tmpdir/$badip
  52. sed -i '/172.16.1.2/d' $tmpdir/$badip
  53. sed -i '/172.16.1.3/d' $tmpdir/$badip
  54.  
  55. #Очищаем список плохих адресов
  56.  
  57. ipset -F blacklist
  58.  
  59. #Считываем файл построчно и баним IP-адреса
  60.  
  61. FILE=$tmpdir/$badip #допилено
  62.  
  63. while read line; do
  64.  
  65.      ipset -A blacklist $line
  66.  
  67. done < $FILE
  68.  
  69. ####Проверяем наличие правил iptables
  70.  
  71. iptables -L | grep 'DROP       all  --  anywhere             anywhere             match-set blacklist src'
  72.  
  73. #Если нет, добавляем правило
  74.  
  75. if [ $? -ne 0 ];
  76. then
  77. iptables -v -I INPUT -m set --match-set blacklist src -j DROP
  78. fi
  79.  
  80. #Если нет, добавляем правило
  81.  
  82. iptables -L | grep 'LOG        all  --  anywhere             anywhere             match-set blacklist src LOG level warning prefix "DROP blacklist entry"'
  83. if [ $? -ne 0 ];
  84.     then
  85.     iptables -v -I INPUT -m set --match-set blacklist src -j LOG --log-prefix "DROP blacklist entry"
  86. fi
  87.  
  88. #Можно удалить $badip
  89. rm -R $tmpdir/$badip
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement