
Unichain. Устанавливаем ноду || How to run an Unichain node, Step by step
Manual installation || Установка вручную1 Update your system || Обновляем систему и список пакетов.sudo apt update && sudo apt upgrade -y 2 Install Docker ( If docker is installed, skip this step) || Устанавливаем Docker (Если докер установлен, пропускаем этот шаг).curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh Adding a user to a docker workgroup || Добавление пользователя в рабочую группа dockermyusername=$(echo $USER) sudo usermod -aG docker $myusername 3...
DevOps: Устанавливаем и настраиваем систему мониторинга с нуля. Все в одном гайде. Prometheus + Node…
!ПРОЧИТ МЕНЯ! Перед тем как бездумно начать копировать и вставлять, прочтите статью. Выберите варианты установки. Оба варианты должны быть рабочими. Последнее тестирование выполнялось на варианте с использованием скриптов. Рекомендация: ПЕРЕД ТЕМ КАК УСТАНАВЛИВАТЬ НА БОЕВОЙ СЕРВЕР: арендуйте 2 vps и выполните тестирование. Написание таких мануалов занимает много времени. Спасибо, что воспользовались этим мануалом.Вводные данные Краткое описание Подключение и настройка доступа к серверам Настр...
DevOps: С чем его едят: Prometheus, Node Exporter, Grafana
ОГЛАВЛЕНИЕ: Prometheus Node Exporter Grafana Отказ от ответственностиОфициальные ссылки: Prometheus + Node Exporter Официальный сайт Prometheus: https://prometheus.io/ GitHub репозиторий Prometheus: https://github.com/prometheus/prometheus Node Exporter GitHub репозиторий: https://github.com/prometheus/node_exporter Документация по Node Exporter: https://prometheus.io/docs/guides/node-exporter/ Grafana Официальный сайт Grafana: https://grafana.com/ Документация по Grafana: https://grafana.com...
<100 subscribers

