Перейти до основного вмісту
Головна
нотатки кодера

Navigation

  • Головна
  • Про мене
  • Документація
  • Портфоліо
User account menu
  • Вхід

Рядок навіґації

  1. Головна

Fail2Ban: Постійний бан

від vetal, 5 липня, 2013
Категорія
Адміністрування
  • Щоб додати коментар, увійдіть або зареєструйтесь

Fail2ban це Python скрипт, котрий сканує ваші журнали для пошуку атак та створює правила iptable, що дозволяють ігнорувати трафік з цих IP-адрес. Це дуже зручно для забезпечення SSH захисту, а також захисту інших сервісів.

У нього є можливість назавжди заблокувати трафік з IP-адреси. Він отримує список атакуючих IP з логу /var/log/secure. Після ротації журналів і перезапуску процесу fail2ban IP більше не будуть заблокованими. Так що я оптимізував цей процес, щоб зберегти усі заблоковані IP-адреси в файл, щоб їх завжди можна було внести до черного списку.

Всі зміни були проведені в файлі конфігурації /etc/fail2ban/actions.d/iptables.conf. Це дозволяє завантажити в правила iptables список IP из файлу (/etc/fail2ban/ip.deny), під час перезапуску file2ban.

actionstart = iptables -N fail2ban-<name>
iptables -A fail2ban-<name> -j RETURN
iptables -I INPUT -p <protocol> –dport <port> -j fail2ban-<name>
for IP in `cat /etc/fail2ban/ip.deny`; do iptables -I fail2ban-SSH 1 -s $IP -j DROP;done

Під час виявлення атакуючого IP варто зробити перевірку чи він не входить до списку дозволених адрес, що зберігаються в /etc/fail2ban/ip.allow. Після перевірки цього IPб в разі його відсутності, можна додавати до списку заблокованих, що міститься в  /etc/fail2ban/ip.deny:

actionban =  if [ -z `awk '$1 == "<ip>" { print "true" }' /etc/fail2ban/ip.allow` ]; then iptables -I fail2ban-<name> 1 -s <ip> -j DROP;fi
if [ -z `awk '$1 == "<ip>" { print "true" }' /etc/fail2ban/ip.deny` ] && [ -z `awk '$1 == "<ip>" { print "true" }' /etc/fail2ban/ip.allow` ]; then echo “<ip>” >> /etc/fail2ban/ip.deny;fi

Наступні зміни обов'язкові тому, що функціональність видалення бану не було додано в fail2ban (до версії 0.9):

actionunban = if [ -z `awk '$1 == "<ip>" { print "true" }' /etc/fail2ban/ip.deny` ]; then iptables -D fail2ban-<name> -s <ip> -j DROP;fi
if [ -z `awk '$1 == "<ip>" { print "true" }' /etc/fail2ban/ip.deny` ] && [ -z `awk '$1 == "<ip>" { print "true" }' /etc/fail2ban/ip.allow` ]; then echo “<ip>” >> /etc/fail2ban/ip.allow;fi

Завжди можна відмінити блокування для певних IP-адрес, добавивши їх в файл ip.allow, але варто використовувати змінну "ignoreip" в jail.conf поки функціонал видалення бана не будет завершено.

security

Категорії

  • Історії
  • Адміністрування
  • Поради
  • Програмування

Останні матеріали

  • OpenCart облік прибутку
    41 хвилина 47 секунд ago
  • Fail2Ban: Постійний бан
    2 тижні 4 дні ago
  • Як отримати список змінених файлів між ревізіями
    5 років ago
  • Що робити якщо svn: database disk image is malformed
    6 років ago
  • Як виправити пошкоджений /etc/sudoers файл
    7 років 1 місяць ago
  • Налаштування зовнішнього клієнта контролю версії (svn, git і т.і.) через тунель ssh в IDE
    8 років 3 місяці ago
  • RabbitMQ очистка одної конкретної черги з командної строки
    8 років 9 місяців ago
  • Гарне перенаправлення домену з www на домен без www
    9 років ago
  • Doctrine ORM біхейвери, або як використовувати трейти ефективно
    9 років 3 місяці ago
  • Приклад синтаксису для Secure Copy (scp)
    9 років 5 місяців ago

1980-2023 © All rights reserved. VAG.org.ua // нотатки кодера.