Перейти к содержанию

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


Рекомендуемые сообщения

  • Админы

Друзья!

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

Данная статья актуальна в первую очередь для Ubuntu. Во вторую для Debian.

 

  1. Введение в безопасность VPS: Объяснение важности безопасности VPS и основных угроз, которые могут возникнуть при использовании серверов Ubuntu и Debian.
  2. Обновление системы: Подробное руководство по обновлению системы для обеспечения ее актуальности и защиты от известных уязвимостей.
  3. Настройка брандмауэра: Руководство по настройке брандмауэра для ограничения доступа к определенным портам и службам.
  4. Смена стандартных портов: это еще один способ усилить безопасность вашего сервера. Хакеры часто сканируют наиболее распространенные порты (например, 22 для SSH), поэтому изменение портов на нестандартные может помочь уменьшить риск атак.
  5. Использование SSH ключей: Объяснение преимуществ использования SSH ключей для аутентификации, а также шаги по их созданию и установке.
  6. Настройка Fail2Ban: Руководство по настройке Fail2Ban для автоматической блокировки IP-адресов, которые пытаются взломать систему.
  7. Резервное копирование данных: Важность регулярного резервного копирования данных и руководство по его настройке.
  8. Заключение и дополнительные рекомендации: Обобщение информации, представленной в статье, и дополнительные рекомендации по обеспечению безопасности VPS.

1. Введение в безопасность VPS

Виртуальные частные серверы (VPS) стали неотъемлемой частью современного интернет-пространства. Они предоставляют пользователям гибкость и контроль, которые трудно достичь с общим хостингом. Однако вместе с этими преимуществами приходит и ответственность за обеспечение безопасности вашего VPS.

Безопасность VPS - это не что-то, что можно взять и забыть. Это постоянный процесс, который требует регулярного обслуживания и обновления. Несмотря на то, что Ubuntu и Debian являются одними из самых безопасных операционных систем, они не являются неприступными. Все системы подвержены угрозам, и ваша задача - минимизировать риск.

Существуют различные типы угроз безопасности, которые могут возникнуть при использовании серверов Ubuntu и Debian. Вот некоторые из них:

  1. Вредоносное ПО: Это может включать в себя вирусы, черви, трояны и другие виды вредоносного ПО, которые могут повредить вашу систему или использовать ее для атак на другие системы.
  2. Атаки DDoS: Это атаки, которые направлены на перегрузку вашего сервера большим количеством запросов, что может привести к его отказу.
  3. Атаки с помощью подбора паролей: Это атаки, при которых злоумышленники пытаются угадать ваши пароли для получения доступа к вашему серверу.
  4. Уязвимости в программном обеспечении: Это уязвимости в программном обеспечении, которое вы используете на вашем сервере, которые могут быть использованы злоумышленниками для получения несанкционированного доступа.

Важно понимать эти угрозы и принимать меры для их предотвращения. В следующих разделах мы рассмотрим, как вы можете обеспечить безопасность вашего VPS на серверах Ubuntu и Debian.

2. Обновление системы

Одним из самых важных шагов в обеспечении безопасности вашего VPS является регулярное обновление вашей системы. Обновления часто включают в себя исправления уязвимостей, которые могут быть использованы злоумышленниками для атаки на вашу систему. Вот как вы можете обновить свою систему на серверах Ubuntu и Debian:

Обновление списка пакетов: Прежде всего, вам нужно обновить список пакетов в вашей системе. Это можно сделать с помощью команды sudo apt update. Эта команда обновит список доступных пакетов и их версий.

Обновление установленных пакетов: После обновления списка пакетов вы можете обновить все установленные пакеты с помощью команды sudo apt upgrade. Эта команда обновит все установленные пакеты до последних версий.

Удаление неиспользуемых пакетов: После обновления пакетов рекомендуется удалить неиспользуемые пакеты, которые больше не нужны. Это можно сделать с помощью команды sudo apt autoremove.

Обновление ядра системы: В некоторых случаях может потребоваться обновление ядра системы. Это можно сделать с помощью команды sudo apt dist-upgrade. После выполнения этой команды может потребоваться перезагрузка сервера.

Вот пример того, как выглядят эти команды в терминале:

