Если вы новичок и впервые работаете с 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 будет защищён от большинства атак. Регулярно проверяйте логи, бэкапы и обновления, чтобы минимизировать риски.