Home » Начальная настройка сервера с Ubuntu — пошаговое руководство
Начальная настройка сервера с Ubuntu — пошаговое руководство

Начальная настройка сервера с Ubuntu — пошаговое руководство

Получили новый VPS или заказали сервер и не знаете, с чего начать? Тогда эта статья для вас. Начальная настройка Ubuntu-сервера — это не просто набор команд, которые нужно выполнить. Это фундамент безопасности, производительности и стабильности вашего проекта. Здесь мы разберём практические шаги, которые нужно выполнить в первые минуты после получения доступа к серверу.

Независимо от того, разворачиваете ли вы веб-приложение, настраиваете CI/CD или просто экспериментируете с новыми технологиями, правильная начальная настройка сэкономит вам кучу времени и нервов в будущем. Мы пройдёмся по трём ключевым аспектам: как это всё работает под капотом, как быстро и безопасно всё настроить, и какие подводные камни ждут неопытных админов.

Как это работает под капотом

Ubuntu Server из коробки — это минимальная система с базовыми настройками безопасности. По умолчанию она имеет довольно либеральные настройки, которые подходят для быстрого старта, но не для продакшена. Основные векторы атак на свежеустановленную систему:

  • SSH-брутфорс на стандартном порту 22
  • Уязвимости в неактуальных пакетах
  • Открытые порты и сервисы
  • Слабые пароли и права доступа

Система загружается с помощью systemd, который управляет всеми сервисами. Файрвол (ufw) по умолчанию отключен, что означает, что все порты открыты. Пакеты устанавливаются из официальных репозиториев Ubuntu, но они могут быть не самыми свежими.

Пошаговая настройка — быстро и правильно

Шаг 1: Обновляем систему

Первым делом обновляем пакеты до актуальных версий. Это закроет известные уязвимости:

apt update && apt upgrade -y
apt install -y curl wget git htop nano vim ufw fail2ban

Шаг 2: Создаём непривилегированного пользователя

Работать под root’ом — плохая практика. Создаём обычного пользователя с правами sudo:

adduser myuser
usermod -aG sudo myuser
# Переключаемся на нового пользователя
su - myuser

Шаг 3: Настраиваем SSH

Самый важный шаг — защищаем SSH. Редактируем конфигурацию:

sudo nano /etc/ssh/sshd_config

Ключевые настройки для безопасности:

Port 2222  # Меняем стандартный порт
PermitRootLogin no  # Запрещаем вход под root
PasswordAuthentication no  # Только ключи, никаких паролей
PubkeyAuthentication yes
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2

Перезапускаем SSH:

sudo systemctl restart ssh

Шаг 4: Настраиваем SSH-ключи

Генерируем ключи на локальной машине (если ещё не сделали):

# На локальной машине
ssh-keygen -t ed25519 -C "your_email@example.com"
ssh-copy-id -p 2222 myuser@your_server_ip

Шаг 5: Настраиваем файрвол

Включаем ufw и открываем только необходимые порты:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp  # SSH на новом порту
sudo ufw allow 80/tcp    # HTTP
sudo ufw allow 443/tcp   # HTTPS
sudo ufw enable

Шаг 6: Настраиваем fail2ban

Защищаемся от брутфорса:

sudo nano /etc/fail2ban/jail.local

Добавляем конфигурацию:

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
backend = systemd

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600

Запускаем fail2ban:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Практические кейсы и подводные камни

Проблема Симптом Решение
Заблокировали себя в SSH Connection refused Используйте консоль VPS-провайдера для восстановления
Неправильный порт в ufw Не можете подключиться ufw allow 2222/tcp перед включением файрвола
Забыли пароль sudo sudo: incorrect password Через root восстановите пароль: passwd myuser
Fail2ban блокирует вас Connection refused периодически sudo fail2ban-client unban your_ip

Дополнительные настройки для продакшена

Мониторинг и логирование

Устанавливаем базовые инструменты мониторинга:

sudo apt install -y logwatch unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades

Настройка автоматических обновлений

Редактируем конфигурацию:

sudo nano /etc/apt/apt.conf.d/20auto-upgrades

Добавляем:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";

Настройка временной зоны

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

Альтернативные решения и инструменты

Для автоматизации начальной настройки существует несколько подходов:

  • Ansible — для массовой настройки серверов
  • Cloud-init — для автоматической настройки при создании VPS
  • Docker — для контейнеризации приложений
  • Terraform — для инфраструктуры как код

Сравнение файрволов:

Решение Сложность Функциональность Рекомендация
ufw Низкая Базовая Для простых случаев
iptables Высокая Полная Для сложных правил
nftables Средняя Современная Замена iptables

Скрипт для быстрой настройки

Создаём bash-скрипт для автоматизации:

#!/bin/bash
# server-setup.sh

# Обновляем систему
apt update && apt upgrade -y

# Устанавливаем необходимые пакеты
apt install -y curl wget git htop nano vim ufw fail2ban

# Создаём пользователя
read -p "Enter username: " USERNAME
adduser $USERNAME
usermod -aG sudo $USERNAME

# Настраиваем SSH
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config
sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config

# Настраиваем файрвол
ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp
ufw allow 80/tcp
ufw allow 443/tcp

# Настраиваем fail2ban
cat > /etc/fail2ban/jail.local << EOF
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5

[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
EOF

systemctl enable fail2ban
systemctl start fail2ban
systemctl restart ssh

echo "Setup completed! Don't forget to copy your SSH key before enabling ufw!"

Интересные факты и нестандартные применения

Немногие знают, что Ubuntu Server можно превратить в мощный инструмент для:

  • Raspberry Pi кластеров — Ubuntu работает на ARM архитектуре
  • IoT устройств — Ubuntu Core для встраиваемых систем
  • Kubernetes нод — отличная база для контейнерной оркестрации
  • Игровых серверов — от Minecraft до CS:GO

Статистика показывает, что 67% серверов в облаке используют Ubuntu, а время настройки сервера с помощью автоматических скриптов сокращается с 2-3 часов до 15-20 минут.

Автоматизация и интеграция

Правильно настроенный сервер открывает возможности для:

  • CI/CD пайплайнов — GitHub Actions, GitLab CI
  • Мониторинга — Prometheus, Grafana, Zabbix
  • Логирования — ELK Stack, rsyslog
  • Бэкапов — automated snapshots, rsync

Пример интеграции с GitHub Actions для автоматического деплоя:

- name: Deploy to server
  uses: appleboy/ssh-action@v0.1.4
  with:
    host: ${{ secrets.HOST }}
    username: ${{ secrets.USERNAME }}
    key: ${{ secrets.KEY }}
    port: 2222
    script: |
      cd /var/www/myapp
      git pull origin main
      systemctl restart myapp

Полезные ссылки

Для углубленного изучения рекомендую:

Заключение и рекомендации

Начальная настройка Ubuntu Server — это критически важный этап, который определяет безопасность и стабильность вашего проекта. Основные принципы: минимизация поверхности атак, автоматизация рутинных задач и регулярное обновление системы.

Рекомендую использовать описанную конфигурацию для любых серверов, будь то простой веб-сайт или сложная микросервисная архитектура. Если вам нужна большая производительность, рассмотрите возможность аренды выделенного сервера.

Помните: безопасность — это не одноразовая настройка, а постоянный процесс. Регулярно обновляйте систему, мониторьте логи и следите за новыми уязвимостями. Автоматизируйте все, что можно автоматизировать, и всегда имейте план восстановления.

Удачи в настройке ваших серверов!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked