Каждый раз когда поднимаю новый сервер, делаю примерно одно и то же. Записал чтобы не держать в голове.
Обновляем пакеты
apt update && apt upgrade -y
Всегда первым делом. Свежеустановленный Ubuntu обычно отстаёт от актуальных версий пакетов.
Создаём нормального пользователя
Работать под root постоянно — плохая практика. Создаю пользователя, добавляю в sudoers, копирую SSH-ключ:
adduser deploy
usermod -aG sudo deploy
rsync --archive --chown=deploy:deploy ~/.ssh /home/deploy
Закрываем SSH для root
В /etc/ssh/sshd_config меняю:
PermitRootLogin no
PasswordAuthentication no
Рестартую sshd и проверяю что новый пользователь заходит нормально — только потом закрываю рутовую сессию.
Настраиваем firewall
ufw allow OpenSSH
ufw allow 80
ufw allow 443
ufw enable
Остальные порты — по необходимости. Принцип: закрыто всё что не открыто явно.
Ставим что нужно
apt install -y htop tmux git curl fail2ban
fail2ban блокирует IP после нескольких неудачных попыток SSH. Ставлю всегда — количество брутфорс-попыток на любой публичный сервер удивляет.
Настраиваем автообновления безопасности
apt install unattended-upgrades
dpkg-reconfigure unattended-upgrades
Только security-обновления, не всё подряд. Критические патчи ставятся автоматически, остальное — руками когда готов.
После этого сервер готов к работе. Занимает минут 15, иногда меньше.