Jump to content
IPS Invision Community
Sign in to follow this  
qwert

Использование fail2ban для защиты SSH от подбора пароля

Recommended Posts

qwert

В данной статье мы рассмотрим защиту SSH-сервиса от брутфорс-атак на примере сервера Ubuntu 16.04 с помощью программы fail2ban, которая эффективно отслеживает сетевую активность и блокирует запросы с устройств, IP-адрес которых попал в чёрный список.

Технические требования

  • сервер с Ubuntu 16.04
  • пользователь с sudo-правами
  • текстовый редактор nano

Шаг 1. Установка fail2ban

Перед установкой программы стоит обновить индекс пакетов, выполнив команду:

sudo apt-get update

Пакет fail2ban присутствует в официальном репозитории, поэтому его можно установить одной командой:

sudo apt-get install fail2ban -y

Итак, fail2ban установлен. Теперь необходимо произвести минимальную настройку.

Шаг 2. Создание файла конфигурации

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

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

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

Шаг 3. Глобальные настройки

Откройте файл /etc/fail2ban/jail.local текстовым редактором. Так как мы рассматриваем настройку на примере Ubuntu, то будем использовать nano:

sudo nano /etc/fail2ban/jail.local

Как и в большинстве конфигов, здесь всё, что находится справа от знака #, является комментарием и не учитывается программой. В первую очередь нас интересует секция [DEFAULT]. В ней содержатся основные правила:

  • ignoreip - указание, какие IP-адреса не должны блокироваться. Вы можете задать через пробел несколько адресов, которые fail2ban не будет учитывать в своих проверках. Например, если у вас постоянный IP-адрес, то вы можете указать его, и тогда при ошибочном вводе пароля не будете заблокированы.
  • bantime - время в секундах, в течение которого подозрительный IP-адрес будет заблокирован.
  • findtime - интервал времени в секундах, в течение которого программой будет определяться подозрительная активность.
  • maxretry - число неуспешных попыток авторизации в течение findtime секунд до попадания IP-адреса в бан.

Чтобы настройки вступили в силу, необходимо перезапустить fail2ban:

sudo service fail2ban restart

К слову, fail2ban ведёт лог, поэтому если не удаётся перезапустить программу из-за некорректной конфигурации, то стоит заглянуть в лог:

tail -n 20 -f /var/log/fail2ban.log

Параметр n указывает, сколько последних строк из лога вывести на экран.

Шаг 4. Защита SSH

Файл конфигурации fail2ban имеет по умолчанию подготовленные секции для различных сервисов, поэтому защита какого-либо из них требует минимальных усилий и знаний. Итак, откроем снова файл конфигурации /etc/fail2ban/jail.local и найдём в нём секцию [sshd] (в вашей системе это может быть [ssh] или [ssh-iptables], если это так, то используйте ту секцию, которая у вас есть). Пробежимся по параметрам (в большинстве своём они не являются обязательными, и если не будут указаны, то применяются настройки по умолчанию):

  • enabled - состояние (true/false) фильтра, показывающее, включен он или выключен.
  • filter - какой фильтр применяется (со списком фильтров можно ознакомиться в /etc/fail2ban/filter.d/).
  • action - действия, выполняемые при бане IP-адреса.
  • logfile - файл с логами, которые будет отслеживать fail2ban.

Исходя из этого, конфиг, банящий IP на 12 часов, если с него в течение 10 минут было произведено 3 неудачных попытки авторизоваться, выглядит так:

[sshd]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/log/auth.log
findtime    = 600
maxretry    = 3
bantime     = 43200

Сохраните изменения (в nano это Ctrl+O) и перезапустите fail2ban для применения настроек:

sudo service fail2ban restart

Шаг 5. Проверка настроек

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

sudo iptables –L

