Site icon 8HOST.COM

Защита SSH с помощью fail2ban – CentOS 6

Значение Fail2Ban

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

1. Установка 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

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

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

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

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

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

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

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

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

Findtime указывает на количество времени, на протяжении которого хост может войти. По умолчанию установлено 10 минут. Это значит, что если хост не сможет войти в систему за установленное в maxretry количество попыток и назначенные 10 минут, он будет заблокирован.

4.  Конфигурирование раздела sshiptables в 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

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

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

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

В параметрах «iptables» можно продолжить настройку fail2ban. К примеру, если используется нестандартный порт, нужно заменить номер порта в скобках на соответствующий; строка должна выглядеть примерно так:

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

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

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

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

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

5. Перезагрузка Fail2Ban

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

sudo service fail2ban restart

Fail2ban правила можно просмотреть в IP table:

iptables -L