sudo apt update 
sudo apt upgrade 
sudo apt autoremove 
sudo apt dist-upgrade

Помните, что обновление системы - это важный шаг в обеспечении безопасности вашего сервера. Регулярное выполнение этих шагов поможет защитить ваш сервер от большинства известных угроз.

3. Настройка брандмауэра

Брандмауэр играет важную роль в обеспечении безопасности вашего VPS. Он контролирует входящий и исходящий трафик на вашем сервере, позволяя только легитимным соединениям проходить. Вот как вы можете настроить брандмауэр на серверах Ubuntu и Debian:

Установка UFW: UFW (Uncomplicated Firewall) - это простой в использовании интерфейс для управления брандмауэром iptables. Вы можете установить его с помощью команды sudo apt install ufw.

Настройка правил UFW: После установки UFW вы можете настроить правила для различных портов и служб. Например, если вы хотите разрешить доступ к порту 22 (SSH), вы можете использовать команду sudo ufw allow 22.

Включение UFW: После настройки правил вы можете включить UFW с помощью команды sudo ufw enable. Это активирует брандмауэр и применяет ваши правила.

Проверка статуса UFW: Вы можете проверить статус UFW и список ваших правил с помощью команды sudo ufw status.

Вот пример того, как выглядят эти команды в терминале:

sudo apt install ufw 
sudo ufw allow 22 
sudo ufw enable 
sudo ufw status

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

4. Смена стандартных портов

Смена стандартных портов - это еще один способ усилить безопасность вашего сервера. Хакеры часто сканируют наиболее распространенные порты (например, 22 для SSH), поэтому изменение портов на нестандартные может помочь уменьшить риск атак.

Вот как вы можете изменить стандартный порт SSH с 22 на другой (например, 2222) на серверах Ubuntu и Debian:

Редактирование файла конфигурации SSH: Откройте файл конфигурации SSH с помощью команды:

nano /etc/ssh/sshd_config

Найдите строку, которая начинается с #Port 22, удалите символ # и измените 22 на 2222 (или любой другой порт, который вы хотите использовать).

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

sudo systemctl restart ssh

Обновление правил UFW: Теперь, когда вы изменили порт SSH, вам нужно обновить правила UFW, чтобы разрешить трафик на новом порту. Вы можете сделать это с помощью команды 

sudo ufw delete allow 22 и sudo ufw allow 2222

Вот пример того, как выглядят эти команды в терминале:

sudo nano /etc/ssh/sshd_config
sudo systemctl restart ssh
sudo ufw delete allow 22
sudo ufw allow 2222

Помните, что при изменении порта SSH вам нужно будет указывать новый порт при подключении к серверу через SSH. Например, если вы изменили порт на 2222, вы должны будете использовать команду ssh -p 2222 user@your_server_ip.

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

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

image.png

SSH ключи представляют собой безопасный метод аутентификации, который предлагает больше безопасности, чем традиционные пароли. Они особенно полезны для серверов, доступных через интернет, где угроза взлома высока. Вот как вы можете создать и использовать SSH ключи на серверах Ubuntu и Debian:

  1. Создание SSH ключей: Для создания нового SSH ключа вы можете использовать команду ssh-keygen. Эта команда создаст пару ключей: открытый ключ (для установки на сервере) и закрытый ключ (для использования при подключении к серверу).
  2. Установка открытого ключа на сервере: После создания ключей вы должны установить открытый ключ на вашем сервере. Это можно сделать, скопировав содержимое файла открытого ключа (обычно ~/.ssh/id_rsa.pub) в файл ~/.ssh/authorized_keys на вашем сервере.
  3. Использование закрытого ключа для подключения к серверу: При подключении к серверу вы должны указать ваш закрытый ключ с помощью опции -i команды ssh. Например, ssh -i ~/.ssh/id_rsa user@your_server_ip

Вот пример того, как выглядят эти команды в терминале:

ssh-keygen cat ~/.ssh/id_rsa.pub | ssh user@your_server_ip "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys" 
ssh -i ~/.ssh/id_rsa user@your_server_ip

Помните, что при использовании SSH ключей важно хранить ваш закрытый ключ в безопасном месте и не передавать его никому. Если кто-то получит доступ к вашему закрытому ключу, он сможет подключиться к вашему серверу. Поэтому также рекомендуется защитить ваш закрытый ключ паролем при создании. Это можно сделать, следуя инструкциям команды ssh-keygen.

