Как посмотреть забаненные ip адреса в fail2ban
Перейти к содержимому

Как посмотреть забаненные ip адреса в fail2ban

  • автор:

Удалить из 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 -n Chain INPUT (policy ACCEPT) target prot opt source destination f2b-ReqLimit tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443 f2b-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 destination REJECT all -- 194.150.168.95 0.0.0.0/0 reject-with icmp-port-unreachable REJECT all -- 178.151.40.243 0.0.0.0/0 reject-with icmp-port-unreachable RETURN 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 status Status |- Number of jail: 10 `- Jail list: nginx-req-limit, phpmyadmin, sshd, w00tw00t-scans

Вывод списка IP для конкретной клетки ( для конкретного jail):

# fail2ban-client status phpmyadmin Status 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/bash JAILS=$(fail2ban-client status | grep " Jail list:" | sed 's/`- Jail list:\t\t//g' | sed 's/,//g') for j in $JAILS do echo "$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/)' /var/log/fail2ban.log | sort | uniq -c | sort -n

Примечание: переменная NF равна числу полей в каждой строке в лог файле. $NF является значением для последнего поля.

В конце вывода Вы получите:

1 176.108.160.253 1 78.140.128.228 1 91.201.182.29 2 109.86.212.179 4 194.150.168.95 4 213.61.149.100 8 178.151.40.243

Чтобы запустить этот отчет для всех логов нужно небольшое изменение:

# zgrep -h "Ban " /var/log/fail2ban.log* | awk '' | sort | uniq -c

И получите следующий вывод:

2 109.86.212.179 1 176.108.160.253 8 178.151.40.243 4 194.150.168.95 4 213.61.149.100 1 78.140.128.228 1 91.201.182.29

Какие конкретные IP-адреса участвуют:

# zcat /var/log/fail2ban.log* | awk '(NF == 6 && $NF ~ /^91\.201\./)' | sort | uniq -c

Выход этого будет список IP-адресов, начинающихся с 91.201. Если они выглядят, как будто они частью подсети (или нескольких подсетей).

Группировка по IP адрес и имеми хоста:

Команда для включения хостов в списке немного сложнее. Вы также должны вставить правильный путь к программе logresolve, который преобразует IP-адресов для хостов (например /usr/sbin/logresolve ):

# awk '($(NF-1) = /Ban/)' /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[\ \:] '' | sort | uniq -c | sort -n

Это показывает нам, какие услуги каждый IP-адрес пытается открыть / использовать:
21

Отчет о «сегодняшней деятельности»:

Вот отчет я считаю, полезно запускать до полуночи каждого дня, чтобы генерировать итоги деятельности за день:

# grep "Ban " /var/log/fail2ban.log | grep `date +%Y-%m-%d` | awk '' | sort | awk '' | logresolve | uniq -c | sort -n

Группировка по дате и раздел Fail2ban:

Этот отчет проверяет все Fail2ban лог-файлов и дает вам краткую информацию о том, сколько запрет мероприятия были для каждого раздела на каждый день:

# zgrep -h "Ban " /var/log/fail2ban.log* | awk '' | sort | uniq -c
1 NOTICE 2015-03-13 2 NOTICE 2015-03-15 12 NOTICE 2015-03-17 5 NOTICE 2015-03-19 1 NOTICE 2015-03-20

И убедится что все работает. А на этом, я завершаю свою статью «Удалить из fail2ban заблокированный ip».

fail2ban проверка забаных ip, удаление из списка забаненых

Выводим списки правил используемых на сервере (JAIL):
#fail2ban-client status
Вывод:
fail2ban-client status
Status
|- Number of jail: 7
— Jail list: apache-tcpwrapper, recidive, ssh-iptables, apache-badbots, pbx-gui, asterisk-iptables, vsftpd-iptables

Смотрим статус и статистику на сервере правил необходимой службы контролируемой fail2ban
#fail2ban-client -v status asterisk-iptables
INFO Using socket file /var/run/fail2ban/fail2ban.sock
Status for the jail: asterisk-iptables
|- filter
| |- File list: /var/log/asterisk/fail2ban
| |- Currently failed: 0
| — Total failed: 26
— action
|- Currently banned: 1
| — IP list: 172.16.9.14
— Total banned: 1

