Чек-лист первого часа на новом VPS
Свежий сервер сразу после выдачи — это открытый SSH с паролем, неизвестный набор пакетов и пустой firewall. Ниже порядок действий, который занимает около часа и закрывает самые частые проблемы. Главное правило: каждый шаг проверять, а не только выполнять.
1. Отдельный пользователь и вход по ключу
Работать под root неудобно и опасно. Заведите пользователя, выдайте ему sudo и положите публичный ключ:
adduser admin
usermod -aG sudo admin
install -d -m 700 -o admin -g admin /home/admin/.ssh
cat key.pub >> /home/admin/.ssh/authorized_keys
chown admin:admin /home/admin/.ssh/authorized_keys
chmod 600 /home/admin/.ssh/authorized_keys
Прежде чем менять настройки SSH, войдите под новым пользователем из второго окна. Текущую сессию не закрывайте, пока вход не проверен.
2. Закрыть вход по паролю и root
Удобнее всего — отдельным файлом в sshd_config.d: он не конфликтует с обновлениями
пакета.
# /etc/ssh/sshd_config.d/00-hardening.conf
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no
sudo sshd -t && sudo systemctl reload ssh
sudo sshd -T | grep -E 'passwordauthentication|permitrootlogin'
В sshd действует первое найденное значение параметра, поэтому файл с номером
00 перекрывает строки ниже в основном конфиге. Последняя команда показывает, какие
значения применились на самом деле.
3. Firewall
Сначала разрешите SSH, потом включайте firewall — не наоборот:
sudo ufw allow 22/tcp
sudo ufw default deny incoming
sudo ufw enable
sudo ufw status verbose
Если SSH работает на нестандартном порту, разрешайте именно его. У многих провайдеров есть ещё и firewall в панели управления — правила нужно держать согласованными в обоих местах.
4. Обновления
sudo apt update && sudo apt full-upgrade
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Автоматические обновления безопасности ставят патчи без вашего участия. Перезагрузку после
обновления ядра лучше делать вручную, в удобное время: файл /var/run/reboot-required
подскажет, что она нужна.
5. Время
timedatectl
sudo timedatectl set-timezone Europe/Moscow
В выводе должно быть System clock synchronized: yes. Неверное время ломает
TLS-сертификаты, журналы и всё, что сверяет метки времени.
6. Swap на маленьком сервере
На VPS с 1 ГБ памяти небольшой swap спасает от внезапного OOM при обновлении пакетов:
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
swapon --show
7. Защита от перебора
sudo apt install fail2ban
sudo fail2ban-client status sshd
Даже при входе только по ключу fail2ban полезен: он снижает шум в журналах и нагрузку от сканеров.
8. Итоговая проверка
ss -tlnp— слушаются только те порты, которые вы ожидаете;systemctl --failed— нет упавших служб;- вход по паролю отклоняется, вход по ключу работает (проверить с другой машины);
df -hиfree -m— запас по диску и памяти.
После этого сервер готов к установке того, ради чего он заводился.