5.1. Настройка SSHD_CONFIG

Открываем файл для редактирования:

nano /etc/ssh/sshd_config

В самый конец файла вставляем:

PubkeyAuthentication yes 
AuthorizedKeysFile %h/.ssh/authorized_keys 
RhostsRSAAuthentication no 
HostbasedAuthentication no 
PermitEmptyPasswords no

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

PasswordAuthentication no

Для Ubuntu 22.04 дополнительно пропишите

PubkeyAcceptedAlgorithms +ssh-rsa

После этого сохраните файл Ctrl + O .. и закройте его Ctrl + X

Присвойте права для файла:

chmod 700 ~/.ssh/ &&
chmod 600 ~/.ssh/authorized_keys

И перезапустите сервис sshd

service sshd restart

6. Настройка Fail2Ban

image.png

Fail2Ban - это инструмент, который помогает защитить ваш сервер от брутфорс-атак. Он мониторит логи на предмет повторяющихся неудачных попыток входа и автоматически блокирует IP-адреса, которые показывают подозрительную активность. Вот как вы можете настроить Fail2Ban на серверах Ubuntu и Debian:

  1. Установка Fail2Ban: Fail2Ban можно установить с помощью менеджера пакетов apt. Для этого введите команду sudo apt install fail2ban.
  2. Настройка конфигурации Fail2Ban: После установки Fail2Ban вам нужно настроить его конфигурацию. Конфигурационные файлы Fail2Ban находятся в каталоге /etc/fail2ban. Вы можете скопировать файл jail.conf в новый файл jail.local с помощью команды sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local. Затем вы можете редактировать jail.local с помощью текстового редактора, например, nano: sudo nano /etc/fail2ban/jail.local.
  3. Настройка правил Fail2Ban: В файле jail.local вы можете настроить различные параметры, такие как длительность блокировки (параметр bantime), количество неудачных попыток входа, после которых IP-адрес будет заблокирован (параметр maxretry), и так далее. Вы также можете настроить специфические правила для различных служб, таких как SSH или Apache.
  4. Запуск и проверка статуса Fail2Ban: После настройки конфигурации вы можете запустить Fail2Ban с помощью команды sudo systemctl start fail2ban. Вы можете проверить статус Fail2Ban с помощью команды sudo systemctl status fail2ban.

Вот пример того, как выглядят эти команды в терминале:

sudo apt install fail2ban 
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local 
sudo nano /etc/fail2ban/jail.local 
sudo systemctl start fail2ban 
sudo systemctl status fail2ban

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

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

Вот пример того, как выглядят эти команды в терминале:

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

sudo nano /etc/fail2ban/jail.local

Файл jail.local поделён на секции, так называемые «изоляторы» (jails), каждая секция отвечает за определённый сервис и тип атаки.

Вот пример конфигурации для защиты SSH от повторяющихся неудачных попыток авторизации на SSH–сервере, проще говоря, «brute–force»:

[DEFAULT] ignoreip = 127.0.0.1/8 
bantime = 600 
maxretry = 3 
banaction = iptables-multiport 
[ssh] 
enabled = true 
port = ssh 
filter = sshd 
logpath = /var/log/auth.log 
maxretry = 6

Параметры из секции [DEFAULT] применяются ко всем остальным секциям, если не будут переопределены. Секция [ssh] отвечает за защиту SSH.

Важно помнить, что при изменении настроек Fail2Ban, вам нужно будет перезагрузить службу Fail2Ban, чтобы применить изменения. Вы можете сделать это с помощью команды sudo systemctl restart fail2ban.

sudo systemctl restart fail2ban

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

Дополнительные варианты конфигурации jail.local для самых популярных сервисов:

MySQL:

[mysqld-auth] 
enabled = true 
filter = mysqld-auth 
port = 3306 
logpath = /var/log/mysql/error.log

Nginx:

[nginx-http-auth] 
enabled = true 
filter = nginx-http-auth 
port = http,https 
logpath = /var/log/nginx/error.log

Apache:

[apache-auth] 
enabled = true 
port = http,https 
filter = apache-auth 
logpath = /var/log/apache2/error.log

