Безопасность Ubuntu Server: с чего начать закалку
Ubuntu Server из коробки не защищён: парольный SSH разрешён, фаервол выключен, апдейты не ставятся автоматом. Этот гайд — план минимума на первый час после установки, чтобы перестать бояться публичного IP. Каждый шаг ведёт на полный разбор с командами.
Какие слои защиты ставим первыми
Сервер с публичным IP за час получает первые попытки подбора пароля SSH и сканирование портов. Простая модель — четыре слоя, каждый режет свой класс атак:
- Доступ: парольный SSH → вход только по ключам, root залочен.
- Сеть: UFW закрывает всё входящее, кроме того, что вы явно открыли.
- Автобан: fail2ban банит IP, который сжёг лимит попыток.
- Транспорт: HTTPS на всех публичных сервисах, обновления автоматом.
Каждому слою посвящён отдельный гайд в этом разделе — здесь карта и порядок шагов.
SSH: убираем пароли, оставляем ключи
Парольный вход — главный вектор брутфорса. Сначала сгенерируйте ключ, добавьте публичную часть в ~/.ssh/authorized_keys на сервере, проверьте, что вход без пароля работает. Только после этого выключайте парольный вход в /etc/ssh/sshd_config: PasswordAuthentication no, PermitRootLogin no. Подробный план с защитой от блокировки самих себя — в SSH-ключи на Ubuntu.
UFW: фаервол в пять команд
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw limit OpenSSH
sudo ufw enable
Это базовая настройка: всё входящее закрыто, исходящее открыто, SSH разрешён, на SSH стоит лимит против ботов. Разбор каждой команды, типичные ловушки и проверка статуса — в UFW на Ubuntu.
fail2ban: автобан переборщиков
Даже с лимитом UFW часть ботов пробивает окно. fail2ban читает /var/log/auth.log, считает неудачные попытки и кладёт правило в nftables на N минут. Установка и базовый jail под SSH — в fail2ban на Ubuntu.
HTTPS через certbot и Let's Encrypt
Если на сервере есть веб — публичный HTTP это ошибка. Let's Encrypt выдаёт бесплатный сертификат с автообновлением. nginx-плагин certbot пишет конфиг сам, остаётся только подтвердить владение доменом. Развёрнутый пример настройки — в Let's Encrypt и certbot на Ubuntu.
Права файлов: chmod и chown
Большинство утечек начинается с chmod 777 на чужие папки и неаккуратного chown root:www-data. Команды простые, но логика прав — нет. См. chmod в Linux: права доступа и chown: владелец и группа.
Обновления безопасности
Финальный слой — регулярные apt update и apt upgrade, а лучше unattended-upgrades, чтобы security-патчи ставились автоматически. См. apt update и upgrade без сюрпризов.
Частые вопросы
Достаточно ли UFW и fail2ban для прод-сервера?
Для типового VPS под сайт или приложение — да, если плюсом стоят SSH-ключи и unattended-upgrades. Для серверов с конфиденциальными данными добавляйте AppArmor-профили и аудит через auditd.
С чего начать, если сервер уже опубликован без защиты?
Сначала ключи SSH и PasswordAuthentication no — это закрывает 99% попыток. Затем UFW. fail2ban и certbot — следом. Параллельно ставьте unattended-upgrades.
Нужно ли менять стандартный порт SSH?
Это снижает шум в логах, но не защищает от целевых атак. Если переносите — обязательно sudo ufw allow <новый-порт>/tcp ДО рестарта sshd, иначе закроете себе доступ.
Какой порядок шагов оптимален для свежего VPS?
apt update → SSH-ключи → UFW → fail2ban → certbot (если есть веб) → unattended-upgrades. Между шагами оставляйте вторую SSH-сессию открытой, чтобы откатить ошибочную конфигурацию.
Что запомнить
- SSH по ключам, парольный вход выключен, root залочен.
- UFW:
default deny incoming+ явныйallow OpenSSHс лимитом. - fail2ban читает auth.log и автобанит ботов.
- HTTPS через certbot — обязателен для публичных веб-сервисов.
- chmod/chown без
777на публичных директориях. - unattended-upgrades для security-патчей без ручного вмешательства.