Найти в Дзене
Кибер Лис

Памятка по безопасности VPS, VDS сервера Ubuntu, Debian

Данная памятка включает в себя минимальный перечень возможных мер по улучшению безопасности собственного VPS, VDS сервера с Ubuntu или Debian. В качестве хостинга я очень рекомендую VPS от alfahost.io с 10 гигабитной скоростью соединения и современными серверами Ryzen, Xeon под любые задачи. Каждый выбирает меры безопасности для своего сервера сам в зависимости от того для каких целей используется сервер и собственного отношения к безопасности, но общие правила из первого пункта игнорировать не советую. Памятка будет постепенно пополняться новыми мерами безопасности, свои предложения пишите в комментарии или телеграм чат. Настройки сервера VPS не самая важная часть безопасности, самое важное - это здравый смысл администратора сервера. Источник: https://fornex.com/c/fir5fs/ru/help/authorization-ssh-key/ SSH-ключи — простой и надёжный способ обеспечения безопасности соединения с сервером. Одним из непосредственных достоинств этого метода перед традиционной идентификацией с помощью па
Оглавление

Данная памятка включает в себя минимальный перечень возможных мер по улучшению безопасности собственного VPS, VDS сервера с Ubuntu или Debian. В качестве хостинга я очень рекомендую VPS от alfahost.io с 10 гигабитной скоростью соединения и современными серверами Ryzen, Xeon под любые задачи.

Актуальная версия памятки находится тут: https://kiberlis.ru/pamyatka-po-bezopasnosti-vps-vds-servera-ubuntu-debian/

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

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

1. Общие правила безопасности VPS, VDS сервера

Настройки сервера VPS не самая важная часть безопасности, самое важное - это здравый смысл администратора сервера.

  • Не храните пароль личного кабинета сервера в онлайн хранилищах паролей (много случаев сливов паролей) или в TXT файле на рабочем столе. Лучше всего хранить пароль только в своей голове и периодически обновлять его, в крайнем случае заведите бумажный блокнот. Также вы можете воспользоваться хранилищем паролей с открытым исходным кодом KeePassXC или Bitwarden, такой способ тоже относительно безопасен. Если же вы храните пароли в браузере и не хотите менять свои привычки, то обязательно пользуйтесь мастер паролем.
  • Используйте сложные пароли с учётом регистра и использованием спецсимволов.
  • Максимально усильте защиту Email к которому привязан личный кабинет панели управления сервером.
  • Используйте двухфакторную верификацию для Email и личного кабинета администратора сервера. Желательно использовать не смс верификацию, а программы 2FA с использованием токенов по типу Aegis, 2FA, Яндекс ключ и т.д., так как смс могут перехватить злоумышленники с использованием клона вашей сим карты (редкий случай, но так бывает). Я в большинстве случаев использую Aegis
  • Не сохраняйте пароли в FTP-клиентах — очень часто вирусы берут информацию из FTP-клиента.
  • Никому не передавайте данные основной учетной записи администратора, и если есть необходимость в передаче доступа, создайте для этого новую учетную запись с ограниченными правами. Не забудьте потом удалить временную учетную запись.
  • Используйте проверенные VPS, VDS серверы. Сам использую Fornex. Подписчики также рекомендуют Melbicom. В случае если вы всё-таки решили сэкономить денег и используете сомнительный и очень бюджетный сервер, то усиливайте безопасность по максимуму и желательно не используйте свои личные данные, реальный IP и личные платежные реквизиты при покупке аренды сервера.

2. Использование SSH ключа

Источник: https://fornex.com/c/fir5fs/ru/help/authorization-ssh-key/

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

Если вы решили настроить на сервере ssh авторизацию по ключу, первое, что необходимо сделать — это сгенерировать секретный и публичный RSA-ключи.

После генерации, публичный ключ копируется на сервер, а секретный ключ остается храниться на локальном компьютере.

Для того чтобы сгенерировать пары ключей выполните команду:

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

Нажмите Enter чтобы использовать параметры по умолчанию, тогда программа сохранит ключи в каталог .ssh в домашней директории пользователя.

Для перехода в каталог с ключами выполните команду:

В каталоге будут лежать два файла:

  • id_rsa — секретный ключ.
  • id_rsa.pub — публичный ключ.

