
Удалить из fail2ban заблокированный ip
Хочу рассказать в своей теме «Удалить из fail2ban заблокированный ip» как удалить из fail2ban заблокированный ip. Процедура очень простая и сейчас я покажу на готовых примерах как я это выполнял.
Проверим список ip адресов:
# iptables -L -n
Вот что имеем:
┌(captain-notes)─(✓)─(11:54 AM Tue Mar 17)└─(/etc/fail2ban)─(12 files, 88Kb)─> iptables -L -nChain INPUT (policy ACCEPT)target prot opt source destinationf2b-ReqLimit tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443f2b-phpmyadmin tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443[...]Chain f2b-phpmyadmin (1 references)target prot opt source destinationREJECT all -- 194.150.168.95 0.0.0.0/0 reject-with icmp-port-unreachableREJECT all -- 178.151.40.243 0.0.0.0/0 reject-with icmp-port-unreachableRETURN all -- 0.0.0.0/0 0.0.0.0/0[...]
Удалить, например, из таблицы fail2ban-roundcube ip можно с помощью команды:
# iptables -D fail2ban-roundcube -s xxx.xxx.xxx.xxx -j DROP
где xxx.xxx.xxx.xxx — ip адрес который надо разблокировать.
Если брать мой пример, то стоит выполнить:
# iptables -D f2b-phpmyadmin· -s 194.150.168.95 -j REJECT#·iptables -D f2b-phpmyadmin· -s 178.151.40.243·-j REJECT
f2b-phpmyadmin — это цепочка.
194.150.168.95, 178.151.40.243 — заблокированные ИП.
REJECT, DROP… — означает (говорит) что ИП был заблокирован.
Можно еще раз вызвать команду:
# iptables -L -n
Есть еще 1 способ это сделать, средствами самого fail2ban. Сейчас покажу как это можно сделать.
Выводим список всех наших клеток (jail):
# fail2ban-client statusStatus|- Number of jail: 10`- Jail list: nginx-req-limit, phpmyadmin, sshd, w00tw00t-scans
Вывод списка IP для конкретной клетки ( для конкретного jail):
# fail2ban-client status·phpmyadminStatus for the jail: phpmyadmin|- Filter| |- Currently failed: 0| |- Total failed: 15| `- File list: /var/log/nginx/pma.windows-notes.org.log`- Actions|- Currently banned: 1|- Total banned: 5`- Banned IP list: 178.151.40.243
То для того чтобы разбанить ( удалить ИП с заблокированного листа) необходимо выполнить следующую команду:
# fail2ban-client set phpmyadmin·unbanip·178.151.40.243
phpmyadmin — имя клетки.
178.151.40.243 — заблокированный IP (меняем на свой).
Создадим скрипт для подчета количиства забаненных ИП во всех jail-ах:
# vim /root/checklist_ban#!/bin/bashJAILS=$(fail2ban-client status | grep " Jail list:" | sed 's/`- Jail list:tt//g' | sed 's/,//g')for j in $JAILSdoecho "$j $(fail2ban-client status $j | grep " Currently banned:" | sed 's/ |- Currently banned:t//g')"done
Выставим права на данный файл:
$ chmod 700 /root/checklist_ban
запускаем данный скрипт:
# /root/checklist_ban
Генерация простых отчетов.
Все из следующих команд можно запустить из командной строки или с помощью скрипта. Они написаны для систем Linux / UNIX, но может работать и на других платформах.
Группировка по IP адресу:
# awk '($(NF-1) = /Ban/){print $NF}' /var/log/fail2ban.log | sort | uniq -c | sort -n
Примечание: переменная NF равна числу полей в каждой строке в лог файле. $NF является значением для последнего поля.
В конце вывода Вы получите:
1 176.108.160.2531 78.140.128.2281 91.201.182.292 109.86.212.1794 194.150.168.954 213.61.149.1008 178.151.40.243
Чтобы запустить этот отчет для всех логов нужно небольшое изменение:
# zgrep -h "Ban " /var/log/fail2ban.log* | awk '{print $NF}' | sort | uniq -c
И получите следующий вывод:
2 109.86.212.1791 176.108.160.2538 178.151.40.2434 194.150.168.954 213.61.149.1001 78.140.128.2281 91.201.182.29
Какие конкретные IP-адреса участвуют:
#·zcat /var/log/fail2ban.log* | awk '(NF == 6 && $NF ~ /^91.201./){print $NF}' | sort | uniq -c
Выход этого будет список IP-адресов, начинающихся с 91.201. Если они выглядят, как будто они частью подсети (или нескольких подсетей).
Группировка по IP адрес и имеми хоста:
Команда для включения хостов в списке немного сложнее. Вы также должны вставить правильный путь к программе logresolve, который преобразует IP-адресов для хостов (например /usr/sbin/logresolve ):
#·awk '($(NF-1) = /Ban/){print $NF,"("$NF")"}' /var/log/fail2ban.log | sort | logresolve | uniq -c | sort -n
Примечание: Команда logresolve может занять некоторое время, особенно, если есть много IP-адресов, подлежащих обработке.
Вывод получим следующий:
1 160-108-176.sktv.ru (176.108.160.253)1 91.201.182.29 (91.201.182.29)1 nat.webazilla.com (78.140.128.228)2 179.212.86.109.triolan.net (109.86.212.179)4 h-213.61.149.100.host.de.colt.net (213.61.149.100)4 kaputte.li (194.150.168.95)8 243.40.151.178.triolan.net (178.151.40.243)
Группировка по IP адресу и в разделе Fail2ban:
#·grep "Ban " /var/log/fail2ban.log | awk -F[ :] '{print $10,$8}' | sort | uniq -c | sort -n
Это показывает нам, какие услуги каждый IP-адрес пытается открыть / использовать:
21
Отчет о «сегодняшней деятельности»:
Вот отчет я считаю, полезно запускать до полуночи каждого дня, чтобы генерировать итоги деятельности за день:
# grep "Ban " /var/log/fail2ban.log | grep `date +%Y-%m-%d` | awk '{print $NF}' | sort | awk '{print $1,"("$1")"}' | logresolve | uniq -c | sort -n
Группировка по дате и раздел Fail2ban:
Этот отчет проверяет все Fail2ban лог-файлов и дает вам краткую информацию о том, сколько запрет мероприятия были для каждого раздела на каждый день:
#·zgrep -h "Ban " /var/log/fail2ban.log* | awk '{print $5,$1}' | sort | uniq -c
Вывод:
1 NOTICE 2015-03-132 NOTICE 2015-03-1512 NOTICE 2015-03-175 NOTICE 2015-03-191 NOTICE 2015-03-20
И убедится что все работает. А на этом, я завершаю свою статью «Удалить из fail2ban заблокированный ip».
Было ли это полезно?
0 / 0