Если вы новичок и впервые работаете с VPS на Ubuntu, важно сразу настроить базовую защиту. Эти 10 правил помогут снизить риск взлома без сложной конфигурации.

1. Используйте SSH-ключи вместо пароля

Пароли легко взломать, SSH-ключи — надёжнее. Ключи создают уникальную пару, которая позволяет подключаться без риска подбора пароля. Даже если кто-то узнает имя пользователя, без ключа попасть на сервер невозможно.


# Генерация ключа на локальной машине (добавьте парольную фразу для защиты ключа)
ssh-keygen -t ed25519 -C "ваш_email@example.com"

# Копирование ключа на сервер
ssh-copy-id user@ваш_сервер

# Если ssh-copy-id недоступен, скопируйте ключ вручную
cat ~/.ssh/id_ed25519.pub | ssh user@ваш_сервер "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

# Убедитесь, что права доступа корректны
ssh user@ваш_сервер "chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

Совет: Храните приватный ключ в безопасном месте и не делитесь им.

2. Отключите вход по паролю

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


# Проверьте доступ по ключу
ssh user@ваш_сервер

# Откройте конфигурацию SSH
sudo nano /etc/ssh/sshd_config

# Найдите или добавьте строку
PasswordAuthentication no

# Проверьте конфигурацию
sudo sshd -t

# Перезапустите SSH
sudo systemctl restart sshd

Внимание: Если вы отключите пароли, не проверив ключи, вы можете потерять доступ к серверу.

3. Обновляйте систему регулярно

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


# Проверка доступных обновлений
sudo apt list --upgradable

# Установка обновлений
sudo apt update && sudo apt upgrade -y

# Перезагрузка, если обновилось ядро
sudo reboot

Совет: Проверяйте логи после обновлений: cat /var/log/apt/history.log.

4. Ставьте минимальный набор сервисов

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


# Просмотр запущенных сервисов
systemctl list-units --type=service --state=running

# Отключение ненужного сервиса
sudo systemctl disable имя_сервиса

# Список установленных пакетов
dpkg -l

# Проверка зависимостей перед удалением
apt rdepends package_name

# Удаление ненужного пакета
sudo apt remove package_name -y

Совет: Используйте минимальный образ Ubuntu при установке VPS.

5. Настройте базовую защиту файрволом

Файрвол фильтрует трафик, разрешая только нужные соединения. UFW — простой инструмент для настройки. Убедитесь, что порт SSH (22) разрешён перед включением.


# Установка ufw
sudo apt install ufw -y

# Настройка политики по умолчанию
sudo ufw default deny incoming

# Разрешение нужных портов
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Проверка правил
sudo ufw status

# Включение файрвола
sudo ufw enable

Внимание: Проверьте SSH-доступ перед включением UFW, чтобы не заблокировать себя.

6. Следите за логами и активностью

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


# Просмотр последних попыток входа
sudo tail -f /var/log/auth.log

# Поиск неудачных попыток входа
grep "Failed" /var/log/auth.log

# Установка logwatch для автоматического анализа
sudo apt install logwatch -y
sudo logwatch --detail High --mailto ваш_email --service sshd

Совет: Используйте htop для мониторинга нагрузки: sudo apt install htop && htop.

7. Ограничьте вход по SSH для конкретных пользователей

Разрешайте SSH-доступ только нужным пользователям и запретите вход для root. Это снижает риск несанкционированного доступа.


# Проверьте имя пользователя
whoami

# Откройте конфигурацию SSH
sudo nano /etc/ssh/sshd_config

# Добавьте строки
PermitRootLogin no
AllowUsers ваш_пользователь

# Проверьте конфигурацию
sudo sshd -t

# Перезапустите SSH
sudo systemctl restart sshd

Совет: Используйте tmux для SSH-сессий, чтобы не потерять доступ при ошибке: sudo apt install tmux && tmux.

8. Используйте fail2ban для защиты от брутфорса

Fail2ban блокирует IP-адреса после нескольких неудачных попыток входа, защищая от автоматических атак.


# Установка fail2ban
sudo apt install fail2ban -y

# Настройка для SSH
sudo nano /etc/fail2ban/jail.local
# Добавьте:
[sshd]
enabled = true
maxretry = 5
bantime = 3600

# Запуск и активация
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# Проверка заблокированных IP
sudo fail2ban-client status sshd

Совет: Регулярно проверяйте статус банов для анализа атак.

9. Настройте автоматические обновления

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


# Установка unattended-upgrades
sudo apt install unattended-upgrades -y

# Настройка автоматических обновлений
sudo dpkg-reconfigure --priority=low unattended-upgrades

# Настройка уведомлений
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
# Добавьте:
Unattended-Upgrades::Mail "ваш_email@example.com";

Совет: Проверяйте логи обновлений: cat /var/log/apt/history.log.

10. Делайте регулярные бэкапы

Бэкапы спасают данные при атаках или сбоях. Настройте автоматические бэкапы и храните их вне сервера.


# Пример бэкапа сайта
tar -czf /backup/site_$(date +%F).tar.gz /var/www/html

# Настройка автоматического бэкапа через cron
crontab -e
# Добавьте строку для ежедневного бэкапа в 2:00
0 2 * * * tar -czf /backup/site_$(date +\%F).tar.gz /var/www/html

# Пример отправки бэкапа на удалённый сервер
rsync -avz /backup/site_$(date +%F).tar.gz user@backup_server:/backups/

Совет: Регулярно тестируйте восстановление бэкапов: tar -xzf /backup/site_дата.tar.gz -C /tmp.

Бонус: Настройте двухфакторную аутентификацию (2FA) для SSH

2FA добавляет дополнительный уровень защиты, требуя код из приложения (например, Google Authenticator) при входе.


# Установка Google Authenticator
sudo apt install libpam-google-authenticator -y

# Настройка 2FA для пользователя
google-authenticator

# Настройка PAM для SSH
sudo nano /etc/pam.d/sshd
# Добавьте:
auth required pam_google_authenticator.so

# Настройка SSH для 2FA
sudo nano /etc/ssh/sshd_config
# Найдите или добавьте:
ChallengeResponseAuthentication yes

# Перезапустите SSH
sudo systemctl restart sshd

Совет: Сохраните резервные коды Google Authenticator в безопасном месте.

Следуя этим правилам, ваш VPS на Ubuntu будет защищён от большинства атак. Регулярно проверяйте логи, бэкапы и обновления, чтобы минимизировать риски.

Полезные статьи — по почте

Подпишитесь на редакторскую рассылку о фронтенде, новых CSS-штучках и всём, что пригодится разработчику.

Присылаем одно письмо в неделю. Без спама и нейросетей.


«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.

ТелеграмПодкастБесплатные учебники