Site icon 8HOST.COM

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

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

Шаг 1: установка Fail2Ban

Чтобы установить Fail2Ban, используйте команду apt-get:

sudo apt-get install fail2ban

 Шаг 2: копирование конфигурационного файла

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

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

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

Шаг 3: конфигурирование умолчаний в 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

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

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

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

В строке backend можно оставить значение

auto.

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

Дополнительные сведения: раздел Actions

Раздел Actions находится за разделом по умолчанию. Он начинается так:

#
# 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
[...]

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

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

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

Шаг 4 (дополнительный): конфигурирование раздела ssh-iptables в Jail.Local

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

Хотя вносить какие-либо изменения в данном разделе необязательно, здесь приведена подробная информация о каждой его строке.

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

Enabled просто указывает, что защита SSH включена. Чтоб выключить ее, замените «true» на «false».

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

номером, например:

port=30000

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

log path указывает на местонахождение журнала, отслеживаемого fail2ban.

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

Шаг 5: перезапуск Fail2Ban

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

sudo service fail2ban restart

Правила, которые применяет fail2ban, можно просмотреть в IP table:

sudo iptables -L