December 22 2025 15:34:47
Навигация
· Генеральная

· Материнские платы
· Контроллеры
· CPU - процессоры
· Память - RAM
· Видеокарты
· HDD, SSD, FDD
· CD - DVD - BD
· Звуковые карты
· Охлаждение ПК
· Корпуса ПК
· Электропитание
· Мониторы и ТВ
· Манипуляторы
· Ноутбуки, десктопы

· Интернет
· Принт и скан
· Фото-видео
· Мультимедиа
· Компьютеры - общая
· Программное
· Игры ПК
· Радиодело
· Производители

· Динамики, микрофоны
· Аппаратура

· Телевидение
· Безопасность
· Электроника / Быт
· Телефония
· Пульты - ПДУ
· Создание сайтов

· О сайте wasp.kz...

· Каталог ссылок
Последние статьи
· Безопасность Ubuntu ...
· Какое бывает онлайн ...
· Зима, мороз и солнце...
· Америка без порно - ...
· Мы сами себя атакова...
Счетчики




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

- Темы форума
- Комментарии
Иерархия статей
Статьи » Создание сайтов » Безопасность Ubuntu VPS: настройка защиты от взлома с нуля, без мифов и лишней «магии»
Безопасность Ubuntu VPS: настройка защиты от взлома с нуля, без мифов и лишней «магии»

Безопасность Ubuntu VPS

Ubuntu на VPS часто воспринимают как «поставил сервер – открыл SSH – дальше разберусь». Проблема в том, что интернет разберется быстрее: автоматические сканеры и боты приходят на новый публичный IP в течение короткого времени, и дальше начинается шум из перебора паролей, попыток уязвимых логинов и поиска неправильно настроенных сервисов.

Безопасность Ubuntu на VPS – защита от взлома с нуля: SSH, firewall, аудит, бэкапы

Эту статью я пишу как редактор, который регулярно видит последствия компрометации VPS: от тихой установки криптомайнера до «внезапного» попадания IP в спам-листы из-за рассылки через взломанный веб-сайт. Если вы только выбираете площадку под сервер, удобно воспользоваться VPS.house – здесь можно арендовать виртуальный сервер и быстро развернуть актуальную Ubuntu для практики и последующей эксплуатации.

Ниже будет настройка защиты «с нуля» – но не в формате бесконечного списка «включите всё». Мы начнем с модели угроз и будем добавлять меры защиты только там, где они реально снижают риск. Это важно: в безопасности ценится не количество галочек, а управляемость и предсказуемость.

1. Сначала модель угроз, потом команды

Большинство провалов безопасности на VPS – не из-за «хакеров уровня кино», а из-за несогласованной конфигурации. Поэтому первый шаг – определить, от чего мы защищаемся:

  • Удаленный вход: brute force по SSH, кража ключей, попытки залогиниться в root
  • Уязвимости сервисов: веб-сервер, панели, базы данных, приложения
  • Ошибки администрирования: открыли порт «на время», забыли; дали sudo без пароля; оставили тестовый аккаунт
  • Посткомпрометация: злоумышленник уже внутри и пытается закрепиться, спрятать следы, расширить доступ

Из этого сразу вытекает базовый принцип: уменьшаем поверхность атаки (меньше доступных извне сервисов), усиливаем контроль доступа (SSH, права, ключи), делаем обнаружение и восстановление (логи, контроль целостности, бэкапы). Эту логику используют и в индустриальных бенчмарках вроде CIS Benchmarks для Linux: там важна воспроизводимость, а не «секретные твики».

2. Шаг 0 – подготовка до первого входа

2.1. Генерируем ключи SSH локально. Не делайте это на сервере, который еще не укреплен. На рабочей машине:

ssh-keygen -t ed25519 -a 64 -C "admin@yourdomain" 

Параметр -a увеличивает «стоимость» перебора (KDF). Пароль на ключ (passphrase) обязателен, если ключ хранится на ноутбуке или в домашней системе.

2.2. Домен и DNS. Если вы планируете веб, лучше сразу завести доменное имя и A/AAAA записи. Это не «про безопасность» напрямую, но дисциплинирует: вы меньше будете ходить по IP и быстрее заметите, что что-то «не то» (например, сертификат не выдается или порт не доступен).

3. Первые минуты после выдачи VPS: обновления и базовая гигиена

Золотое правило: сначала обновления, потом конфигурация. Сразу после входа под выданным пользователем (или временным root, если так устроено у провайдера) делаем:

sudo apt update
sudo apt -y full-upgrade
sudo reboot 