После редактирования файла jail.local, вам нужно будет перезагрузить службу Fail2Ban, чтобы применить изменения. Вы можете сделать это с помощью команды sudo systemctl restart fail2ban.

sudo systemctl restart fail2ban

7. Резервное копирование данных

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

Вот как вы можете настроить резервное копирование данных на серверах Ubuntu и Debian:

  • Создание резервной копии с помощью dd: Команда dd копирует файл, преобразуя в процессе формат данных, в соответствии с указанными операндами. Чтобы сделать запасную копию вашего жесткого диска используйте следующую команду: 
    dd if =<исходный_диск> of=<полное_имя_копии> bs=8M conv=sync,noerror
  • Восстановление из резервной копии с помощью dd: Чтобы сделать восстановление вашего жесткого диска из резервной копии используйте следующую команду: 
    dd if =<полное_имя_копии> of=<целевой_диск> bs=8M conv=sync,noerror
  • Создание резервной копии с помощью tar: Команда tar в Linux часто используется для создания архивов .tar.gz или .tgz, также называемых «tarballs». Чтобы сделать бекап вашей системы используйте следующую команду: 

  • tar -cvpzf <имя_файла>.tar.gz --exclude=<имя_файла> --one-file-system <целевой_каталог>

     

8. Заключение и дополнительные рекомендации

В этой статье мы рассмотрели различные аспекты обеспечения безопасности VPS, включая настройку брандмауэра, смену стандартных портов, использование SSH ключей для аутентификации, настройку Fail2Ban для автоматической блокировки IP-адресов и резервное копирование данных.

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

В заключение, вот несколько дополнительных рекомендаций по обеспечению безопасности VPS:

  • Регулярно устанавливайте важные обновления ОС и ПО
  • Используйте только ПО из проверенных источников
  • Уделите должное внимание настройке Firewall
  • Переименуйте стандартную учетную запись администратора
  • Создайте несколько административных аккаунтов
  • Поддерживайте виртуальные машины в актуальном состоянии
  • Используйте несколько виртуальных машин для большей устойчивости и доступности
  • Внедрение стратегии непрерывности бизнес-процессов и аварийного восстановления (BCDR)

Помните, что безопасность вашего VPS - это ваша ответственность. Будьте внимательны, будьте безопасны!

Ссылка на комментарий
  • Админы
Ссылка на комментарий
  • 1 месяц спустя...
  • Админы
36 минут назад, Qeqw01 сказал:

А отключить root и прикрутить 2го пользователя есть смысл?

Можно) Но лучше сперва сделать второго пользователя, а затем отключить root)

Ссылка на комментарий
  • Профессионалы

Кстати, а что делать, если после отключения входа по паролю всё равно входит по паролю? sshd естестественно перезапускалось не раз, единственное решение, которое было найдено, это зайти в /etc/ssh/sshd_config.d/50-cloud-init.conf и отредактировать именно там PasswordAuthentication на значение no.
Кто-то сталкивался с подобным?

 

UPD. Отвечаю на свой же вопрос.
Файл /etc/ssh/sshd_config содержит строку Include /etc/ssh/sshd_config.d/*.conf, если она не закомментирована, то цитирую с Reddit сообщение:

Цитата

Если это так, и любой из файлов в sshd_config.d также устанавливает парольную аутентификацию, то они могут переопределять все остальное, что вы сделали. Если настройка повторяется, то вступит в силу только первая, а все последующие будут игнорироваться.

Решение:
1) закомментировать Include /etc/ssh/sshd_config.d/*.conf
2) либо пройти (в моем случае) по пути /etc/ssh/sshd_config.d/50-cloud-init.conf и закомментировать там PasswordAuthentication, тогда точно всё заработает
Но думаю 1й вариант наиболее предпочтительнее.

Изменено пользователем Qeqw01
Ответ найден
Ссылка на комментарий
  • Профессионалы

Кстати, а кто что скажет про CrowdSec? Не лучше ли он того же fail2ban? Как я, понял одно из главных отличий в том, что списки забаненных айпи адресов не только локальные, но ещё берутся и у других пользователей

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

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

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

Важная информация

Вы принимаете наши Условия использования, Политика конфиденциальности, Правила. А также использование Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.

Яндекс.Метрика