Скопируйте в надежное место файл секретного ключа, а публичный ключ перенесите на сервер. Удобнее всего для копирования файлов с сервера на пк использовать Filezilla или любой другой SFTP файловый менеджер.

Заносим сгенерированный открытый ключ в авторизованные ключи сервера. Для этого скопируйте содержимое id_rsa.pub в конец файла authorized_keys:

Настройте ssh авторизацию по ключу в конфиге OpenSSH сервера:

Приведите текущие настройки в соответствие параметрам ниже:

Чтобы отключить вход по паролю, изменяем значение параметра в том же файле sshd_config:

Установите права выполнив команду:\

Далее выполните перезапуск ssh сервера.

На этом настройка SSH ключа на сервере закончена.

3. Установка Fail2ban в Ubuntu, Debian

Для избежания попыток подбора пароля по SSH используйте Fail2ban. После неправильных попыток ввода пароля, Fail2ban будет блокировать IP адрес с которого пытались подобрать пароль. Число возможных попыток ввода пароля и длительность блокировки вы можете определить самостоятельно. Например можно настроить блокировку на час после пяти неудачных попыток ввода пароля в SSH.

3.1. Установка Fail2ban в Ubuntu

Обновляем систему:

Пакет Fail2ban включен в репозитории Ubuntu по умолчанию. Чтобы установить его, введите следующую команду:

Для запуска службы Fail2ban вводим следующие команды (для справки, т.к. fail2ban должен запуститься автоматически):

Для проверки работоспособности службы Fail2ban:

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

3.2. Основы настройки Fail2ban

Источник: https://homehosted.ru/ustanovka-i-nastrojka-fail2ban/

Процесс настройки fail2ban не зависит от дистрибутива Linux. Файлы конфигурации Fail2Ban располагаются в директории /etc/fail2ban. В первую очередь нас интересует файл jail.conf. Однако, его не рекомендуется изменять, так как он может быть перезаписан при обновлении пакета и для настройки используют подключаемые файлы из каталога /etc/fail2ban/jail.d. Он содержит основные настройки защиты для таких сервисов, как HTTP, FTP, SSH, Squid, Monit, Horde, Drupal и др. Сам файл поделен на секции, которые называются «тюрьмами» или «изоляторами» (jais). Отдельный изолятор отвечает за определённый сервис. Достаточно добавить параметр enabled = true в необходимой секции файла для активации защиты.

Для включения того или иного правила из основного файла конфигурации jail.conf необходимо создавать отдельные конфигурации для каждого сервиса отдельно в директории /etc/fail2ban/jail.d/ по аналогии с файлом /etc/fail2ban/jail.d/defaults-debian.conf, который также не следует редактировать. Или по аналогии с файлом из следующего пункта.

Основной перечень возможных параметров:

  • ignoreip — перечень IP-адресов, которые не должны блокироваться сервисом ни при каких условиях. В этом параметре можно также задать маску подсети или имя DNS-сервера. Вы можете прописать свой IP адрес для исключения самоблокировки.
  • bantime — время блокировки в секундах. По истечении этого срока заблокированный адрес удаляется из списков сервиса.
  • maxretry — количество подозрительных действий, после которых активируется блокировка. Например, количество неудачных попыток логина.
  • port — определяет, на каком порту или портах запущен необходимый сервис.
  • filter — имя фильтра, по которому идёт поиск совпадений. Например, для фильтра sshd создан файл /etc/fail2ban/filter.d/sshd.conf.
  • logpath — путь к файлу журнала. Здесь будет фиксироваться история удачных и неудачных входов в систему. По умолчанию это файл /var/log/auth.log.
  • action — действия, которое будет выполняться, если Fail2ban обнаружит активность, соответствующую критериям поиска;

