Поиск по сайту:

Как защитить SSH с помощью fail2ban на CentOS 6


Статус: устарело

В этой статье рассматривается версия CentOS, которая больше не поддерживается. Если вы в настоящее время используете сервер под управлением CentOS 6, мы настоятельно рекомендуем обновить или перейти на поддерживаемую версию CentOS.

Причина:

См. вместо этого:

Следующий учебник DigitalOcean может представлять немедленный интерес, поскольку в нем описывается, как защитить демон службы SSH с помощью fail2ban на сервере CentOS 7:

  • Как защитить SSH с помощью Fail2Ban в CentOS 7

О Fail2Ban

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

Шаг первый — установите Fail2Ban

Поскольку fail2ban недоступен в CentOS, мы должны начать с загрузки репозитория EPEL:

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

Затем установите fail2ban:

yum install fail2ban

Шаг второй — скопируйте файл конфигурации

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

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

После того, как файл скопирован, вы можете внести все свои изменения в новый файл jail.local. Многие из возможных служб, которые могут нуждаться в защите, уже находятся в файле. Каждый находится в своем разделе, настраивается и отключается.

Шаг третий. Настройте параметры по умолчанию в Jail.Local.

Откройте новый файл конфигурации fail2ban:

vi /etc/fail2ban/jail.local

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

Вы можете увидеть раздел по умолчанию ниже.

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1

# "bantime" is the number of seconds that a host is banned.
bantime  = 3600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 3

Впишите свой личный IP-адрес в строку ignoreip. Вы можете отделить каждый адрес пробелом. IgnoreIP позволяет внести в белый список определенные IP-адреса и убедиться, что они не заблокированы для вашего VPS. Включение вашего адреса гарантирует, что вы случайно не забаните себя на своем собственном виртуальном частном сервере.

Следующим шагом является определение бантайма, количества секунд, в течение которых узел будет заблокирован от сервера, если будет обнаружено, что он нарушает какое-либо из правил. Это особенно полезно в случае ботов, которые после блокировки просто переходят к следующей цели. По умолчанию установлено значение 10 минут — вы можете увеличить его до часа (или больше), если хотите.

Maxretry – это количество неверных попыток входа в систему, которое может иметь хост, прежде чем он будет заблокирован на время блокировки.

Время поиска – это время, в течение которого хост должен войти в систему. Значение по умолчанию – 10 минут; это означает, что если хост попытается и не сможет войти в систему больше, чем максимальное количество попыток в течение назначенных 10 минут, он будет заблокирован.

Шаг четвертый (необязательно) — настройте раздел ssh-iptables в Jail.Local.

Раздел сведений о SSH находится немного ниже в конфигурации, и он уже настроен и включен. Хотя от вас не требуется вносить какие-либо изменения в этот раздел, вы можете найти подробную информацию о каждой строке ниже.

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath  = /var/log/secure
maxretry = 5

Включено просто означает, что защита SSH включена. Вы можете отключить его словом «false».

Фильтр, установленный по умолчанию на sshd, относится к файлу конфигурации, содержащему правила, которые fail2ban использует для поиска совпадений. Имя представляет собой сокращенную версию расширения файла. Например, sshd относится к файлу /etc/fail2ban/filter.d/sshd.conf.

Действие описывает шаги, которые fail2ban предпримет для блокировки соответствующего IP-адреса. Как и запись фильтра, каждое действие относится к файлу в каталоге action.d. Действие запрета по умолчанию, \iptables\, можно найти в /etc/fail2ban/action.d/iptables.conf.

В деталях \iptables\ вы можете дополнительно настроить fail2ban. Например, если вы используете нестандартный порт, вы можете изменить номер порта в квадратных скобках, чтобы строка выглядела примерно так:

 eg. iptables[name=SSH, port=30000, protocol=tcp]

Вы также можете изменить протокол с TCP на UDP в этой строке, в зависимости от того, какой из них вы хотите отслеживать через fail2ban.

Если у вас есть почтовый сервер, настроенный на вашем виртуальном частном сервере, Fail2Ban может отправить вам электронное письмо, когда он заблокирует IP-адрес. По умолчанию sendmail-whois относится к действиям, расположенным в /etc/fail2ban/action.d/sendmail-whois.conf.

путь к журналу относится к местоположению журнала, которое будет отслеживать fail2ban.

Строка max retry в разделе SSH имеет то же определение, что и опция по умолчанию. Однако, если вы включили несколько служб и хотите иметь определенные значения для каждой из них, вы можете установить здесь новое максимальное количество повторных попыток для SSH.

Шаг пятый — перезапустите Fail2Ban

После внесения любых изменений в конфигурацию fail2ban всегда обязательно перезапускайте Fail2Ban:

sudo service fail2ban restart

Вы можете увидеть правила, которые применяет fail2ban в таблице IP:

iptables -L