Также для выполнения проверки достаточно несколько раз ввести неправильный пароль при авторизации и убедиться, что дальнейшие запросы от вас не обрабатываются. Следует обратить внимание на следующее:

  • желательно проверку производить не с того же IP, с которого осуществляете настройку (чтобы иметь возможность разбанить себя и отредактировать конфиг).
  • для проверки время бана лучше выставить поменьше.
  • необходимо убедиться, что IP, с которого производится проверка, не был указан в ignoreip.
  • важно знать, как удалить IP-адрес из чёрного списка:
sudo fail2ban-client set SECTION unbanip IP

где SECTION - название секции в конфигурационном файле, в соответствии с правилами которой IP был заблокирован, а IP - адрес, который требуется разблокировать. В нашем случае команда выглядит так:

sudo fail2ban-client set sshd unbanip XXX.XXX.XXX.XXX

Итак, пробуем: для теста я поставил maxretry = 2, bantime = 600, то есть при двух ошибках мой IP-адрес будет заблокирован на 10 минут.

ssh root@95.213.195.80
root@95.213.195.80's password: 
Permission denied, please try again.
root@95.213.195.80's password:

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

ssh root@95.213.195.80
ssh: connect to host 95.213.195.80 port 22: Connection refused

Заключение

Мы рассмотрели использование fail2ban для защиты SSH от брутфорса. Аналогичным образом можно защитить FTP, apache, postfix, dovecot и многие другие сервисы. Это убережёт вас от проникновения злоумышленников на сервер путём подбора пароля.

  • Нравится 1
  • Спасибо 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • qwert
      By qwert
      Использование SSH-ключей — простой и надёжный способ обеспечения безопасности соединения с сервером. В отличие от пароля, взломать SSH-ключ практически невозможно.
      Сгенерировать SSH-ключ очень просто.
      Linux/MacOS
      Откройте терминал и выполните команду:
      ssh-keygen -t rsa На консоль будет выведен следующий диалог:
      Enter file in which to save the key (/home/user/.ssh/id_rsa): Нажмите на клавишу Enter.  Далее система предложит ввести кодовую фразу для дополнительной защиты SSH-подключения:
      Enter passphrase (empty for no passphrase): Этот шаг можно пропустить. При ответе на этот и следующий вопрос просто нажмите клавишу Enter.
      После этого ключ будет создан, а на консоль будет выведено следующее сообщение:
      Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: 476:b2:a8:7f:08:b4:c0:af:81:25:7e:21:48:01:0e:98 user@localhost The key's randomart image is: +--[ RSA 2048]----+ |+.o. | |ooE | |oo | |o.+.. | |.+.+.. S . | |....+ o + | | .o .... | | . .. . | | .... | +-----------------+ Далее выполните в терминале команду:
      cat ~/.ssh/id_rsa.pub На консоль будет выведен ключ. Скопируйте его и вставьте в соответствующее поле:
      Нажмите на кнопку “Добавить.”
      Добавив ключ, выполните в терминале команду:
      ssh root@[IP-адрес сервера] После этого соединение с сервером будет установлено. Вводить пароль при этом не потребуется.
      Windows
      В OC Windows подключение к удаленным серверам по SSH возможно, например, с помощью клиента Putty. Скачать его можно здесь (ссылка взята с официального сайта). Putty не требует установки  - чтобы начать с ним работать, достаточно просто распаковать скачанный архив.
      По завершении распаковки запустите файл puttygen.exe.
      Выберите тип ключа SSH-2 RSA и длину 2048 бит, а затем нажмите на кнопку Generate:
      Во время генерации водите курсором в пустой области окна (это нужно для создания псевдослучайности
      Сохраните сгенерированную пару ключей на локальной машине (кнопки Save public key и Save private key).
      Скопируйте сгененированный ключ и вставьте его в соответствующее поле:
       
    • Sipsb
      By Sipsb
      Просмотреть файл OAuth Server
      Добавляет сервер OAuth2 к вашему форуму IPS Community Suite 4
      Автор: Sipsb Добавлен: 10.11.2016 Категория: Приложения IPS 4 Разработчик: wohali Локализация: ENG  
    • Sipsb
      By Sipsb
      Добавляет сервер OAuth2 к вашему форуму IPS Community Suite 4
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...