Первые 30 минут после установки Ubuntu Server — критические. Стандартный образ не готов к боевым нагрузкам: открытый SSH, root-доступ по паролю, лимит open files 1024 и никаких автообновлений. За первые сутки сервер сканируют сотни ботов из ботнетов Mirai и Qbot. На практике 80% серверов в инфраструктуре наших клиентов приходят с этими проблемами. Недавно к нам обратился стартап: их сервер взломали на второй день после развёртывания, утекли пользовательские данные. Мы устранили последствия и заново настроили систему так, чтобы это не повторилось. Наш процесс hardening Ubuntu Server гарантирует, что система готова к атакам с первого дня.
Мы настраиваем Ubuntu Server с нуля — от bare-metal до облачных инстансов в AWS, GCP, Yandex Cloud. Помимо безопасности, мы оптимизируем производительность: настраиваем swap, увеличиваем file-max, подбираем планировщик I/O (none для SSD, mq-deadline для HDD), включаем TCP BBR для сетевой пропускной способности. Всё это снижает latency и предотвращает вылеты при пиковой нагрузке. Canonical рекомендует выполнить hardening после первого входа.
Какие проблемы решаем
-
Безопасность по умолчанию: на облачных образах часто включён root-логин. Мы отключаем парольную аутентификацию, настраиваем fail2ban с параметрами maxretry=3, bantime=3600, findtime=600, и UFW с белыми IP-адресами администраторов. Дополнительно: аудит пользователей, удаление неиспользуемых аккаунтов, настройка sudo через группу
wheel. -
Производительность: стандартные лимиты open files (1024) не подходят для нагруженных приложений. Мы увеличиваем их до 65536 и корректируем
vm.swappiness(10—20 серверы БД, 60 — для десктопов). Для высоконагруженных веб-серверов настраиваемnet.core.somaxconn = 1024. - Управляемость: без автоматизации обновлений сервер рискует получить уязвимость. Мы настраиваем unattended-upgrades с уведомлениями, а также подключаем мониторинг Prometheus node_exporter и централизованный сбор логов через Loki.
Почему стандартная установка не подходит для продакшена?
По рекомендации Canonical, после первого входа необходимо выполнить hardening. Мы замеряли: время взлома сервера с открытым портом SSH по паролю — менее 2 часов. Поэтому первые 30 минут после запуска — критические. Если не закрыть эти дыры, вы рискуете не только данными, но и репутацией. На практике мы видим, что пропуск hardening Ubuntu Server приводит к инцидентам: взлом SSH, простои из-за неправильного сетевого конфига (например, отключение IPv6 без настройки DNS-резолвера), сбои из-за переполнения файловых дескрипторов.
| Сравнение подходов | Ручная настройка | Автоматизация Ansible |
|---|---|---|
| Время на 1 сервер | 4–8 часов | 2–3 часа (первый) |
| Повторяемость | Низкая, риск ошибки | Высокая, версионирование в Git |
| Поддержка парка | Сложно | Один плейбук для всех |
| Стоимость инцидентов | Высокая | Снижение на 30% |
Автоматизация Ansible ускоряет настройку в 2–3 раза по сравнению с ручной настройкой. Экономия бюджета на инцидентах составляет 30–40% после внедрения автоматизации.
Как выполнить базовый hardening за 5 шагов?
- Отключите root-логин по паролю и настройте SSH-ключи.
- Установите и настройте UFW с белым списком IP.
- Установите fail2ban с параметрами защиты SSH.
- Настройте unattended-upgrades с уведомлениями.
- Увеличьте лимиты open files до 65536.
Пример конфигурации fail2ban
# /etc/fail2ban/jail.local [sshd] enabled = true maxretry = 3 bantime = 3600 findtime = 600 Как ускорить развертывание сервера с помощью автоматизации?
Использование Ansible или Terraform сокращает время настройки каждого последующего сервера до 2–3 часов. Мы подготавливаем роли для Debian/Ubuntu (common, security, monitoring, time) и храним их в Git вместе с конфигурацией Terraform для облачных провайдеров. Это гарантирует повторяемость и версионирование. При пересоздании инстанса достаточно запустить один плейбук. Если вам нужна повторяемая настройка для парка серверов — свяжитесь с нами, мы подготовим Ansible-роли.
Как мы настраиваем Ubuntu Server под ключ
Конкретный кейс: настройка сервера для high-load API на Go. После минимальной установки выполняем:
# Проверка текущих пользователей и портов
who
ss -tlnp
# Отключаем root-логин по паролю
sed -i 's/^PermitRootLogin.*/PermitRootLogin prohibit-password/' /etc/ssh/sshd_config
sed -i 's/^PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl reload sshСоздаём пользователя app, добавляем SSH-ключ. Далее базовая конфигурация:
# Обновление пакетов
apt update && apt full-upgrade -y
# Временная зона и hostname
timedatectl set-timezone Europe/Moscow
hostnamectl set-hostname prod-api-01
# Лимиты для нагруженных сервисов
cat >> /etc/security/limits.conf << 'EOF'
* soft nofile 65536
* hard nofile 65536
* soft nproc 32768
* hard nproc 32768
EOF
Настраиваем защиту:
# UFW
ufw default deny incoming
ufw default allow outgoing
ufw allow from <office-ip> to any port 22
ufw --force enable
# fail2ban
apt install -y fail2ban
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localИ автообновления:
apt install -y unattended-upgrades dpkg-reconfigure --priority=low unattended-upgrades Для синхронизации времени используем systemd-timesyncd или chrony — в зависимости от требований. Для финансовых приложений ставим chrony с ручной настройкой NTP-серверов. Пример конфигурации chrony для продакшена:
server 0.pool.ntp.org iburst server 1.pool.ntp.org iburst allow 10.0.0.0/8 Что входит в настройку
- Аудит текущего состояния сервера (облачный образ, bare-metal).
- Hardening SSH, UFW, fail2ban, limits, NTP.
- Установка и настройка ПО под задачу (nginx, PostgreSQL, Redis, Docker).
- Скриптинг и передача плейбука Ansible для воспроизведения.
- Документация: итоговая конфигурация, инструкция по эксплуатации.
- Поддержка: 30 дней бесплатных консультаций после сдачи.
В результате вы получаете сервер, готовый к продакшену с первого дня. Стоимость настройки окупается в течение нескольких месяцев за счёт предотвращения простоев и взломов.
Процесс работы и сроки
| Этап | Длительность |
|---|---|
| Аудит и планирование | 1–2 часа |
| Установка и hardening | 4–8 часов |
| Настройка прикладного ПО | от 4 часов |
| Тестирование и документация | 2–4 часа |
| Передача знаний | 1 час |
Ручная настройка одного сервера занимает 1–2 дня. Для парка серверов используем Ansible — сокращаем время до 2–3 часов на каждый последующий. Средняя экономия бюджета клиента за счёт автоматизации — 30% времени на инциденты.
Почему стоит доверить настройку нам?
Мы занимаемся DevOps-инфраструктурой более 5 лет, выполнили настройку для 40+ проектов — от стартапов до enterprise. Гарантируем соответствие лучшим практикам безопасности (CIS benchmark по запросу). Для настройки сервера под ваш проект — свяжитесь с нами. Получите консультацию по hardening Ubuntu Server.







