Debian.pro

Блог для пользователей и администраторов Debian


Debian, безопасность сервера. Ставим fail2ban на Debian и немного настраиваем его.

fail2ban может защитить почти любой из ваших сервисов от брутфорса. Подбора пароля то есть.
Информации в целом в инете про него много, но не упомянуть fail2ban в рамках нового цикла статей «Безопасность в Debian» просто нельзя.

Итак. Каждый администратор сервера на Debian должен выполнить команду:

root@server:~# aptitude install fail2ban

\

После установки и запуска fail2ban мы получаем намного более защищенный ssh. После 3х попыток неправильного ввода пароля с одного ip адреса — этому ip адресу будет закрыт 22й порт на сервере. Но это всё по умолчанию.
Сейчас же мы будем настраивать fail2ban.
Основная часть настроек хранится в конфигурационном файле /etc/fail2ban/jail.conf
Рассмотрим некоторые директивы:

  • ignoreip = 127.0.0.1 # указываем, на какие ip адреса, маски или хостнеймы не распространяется действие fail2ban
  • bantime = 600 # указываем сколько действует бан в секундах. Я указываю либо огромное число, либо -1 — что значит «навечно».
  • maxretry = 3 # через сколько неправильных попыток ввода пароля банить гада
  • destemail = root@localhost # на какой адрес слать уведомления о банах. Можно поменять, но нужно будет написать правила для писем.
  • banaction = iptables-multiport # через что банить. Если у вас нет shorewall, то менять это значение я не рекомендую.
  • mta = sendmail # через что отправлять письма админу о банах. Exim/sendmail/etc. Пишем тут тот MTA, который стоит у вас на сервере.

Чуть ниже следуют секции конфига, которые отвечают за блокировку тех, кто брутфорсит что-либо. Конечно же, здесь есть почти все сервисы, которые можно брутфорсить) списочек будет чуть ниже. Не изменяйте эти секции ни в коем случае! Те jails, которые вам необходимо включить — дописывайте в файл /etc/fail2ban/jail.local в форме:

[jail_name]
enabled = true

Например:
[apache]
enabled = true

Рассмотрим параметры секции [ssh] (который отвечает за бан тех, кто пытается сбрутить ssh-аккаунт).

  • enabled = true # включаем сервис.
  • port = ssh # указываем на каком порту/портах висит сервис. Некоторые умеют определяться автоматически по имени сервиса — вот как ssh
  • filter = sshd # указываем фильтр, по которому парсятся логи. Не следует менять. Вообще же можно написать свои фильтры и использовать их для любого вашего сервиса. Именно этот порт в нашем случае будет блокироваться для брутфорсера через iptables.
  • logpath = /var/log/auth.log # какой лог парсить. Нужно на тот случай, если вы изменяли дефолтный путь до лога сервиса
  • maxretry = 6 # количество попыток, после которых человека или бота банят.

Какие есть шаблоны по умолчанию: ssh, pam-generic, xinetd-fail, ssh-ddos, apache (неверные авторизации в каталогах, защищенных через .htpasswd), apache-noscript, apache-overflows, vsftpd, proftpd, wuftpd, postfix, couriersmtp, courierauth, sasl, named-refused-udp, named-refused-tcp.

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

Этого вполне достаточно, чтобы окопаться от брутфорса по самое «нехочу». Если вы поняли систему работы fail2ban — вы легко сможете написать скрипт, который будет защищать вас от http-ddos, udp-ddos, исходящего спама и много другого. Правила писать очень просто, нужно лишь указать правильный regexp в файле /etc/fail2ban/filter.d/имя_фильтра.conf
Тем более, что там есть примеры.
Только не дописывайте свои сервисы c опций enabled = true в jail.conf. Пишите шаблон в jail.conf, а включайте свой jail уже в jail.local.


Комментарии (18):

  1. Alex :

    Спасибо за статьи, поставил тоже на VPS. Не нашел на сайте (может плохо искал) — про бекапы и восстановление всего сервера (полностью всего сервера) — для новичков ))

  2. Для серверов такого мануала (тем более для новичков), скорее всего, никогда не появится. Потому что для всех простых способов сервер нужно глушить. А на горячую всё это провернуть сложно.

    Бэкапьте конфиги нужных демонов из /etc/ и их куски из /var/ — этого будет достаточно для большинства.

  3. Evgeny :

    /home/*/data/*.*/logs/*errors.log

    ili mozhet dazhe tak?
    *.* papki pulov potu domain.com domain.ru

  4. Ivan1986 :

    Писать защиту от http-ddos на нем не советую.
    При большой нагрузке оно просто упадет — fail2ban сожрет все ресурсы.
    Тоже как-то хотел защититься им — натравил на лог апача и все.

  5. Den :

    Здравствуйте, автор сайта! Я не нашел на сайте поста с настройкой iptables. А именно интересует грамотная настройка файервола. В наличии Niginx + Apache2 + MySQL + Exim + SSH. Буду очень благодарен если поможете советом!

  6. А вы готового рецепта и не найдете. Для каждого случая правила отличаться будут. К тому же я не могу научить людей писать правильные правила в fw =)

    Пишите в почту, если знаете, какие именно правила вам нужны — помогу их написать. Придумывать их стоит именно вам.

  7. conformist :

    Похоже, что в новых версиях fail2ban опция «-1» не работает. ибо у меня через сутки все равно разбан

  8. Ну поставьте 9999999999 )

  9. kolli :

    Подскажите а как повязать file2ban к (.htpasswd и .htaccess — защита паролем)

  10. Define «повязать». Ну в смысле в вашем вопросе смысла как-то не видно.

  11. kolli :

    Чтоб file2ban,контролировал колличество попыток ввода паролей в .htaccess

  12. kolli :

    Apache

  13. Тогда, видимо, никак. По крайней мере, у меня апач в логи не пишет запросы с 401м кодом ответа. Ищите как их включить и из лога выцепляйте их.

  14. kolli :

    Спасибо.Понятно.А вообще есть смысл паролить админ директории сайта (через .htpasswd и .htaccess),или же это бесталку.Захотят и обойдут эту защиту паролями?

  15. Есть, конечно.
    Если правильно настроить — то вероятность обойти её равно вероятности сбрутить пароль (это если логин знать).

    Одно только помнить нужно — если там http, то пароль могут украсть «по дороге» в сети. Ну и с троянами локальными та же фигня.

  16. kolli :

    Спасибо!

  17. Да не за чт.

Написать комментарий