Первоначальная настройка Fail2ban
Главный конфигурационный файл находится по адресу /etc/fail2ban/jail.conf, однако настоятельно не рекомендуется сразу вносить в него правки, сначала скопируем его под именем jail.local. Настройку продолжим непосредственно в этом файле, это предусмотрено разработчиками, все что вы сконфигурируете в jail.local будет автоматически перезаписывать настройки в jail.conf:
root@host:~$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Первым делом в конфигурационный файл необходимо внести ваш IP адрес, чтобы правила Fail2ban на него не распространялись, иначе после запуска службы вы рискуете внести себя в бан и доступ к серверу будет утерян:
root@host:~$ vim /etc/fail2ban/jail.local
Необходимо найти и раскоментировать строку #ignoreip, добавив через пробел свой внешний статический IP адрес. В результате у вас должно получиться следующее:
ignoreip = 127.0.0.1/8 ::1 178.20.***.**
где 178.20.***.** — Ваш IP адрес.
Здесь же, в секции можно задать значения findtime и maxretry, например:
bantime = 600 findtime = 3600 maxretry = 6
Параметры findtime и maxretry определяют условия, при которых будут блокироваться вредоносные пользователи. Maxretry определяет количество попыток входа, а findtime – интервал времени, в течение которого пользователь должен пройти аутентификацию. Если клиент превысил любой из этих показателей, он будет заблокирован. Bantime определяет длительность блокировки в секундах. Эти параметры в статье будут встречаться неоднократно. Если в настройке какого либо из сервисов вы их не зададите, они будут автоматически браться с секции .
Не забывайте перезапускать Fail2ban после каждого редактирования конфигурационного файла.
Важно! Путь к файлу хранения логов (logpath) обязан быть указан правильно, иначе перезапуск Fail2ban завершится ошибкой. В случае отсутствия лог-файла по указанному пути, его можно создать командой touch, например:
root@host:~$ touch /var/log/yourlog.log root@host:~$ chmod 755 /var/log/yourlog.log
Теперь мы можем перейти к редактированию общих правил защиты сервисов.
Настройка fail2ban для защиты Postfix на Centos
Июль 8th, 2014 Evgeniy Kamenev
# yum install fail2ban
1 | # yum install fail2ban |
# chkconfig —level 235 fail2ban on
1 | # chkconfig —level 235 fail2ban on |
# nano /etc/fail2ban/fail2ban.conf
1 | # nano /etc/fail2ban/fail2ban.conf |
loglevel = 3
logtarget = /var/log/fail2ban.log
socket = /var/run/fail2ban/fail2ban.sock
pidfile = /var/run/fail2ban/fail2ban.pid
1 |
Definition loglevel=3 logtarget=varlogfail2ban.log socket=varrunfail2banfail2ban.sock pidfile=varrunfail2banfail2ban.pid |
# nano /etc/fail2ban/jail.conf
1 | # nano /etc/fail2ban/jail.conf |
ignoreip = 127.0.0.1/8 77.120.XXX.YYY/32
bantime = 3600
findtime = 600
maxretry = 5
backend = auto
usedns = warn
1 |
ignoreip=127.0.0.18 77.120.XXX.YYY32 bantime=3600 findtime=600 maxretry=5 backend=auto usedns=warn |
# Для блокировки подбора логина/пароля при использовании SASL-аутентификации
1 |
postfix25-iptables enabled=true filter=postfix-sasl action=iptablesname=Postfix-smtp,port=smtp,protocol=tcp sendmailname=Postfix-smtp,dest=your@email,sender=fail2ban@myserver.com logpath=varlogmaillog bantime=86400 maxretry=3 findtime=3600 |
И для блокировки пересылки через Ваш почтовый сервер и др.
1 |
postfix-iptables enabled=true filter=postfix action=iptablesname=Postfix-smtp,port=smtp,protocol=tcp sendmailname=Postfix-smtp,dest=your@email,sender=fail2ban@myserver.com logpath=varlogmaillog bantime=86400 maxretry=3 findtime=3600 |
# nano /etc/fail2ban/filter.d/postfix-sasl.conf
1 | # nano /etc/fail2ban/filter.d/postfix-sasl.conf |
# Fail2Ban filter for postfix authentication failures
before = common.conf
_daemon = postfix/smtpd
failregex = ^%(__prefix_line)swarning: +\: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: *={0,2})?\s*$
ignoreregex =
1 |
# Fail2Ban filter for postfix authentication failures INCLUDES before=common.conf Definition _daemon=postfixsmtpd failregex=^%(__prefix_line)swarning-._\w+\<HOST>\SASL(?LOGIN|PLAIN|(?CRAM|DIGEST)-MD5)authentication failed(A-Za-z0-9+*={,2})?\s*$ ignoreregex= |
проверка срабатывания правил
# fail2ban-regex /var/log/maillog /etc/fail2ban/filter.d/postfix-sasl.conf
1 | # fail2ban-regex /var/log/maillog /etc/fail2ban/filter.d/postfix-sasl.conf |
И
# nano /etc/fail2ban/filter.d/postfix.conf
1 | # nano /etc/fail2ban/filter.d/postfix.conf |
# Fail2Ban configuration file
failregex = reject: RCPT from (.*)\: 550
reject: RCPT from (.*)\: 450
reject: RCPT from (.*)\: 554
ignoreregex =
1 |
# Fail2Ban configuration file Definition failregex=rejectRCPT from(.*)\<HOST>\550 rejectRCPT from(.*)\<HOST>\450 rejectRCPT from(.*)\<HOST>\554 ignoreregex= |
проверка срабатывания правил
# fail2ban-regex /var/log/maillog /etc/fail2ban/filter.d/postfix.conf
1 | # fail2ban-regex /var/log/maillog /etc/fail2ban/filter.d/postfix.conf |
Опубликовано в рубрике Centos, Mail Метки: fail2ban, postfix
Конфигурационный файл Fail2ban
Настройки Fail2ban хранятся в конфигурационном файле .
Настройки разделены по секциям. В указываются общие параметры, которые определяют работу Fail2ban в целом и применяются для большинства служб. Специфические настройки для той или иной службы прописываются внутри соответствующей секции (например, , , ).
Менять какие-либо параметры напрямую в файле не рекомендуется. Вместо этого необходимо создать новый файл , разместив его в той же директории.
Можно либо сделать копию оригинального файла (может быть удобно, если вы планируете настроить Fail2ban для защиты нескольких служб, не только SSH):
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Либо создать пустой файл с таким именем и внести нужные параметры в него:
sudo touch /etc/fail2ban/jail.local
В новом файле будет достаточно указать только те настройки, значения которых вы хотите изменить: для всех параметров, которые вы не пропишете отдельно, Fail2ban будет применять значения по умолчанию.
Настройка ведения логов asterisk
В первую очередь имеет смысл настроить ведение логов asterisk, чтобы информация сразу же начала собираться в нужном нам формате и виде. Для этого в каталоге конфигурации asterisk (по умолчанию это /etc/asterisk) найдите файл logger.conf и внесите в него следующие изменения: раскомментируйте (уберите точку с запятой в начале строки):
Это нужно для того, чтобы asterisk писал в логи дату в правильном формате:
год-месяц-день часы:минуты:секунды
Начиная с 10-й версии asterisk, Вы можете включить Asterisk Security Framework. Для этого в файле logger.conf найдите и раскомментируйте (или добавьте) строку:
В этой строке с левой стороны от стрелки указано имя файла, в котором будут сохраняться события, а с правой стороны – уровни (типы событий), которые будут сохраняться. В данном примере события, относящиеся к уровню security (и только они), будут сохраняться в файл с именем security в папке логов asterisk.
Разумеется, после внесения изменений необходимо, чтобы asterisk перечитал конфигурацию. Для этого можно либо перезагрузить сервис астериска, либо только конфигурацию логов (logger reload из asterisk CLI).
После этого в папке логов asterisk (по умолчанию /var/log/asterisk) появится файл с именем security. Не забудьте настроить ротацию логов для этого файла (так же, как и для остальных логов asterisk)!
Использование
Fail2ban, после чего включите и запустите службу .
fail2ban-client
Утилита fail2ban-client позволяет следить за «клетками» (jails) (reload, restart, status и т.д.). Чтобы увидеть список всех доступных команд, введите:
$ fail2ban-client
Просмотр включённых «клеток» (jails):
# fail2ban-client status
Проверка статуса «клетки» на примере таковой для sshd:
# fail2ban-client status sshd
Status for the jail: sshd |- Filter | |- Currently failed: 1 | |- Total failed: 9 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 0.0.0.0
Проверка работы fail2ban
Главное в процессе проверки fail2ban – иметь под рукой другой компьютер (или локальный доступ к серверу asterisk), чтобы в случае, когда fail2ban заблокирует Ваш IP адрес, Вы смогли подключиться и удалить эту блокировку!
Необходимо обязательно проверить работу связки fail2ban + iptables, поскольку, даже если Вы все настроили (или скопировали) правильно, возможно множество комбинаций событий, в результате которых настренные Вами блокировки работать не будут.
Последовательность действий для проверки работы связки fail2ban + iptables:
Убедитесь, что у Вас настроен запуск iptables и fail2ban при старте компьютера
Если Вы настроили 2 правила для fail2ban, настоятельно рекомендуем проверить работу каждого из них по отдельности. Для этого отключите одно из правил (), например asterisk-security-iptables
перезагрузите компьютер и проверьте, что:
службы iptables и fail2ban запущены:
одно из правил включено, а другое – выключено:
При этом для выключенного правила появится сообщение: ,
а для включенного – сообщение вида:
Запустите SIP-клиент (обязательно не с самого сервера asterisk, а с другого компьютера!), и указав неверные данные для авторизации (IP адрес для подключения должен быть IP адресом сервера asterisk!), попробуйте авторизоваться 3 раза или более (количество авторизаций, после которых IP адрес блокируется, задается в параметре maxretry для каждого правила отдельно). В качестве тестового sip клиента можно использовать программу sipsak, которая работает из командной строки.
Если Вы запустили SIP клиента с того же компьютера, с которого подключались к серверу asterisk, и если fail2ban + iptables были настроены правильно, то на данный момент Ваш IP адрес заблокирован, и Вы не можете подключиться к серверу asterisk с этого компьютера (проверьте это!). Подключитесь к asterisk с другого компьютера (или локально) и продолжайте выполнение команд.
Запустите команду вида:
для включенного правила, и убедитесь, что IP адрес, с которого подключался SIP клиент, находится в списке заблокированных IP (banned).
Теперь по аналогии с действиями из пункта 2 разблокируйте второе правило (например asterisk-security-iptables) и заблокируйте первое (asterisk-iptables).
Выполните действия с пункта 3 по пункт 6, только вместо перезагрузки компьютера (что тоже можно сделать) достаточно перезагрузить службу fail2ban. После этого сразу разблокируется IP адрес компьютера, на котором Вы запускали SIP клиент, и его можно будет (и нужно, как в пункте 4) запустить еще раз – для проверки работы второго правила
Обратите внимание, что может и не разблокировать (точнее, разблокировать и снова заблокировать) – в этом случае Вам лучше сделать паузу findtime секунд, после чего еще раз перезагрузить сервис fail2ban.
После того, как Вы проверили работу обоих правил по отдельности, не забудьте обязательно включить их оба (для asterisk-iptables и для asterisk-security-iptables параметр enabled = true). После этого, разумеется, не забудьте перезагрузить сервис fail2ban.
И последний пункт: если Вы выполнили предыдущие пункты достаточно быстро (в течение нескольких минут), то может оказаться, что после включения обоих правил (и последующей перезагрузки fail2ban) у Вас снова заблокируется IP адрес, с которого Вы запускали SIP клиента.
Будьте внимательны!
Выбор сервера отправки в зависимости от адреса получателя
Итак, в sender_bcc_map всю локальную почту я оставляю локально, просто указывая адрес отправителя (каждый сайт шлет почту от своего ящика) и локального пользователя, к которому она будет складываться. Если у вас много сайтов, то для каждого сайта будет свой локальный пользователь. Чаще всего это так, потому что разные сайты лучше всего запускать под разными пользователями, от которых работает веб сервер. Файл с записями для sender_bcc_map выглядит так:
user1@site1.ru user1 user2@site2.ru user2
Если у вас использует разные ящики для отправки, то можете настроить правило для всего домена сразу:
*@site1.ru user1 *@site2.ru user2
Дальше вам нужно выяснить, как выглядит полностью адрес домена для локальной доставки почты. Это имя задается в параметре mydomain в конфиге postfix main.cf. Допустим, там указано имя сервера — websrv.site.ru. Это не принципиально, в нашем случае там можно написать все, что угодно, но лучше использовать полное доменное имя (fqdn) самого веб сервера, которое указано в DNS записи типа А.
Теперь создаем файл transport_map, в котором пишем следующее:
websrv.site.ru local
Мы явно указываем, что всю почту для домена websrv.site.ru отправлять локально. Не забываем построить индексированный файл:
# postmap /etc/postfix/transport_map
Отправляемся в конфиг main.cf и добавляем туда параметр:
transport_maps = hash:/etc/postfix/transport_map
Перезапускаем postfix и проверяем работу. При отправке почтового сообщения от имени пользователя user1@site1.ru там должно быть примерно следующее:
websrv postfix/smtpd: CC8F0602E205: client=localhost websrv postfix/cleanup: CC8F0602E205: message-id=<DNCl5UdUPH7JG8sqfGbn9dobkStUcQ3l5IjwA8iMxDY@site.ru> websrv postfix/qmgr: CC8F0602E205: from=<user1@site1.ru>, size=874, nrcpt=2 (queue active) websrv postfix/smtpd: disconnect from localhost ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5 websrv postfix/local: CC8F0602E205: to=<user1@websrv.site.ru>, relay=local, delay=0.07, delays=0.06/0.01/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox) websrv postfix/smtp: CC8F0602E205: to=<mail@mail.ru>, relay=smtp.yandex.ru:465, delay=0.93, delays=0.06/0.01/0.23/0.63, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued on myt6-9bdf92ffd111.qloud-c.yandex.net as 1608951012-xOUj8gBhbE-oCJSqvIX) websrv postfix/qmgr: CC8F0602E205: removed
user1@site1.ru | адрес, с которого сайт ведет отправку почты |
user1@websrv.site.ru | итоговый локальный адрес, куда идет пересылка почты |
mail@mail.ru | внешний почтовый адрес, куда идет отправление через внешний smtp |
smtp.yandex.ru | адрес внешнего smtp сервера |
Получили в итоге то, что хотели. Внешняя почта отправляется через внешний smtp адрес, указанный в relayhost, а копии сообщений падают в локальный ящик, который находится в файле /var/mail/user1. Конкретно мне это нужно было для отладки, чтобы понять, что именно отправляет сайт.
Если вам нужно пересылать почту не локально, а на какой-то свой почтовый сервер, который вы используете для сбора и анализа отправленной почты, то настройки у вас будут немного другие.
sender_bcc_maps:
*@site1.ru fwd_site1@backupmail.ru *@site2.ru fwd_site2@backupmail.ru
transport_map:
backupmail.ru relay::25
В данном случае backupmail.ru это отдельный почтовый домен и почтовый сервер для него для сбора всей вашей почты. Это не обязательно может быть собственноручно настроенный почтовый сервер. Можете использовать ящик в какой-то готовой службе почты. Но имейте ввиду, если это будет какой-то бесплатный сервис, то он вас быстро заблокирует, если будете слать слишком много почты на этот ящик.
Установка
Просто устанавливаем и все. Для Ubuntu 10.04 LTS можно добавить сторонний PPA для установки более новой версии (в стандартном репозитории 0.8.4, выпущенный аж в 2009 году) командой
# sudo apt-add-repository ppa:skurylo/fail2ban # sudo apt-get update <code> и устанавливаем: <code> # sudo apt-get install fail2ban
Все настройки хранятся в /etc/fail2ban и весьма очевидны благодаря хорошо комментированным файлам конфигурации.
- fail2ban.conf — общие настройки (уровень логирования, куда пишем логи и т.д.)
- jail.conf — собственно сами правила защиты, так же все предельно понятно.
- в папке action.d хранятся файлы, осуществляющие взаимодействие с утилитами операционной системы — здесь и отдаются конкретные указания как реагировать на опасность.
- в папке filter.d хранится логика работы — критерии по которым и происходит срабатывание правил.
Пример: надоели боты, ищущие некоторые скрипты на нашем веб-сервере (например, ищущие уязвимые версии phpmyadmin). И сейчас мы их будем отстреливать.
Создаем правила, по которым вредитель будет обнаруживаться:
Файл filter.d/apache-nobots.conf
# Fail2Ban configuration file # # Author: Evgeny Cheremnykh <rtzra@mail.ru> # # $Revision: 717 $ # # Option: failregex # Notes.: regex to match failures to find a home directory on a server, which # became popular last days. Most often attacker just uses IP instead of # domain name -- so expect to see them in generic error.log if you have # per-domain log files. # Values: TEXT # failregex = client <HOST>[]] File does not exist: .*/*/phpmyadmin* client <HOST>[]] File does not exist: .*/*/phpmyadmin1* client <HOST>[]] File does not exist: .*/*/phpmyadmin2* client <HOST>[]] File does not exist: .*/*/phpMyAdmin* client <HOST>[]] File does not exist: .*/*/php-My-Admin* client <HOST>[]] File does not exist: .*/*/php-my-admin* client <HOST>[]] File does not exist: .*/*/dbadmin* client <HOST>[]] File does not exist: .*/*/myadmin* client <HOST>[]] File does not exist: .*/*/mysqladmin* client <HOST>[]] File does not exist: .*/*/mysql-admin* client <HOST>[]] File does not exist: .*/*/webdav* client <HOST>[]] File does not exist: .*/*/pma* client <HOST>[]] File does not exist: .*/*/PMA* # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex =
Добавляем наше правило в список
Файл jail.conf
enabled = true port = http,https filter = apache-nobots logpath = /var/log/apache*/*error.log maxretry = 2
Скринкаст: Fail2Ban 0.9.x в Ubuntu 16.04
В скринкасте показана установка, настройка Fail2Ban версии 0.9.x, особенности конфигурации новой версии, структура конфигурационных файлов и фильтров, регулярные выражения фильтров и их изменение на примере mysqld-auth фильтра, настройка и включение пользовательских правил-jails sshd и apache-auth, переопределение настроек по умолчанию, bantime, findtime, maxretry, enabled, тестирование работы apache-auth jail, перезапуск Fail2Ban, просмотр включенных jails и детальной информации по ним, блокировка ip клиента при http авторизации, просмотр заблокированных/забаненных ip, разблокировка забаненных ip адресов, тестирование регулярных выражений фильтров Fail2Ban.
Смотреть на YouTube скринкаст: Fail2Ban 0.9.x в Ubuntu 16.04
Содержание скринкаста:
- Назначение программы Fail2Ban 0.9.x — 00:30
- Установка Fail2Ban в Ubuntu server 16.04 — 01:23
- Настройка Fail2Ban и ее особенности в версии 0.9.x — 01:45
- Настройка и активация пользовательских правил-jails для sshd и apache-auth — 10:08
- Настройка HTTP авторизации для Apache в Ubuntu server 16.04 — 12:00
- Тестирование работы apache-auth jail — 14:36
- Перезапуск Fail2Ban и просмотр включенных jails — 15:05
- Просмотр детальной информации по apache-auth jail — 16:26
- Блокирование клиента при ошибках HTTP авторизации — 17:05
- Просмотр информации о блокированных ip для apache-auth jail — 17:35
- Разблокировка забаненных Fail2Ban ip — 18:03
- Тестирование регулярных выражений Fail2Ban фильтров — 19:22
- Ссылка на подробное описание Fail2Ban — 21:03
Настройка fail2ban и борьба с подбором пароля по ssh
Правила для fail2ban хранятся в файле /etc/fail2ban/jail.conf, но если вы его откроете, то в самом его верху можно прочитать:
# YOU SHOULD NOT MODIFY THIS FILE.
#
# It will probably be overwitten or improved in a distribution update.
#
# Provide customizations in a jail.local file or a jail.d/customisation.local.
Т.е. этот файл может быть перезаписан при обновлении и все наши труды исчезнут. Предлагается использовать файл jail.local или jail.d/customisation.local. Файл /etc/fail2ban/jail.conf уже содержит в себе шаблоны для основных ситуаций, поэтому мы просто скопируем его в файл /etc/fail2ban/jail.local и будем по мере необходимости включать функционал.
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Для примера настроим проверку подбора пароля ssh (из примера в начале статьи). Для этого в файле /etc/fail2ban/jail.local найдем секцию и установим параметры сработки правила и срок блокировки злоумышленника ))
# nano /etc/fail2ban/jail.local
enabled = true
filter = sshd
action = iptables
sendmail-whois
logpath = /var/log/secure
returntype = DROP
# in 1 hour
findtime = 3600
maxretry = 5
# time, sec
bantime = 300
На что можно обратить внимание:
enabled = true. Правило включено.
filter = sshd
Будет применен фильтр /etc/fail2ban/filter.d/sshd.conf.
returntype = DROP. Iptables может REJECT или DROP. Reject — это вежливый drop, с уведомлением удаленной стороне, а DROP — тупо отбрасывание пакетов. По-умолчанию включен режим «REJECT —reject-with icmp-port-unreachable».
В данном случае отлаживать вряд-ли что-то надо, т.к. это предустановленное правило, к тому же максимально стандартное. Поэтому нам просто надо убедиться, что в файл /var/log/secure отражаются успешные и неудачные попытки логина по ssh (просто просмотрите этот файл — ваш заход тоже там отражен). Если все ок, сохраняем изменения и перезапускаем fail2ban:
# service fail2ban restart
Перед тем, как проверять работу блокировки, не заблокируйте сами себя, тестируя работу. Лучше попытаться несколько раз неуспешно залогиниться с другого компьютера, чтобы в логе отразились эти попытки (я немного сократил лог, чтобы уместился по ширине):
…
Failed password for bigmama277 from 192.168.55.172 port 56803 ssh2
password check failed for user (bigmama277)
Failed password for bigmama277 from 192.168.55.172 port 56803 ssh2
…
Можно попробовать проверить, заблокирован ли 192.168.55.172:
# iptables -L
В цепочке fail2ban-SSH должна быть запись о нашем неудачном хакере:
Chain fail2ban-SSH (1 references)
target prot opt source destination
REJECT all — 192.168.55.172 anywhere reject-with icmp-port-unreachable
RETURN all — anywhere anywhere
И повторная попытка соединения с 192.168.55.172 будет невозможна до истечения срока ограничения (в нашем случае 5 мин).
Если мы решим снять блокировку для этого ip, это можно сделать командой:
# fail2ban-client set ssh-iptables unbanip 192.168.55.172
Если вы хотите посмотреть, как именно сравниваются записи в лог файле, откройте файл /etc/fail2ban/filter.d/sshd.conf. В нем указаны регулярные выражения, на соответствие которым проверяется лог файл /var/log/secure.
Рекомендации по настройке Fail2ban
Не рекомендуется оставлять параметр ignoreip со значением по умолчанию , это создаёт очевидную угрозу в многопользовательских системах — если злоумышленник получил доступ хотя–бы к одному shell–аккаунту, то он имеет возможность беспрепятственно запустить bruteforce–программу для атаки на root или других пользователей прямо с этого–же сервера.
Новая опция findtime — определяет длительность интервала в секундах, за которое событие должно повториться определённое количество раз, после чего санкции вступят в силу. Если специально не определить этот параметр, то будет установлено значение по умолчанию равное 600 (10 минут). Проблема в том, что ботнеты, участвующие в «медленном брутфорсе», умеют обманывать стандартное значение. Иначе говоря, при maxretry равным 6, атакующий может проверить 5 паролей, затем выждать 10 минут, проверить ещё 5 паролей, повторять это снова и снова, и его IP забанен не будет. В целом, это не угроза, но всё же лучше банить таких ботов.
Прежде чем вносить изменения следуя рекомендациям, отметим, что не стоит редактировать основной файл настроек , для этого предусмотрены файлы с расширением , которые автоматически подключаются и имеют высший приоритет.
nano /etc/fail2ban/jail.local
## Постоянный IP-адрес. ## Если не переопределить ignoreip здесь, ## то стоит закомментировать этот параметр в jail.conf. ignoreip = 57.66.158.131 ## если в течении 1 часа: findtime = 3600 ## произведено 6 неудачных попыток логина: maxretry = 6 ## то банить IP на 24 часа: bantime = 86400
Осталось перезапустить Fail2ban:
service fail2ban restart
* Restarting authentication failure monitor fail2ban
tail /var/log/fail2ban.log
2013-01-20 22:00:35,911 fail2ban.jail : INFO Jail 'ssh' stopped 2013-01-20 22:00:35,916 fail2ban.server : INFO Exiting Fail2ban 2013-01-20 22:00:36,257 fail2ban.server : INFO Changed logging target to /var/log/fail2ban.log for Fail2ban v0.8.6 2013-01-20 22:00:36,258 fail2ban.jail : INFO Creating new jail 'ssh' 2013-01-20 22:00:36,259 fail2ban.jail : INFO Jail 'ssh' uses poller 2013-01-20 22:00:36,271 fail2ban.filter : INFO Added logfile = /var/log/auth.log 2013-01-20 22:00:36,271 fail2ban.filter : INFO Set maxRetry = 6 2013-01-20 22:00:36,272 fail2ban.filter : INFO Set findtime = 3600 2013-01-20 22:00:36,272 fail2ban.actions: INFO Set banTime = 86400 2013-01-20 22:00:36,298 fail2ban.jail : INFO Jail 'ssh' started
3 решения для организации корпоративной почты
Создать свой почтовый сервер для рассылки и сбора почты — не единственное решение. Организовать корпоративную почту можно и другими способами. Выбор способа зависит от масштабов вашего бизнеса, его направленности и бюджета, который вы готовы выделить на обслуживание почты.
Бесплатный email
Плюсы:
- простой и функциональный интерфейс;
- бесплатное пользование сервисом;
- отсутствие необходимости настройки ресурсных записей (но если вы хотите применить свои настройки, то этот пункт из плюса перерастает в минус).
Минусы:
- ограниченная почтовая квота (это дисковое пространство на сервере, выделенное под вашу почту);
- большинство красивых имен занято (например, вида имя + фамилия);
- сложно подчеркнуть бренд или обозначить принадлежность почтового ящика к определенной компании;
- небезопасно (например, при увольнении сотрудник может сменить пароль к почтовому ящику, с которым он работал, а компания потерять доступ к важным данным).
Почта на домене
Вы можете зарегистрировать домен, созвучный названию вашей компании, и использовать его для создания почтовых ящиков в любом сервисе, который предоставляет услугу почты на домене. Так, имя почтового ящика будет оканчиваться названием компании, а начинаться с чего угодно: с названия отдела, фамилии и имени сотрудника и т.д. Ящик имеет вид: mail@yourdomain.ru
Плюсы:
- большинство сервисов предоставляет услугу почты бесплатно, вы оплачиваете только обслуживание домена;
- работа с корреспонденцией как в web-интерфейсе, так и любом удобном почтовом клиенте;
- широкий функционал, доступный сразу после создания почтового ящика: антиспам, увеличение почтовой квоты, настройка фильтров, переадресации, сбора почты и т.д.
Минусы:
- отсутствие возможности тонкой настройки сервера «под себя»;
- при возникновении сбоев в работе сервера вы не можете повлиять на их устранение.
Персональный почтовый сервер
Это как почта для домена, которая описана в предыдущем пункте, только расширенная версия — вы настраиваете не только домен, но и сам сервер.
Плюсы:
- гибкая настройка сервера под свои нужды: резервное копирование, ограничение доступа, правила пересылки и удаления писем, белые и черные списки и т.д.
- мониторинг работы почтового сервера и доступ к логам (например, если письмо не будет доставлено, вы сможете найти причину и решить проблему);
- контроль работы и надежности сервера.
Минусы:
- материальные расходы на покупку или аренду необходимого оборудования;
- технические знания (для настройки сервера понадобится специалист с навыками администрирования Linux или Windows Server).
Jail пример для apache
С sshd всё понятно. Теперь установим apache (затем nginx), сделаем аутентификацию по паролю, установим максимальное количество попыток ввести правильный пароль равным например 5 и заблокируем редисок на 3 часа.
Скорее всего у вас уже включен
-
mod_authn_file
-
mod_auth_basic
Для создания файла с паролями проще всего воспользоваться утилитой htpasswd.
Если установлен apache (пакет httpd), то ничего дополнительно устанавливать не надо.
Если установлен nginx, то нужно установить пакет httpd-tools, в состав которого входит утилита htpasswd.
# yum install httpd-tools
Начнем с примера для Apache.
Создадим тестовый каталог где будет доступ по паролю
# mkdir /var/www/html/fail2ban-apache
Добавим пользователя john
# htpasswd -c /etc/httpd/conf.d/.f2b-apache john New password: Re-type new password: Adding password for user john
Добавим в
<Directory "/var/www/html/fail2ban-apache"> AuthType Basic AuthName "No pasaran!" AuthUserFile /etc/httpd/conf.d/.f2b-apache Require valid-user </Directory>
Перезапускаем Apache
# systemctl restart httpd
и если всё нормально, то теперь создадим отдельный jail файл для Apache
enabled = true port = http,https filter = apache-auth logpath = /var/log/httpd/error_log maxretry = 5
Проверяем — 5 раз неправильно вводим пароль и смотрим логи
fail2ban.log
# tail -f /var/log/fail2ban.log 2017-08-24 09:06:15,082 fail2ban.filter : INFO Found 192.168.13.77 2017-08-24 09:06:15,257 fail2ban.actions : NOTICE Ban 192.168.13.77
error_log Apache
# tail -f /var/log/httpd/error_log AH01617: user john: authentication failure for "/fail2ban-apache/": Password Mismatch
Так выглядит вывод команды fail2ban-client status apache-http-auth
Status for the jail: apache-http-auth |- Filter | |- Currently failed: 0 | |- Total failed: 5 | `- File list: /var/log/httpd/error_log `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 192.168.13.77
Заключение
Такая нехитрая и эффективная в некоторых случаях защита у нас получилась. Я в течении дня собираю около тысячи попыток залогиниться через wp-admin. Не все боты долбятся 3 раза подряд и попадают в бан. Я бы даже сказал, большая часть этого не делает. Но они и не представляют опасности. Подобная этой настройка защитит в первую очередь от массового нашествия, которое способно серьезно замедлить работу сайта и хостинга в целом. Закрытие доступа на уровне iptables очень эффективный способ сохранить ресурсы сервера.
Помогла статья? Подписывайся на telegram канал автора
Рекомендую полезные материалы по схожей тематике:
Онлайн курсы по Mikrotik
Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую пройти курсы по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Помимо официальной программы, в курсах будут лабораторные работы, в которых вы на практике сможете проверить и закрепить полученные знания. Все подробности на сайте .
Стоимость обучения весьма демократична, хорошая возможность получить новые знания в актуальной на сегодняшний день предметной области. Особенности курсов:
- Знания, ориентированные на практику;
- Реальные ситуации и задачи;
- Лучшее из международных программ.
Важность своевременного обновления сервера — взлом centos сервера через уязвимость bash.
Эпидемия вируса шифровальщика vault — как защитить свои данные.
Базовая настройка centos для обеспечения минимальной защиты сервера.
Создание резервной копии сайта и ее хранение на Яндекс.Диске.