Выводим необходимый ip из бана
#fail2ban-client set asterisk-iptables unbanip 172.16.9.14
Проверяем что необходимый ip удален из списка заблокированных
#fail2ban-client -v status asterisk-iptables
INFO Using socket file /var/run/fail2ban/fail2ban.sock
Status for the jail: asterisk-iptables
|- filter
| |- File list: /var/log/asterisk/fail2ban
| |- Currently failed: 0
| — Total failed: 26
— action
|- Currently banned: 0
| — IP list:
`- Total banned: 1

Для общего понимания
«Total banned» — это общее количество IP-адресов, которые были забанены для этого правила (и, вероятно, были забанены).
« Currently banned» — это ЕДИНСТВЕННЫЕ IP-адреса, которые в настоящее время запрещены для этой тюрьмы (и список IP-адресов подтверждает это).
Так же если вы хотите увидеть список заблокированных IP-адресов с их таймаутом (после истечения времени бана, ip удаляются из запрещенного пула), используйте
ipset list

Fail2ban

Основное предназначение fail2ban — защита от несанкционированного доступа, что возможно благодаря тщательному отслеживанию сетевой активности на основных портах и чтению журналов записей.

Чтобы блокировать адрес, fail2ban создает правило в брандмауэре netfilter . Блокировка настраивается путем внесения изменений в правила iptables .

Программа особенно эффективна против так называемых brute-force атак, поскольку она нейтрализует атакующего таким образом, что все пакеты, отправленные с устройства, IP-адрес которого по той или иной причине попал в черный список, отбрасываются.

Установка

CentOS 7/Red Hat

$ yum install fail2ban

Ubuntu/Debian

$ apt install fail2ban

CentOS 6

  • Добавляем репозиторий:
$ rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  • Устанавливаем fail2ban:
$ yum install fail2ban

Запуск

$ systemctl enable fail2ban $ systemctl start fail2ban
$ service fail2ban start

Настройка

Процесс настройки fail2ban не зависит от дистрибутива Linux.

Основной конфигурационный файл jail.conf находится в каталоге /etc/fail2ban/ . Однако, его не рекомендуется менять и для настройки используют подключаемые файлы из каталога /etc/fail2ban/jail.d .

Существующие фильтры лежат в директории /etc/fail2ban/filter.d . Можно изменять существующие фильтры или на их основе делать собственные.

Существующие правила реагирования хранятся в директории /etc/fail2ban/action.d .

Как правило, все стандартные файлы содержат подробные комментарии.

Действия

Файлы с настройкой действий находятся в каталоге /etc/fail2ban/action.d .

Остановимся на описании самых используемых действий:

  • iptables — создание простого правила в netfilter с помощью одноименной утилиты;
  • iptables-multiport — использование модуля multiports, позволяющий добавлять диапазоны портов для блокировки;
  • iptables-ipset — использование ipset для придания более лаконичного вида правилам;
  • iptables-allports — блокирует для адреса все порты.

Фильтры

Фильтры, в основном, представляют набор регулярных выражений для поиска ключевых слов в log-файлах. Они находятся в каталоге /etc/fail2ban/filter.d .

Для создания и настройки своих фильтров, можно использовать имеющиеся файлы в качестве шаблона.

Файлы с фильтрами должны иметь расширение .conf . В дальнейшем использовать указанный фильтр можно, обратившись к нему в правиле по имени файла без расширения.

Например, чтобы использовать фильтр /etc/fail2ban/filter.d/my.conf в правиле надо указать:

filter = my

Указание параметров на примере

Для нового правила необходимо создать конфигурационный файл в каталоге /etc/fail2ban/jail.d :

$ vi /etc/fail2ban/jail.d/service.conf
[ssh] enabled = true port = ssh filter = sshd action = iptables[name=sshd, port=ssh, protocol=tcp] logpath = /var/log/auth.log maxretry = 10 findtime = 600 ignoreip = 127.0.0.1/8
  • ssh — название для правила.
  • enabled позволяет быстро включать (true) или отключать (false) правило;
  • port — порт целевого сервиса. Принимается буквенное или цифирное обозначение.
  • filter — фильтр (критерий поиска), который будет использоваться для поиска подозрительных действий. По сути, это имя файла из каталога /etc/fail2ban/filter.d без .conf на конце.
  • action — действие, совершаемое в случае срабатывания правила. В квадратных скобках указаны название для правила, сетевой порт и протокол для блокирования.
  • logpath — расположение лог-файла, в котором фильтр будет искать подозрительную активность на основе описанных критериев.
    • Примечание: Если путь к файлу хранения логов указан некорректно, перезапуск Fail2ban завершится сообщением об ошибке. Если файла не существует, его нужно создать. Лог должен иметь права доступа 755.

    Если какой-то из параметров не указан в конкретном правиле, для него берется значение по умолчанию, описанное в правиле DEFAULT.

    Примечание: Для применения новые правил необходимо перезапустить fail2ban одной из следующих команд:

    $ systemctl restart fail2ban
    $ service fail2ban restart

    Работа со списком заблокированных адресов

    Просмотр

    fail2ban-client status

    Без имени правила будет отображен весь список активных правил.

    • Получить список правил можно командой:
    $ fail2ban-client status
    • Получить статистику заблокированных адресов можно следующей командой:
    $ fail2ban-client status ssh `- action |- Currently banned: 2 | `- IP list: 31.207.47.55 10.212.245.29

    Удаление адреса из списка

    fail2ban-client set unbanip
    $ fail2ban-client set ssh unbanip 31.207.47.55

    Примеры

    Блокировка доступа по SSH

    [ssh-iptables] # 'enabled = true' означает что защита SSH включена. # Ее можно отключить с помощью 'enabled = false'. enabled = true # Использовать фильтр: /etc/fail2ban/filter.d/sshd.conf filter = sshd # Действия, выполняемые при блокировке IP адреса: action = iptables[name=SSH, port=ssh, protocol=tcp] # Отправлять уведомления на admin@example.com sendmail-whois[name=SSH, dest=admin@example.com, sendername="Fail2Ban"] # Файл с логами, которые будет отслеживать Fail2Ban: logpath = /var/log/secure # если в течение 1 часа findtime = 3600 # произведено 5 неудачных попыток залогиниться maxretry = 5 # IP адрес будет забанен на 24 часа bantime = 86400

    NGINX DDoS (req limit)

    Данное правило поможет защитить веб-сервер nginx от DDoS-атак. В некоторых сборках, для данного правила может не оказаться готового фильтра, поэтому в данном примере, мы его создадим вручную.

    vi /etc/fail2ban/filter.d/nginx-limit-req.conf
    [Definition] ngx_limit_req_zones = [^"]+ failregex = ^\s*\[error\] \d+#\d+: \*\d+ limiting requests, excess: [\d\.]+ by zone "(?:%(ngx_limit_req_zones)s)", client: ignoreregex =
    • Создаем правило в fail2ban:
    vi /etc/fail2ban/jail.d/nginx-ddos.conf
    [nginx-ddos] enabled = true port = http,https filter = nginx-limit-req action = iptables-multiport[name=nginxddos, port="http,https", protocol=tcp] logpath = /var/log/nginx/error.log

    Как разблокировать IP в fail2ban

    Установка Fail2ban на CentOS

    Многие инструменты безопасности не защищают вашу систему от взлома. Даже установка самого надежного пароля не решает проблемы, так как его можно взломать несколькими способами. Fail2ban — отличный инструмент, позволяющий заблокировать IP-адрес, который делает неправильные попытки аутентификации. Вместо того, чтобы позволять пользователю делать попытки и добиваться успеха, он в первую очередь их блокирует. Следовательно, он предотвращает вторжение до того, как они войдут в вашу систему.

    При неправильных попытках аутентификации fail2ban может блокировать и легитимные соединения. По умолчанию время бана составляет 10 минут. Через 10 минут заблокированный IP-адрес разблокируется автоматически. Однако, если легитимная система заблокирована, и вы не можете дождаться истечения времени блокировки, вы можете разблокировать ее вручную. В этом посте мы расскажем, как разблокировать IP-адрес в fail2ban.

    Задний план:

    Когда пользователь пытается войти в систему с неверным паролем более указанного в опции maxretry в файл /etc/fail2ban/jail.local, он получает запрет от Fail2ban. Запрещая IP-адрес системы, ни один пользователь запрещенной системы не может пользоваться запрещенной службой.

    Просмотр заблокированного IP-адреса и информации о тюрьме

    Чтобы узнать, какие IP-адреса запрещены и в какое время, вы можете просмотреть журналы с сервера, на котором установлен fail2ban:

    $ cat /var/log/fail2ban.log

    Следующие выходные данные показывают, что IP-адрес «192.168.72.186» заблокирован fail2ban и находится в тюрьме с именем «sshd».

    Вы также можете использовать следующую команду с именем тюрьмы, чтобы показать заблокированные IP-адреса:

    $ sudo fail2ban-client status

    Например, в нашем случае заблокированный IP-адрес находится в тюрьме «sshd», поэтому команда будет выглядеть так:

    $ sudo fail2ban-client status sshd

    Разбанить IP в fail2ban

    Чтобы разблокировать IP-адрес в fail2ban и удалить его из тюрьмы, используйте следующий синтаксис:

    $ sudo fail2ban-client set jail_name unbanip xxx.xxx.xxx.xxx

    где «jail_name» — это тюрьма, в которой находится заблокированный IP-адрес, а «xxx.xxx.xxx.xxx» — это заблокированный IP-адрес.

    Например, чтобы разблокировать IP-адрес «192.168.72.186», который находится в тюрьме «sshd», команда будет выглядеть так:

    $ sudo fail2ban-client set sshd unbanip 192.168.72.186

    Убедитесь, что IP-адрес разблокирован

    Теперь, чтобы проверить, был ли разблокирован IP-адрес, просмотрите журналы, используя следующую команду:

    $ cat /var/log/fail2ban.log

    В журналах вы увидите запись Unban.

    Или вы также можете использовать следующую команду, чтобы подтвердить, был ли IP-адрес разблокирован:

    $ sudo fail2ban-client status

    Замените «jail_name» названием тюрьмы, в которой находился заблокированный IP-адрес.

    Если вы не нашли IP-адрес в списке запрещенных IP-адресов, это означает, что он был успешно разблокирован.

    Вот как вы можете разблокировать IP-адрес в fail2ban. После разблокировки IP-адреса вы можете легко войти на сервер через SSH.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *