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

Как защитить SSH с помощью fail2ban в Ubuntu 12.04


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

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

  • Обновите Ubuntu до версии 14.04.
  • Обновление Ubuntu 14.04 до Ubuntu 16.04
  • Перенесите данные сервера в поддерживаемую версию.

Причина:

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

О Fail2Ban

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

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

Используйте apt-get для установки Fail2Ban

sudo apt-get install fail2ban

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

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

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

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

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

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

sudo nano /etc/fail2ban/jail.local

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

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

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8
bantime  = 600
maxretry = 3

# "backend" specifies the backend used to get files modification. Available
# options are "gamin", "polling" and "auto".
# yoh: For some reason Debian shipped python-gamin didn't work as expected
#      This issue left ToDo, so polling is default backend for now
backend = auto

#
# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = root@localhost

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

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

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

Вы можете оставить бэкенд автоматическим.

Destemail – это адрес электронной почты, на который отправляются оповещения. Если на вашем дроплете настроен почтовый сервер, Fail2Ban может отправить вам электронное письмо, когда он заблокирует IP-адрес.

Дополнительные сведения — действия

Раздел «Действия» расположен под значениями по умолчанию. Начало выглядит так:

#
# ACTIONS
#

# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overridden globally or per
# section within jail.local file
banaction = iptables-multiport

# email action. Since 0.8.1 upstream fail2ban uses sendmail
# MTA for the mailing. Change mta configuration parameter to mail
# if you want to revert to conventional 'mail'.
mta = sendmail

# Default protocol
protocol = tcp
[...]

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

MTA относится к программе электронной почты, которую fail2ban будет использовать для отправки электронных писем, чтобы привлечь внимание к вредоносному IP-адресу.

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

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

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

[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6

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

port обозначает порт, который отслеживает fail2ban. Если вы настроили свой виртуальный частный сервер на нестандартный порт, измените порт, чтобы он соответствовал тому, который вы используете:

 eg. port=30000

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

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

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

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

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

sudo service fail2ban restart

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

sudo iptables -L