Как защитить 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