Fail2ban читает файлы конфигурации в следующем порядке. Каждый файл .local отменяет настройки из файла .conf:

  • /etc/fail2ban/jail.conf - стандартные настройки сервисов
  • /etc/fail2ban/jail.d/*.conf - пользовательские настройки администратора для сервисов
  • /etc/fail2ban/jail.local - пользовательские настройки администратора для сервисов
  • /etc/fail2ban/jail.d/*.local - пользовательские настройки администратора для сервисов

Также существуют и другие файлы настроек:

  • action.d/*.* - конфигурация выполняемых действий;
  • fail2ban.conf - стандартный конфигурационный файл;
  • fail2ban.d/*.* - пользовательские настройки администратора для Fail2ban;
  • filter.d/*.* - шаблоны для анализа логов и настройки шаблонов;

Файлы paths-arch.conf, paths-common.conf, paths-debian.conf и paths-opensuse.conf хранят в себе настройки путей для различных операционных систем семейства Linux.

3.3. Настройка Fail2ban для SSH

Источник: https://homehosted.ru/ustanovka-i-nastrojka-fail2ban

SSH изолятор работает в Fail2Ban по умолчанию сразу после установки сервиса. Но если Вам необходимо внести изменения в его работу, необходимо создать новый jail файл. Для этого мы будем использовать редактор nano:

Добавляем в созданный файл следующие строки:

* где:

  • sshd — название для правила;
  • enabled позволяет быстро включать (true) или отключать (false) правило;
  • port — порт целевого сервиса. Принимается буквенное или цифирное обозначение;
  • filter — фильтр (критерий поиска), который будет использоваться для поиска подозрительных действий. По сути, это имя файла из каталога /etc/fail2ban/filter.d без .conf на конце;
  • logpath — расположение лог-файла, в котором фильтр будет искать подозрительную активность на основе описанных критериев.
  • maxretry — количество действий, которые разрешено совершить до бана.
  • findtime — время в секундах, в течение которого учитывается maxretry;

Чтобы изменения вступили в силу, перезапускаем сервис:

Указанная нами конфигурация будет блокировать IP адреса после 3-х проваленных попыток логина на Ваш сервер через SSH. Блокировка действует 300 секунд, а все подозрительные действия будут записываться в файл журнала /var/log/auth.log.

Вы можете изменить параметры под Ваши нужды.

3.4. Добавление IP адреса в белый список

Источник: https://homehosted.ru/ustanovka-i-nastrojka-fail2ban

Чтобы избежать неловкого провала в виде самоблокировки, советую сразу же добавить доверенные IP-адреса в белый список, прежде чем приступать к основной настройке программы. Сделать это можно, отредактировав файл jail.local:

Добавьте следующие строки, заменив ip1 и ip2 на доверенные адреса:

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

Не забудьте перезагрузить программу для применения изменений при помощи команды:

4. Изменение стандартного порта для SSH подключения в Ubuntu, Debian

Источник: https://fornex.com/ru/help/ssh-port/

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

Информация об используемом порте находится на вашем виртуальном сервере (VPS) в файле sshd_config, который находится в директории /etc/ssh/

Чтобы сменить SSH-порт:

Заходим на сервер помощью SSH-клиента PuTTY

Устанавливаем Net-tools:

Проверяем список открытых портов командой:

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

После проверки портов открываем файл sshd_config. Его вы можете открыть с помощью любого установленного текстового редактора.

Редактором nano:

Ищем в файле sshd_config запись:

-2

Раскомментируем строку убрав # и меняем номер порта на другой, сохраняем данные изменения при помощи сочетания кнопок на клавиатуре CTRL+O

После нажимаем подтвердить, с помощью клавиши Enter на клавиатуре

Чтобы изменения вошли в силу, перезагружаем виртуальный SSH-сервер. Это можно сделать при помощи команды:

или

или

5. Добавление правил IPTABLES

Закрываем IPTABLES от лишних соединений путем добавления новых правил в полнение к стандартным.

Так как последующие команды закроют все лишние порты и соединения, вам необходимо добавить правило фаервола (брэндмауэра) разрешающее использовать порт SSH соединения (в противном случае вы не можете использовать SSH и единственный способ им воспользоваться будет панель управления сервером)

Выполните следующую команду указав номер своего порта SSH вместо ПОРТ-SSH, такой же командой вы можете открыть и другие порты такие как 80, 443 и т.д.:

Выполните команду для добавления правил IPTABLES исключающих возможность ботам пинговать ваш сервер во внешней сети (отбрасываем все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса):

Минимальным и удобным набором правил iptables со мной поделился {~Sc®eN~}, за что ему Спасибо. Также вы можете ознакомиться с упомянутыми правилами фаервола в статье https://coderknows.com/2019/04/22/iptables/

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

Ставим пакет iptables-persistent:

Для сохранения правил вводим команду:

Перезапускаем Fail2ban:

#wirehole #информационнаябезопасность #VPN сервер #VPS #vds #Ubuntu #debian