Unichain. Устанавливаем ноду || How to run an Unichain node, Step by step
Manual installation || Установка вручную1 Update your system || Обновляем систему и список пакетов.sudo apt update && sudo apt upgrade -y 2 Install Docker ( If docker is installed, skip this step) || Устанавливаем Docker (Если докер установлен, пропускаем этот шаг).curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh Adding a user to a docker workgroup || Добавление пользователя в рабочую группа dockermyusername=$(echo $USER) sudo usermod -aG docker $myusername 3...
DevOps: Устанавливаем и настраиваем систему мониторинга с нуля. Все в одном гайде. Prometheus + Node…
!ПРОЧИТ МЕНЯ! Перед тем как бездумно начать копировать и вставлять, прочтите статью. Выберите варианты установки. Оба варианты должны быть рабочими. Последнее тестирование выполнялось на варианте с использованием скриптов. Рекомендация: ПЕРЕД ТЕМ КАК УСТАНАВЛИВАТЬ НА БОЕВОЙ СЕРВЕР: арендуйте 2 vps и выполните тестирование. Написание таких мануалов занимает много времени. Спасибо, что воспользовались этим мануалом.Вводные данные Краткое описание Подключение и настройка доступа к серверам Настр...
DevOps: С чем его едят: Prometheus, Node Exporter, Grafana
ОГЛАВЛЕНИЕ: Prometheus Node Exporter Grafana Отказ от ответственностиОфициальные ссылки: Prometheus + Node Exporter Официальный сайт Prometheus: https://prometheus.io/ GitHub репозиторий Prometheus: https://github.com/prometheus/prometheus Node Exporter GitHub репозиторий: https://github.com/prometheus/node_exporter Документация по Node Exporter: https://prometheus.io/docs/guides/node-exporter/ Grafana Официальный сайт Grafana: https://grafana.com/ Документация по Grafana: https://grafana.com...
Share Dialog
Share Dialog
ОГЛАВЛЕНИЕ
Основные команды Fail2Ban
Что такое Fail2Ban
Fail2Ban установка и настройка
Fail2Ban
Список полезных команд для управления и мониторинга Fail2Ban:
Проверка статуса Fail2Ban:
sudo systemctl status fail2ban
Запуск Fail2Ban:
sudo systemctl start fail2ban
Остановка Fail2Ban:
sudo systemctl stop fail2ban
Перезапуск Fail2Ban:
Перезагрузка конфигурации Fail2Ban без остановки службы:
Проверка состояния всех jail'ов:
sudo fail2ban-client status
Проверка состояния конкретного jail:
sudo fail2ban-client status <название_jail>
Пример для SSH:
sudo fail2ban-client status sshd
Просмотр заблокированных IP-адресов для конкретного jail:
sudo fail2ban-client status <название_jail> | grep "Banned IP list"
Разблокировка IP-адреса (напр. для jail 'sshd'):
sudo fail2ban-client set <название_jail> unbanip <IP-адрес>
Пример:
sudo fail2ban-client set sshd unbanip 192.168.1.100
Получение информации о конкретном jail:
sudo fail2ban-client get <название_jail> <параметр>
Пример для получения настроек bantime jail'а:
sudo fail2ban-client get sshd bantime
Тестирование конфигурации Fail2Ban: Вы можете протестировать конфигурацию Fail2Ban на наличие синтаксических ошибок, не запуская службу:
sudo fail2ban-regex <путь_к_логу> <путь_к_фильтру>
Просмотр логов Fail2Ban: Логи Fail2Ban обычно находятся в /var/log/fail2ban.log. Вы можете просматривать их с помощью:
sudo tail -f /var/log/fail2ban.log
Проверить статус Fail2Ban:
sudo systemctl status fail2ban
Проверить состояние jail для SSH:
sudo fail2ban-client status sshd
Разблокировать IP-адрес 192.168.1.100 для jail 'sshd':
sudo fail2ban-client set sshd unbanip 192.168.1.100
Эти команды помогут вам эффективно управлять Fail2Ban, контролировать состояние системы безопасности и выполнять задачи по администрированию.
Fail2Ban — это инструмент для повышения безопасности серверов и сетевых систем. Его основная функция заключается в предотвращении атак типа brute force и других видов несанкционированного доступа путем автоматической блокировки IP-адресов, которые демонстрируют подозрительное поведение.
Fail2Ban — это программное обеспечение, которое следит за логами системных сервисов и обнаруживает подозрительное поведение, такое как многочисленные неудачные попытки входа. При обнаружении такого поведения, Fail2Ban автоматически добавляет правила в фаервол, чтобы заблокировать IP-адреса злоумышленников.
Мониторинг логов:
Fail2Ban анализирует журналы логов различных сервисов (например, SSH, Apache, Nginx) в поисках признаков атак или неудачных попыток входа.
Обнаружение подозрительного поведения:
Когда Fail2Ban обнаруживает определённое количество неудачных попыток входа или другие подозрительные действия, он определяет, что IP-адрес нарушителя должен быть заблокирован.
Блокировка IP-адресов:
Fail2Ban автоматически добавляет правила в фаервол (например, iptables), чтобы блокировать доступ с этих IP-адресов на определённое время.
Оповещение:
Fail2Ban может также отправлять уведомления администраторам о подозрительном поведении и блокировках.
Защита от атак brute force:
Fail2Ban защищает серверы от атак brute force, при которых злоумышленники пытаются подобрать пароли с использованием автоматизированных инструментов.
Повышение безопасности:
За счёт автоматической блокировки подозрительных IP-адресов Fail2Ban снижает риск успешного взлома системы и увеличивает общую безопасность сервера.
Снижение нагрузки на администраторов:
Автоматическая блокировка устраняет необходимость вручную отслеживать и блокировать злонамеренные IP-адреса, что экономит время и усилия системных администраторов.
Настройка и гибкость:
Fail2Ban предоставляет возможность настройки различных фильтров и действий в зависимости от конкретных потребностей, таких как блокировка различных сервисов и использование разных фаерволов.
Фильтры:
Определяют, какие строки в логах являются подозрительными. Фильтры настраиваются в виде регулярных выражений.
Действия:
Определяют, что делать, когда обнаружено подозрительное поведение, например, блокировать IP-адрес с помощью iptables.
Jail'ы:
Определяют, какие фильтры и действия применяются к каким сервисам. Каждый jail соответствует конкретному сервису (например, SSH, Apache) и имеет свои собственные настройки.
Fail2Ban является важным инструментом для обеспечения безопасности серверов и сетевых систем, помогая предотвращать атаки и защищать ресурсы от несанкционированного доступа.
Установка скриптом
После выполнения скрипта переходим в раздел “Основная конфигурация” и следуем дальнейшим инструкция.
bash <(curl -s https://raw.githubusercontent.com/odanoder/scripts/main/firewall/fail2ban/install_fail2ban.sh)
Ручная установка
Обновите список пакетов:
sudo apt update && sudo apt upgrade -y
Установите Fail2Ban:
sudo apt install fail2ban -y
Проверка статуса Fail2Ban. Должно быть Active: inactive (dead). Статус inactive (dead) для службы Fail2Ban означает, что служба не запущена:
sudo systemctl status fail2ban
Создайте резервную копию оригинального конфигурационного файла или создать собственный фаил. Оригинальный файл конфигурации jail.conf содержит стандартные настройки Fail2Ban, которые могут быть перезаписаны при обновлениях пакета. Чтобы избежать изменений в оригинальном файле и сохранить возможность легко возвращаться к стандартным настройкам, создайте резервную копию и используйте файл jail.local (предназначен для добавления и изменения настроек без изменения оригинального файла jail.conf) для пользовательских настроек:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
/etc/fail2ban/jail.conf:
Назначение: Основной конфигурационный файл с заводскими настройками. Изменения в этом файле могут быть перезаписаны при обновлениях пакета, поэтому не рекомендуется изменять его напрямую.
/etc/fail2ban/jail.local:
Назначение: Файл для пользовательских настроек и переопределения настроек из jail.conf. Используется для добавления или изменения настроек, чтобы изменения не были утеряны при обновлениях.
/var/log/fail2ban.log:
Назначение: Лог-файл Fail2Ban, где записываются все события и действия. Полезен для диагностики и мониторинга активности Fail2Ban.
/etc/fail2ban/filter.d/:
Назначение: Директория с фильтрами для различных сервисов. Фильтры определяют, какие строки в логах считаются подозрительными.
/etc/fail2ban/action.d/:
Назначение: Директория с действиями, которые Fail2Ban выполняет при обнаружении подозрительной активности (например, блокировка IP через iptables).
Откройте файл jail.local для редактирования:
sudo nano /etc/fail2ban/jail.local
Настройка разделе [DEFAULT] найдите строчки\параметры:
ВНИМАНИЕ: Параметры которые указываются в разделе[DEFAULT] применяются ко всем параметрам которые мы будем активировать. Но если мы укажем параметры внутри раздела (например в [sshd]) - то эти параметры будут иметь более высокий приоритет над [DEFAULT].
Параметры: bantime findtime maxretry - настройте на свое усмотрение или оставьте по умолчанию.
# "bantime" is the number of seconds that a host is banned.
bantime = 10m
# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 10m
# "maxretry" is the number of failures before a host get banned.
maxretry = 5
Настройка защиты SSH:
Найдите раздел [sshd] и убедитесь, что он включен и настроен правильно:
#
# JAILS
#
#
# SSH servers
#
[sshd]
# To use more aggressive sshd modes set filter parameter "mode" in jail.local:
# normal (default), ddos, extra or aggressive (combines all).
# See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.
#mode = normal
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
[dropbear]
port = ssh
logpath = %(dropbear_log)s
backend = %(dropbear_backend)s
[selinux-ssh]
port = ssh
logpath = %(auditd_log)s
Вносим изменения
[sshd]
#mode = normal
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
Объяснение параметров:
enabled = true: Включает защиту для SSH.
Перезапустите Fail2Ban для применения изменений:
Проверка статуса сервиса.
sudo systemctl status fail2ban
Должно быть Active:active (running). Статус active (running) для службы Fail2Ban означает, что служба не запущена.
Пример вывода:
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2024-09-04 09:00:00 UTC; 1h ago
Docs: man:fail2ban(1)
Main PID: 1234 (fail2ban-server)
Tasks: 5 (limit: 2359)
Memory: 20.0M
CGroup: /system.slice/fail2ban.service
└─1234 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
Sep 04 09:00:00 your-server systemd[1]: Started Fail2Ban Service.
Sep 04 09:00:00 your-server fail2ban-server[1234]: Server ready
Проверка версии Fail2Ban. Пример вывода: Fail2Ban v0.11.2
sudo fail2ban-client version
Проверка доступности Fail2Ban. Пример вывода: pong
sudo fail2ban-client ping
Проверка активных ловушек. Чтобы получить список всех активных jail'ов:
sudo fail2ban-client status
Пример вывода:
Status
|- Number of jail: 1
`- Jail list: sshd, apache-auth, nginx-http-auth
#цифра 1 - означает что у нас есть 1 активные ловушки.
Подробная информация о конкретном jail, в нашем случае ssh. Чтобы получить подробную информацию о заблокированных IP-адресах для конкретного jail, например, для sshd:
sudo fail2ban-client status sshd
Пример вывода, после того как сервис поработает какое-то время и будут неудачные попытки подключения:
Status for the jail: sshd
|- Filter
| |- File list: /var/log/auth.log
| |- DateTime: 2024-09-04 10:00:00
| |- Log Level: INFO
| |- LogPath: /var/log/auth.log
| |- Failregex: ^%(__prefix_line)s(?:error:|fatal:|warning:|crit:) \\[sshd\\] \\[.*\\]: Failed password for invalid user .* from <HOST>
|
|- Actions
| |- Ban action: iptables-multiport[name=sshd, port="ssh", protocol="tcp"]
|
|- Currently banned:
| |- 192.168.1.10
| |- 203.0.113.5
|
|- Total banned: 2
Попробуйте подключиться с другого ip адреса и проверьте, корректность работы Fail2Ban.
После того как вы убедились что все работает и сохранили все настройки. Выйдите полностью из системы (закройте консоль) и попробуйте выполнить авторизацию. Если все получилось отлично. Если что-то пошло не так, просто перезагрузит ваш сервер. Fail2Ban на включен на автоматическую активацию после перезагрузки или выключения сервера. По идее с данными параметрами все должно работать правильно.
Включение Fail2Ban для автоматического запуска после сбоя или рестарта сервера:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Проверка статуса Fail2Ban. Вы должны увидеть ответ enabled, что подтверждает, что Fail2Ban настроен для автоматического запуска.:
sudo systemctl is-enabled fail2ban
Дополнительные настройки (опционально)
Разблокировка IP
Сброс настроек Fail2Ban
Удаление Fail2Ban
Настройка того же файла jail.local
sudo nano /etc/fail2ban/jail.local
Находим раздел [recidive] и добавляем изменения
[recidive] — это специальный jail в Fail2Ban, который предназначен для обработки IP-адресов, которые были забанены в разных jail'ах. Его задача — обнаруживать и наказывать IP-адреса, которые систематически пытаются нарушить безопасность, даже если они избегают банов в других конкретных jail'ах.
# Jail for more extended banning of persistent abusers
# !!! WARNINGS !!!
# 1. Make sure that your loglevel specified in fail2ban.conf/.local
# is not at DEBUG level -- which might then cause fail2ban to fall into
# an infinite loop constantly feeding itself with non-informative lines
# 2. Increase dbpurgeage defined in fail2ban.conf to e.g. 648000 (7.5 days)
# to maintain entries for failed logins for sufficient amount of time
[recidive]
enabled = true
logpath = /var/log/fail2ban.log
banaction = %(banaction_allports)s
maxretry = 10
bantime = 3d
findtime = 1d
enabled: Указывает, включен ли данный jail. Если true, он будет активен.
bantime: Время, на которое IP-адрес будет заблокирован после достижения maxretry. Указывается в секундах, минутах, часах или днях. Например, 3d — это 3 дня.
maxretry: Количество попыток, после которых IP-адрес будет заблокирован, если нарушения продолжаются в течение findtime.
findtime: Период времени, в течение которого будет учитываться количество попыток (maxretry). Например, 1d — это 1 день.
Для разблокировки IP-адреса, который был забанен Fail2Ban, используйте команду fail2ban-client:
sudo fail2ban-client set <jail_name> unbanip <ip_address>
Замените <jail_name> на имя конкретного jail'а (например, sshd), а <ip_address> на IP-адрес, который вы хотите разблокировать.
Пример:
sudo fail2ban-client set sshd unbanip 192.168.1.100
Посмотреть заблокированные IP-адреса для всех jail'ов
sudo iptables -L -n --line-numbers
Посмотреть заблокированные IP-адреса для конкретного jail SSH
sudo fail2ban-client status sshd
Если вы хотите сбросить настройки Fail2Ban, чтобы вернуть его к исходным настройкам, вы можете перезапустить Fail2Ban и очистить его текущие данные. Для этого выполните следующие шаги:
Очистка текущих данных Fail2Ban (например, сброс логов и состояния). Удалите файлы блокировки (например, чтобы сбросить все заблокированные IP-адреса):
sudo rm -f /var/lib/fail2ban/fail2ban.sqlite3
Перезапустите Fail2Ban после очистки:
Чтобы полностью удалить Fail2Ban с вашего сервера, выполните следующие шаги:
Удаление скриптом
bash <(curl -s https://raw.githubusercontent.com/odanoder/scripts/main/firewall/fail2ban/remove_fail2ban.sh)
Удаление вручную
sudo systemctl stop fail2ban.service
sudo systemctl disable fail2ban.service
sudo rm /lib/systemd/system/fail2ban.service
sudo systemctl daemon-reload
Удалите пакет Fail2Ban:
sudo apt remove fail2ban -y
Удалите остаточные файлы конфигурации и логи:
sudo rm -rf /etc/fail2ban
sudo rm -rf /var/log/fail2ban
sudo rm -rf /var/lib/fail2ban
Удалите пакеты зависимостей (если нужно) (ОПЦИОНАЛЬНО), если не понимаете пропустите этот шаг. Чтобы удалить пакеты, которые были установлены вместе с Fail2Ban и больше не нужны, выполните:
sudo apt-get autoremove
Проверьте статус Fail2Ban (чтобы убедиться, что он удален):
sudo systemctl status fail2ban
Описание
ОГЛАВЛЕНИЕ
Основные команды Fail2Ban
Что такое Fail2Ban
Fail2Ban установка и настройка
Fail2Ban
Список полезных команд для управления и мониторинга Fail2Ban:
Проверка статуса Fail2Ban:
sudo systemctl status fail2ban
Запуск Fail2Ban:
sudo systemctl start fail2ban
Остановка Fail2Ban:
sudo systemctl stop fail2ban
Перезапуск Fail2Ban:
Перезагрузка конфигурации Fail2Ban без остановки службы:
Проверка состояния всех jail'ов:
sudo fail2ban-client status
Проверка состояния конкретного jail:
sudo fail2ban-client status <название_jail>
Пример для SSH:
sudo fail2ban-client status sshd
Просмотр заблокированных IP-адресов для конкретного jail:
sudo fail2ban-client status <название_jail> | grep "Banned IP list"
Разблокировка IP-адреса (напр. для jail 'sshd'):
sudo fail2ban-client set <название_jail> unbanip <IP-адрес>
Пример:
sudo fail2ban-client set sshd unbanip 192.168.1.100
Получение информации о конкретном jail:
sudo fail2ban-client get <название_jail> <параметр>
Пример для получения настроек bantime jail'а:
sudo fail2ban-client get sshd bantime
Тестирование конфигурации Fail2Ban: Вы можете протестировать конфигурацию Fail2Ban на наличие синтаксических ошибок, не запуская службу:
sudo fail2ban-regex <путь_к_логу> <путь_к_фильтру>
Просмотр логов Fail2Ban: Логи Fail2Ban обычно находятся в /var/log/fail2ban.log. Вы можете просматривать их с помощью:
sudo tail -f /var/log/fail2ban.log
Проверить статус Fail2Ban:
sudo systemctl status fail2ban
Проверить состояние jail для SSH:
sudo fail2ban-client status sshd
Разблокировать IP-адрес 192.168.1.100 для jail 'sshd':
sudo fail2ban-client set sshd unbanip 192.168.1.100
Эти команды помогут вам эффективно управлять Fail2Ban, контролировать состояние системы безопасности и выполнять задачи по администрированию.
Fail2Ban — это инструмент для повышения безопасности серверов и сетевых систем. Его основная функция заключается в предотвращении атак типа brute force и других видов несанкционированного доступа путем автоматической блокировки IP-адресов, которые демонстрируют подозрительное поведение.
Fail2Ban — это программное обеспечение, которое следит за логами системных сервисов и обнаруживает подозрительное поведение, такое как многочисленные неудачные попытки входа. При обнаружении такого поведения, Fail2Ban автоматически добавляет правила в фаервол, чтобы заблокировать IP-адреса злоумышленников.
Мониторинг логов:
Fail2Ban анализирует журналы логов различных сервисов (например, SSH, Apache, Nginx) в поисках признаков атак или неудачных попыток входа.
Обнаружение подозрительного поведения:
Когда Fail2Ban обнаруживает определённое количество неудачных попыток входа или другие подозрительные действия, он определяет, что IP-адрес нарушителя должен быть заблокирован.
Блокировка IP-адресов:
Fail2Ban автоматически добавляет правила в фаервол (например, iptables), чтобы блокировать доступ с этих IP-адресов на определённое время.
Оповещение:
Fail2Ban может также отправлять уведомления администраторам о подозрительном поведении и блокировках.
Защита от атак brute force:
Fail2Ban защищает серверы от атак brute force, при которых злоумышленники пытаются подобрать пароли с использованием автоматизированных инструментов.
Повышение безопасности:
За счёт автоматической блокировки подозрительных IP-адресов Fail2Ban снижает риск успешного взлома системы и увеличивает общую безопасность сервера.
Снижение нагрузки на администраторов:
Автоматическая блокировка устраняет необходимость вручную отслеживать и блокировать злонамеренные IP-адреса, что экономит время и усилия системных администраторов.
Настройка и гибкость:
Fail2Ban предоставляет возможность настройки различных фильтров и действий в зависимости от конкретных потребностей, таких как блокировка различных сервисов и использование разных фаерволов.
Фильтры:
Определяют, какие строки в логах являются подозрительными. Фильтры настраиваются в виде регулярных выражений.
Действия:
Определяют, что делать, когда обнаружено подозрительное поведение, например, блокировать IP-адрес с помощью iptables.
Jail'ы:
Определяют, какие фильтры и действия применяются к каким сервисам. Каждый jail соответствует конкретному сервису (например, SSH, Apache) и имеет свои собственные настройки.
Fail2Ban является важным инструментом для обеспечения безопасности серверов и сетевых систем, помогая предотвращать атаки и защищать ресурсы от несанкционированного доступа.
Установка скриптом
После выполнения скрипта переходим в раздел “Основная конфигурация” и следуем дальнейшим инструкция.
bash <(curl -s https://raw.githubusercontent.com/odanoder/scripts/main/firewall/fail2ban/install_fail2ban.sh)
Ручная установка
Обновите список пакетов:
sudo apt update && sudo apt upgrade -y
Установите Fail2Ban:
sudo apt install fail2ban -y
Проверка статуса Fail2Ban. Должно быть Active: inactive (dead). Статус inactive (dead) для службы Fail2Ban означает, что служба не запущена:
sudo systemctl status fail2ban
Создайте резервную копию оригинального конфигурационного файла или создать собственный фаил. Оригинальный файл конфигурации jail.conf содержит стандартные настройки Fail2Ban, которые могут быть перезаписаны при обновлениях пакета. Чтобы избежать изменений в оригинальном файле и сохранить возможность легко возвращаться к стандартным настройкам, создайте резервную копию и используйте файл jail.local (предназначен для добавления и изменения настроек без изменения оригинального файла jail.conf) для пользовательских настроек:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
/etc/fail2ban/jail.conf:
Назначение: Основной конфигурационный файл с заводскими настройками. Изменения в этом файле могут быть перезаписаны при обновлениях пакета, поэтому не рекомендуется изменять его напрямую.
/etc/fail2ban/jail.local:
Назначение: Файл для пользовательских настроек и переопределения настроек из jail.conf. Используется для добавления или изменения настроек, чтобы изменения не были утеряны при обновлениях.
/var/log/fail2ban.log:
Назначение: Лог-файл Fail2Ban, где записываются все события и действия. Полезен для диагностики и мониторинга активности Fail2Ban.
/etc/fail2ban/filter.d/:
Назначение: Директория с фильтрами для различных сервисов. Фильтры определяют, какие строки в логах считаются подозрительными.
/etc/fail2ban/action.d/:
Назначение: Директория с действиями, которые Fail2Ban выполняет при обнаружении подозрительной активности (например, блокировка IP через iptables).
Откройте файл jail.local для редактирования:
sudo nano /etc/fail2ban/jail.local
Настройка разделе [DEFAULT] найдите строчки\параметры:
ВНИМАНИЕ: Параметры которые указываются в разделе[DEFAULT] применяются ко всем параметрам которые мы будем активировать. Но если мы укажем параметры внутри раздела (например в [sshd]) - то эти параметры будут иметь более высокий приоритет над [DEFAULT].
Параметры: bantime findtime maxretry - настройте на свое усмотрение или оставьте по умолчанию.
# "bantime" is the number of seconds that a host is banned.
bantime = 10m
# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 10m
# "maxretry" is the number of failures before a host get banned.
maxretry = 5
Настройка защиты SSH:
Найдите раздел [sshd] и убедитесь, что он включен и настроен правильно:
#
# JAILS
#
#
# SSH servers
#
[sshd]
# To use more aggressive sshd modes set filter parameter "mode" in jail.local:
# normal (default), ddos, extra or aggressive (combines all).
# See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.
#mode = normal
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
[dropbear]
port = ssh
logpath = %(dropbear_log)s
backend = %(dropbear_backend)s
[selinux-ssh]
port = ssh
logpath = %(auditd_log)s
Вносим изменения
[sshd]
#mode = normal
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
Объяснение параметров:
enabled = true: Включает защиту для SSH.
Перезапустите Fail2Ban для применения изменений:
Проверка статуса сервиса.
sudo systemctl status fail2ban
Должно быть Active:active (running). Статус active (running) для службы Fail2Ban означает, что служба не запущена.
Пример вывода:
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2024-09-04 09:00:00 UTC; 1h ago
Docs: man:fail2ban(1)
Main PID: 1234 (fail2ban-server)
Tasks: 5 (limit: 2359)
Memory: 20.0M
CGroup: /system.slice/fail2ban.service
└─1234 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
Sep 04 09:00:00 your-server systemd[1]: Started Fail2Ban Service.
Sep 04 09:00:00 your-server fail2ban-server[1234]: Server ready
Проверка версии Fail2Ban. Пример вывода: Fail2Ban v0.11.2
sudo fail2ban-client version
Проверка доступности Fail2Ban. Пример вывода: pong
sudo fail2ban-client ping
Проверка активных ловушек. Чтобы получить список всех активных jail'ов:
sudo fail2ban-client status
Пример вывода:
Status
|- Number of jail: 1
`- Jail list: sshd, apache-auth, nginx-http-auth
#цифра 1 - означает что у нас есть 1 активные ловушки.
Подробная информация о конкретном jail, в нашем случае ssh. Чтобы получить подробную информацию о заблокированных IP-адресах для конкретного jail, например, для sshd:
sudo fail2ban-client status sshd
Пример вывода, после того как сервис поработает какое-то время и будут неудачные попытки подключения:
Status for the jail: sshd
|- Filter
| |- File list: /var/log/auth.log
| |- DateTime: 2024-09-04 10:00:00
| |- Log Level: INFO
| |- LogPath: /var/log/auth.log
| |- Failregex: ^%(__prefix_line)s(?:error:|fatal:|warning:|crit:) \\[sshd\\] \\[.*\\]: Failed password for invalid user .* from <HOST>
|
|- Actions
| |- Ban action: iptables-multiport[name=sshd, port="ssh", protocol="tcp"]
|
|- Currently banned:
| |- 192.168.1.10
| |- 203.0.113.5
|
|- Total banned: 2
Попробуйте подключиться с другого ip адреса и проверьте, корректность работы Fail2Ban.
После того как вы убедились что все работает и сохранили все настройки. Выйдите полностью из системы (закройте консоль) и попробуйте выполнить авторизацию. Если все получилось отлично. Если что-то пошло не так, просто перезагрузит ваш сервер. Fail2Ban на включен на автоматическую активацию после перезагрузки или выключения сервера. По идее с данными параметрами все должно работать правильно.
Включение Fail2Ban для автоматического запуска после сбоя или рестарта сервера:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Проверка статуса Fail2Ban. Вы должны увидеть ответ enabled, что подтверждает, что Fail2Ban настроен для автоматического запуска.:
sudo systemctl is-enabled fail2ban
Дополнительные настройки (опционально)
Разблокировка IP
Сброс настроек Fail2Ban
Удаление Fail2Ban
Настройка того же файла jail.local
sudo nano /etc/fail2ban/jail.local
Находим раздел [recidive] и добавляем изменения
[recidive] — это специальный jail в Fail2Ban, который предназначен для обработки IP-адресов, которые были забанены в разных jail'ах. Его задача — обнаруживать и наказывать IP-адреса, которые систематически пытаются нарушить безопасность, даже если они избегают банов в других конкретных jail'ах.
# Jail for more extended banning of persistent abusers
# !!! WARNINGS !!!
# 1. Make sure that your loglevel specified in fail2ban.conf/.local
# is not at DEBUG level -- which might then cause fail2ban to fall into
# an infinite loop constantly feeding itself with non-informative lines
# 2. Increase dbpurgeage defined in fail2ban.conf to e.g. 648000 (7.5 days)
# to maintain entries for failed logins for sufficient amount of time
[recidive]
enabled = true
logpath = /var/log/fail2ban.log
banaction = %(banaction_allports)s
maxretry = 10
bantime = 3d
findtime = 1d
enabled: Указывает, включен ли данный jail. Если true, он будет активен.
bantime: Время, на которое IP-адрес будет заблокирован после достижения maxretry. Указывается в секундах, минутах, часах или днях. Например, 3d — это 3 дня.
maxretry: Количество попыток, после которых IP-адрес будет заблокирован, если нарушения продолжаются в течение findtime.
findtime: Период времени, в течение которого будет учитываться количество попыток (maxretry). Например, 1d — это 1 день.
Для разблокировки IP-адреса, который был забанен Fail2Ban, используйте команду fail2ban-client:
sudo fail2ban-client set <jail_name> unbanip <ip_address>
Замените <jail_name> на имя конкретного jail'а (например, sshd), а <ip_address> на IP-адрес, который вы хотите разблокировать.
Пример:
sudo fail2ban-client set sshd unbanip 192.168.1.100
Посмотреть заблокированные IP-адреса для всех jail'ов
sudo iptables -L -n --line-numbers
Посмотреть заблокированные IP-адреса для конкретного jail SSH
sudo fail2ban-client status sshd
Если вы хотите сбросить настройки Fail2Ban, чтобы вернуть его к исходным настройкам, вы можете перезапустить Fail2Ban и очистить его текущие данные. Для этого выполните следующие шаги:
Очистка текущих данных Fail2Ban (например, сброс логов и состояния). Удалите файлы блокировки (например, чтобы сбросить все заблокированные IP-адреса):
sudo rm -f /var/lib/fail2ban/fail2ban.sqlite3
Перезапустите Fail2Ban после очистки:
Чтобы полностью удалить Fail2Ban с вашего сервера, выполните следующие шаги:
Удаление скриптом
bash <(curl -s https://raw.githubusercontent.com/odanoder/scripts/main/firewall/fail2ban/remove_fail2ban.sh)
Удаление вручную
sudo systemctl stop fail2ban.service
sudo systemctl disable fail2ban.service
sudo rm /lib/systemd/system/fail2ban.service
sudo systemctl daemon-reload
Удалите пакет Fail2Ban:
sudo apt remove fail2ban -y
Удалите остаточные файлы конфигурации и логи:
sudo rm -rf /etc/fail2ban
sudo rm -rf /var/log/fail2ban
sudo rm -rf /var/lib/fail2ban
Удалите пакеты зависимостей (если нужно) (ОПЦИОНАЛЬНО), если не понимаете пропустите этот шаг. Чтобы удалить пакеты, которые были установлены вместе с Fail2Ban и больше не нужны, выполните:
sudo apt-get autoremove
Проверьте статус Fail2Ban (чтобы убедиться, что он удален):
sudo systemctl status fail2ban
Описание
Параметр bantime определяет, на какое время IP-адрес будет заблокирован после того, как количество неудачных попыток входа превысит допустимый лимит.
Значение: 10m означает 10 минут. Это значит, что IP-адрес будет заблокирован на 10 минут.
Пример: Если IP-адрес нарушает правила и превышает лимит попыток входа, он будет заблокирован на 10 минут.
findtime:
Параметр findtime указывает, за какой период времени Fail2Ban будет проверять логи на наличие неудачных попыток входа.
Значение: 10m означает 10 минут. Это значит, что Fail2Ban будет искать неудачные попытки входа за последние 10 минут.
Пример: Если Fail2Ban обнаруживает, что IP-адрес имеет больше неудачных попыток входа за последние 10 минут, этот адрес будет заблокирован.
maxretry:
Параметр maxretry задает максимальное количество неудачных попыток входа, после достижения которого IP-адрес будет заблокирован.
Значение: 5 означает, что если IP-адрес совершил 5 неудачных попыток входа за указанный findtime, он будет заблокирован.
Пример: Если IP-адрес совершает 5 неудачных попыток входа за 10 минут, Fail2Ban заблокирует этот IP-адрес на 10 минут.
Сценарий работы:
Представим, что: bantime установлено на 10 минут, findtime установлено на 10 минут, maxretry установлено на 5 попыток.
Сценарий: IP-адрес A пытается войти в систему и делает 5 неудачных попыток входа в течение 10 минут. Fail2Ban видит, что этот IP-адрес нарушил правила (maxretry) в течение заданного времени (findtime). IP-адрес A будет заблокирован на 10 минут (bantime).
Параметр ignoreip = , найдите его, уберите перед ним символ# и впишите через пробел ip адреса. Эти ip будут игнорироваться и не будут блокироваться. Для примера, допусти , 160.160.160.160 - мой домашний адрес, 99.99.99.99 - адрес моего второго сервера)
[DEFAULT]
# "ignoreip" can be a list of IP addresses, CIDR masks or DNS hosts. Fail2ban
# will not ban a host which matches an address in this list. Several addresses
# can be defined using space (and/or comma) separator.
#ignoreip = 127.0.0.1/8 ::1 160.160.160.160
ignoreip = 127.0.0.1/8 ::1 160.160.160.160 99.99.99.99
Параметр enabled = напротив должно быть значение false .
[DEFAULT]
# true: jail will be enabled and log files will get monitored for changes
# false: jail is not enabled
enabled = false
ssh2222logpath = %(sshd_log)s: Определяет путь к логам SSH.
Настройка защиты для других сервисов будем производить позже.
Параметр bantime определяет, на какое время IP-адрес будет заблокирован после того, как количество неудачных попыток входа превысит допустимый лимит.
Значение: 10m означает 10 минут. Это значит, что IP-адрес будет заблокирован на 10 минут.
Пример: Если IP-адрес нарушает правила и превышает лимит попыток входа, он будет заблокирован на 10 минут.
findtime:
Параметр findtime указывает, за какой период времени Fail2Ban будет проверять логи на наличие неудачных попыток входа.
Значение: 10m означает 10 минут. Это значит, что Fail2Ban будет искать неудачные попытки входа за последние 10 минут.
Пример: Если Fail2Ban обнаруживает, что IP-адрес имеет больше неудачных попыток входа за последние 10 минут, этот адрес будет заблокирован.
maxretry:
Параметр maxretry задает максимальное количество неудачных попыток входа, после достижения которого IP-адрес будет заблокирован.
Значение: 5 означает, что если IP-адрес совершил 5 неудачных попыток входа за указанный findtime, он будет заблокирован.
Пример: Если IP-адрес совершает 5 неудачных попыток входа за 10 минут, Fail2Ban заблокирует этот IP-адрес на 10 минут.
Сценарий работы:
Представим, что: bantime установлено на 10 минут, findtime установлено на 10 минут, maxretry установлено на 5 попыток.
Сценарий: IP-адрес A пытается войти в систему и делает 5 неудачных попыток входа в течение 10 минут. Fail2Ban видит, что этот IP-адрес нарушил правила (maxretry) в течение заданного времени (findtime). IP-адрес A будет заблокирован на 10 минут (bantime).
Параметр ignoreip = , найдите его, уберите перед ним символ# и впишите через пробел ip адреса. Эти ip будут игнорироваться и не будут блокироваться. Для примера, допусти , 160.160.160.160 - мой домашний адрес, 99.99.99.99 - адрес моего второго сервера)
[DEFAULT]
# "ignoreip" can be a list of IP addresses, CIDR masks or DNS hosts. Fail2ban
# will not ban a host which matches an address in this list. Several addresses
# can be defined using space (and/or comma) separator.
#ignoreip = 127.0.0.1/8 ::1 160.160.160.160
ignoreip = 127.0.0.1/8 ::1 160.160.160.160 99.99.99.99
Параметр enabled = напротив должно быть значение false .
[DEFAULT]
# true: jail will be enabled and log files will get monitored for changes
# false: jail is not enabled
enabled = false
ssh2222logpath = %(sshd_log)s: Определяет путь к логам SSH.
Настройка защиты для других сервисов будем производить позже.
No comments yet