Почему это важно: многие атаки используют не «нулевой день», а известные уязвимости, где патч уже существует. На свежевыданных образах Ubuntu обычно всё неплохо, но «обычно» – не гарантия.

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

sudo apt -y install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades 

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

4. Пользователи и права: «минимум привилегий» без фанатизма

Идеальная картина: один обычный пользователь для входа и администрирования, повышение прав через sudo, root по SSH – запрещен.

sudo adduser admin
sudo usermod -aG
sudo admin 

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

5. SSH: укрепляем главный входной шлюз

SSH – первая цель для автоматических атак. Здесь важны не «трюки», а дисциплина.

5.1. Копируем публичный ключ (с локальной машины):

ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@SERVER_IP 

5.2. Настраиваем sshd. Открываем /etc/ssh/sshd_config и приводим к аккуратным значениям:

# Запрет root-логина PermitRootLogin no # Только ключи PasswordAuthentication no KbdInteractiveAuthentication no # Ограничиваем пользователей AllowUsers admin # Ограничиваем попытки и время MaxAuthTries 4 LoginGraceTime 30 # Уточняем, что публичные ключи – в стандартном месте PubkeyAuthentication yes 

Применяем:

sudo sshd -t
sudo systemctl reload ssh 

Про смену порта SSH. Это не мера «безопасности», а мера снижения шума в логах. Боты всё равно сканируют диапазоны портов. Если меняете – делайте это только вместе с остальными шагами, и обязательно откройте новый порт в firewall до перезагрузки SSH, иначе можно запереть себя снаружи.

5.3. Двухфакторная аутентификация. Для административного доступа (особенно если сервер критичный) имеет смысл добавить второй фактор. Варианты – FIDO2/U2F ключи или TOTP через PAM. Это усложняет жизнь и вам, и злоумышленнику, поэтому вводите 2FA там, где цена компрометации высока.

6. Firewall: «запрещено всё, кроме нужного»

На VPS нельзя полагаться на «внешний периметр». Ваш сервер торчит в интернет напрямую, и именно вы решаете, какие порты доступны.

Если нужен простой и прозрачный старт – используйте UFW (он управляет правилами, а внутри работает через nftables/iptables в зависимости от системы).

sudo apt -y install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing # Разрешаем SSH (если порт стандартный)
sudo ufw allow 22/tcp # Если будет веб
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose 

Важно: сначала разрешите SSH, потом включайте UFW.

Точечная жесткость. Если администрируете с фиксированного IP, лучше разрешить SSH только с него:

sudo ufw delete allow 22/tcp
sudo ufw allow from YOUR_ADMIN_IP to any port 22 proto tcp 

Это сразу срезает огромный класс атак. Если IP меняется – можно использовать VPN или bastion-хост, но это отдельная архитектурная тема.

7. Защита от перебора: fail2ban и лимиты на уровне системы

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

sudo apt -y install fail2ban
sudo systemctl enable --now fail2ban 

Создайте локальный конфиг /etc/fail2ban/jail.d/sshd.local:

[sshd] enabled = true maxretry = 5 findtime = 10m bantime = 1h 

Перезапуск:

sudo systemctl restart fail2ban
sudo fail2ban-client status sshd 

Почему это работает: fail2ban банит по событиям в логах. Это не «панацея», но хорошо уменьшает поток ботов и помогает держать систему в порядке.

8. Убираем лишнее: открытые порты, сервисы, пакеты

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

Проверяем, что слушает сеть:

sudo ss -tulpn 

Дальше честно отвечаем: каждый порт вам действительно нужен? Если нет – отключаем сервис:

sudo systemctl disable --now SERVICE_NAME 

И удаляем пакеты, если это не часть инфраструктуры:

sudo apt -y purge PACKAGE_NAME
sudo apt -y autoremove 

Отдельный комментарий про «панели управления сервером». Панели экономят время, но расширяют поверхность атаки, потому что это сложные веб-приложения с собственными апдейтами и зависимостями. Если вы не готовы обслуживать панель как продукт – лучше администрировать без нее.

9. AppArmor: встроенная страховка, которую часто игнорируют

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

Проверьте статус:

sudo aa-status 

Если профили для Nginx, OpenSSH и других сервисов в режиме enforcing – это хороший знак. Не отключайте AppArmor «чтобы не мешал», лучше потратьте время и разберитесь, что именно блокируется и почему.

10. Сетевые sysctl-настройки: осторожно, но полезно

Тюнинг sysctl часто превращают в магию из копипасты. Делайте только то, что понимаете и можете объяснить. Но несколько настроек действительно типичны для базового hardening.

Файл /etc/sysctl.d/99-hardening.conf (пример, адаптируйте под свою роль сервера):

