· 17 мин чтения

Ubuntu Server: правильная первоначальная настройка

Меня зовут Семёнов Евгений Сергеевич, директор АйТи Фреш. За 15+ лет я раскатал тысячи свежих установок Ubuntu Server — на физических Dell с Xeon Platinum 8280 в дата-центре МТС, на виртуалках Proxmox, на VPS у разных провайдеров. Первый час жизни сервера — самый важный. Ошибся тут — потом будешь чинить годами. Делюсь проверенным чек-листом из 20 пунктов, который я применяю на каждой новой машине.

Пункт 1–3: обновление и базовые пакеты

sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo reboot

# После перезагрузки — базовые утилиты
sudo apt install -y \
  htop iotop iftop net-tools dnsutils curl wget rsync \
  unzip tmux vim ncdu tree mtr tcpdump lsof \
  unattended-upgrades build-essential

Пункт 4: часовой пояс и синхронизация времени

sudo timedatectl set-timezone Europe/Moscow
sudo timedatectl set-ntp true

# Проверяем
timedatectl status

Пункт 5: hostname и FQDN

sudo hostnamectl set-hostname app01.corp.itfresh.ru

# /etc/hosts
127.0.0.1 localhost
127.0.1.1 app01.corp.itfresh.ru app01
10.0.1.5  app01.corp.itfresh.ru app01

Пункт 6: создание рабочего пользователя

sudo adduser boss
sudo usermod -aG sudo boss
sudo mkdir /home/boss/.ssh
sudo chmod 700 /home/boss/.ssh
sudo tee /home/boss/.ssh/authorized_keys < boss.pub
sudo chown -R boss:boss /home/boss/.ssh
sudo chmod 600 /home/boss/.ssh/authorized_keys

Пункт 7–8: безопасный SSH

# /etc/ssh/sshd_config.d/00-itfresh.conf
Port 58722
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
MaxSessions 4
ClientAliveInterval 300
ClientAliveCountMax 2
AllowGroups sudo

sudo sshd -t && sudo systemctl restart ssh

У нас на практике я всегда делаю смену порта + только ключи. Этого достаточно, чтобы отсечь 99% шума ботнетов.

Пункт 9: брандмауэр UFW

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 58722/tcp comment 'SSH'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
sudo ufw limit 58722/tcp
sudo ufw enable
sudo ufw status verbose

Пункт 10: fail2ban

sudo apt install fail2ban
sudo tee /etc/fail2ban/jail.local <<EOF
[sshd]
enabled = true
port = 58722
maxretry = 3
findtime = 10m
bantime = 24h
EOF
sudo systemctl enable --now fail2ban

Пункт 11: автообновления безопасности

sudo dpkg-reconfigure -plow unattended-upgrades

# /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
    "${distro_id}ESMApps:${distro_codename}-apps-security";
};
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";

Пункт 12: мониторинг базовый

Минимум — Telegraf-агент в мой TIG-стек или node_exporter в Prometheus. Пара команд:

# Telegraf
wget https://dl.influxdata.com/telegraf/releases/telegraf_1.29.0-1_amd64.deb
sudo dpkg -i telegraf_1.29.0-1_amd64.deb

# Или node_exporter
sudo useradd --no-create-home --shell /bin/false node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xzf node_exporter-1.7.0.linux-amd64.tar.gz
sudo cp node_exporter-*/node_exporter /usr/local/bin/

Пункт 13: swap и sysctl

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

# Тюнинг
sudo tee /etc/sysctl.d/99-itfresh.conf <<EOF
vm.swappiness=10
vm.vfs_cache_pressure=50
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_keepalive_time=300
net.ipv4.tcp_syncookies=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
EOF
sudo sysctl -p

Пункт 14: лимиты открытых файлов

sudo tee /etc/security/limits.d/99-itfresh.conf <<EOF
*  soft  nofile  65535
*  hard  nofile  65535
root soft nofile 65535
root hard nofile 65535
EOF

Пункт 15–16: journal и rsyslog

sudo tee /etc/systemd/journald.conf.d/limits.conf <<EOF
[Journal]
SystemMaxUse=1G
SystemMaxFileSize=100M
MaxRetentionSec=30day
EOF
sudo systemctl restart systemd-journald

# Отправка в центральный rsyslog
echo '*.* @@logs.corp.itfresh.ru:514' | sudo tee -a /etc/rsyslog.d/50-remote.conf
sudo systemctl restart rsyslog

Пункт 17: бэкап стратегия

# Restic к центральному репозиторию
sudo apt install restic
export RESTIC_REPOSITORY=sftp:backup@nas.corp.itfresh.ru:/repos/app01
export RESTIC_PASSWORD_FILE=/root/.restic.pwd
restic init

# Cron-скрипт
cat > /etc/cron.daily/restic-backup <<'EOF'
#!/bin/bash
source /root/.restic.env
restic backup /etc /home /var/log --exclude-caches
restic forget --prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6
EOF
chmod +x /etc/cron.daily/restic-backup

Пункт 18: мониторинг диска SMART

sudo apt install smartmontools
sudo systemctl enable --now smartd
sudo tee -a /etc/smartd.conf <<EOF
DEVICESCAN -a -o on -S on -n standby,q -s (S/../.././02|L/../../6/03) \
  -W 4,40,45 -m root@localhost
EOF

Пункт 19–20: аудит и проверка

sudo apt install lynis auditd
sudo lynis audit system

# auditd минимум
sudo tee /etc/audit/rules.d/99-itfresh.rules <<EOF
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k sudo_changes
-w /var/log/auth.log -p wa -k auth_log
EOF
sudo augenrules --load

Мини-кейс: развёртывание 7 серверов за день

В январе 2025 клиент — транспортная компания, 55 сотрудников — заказал поднять 7 новых виртуалок на Dell Xeon Platinum 8280 в дата-центре МТС (1С-сервер, web-фронт, reverse-proxy, две БД, файл-сервер, 1С-клиент-терминал). Я написал Ansible-плейбук на базе этого чек-листа: за 3 часа все 7 серверов прошли через 20 пунктов, легли в git под именами, получили одинаковые настройки fail2ban, UFW, мониторинга и бэкапа. В тот же день провели внутренний Lynis-аудит: средний балл 82/100, типичные замечания — отсутствие HIDS (планировался Wazuh позже). Без Ansible-автоматизации ручное развёртывание 7 машин заняло бы 2 рабочих дня.

Типичные ошибки

Развернём и настроим Ubuntu Server под ключ

Ansible-плейбук с 20 пунктами чек-листа, мониторинг, бэкапы, SIEM-агент. От 8 000 руб. за 1 сервер, от 3 000 руб./сервер в пакете от 5 машин.

Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш

FAQ — частые вопросы по настройке Ubuntu Server

Какую версию Ubuntu Server выбрать?
Только LTS-релизы. На 2025 год — 22.04 или 24.04.
Нужно ли отключать sudo пароль?
Не рекомендую. Используйте sudo с паролем и timestamp_timeout=15.
Стоит ли включать unattended-upgrades?
Для security-патчей — обязательно. Для major-обновлений лучше нет.
UFW или iptables?
UFW — удобный фронт к nftables, подходит для простых задач.
Зачем swap, если много RAM?
Минимальный swap 2 ГБ спасает от OOM-killer в пиковых ситуациях.

Подпишитесь на рассылку ITfresh

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

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.