Advertisement
D0cEvil

OpenVPN log parcer

Sep 19th, 2022
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 7.75 KB | Cybersecurity | 0 0
  1.  #!/bin/bash
  2.  
  3. #### Переменные ####
  4.  
  5.     # Путь к файлу логов OpenVPN
  6.  
  7.     logfiledir='/script/openvpn'
  8.  
  9.     # Имя файла логов OpenVPN
  10.  
  11.     logfile='openvpn.log'
  12.  
  13.     # Путь к файлу с первичными результатами парсинга
  14.  
  15.     tmpfiledir='/tmp'
  16.  
  17.     # Имя файла с первичными результатами парсинга
  18.  
  19.     tmpfile='tmp_base.log'
  20.  
  21.     # Путь к файлу с конечными результатами
  22.  
  23.     datafiledir='/script/openvpn'
  24.  
  25.     # Имя файла с конечными результатами
  26.  
  27.     datafile='base.log'
  28.  
  29.     #### Построение списка пользователей
  30.  
  31.     # Файл с первичными результатами
  32.  
  33.     userfile_tmp='parce.tmp'
  34.  
  35.     # Файл с промежуточными результатами
  36.  
  37.     userfile2_tmp='parce2.tmp'
  38.  
  39.     # Файл с конечными результатами
  40.  
  41.     resultfile='result_search.log'
  42.  
  43.  
  44. #### ПАРСЕР ЛОГА OpenVPN ####
  45.  
  46. # Проверка "если НЕ несуществует"
  47.  
  48. if ! [ -d $datafiledir/$datafile ]; then
  49.         rm -rf $datafiledir/$datafile
  50. fi
  51.  
  52. awk -F " " '{print $1 " " $2 " " $3 " " $4 " " $5 " " $7 " " $8 " " $9 " " $10}' $logfiledir/$logfile |grep -e 'Peer Connection Initiated' -e 'Inactivity timeout' -e 'Connection reset' > $tmpfiledir/555
  53.  
  54. # Убрать кавычк [] из файла
  55.  
  56. tr -d [] < $tmpfiledir/555 >> $tmpfiledir/$tmpfile
  57.  
  58. # построчное чтение файла, замена даты
  59.  
  60. FILE=$tmpfiledir/$tmpfile
  61.  
  62. while read line; do
  63.         T=`echo $line |cut -d ' ' -f 2,3,5`
  64.         D=`date -d "$T" "+%d-%m-%Y"`
  65.         T2=`echo $line |cut -d ' ' -f 4`
  66.         T3=`echo $line |cut -d ' ' -f 6-12`
  67.         echo $D $T2 $T3 >> $datafiledir/$datafile
  68. done < $FILE
  69.  
  70. rm -rf $tmpfiledir/$tmpfile
  71. rm -rf /tmp/555
  72.  
  73. #### Текстовое меню ####
  74.  
  75. clear
  76. echo
  77. echo "[1] Просмотреть весь журнал"
  78. echo
  79. echo "[2] Поиск по журналу"
  80. echo
  81. echo "[3] Список пользователей"
  82. echo
  83. echo "[4] Пробить по базе Zabbix"
  84. echo
  85. echo "[0] Выход"
  86.  
  87. read doing
  88.  
  89. case $doing in
  90.     1)
  91.         clear
  92.         cat $datafiledir/$datafile
  93.     ;;
  94.     2)
  95.         clear
  96.         echo "Поиск"
  97.         echo
  98.         echo "[1] По Имени пользователя"
  99.         echo
  100.         echo "[2] По Дате"
  101.         echo
  102.         echo "[3] Активность за сегодняшний день"
  103.  
  104.         read doing2
  105.         case $doing2 in
  106.             1)
  107.                 clear
  108.                 echo
  109.                 echo "Введите имя пользователя"
  110.                 echo
  111.  
  112.                 read username
  113.  
  114.                 clear
  115.                 echo
  116.                 echo "Вести поиск $username по дате?"
  117.                 echo
  118.                 echo "y/n"
  119.  
  120.                 read s1
  121.  
  122.                 case $s1 in
  123.                     n)
  124.                         clear
  125.                         cat $datafiledir/$datafile |grep $username
  126.                         exit 0
  127.                     ;;
  128.                     y)
  129.                         clear
  130.                         echo
  131.                         echo "Введите дату в формате ДД-ММ-ГГГГ "
  132.                         echo
  133.                         read data1
  134.                         clear
  135.  
  136.                         grep -E "$data1.*$username" $datafiledir/$datafile
  137.  
  138.                         exit 0
  139.                     ;;
  140.                     *)
  141.                         clear
  142.                         echo
  143.                         echo "Введено неправильное действие"
  144.  
  145.                         exit 1
  146.                     ;;
  147.                 esac
  148.             ;;
  149.             2)
  150.                 clear
  151.                 echo
  152.                 echo "Введите дату в формате ДД-ММ-ГГГГ"
  153.                 echo
  154.                 read data1
  155.                 clear
  156.  
  157.                 grep -E "$data1" $datafiledir/$datafile
  158.             ;;
  159.             3)
  160.                 clear
  161.                 data2=`date +"%d-%m-%Y"`
  162.                 grep -E "$data2" $datafiledir/$datafile
  163.             ;;
  164.             *)
  165.                 clear
  166.                 echo
  167.                 echo "Введено неправильное действие"
  168.  
  169.                 exit 1
  170.             ;;
  171.         esac
  172.  
  173.     ;;
  174.     3)
  175.         awk -F " " '{print $3}' $datafiledir/$datafile |sort|uniq
  176.     ;;
  177.     4)
  178.         clear
  179.         echo
  180.         echo [1] Поиск по всей базе
  181.         echo
  182.         echo [2] Поиск в журнале логов VPN по дате
  183.         echo
  184.         echo [3] Поиск в базе Zabbix по дате
  185.         echo
  186.         echo [4] Активность за сегодняшний день
  187.         echo
  188.         read doing3
  189.         clear
  190.         case $doing3 in
  191.             1)
  192.                 clear
  193.                 echo
  194.                 echo "Построение списка пользователей..."
  195.                 echo
  196.                 awk -F " " '{print $3}' $datafiledir/$datafile |sort|uniq|sed '/Connection/d' >> $tmpfiledir/$userfile_tmp
  197.                 sed '/tc/d' < $tmpfiledir/$userfile_tmp >> $tmpfiledir/$userfile2_tmp
  198.                 rm -rf $tmpfiledir/$userfile_tmp
  199.                 echo "Поиск в базе Zabbix..."
  200.  
  201.                 FILE=$tmpfiledir/$userfile2_tmp
  202.  
  203.                 while read line; do
  204.                     echo "Поиск пользователя $line"
  205.                     us1=%$line%
  206.                     cmd="SELECT value,logeventid,from_unixtime(clock) FROM history_log WHERE value LIKE '$us1';"
  207.                     mysql -h 128.28.248.1 -u auditor -p1 -e "$cmd" -D zabbix > $tmpfiledir/$resultfile
  208.                 done < $FILE
  209.  
  210.                 rm -rf $tmpfiledir/$userfile2_tmp
  211.  
  212.                 echo
  213.                 echo "Ок, результаты поиска записаны в $tmpfiledir/$resultfile"
  214.                 exit 0
  215.             ;;
  216.             2)
  217.                 clear
  218.                 echo
  219.                 echo "Введите начальную дату в формате ДД-ММ-ГГГГ "
  220.                 echo
  221.                 echo
  222.                 read data1
  223.                 echo
  224.                 echo "Введите конечную дату в формате ДД-ММ-ГГГГ "
  225.                 echo
  226.                 echo
  227.                 read data2
  228.                 clear
  229.                 echo "Поиск по диапазону $data1 -- $data2"
  230.  
  231.                 Y1=`echo $data1|cut -d '-' -f 3`
  232.                 M1=`echo $data1|cut -d '-' -f 2`
  233.                 D1=`echo $data1|cut -d '-' -f 1`
  234.  
  235.                 DD1=`echo $Y1$M1$D1`
  236.  
  237.                 Y2=`echo $data2|cut -d '-' -f 3`
  238.                 M2=`echo $data2|cut -d '-' -f 2`
  239.                 D2=`echo $data2|cut -d '-' -f 1`
  240.  
  241.                 DD2=`echo $Y2$M2$D2`
  242.                 echo "Построение списка пользователей..."
  243.                 FILE=$datafiledir/$datafile
  244.  
  245.                 while read line; do
  246.  
  247.                     P1=`echo $line |cut -d ' ' -f 1`
  248.                     Y3=`echo $P1 |cut -d '-' -f 3`
  249.                     M3=`echo $P1 |cut -d '-' -f 2`
  250.                     D3=`echo $P1 |cut -d '-' -f 1`
  251.                     DD3=`echo $Y3$M3$D3`
  252.  
  253.                     # $DD3 Больше или равно $DD1
  254.                     if [[ $DD3 -ge $DD1 ]]; then
  255.                             # $DD3 меньше или равно $DD2
  256.                                 if [[ $DD3 -le $DD2  ]]; then
  257.                                         echo $line >> $tmpfiledir/tmp.tmp
  258.                                 fi
  259.                     fi
  260.                 done < $FILE
  261.                 exit 0
  262.                 ;;
  263.             3)
  264.                 clear
  265.                 echo
  266.                 echo "Введите дату в формате ДД-ММ-ГГГГ"
  267.                 echo
  268.                 read data1
  269.                 clear
  270.                 echo
  271.                 echo "Построение списка пользователей..."
  272.                 echo
  273.                 awk -F " " '{print $3}' $datafiledir/$datafile |sort|uniq|sed '/Connection/d' >> $tmpfiledir/$userfile_tmp
  274.                 sed '/tc/d' < $tmpfiledir/$userfile_tmp >> $tmpfiledir/$userfile2_tmp
  275.                 rm -rf $tmpfiledir/$userfile_tmp
  276.                 echo "Поиск в базе Zabbix..."
  277.  
  278.                 FILE=$tmpfiledir/$userfile2_tmp
  279.  
  280.                 while read line; do
  281.                     echo "Поиск пользователя $line"
  282.                     us1=%$line%
  283.                    
  284.                     Y1=`echo $data1|cut -d '-' -f 3`
  285.                     M1=`echo $data1|cut -d '-' -f 2`
  286.                     D1=`echo $data1|cut -d '-' -f 1`
  287.                    
  288.                     dt2="%$Y1-$M1-$D1%"
  289.                     cmd="SELECT value,logeventid,from_unixtime(clock) FROM history_log WHERE value LIKE '$us1' AND from_unixtime(clock) LIKE '$dt2';"
  290.                     mysql -h 128.28.248.1 -u auditor -p1 -e "$cmd" -D zabbix > $tmpfiledir/$resultfile
  291.                 done < $FILE
  292.  
  293.                 rm -rf $tmpfiledir/$userfile2_tmp
  294.  
  295.                 echo
  296.                 echo "Ок, результаты поиска записаны в $tmpfiledir/$resultfile"
  297.                 exit 0
  298.  
  299.             ;;
  300.             *)
  301.             clear
  302.             echo
  303.             echo "Введено неправильное действие"
  304.             exit 1
  305.             ;;
  306.         esac
  307.         clear
  308.     ;;
  309.     0)
  310.         exit 0
  311.     ;;
  312.     *)
  313.         clear
  314.         echo
  315.         "Введено неправильное действие"
  316.  
  317.         exit 1
  318.     ;;
  319. esac
  320. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement