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 рабочих дня.
Типичные ошибки
- Забыли поменять порт SSH до настройки UFW. UFW режет новый порт — и сервер недоступен. Сначала sshd_config reload, потом ufw allow.
- Только root с ключом. Если ключ потерян — сервер в руках не вернёшь без консоли хостинга. Всегда создавайте второго пользователя sudo.
- Automatic-Reboot в рабочее время. Поставьте 03:00 в будни или вообще раз в неделю.
- Бэкап без восстановления. Не проверил — не бэкап. Минимум раз в квартал делайте тестовый restore.
- UFW по-русски. Локализация ufw иногда ломает парсинг правил.
Развернём и настроим 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 в пиковых ситуациях.