# Игнорируем ICMP redirect и source route
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# Не отправляем redirect
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# Включаем защиту от SYN flood
net.ipv4.tcp_syncookies = 1

Применяем:

sudo sysctl --system 

Важно: если VPS используется как роутер, VPN-шлюз или сложный сетевой узел, настройки нужно подбирать аккуратнее. Универсальных «всем включить всё» здесь нет.

11. Логи, аудит и «заметить проблему раньше, чем позвонит клиент»

Без наблюдаемости безопасность превращается в гадание. Минимальный набор:

  • journald и ротация логов (logrotate) – чтобы не закончился диск
  • централизация логов (хотя бы отправка на отдельный сервер или в облачный лог-стек)
  • аудит действий для административных команд, если сервер важный

11.1. auditd. Это не самый легкий инструмент, но он полезен для расследований. Установка:

sudo apt -y install auditd audispd-plugins
sudo systemctl enable --now auditd 

Правила лучше брать из проверенных профилей (например, ориентироваться на CIS), но не включать «всё подряд», иначе утонете в событиях.

11.2. Контроль целостности. Если злоумышленник получил доступ, один из его шагов – менять бинарники, конфиги и крон. Для базового контроля подходит AIDE:

sudo apt -y install aide
sudo aideinit
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db 

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

12. Защита прикладного уровня: веб, базы, TLS

Сервер редко живет одним SSH. Чаще там Nginx/Apache, PHP/Node/Python, база данных и очереди. Общие правила:

  • База не должна слушать публичный интерфейс, если к ней не должен ходить интернет. Для PostgreSQL/MySQL обычно достаточно bind на 127.0.0.1 или приватную сеть
  • TLS обязателен для любых админок и пользовательских данных
  • Разделение ролей: отдельные системные пользователи под сервисы, минимум прав на каталоги

Для веб-сервера добавьте лимиты на запросы и защиту от простого abusive-трафика (rate limiting), но помните: от DDoS на уровне канала VPS не защитит только конфиг Nginx – тут нужна внешняя инфраструктура.

13. Резервное копирование и восстановление: часть безопасности, а не «потом»

С точки зрения практики инцидентов, бэкап – это не удобство, а последняя линия обороны. Если сервер зашифровал шифровальщик, если данные испорчены из-за ошибки деплоя, если вы сами «не туда нажали» – выигрывает тот, кто умеет восстановиться.

Минимальная адекватная схема – 3-2-1: три копии данных, на двух разных носителях, одна – вне сервера. Для VPS это обычно означает: локальные снапшоты + выгрузка бэкапа в отдельное хранилище или на отдельную машину.

Удобный практический подход – поднять тестовый виртуальный сервер и один раз «прогнать» восстановление как учение. Не на словах, а руками: подняли чистую Ubuntu, развернули бэкап, проверили, что сервис стартует и данные целы. Такой прогон часто обнаруживает, что «бэкапы есть», но ключи шифрования хранятся на том же сервере, или инструкция восстановления не работает.

14. Небанальный чек-лист: что реально проверять раз в месяц

  • SSH: вход только по ключам, root запрещен, список AllowUsers актуален
  • Firewall: открыты только нужные порты, нет временных правил
  • Обновления: security-апдейты приходят, перезагрузки ядра по регламенту
  • Пользователи: нет забытых аккаунтов, sudo выдан только тем, кому нужно
  • Сервисы: слушают только нужные интерфейсы, нет тестовых панелей/демонов
  • Логи: ротация работает, место на диске не утекает в бесконечный журнал
  • Fail2ban: живой, банит, не ломает легитимный доступ
  • AppArmor: включен, профили не переведены в complain «на время» навсегда
  • Бэкапы: свежие, восстанавливались хотя бы на тесте
  • Секреты: нет ключей и паролей в репозиториях и world-readable файлах

Вывод

Защита Ubuntu на VPS – это не набор заклинаний. Это последовательность решений: закрыть лишнее, укрепить вход, контролировать изменения, наблюдать за системой и уметь восстановиться. Если вы выстроите этот цикл, взлом станет либо существенно сложнее, либо быстро обнаружится, а ущерб будет ограничен.

Самое полезное, что можно сделать после прочтения – открыть терминал и пройти шаги по порядку, фиксируя изменения в виде «инфраструктуры как кода» или хотя бы в виде собственного плейбука. Тогда безопасность перестанет быть разовой задачей и станет нормальной частью администрирования.

***

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, авторизуйтесь для добавления комментария.
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Реклама Google




Время загрузки: 0.10 секунд - 16 Запросов 92,835,361 уникальных посетителей