Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ###########################################ИСПРАВИЛ###########################################
- #!/bin/bash
- #Переменные
- tmpdir='/tmp'
- logdir='/var/log'
- badip='badip.list'
- #Парсим логи на предмет строк с IP-адресами тех кто ошибается с авторизацией
- #и пишем их в текстовый файл.
- cat $logdir/auth.log | grep 'Failed password' > $tmpdir/badip.tmp
- cat $logdir/auth.log | grep 'authentication failure' >> $tmpdir/badip.tmp
- cat $logdir/proftpd/proftpd.log |grep 'no such user' >> $tmpdir/badip.tmp
- cat $logdir/proftpd/proftpd.log |grep 'SECURITY VIOLATION' >> $tmpdir/badip.tmp
- #Найти IP-адреса в текстовом файле. Внимание! Адрес может бы некорректным!!!
- grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" $tmpdir/badip.tmp >> $tmpdir/badip.tmp1
- #Удаляем лишний файлик ;-)
- rm -R $tmpdir/badip.tmp
- #Проверка файла на повторяющиеся строки и вывод уникальных строк в файл
- awk '!_[$0]++' $tmpdir/badip.tmp1 > $tmpdir/$badip
- #Удаляем лишний файлик
- rm -R $tmpdir/badip.tmp1
- #Проверяем наличие блек-листа IPSET
- #Если нет, создадим
- ipset -L blacklist | grep 'ipset v6.20.1: The set with the given name does not exist'
- if [ $? -ne 1 ];
- then
- ipset -N blacklist iphash
- fi
- #Проверяем наличие своего IP-адреса в БАН-листе
- #Если есть свой IP в базе (сам ошибся с авторизацией в системе)
- #то в этом случае строка с нашими адресами выпиливается со списка
- sed -i '/172.16.0.2/d' $tmpdir/$badip
- sed -i '/172.16.0.3/d' $tmpdir/$badip
- sed -i '/172.16.1.2/d' $tmpdir/$badip
- sed -i '/172.16.1.3/d' $tmpdir/$badip
- #Очищаем список плохих адресов
- ipset -F blacklist
- #Считываем файл построчно и баним IP-адреса
- FILE=$tmpdir/$badip #допилено
- while read line; do
- ipset -A blacklist $line
- done < $FILE
- ####Проверяем наличие правил iptables
- iptables -L | grep 'DROP all -- anywhere anywhere match-set blacklist src'
- #Если нет, добавляем правило
- if [ $? -ne 0 ];
- then
- iptables -v -I INPUT -m set --match-set blacklist src -j DROP
- fi
- #Если нет, добавляем правило
- iptables -L | grep 'LOG all -- anywhere anywhere match-set blacklist src LOG level warning prefix "DROP blacklist entry"'
- if [ $? -ne 0 ];
- then
- iptables -v -I INPUT -m set --match-set blacklist src -j LOG --log-prefix "DROP blacklist entry"
- fi
- #Можно удалить $badip
- rm -R $tmpdir/$badip
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement