Files
ermnvldmr.com/services/docs/content/ru/root/recipes/initial-setup.md
T

7.4 KiB
Raw Blame History

title, description, weight
title description weight
Начальная настройка хоста Настройка чистого хоста Debian с нуля. 1

Защищенная настройка чистого хоста Debian от нуля до развертывания.

Процедура настройки

{{% steps %}}

Основные пакеты

Сначала установите sudo и docker-ce. Это необходимо, так как последующая настройка пользователя опирается на группу docker и конфигурацию sudo.

Установка Sudo

# От имени root:
apt update && apt install sudo -y

Установка Docker

Следуйте официальному руководству по установке Docker для Debian, чтобы установить последнюю версию Docker Engine.

Системный пользователь и привилегии

Пользователь adam выполняет все административные задачи. Аутентификация по SSH-ключу и беспарольный sudo через группу wheel минимизируют трение при сохранении безопасности.

Создание администратора

# От имени root:
# Создать пользователя с оболочкой bash
useradd -m -s /bin/bash adam

# Создать группу wheel (общепринято для единообразия между дистрибутивами)
groupadd wheel

# Создать модульный файл sudoers
# Это позволяет членам группы 'wheel' запускать sudo без пароля
echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/99-root-ermnvldmr

# Проверить синтаксис
visudo -c -f /etc/sudoers.d/99-root-ermnvldmr

# Добавить adam в необходимые группы
usermod -aG wheel,docker adam

Настройка Swap

Настройте файл подкачки (swap), чтобы обеспечить стабильность системы во время операций, требующих большого объема памяти.

# От имени root:
# Создать файл подкачки размером 2 ГБ (измените размер при необходимости)
fallocate -l 2G /swap
chmod 600 /swap
mkswap /swap
swapon /swap

# Сделать его постоянным
echo '/swap none swap sw 0 0' >> /etc/fstab

SSH Доступ и Усиление

Пароли отключены. Доступ осуществляется строго по SSH-ключам.

Авторизация ключа оператора

Импортируйте ваш локальный публичный ключ для пользователя adam.

# От имени root:
# Настроить директории
mkdir -p /home/adam/.ssh
chmod 700 /home/adam/.ssh

# Добавьте свой публичный ключ (Замените [PASTE_PUB_KEY_HERE])
echo "[PASTE_PUB_KEY_HERE]" > /home/adam/.ssh/authorized_keys
chmod 600 /home/adam/.ssh/authorized_keys
chown -R adam:adam /home/adam/.ssh

Доступ со стороны оператора

Настройте вашу локальную машину для удобного доступа к хосту.

# ~/.ssh/config на стороне оператора
Host daedalus.root.ermnvldmr.com
  Port 2222
  User adam
  IdentityFile ~/.ssh/adam_root_ermnvldmr_com_ed25519

Усиление демона SSH

Измените конфигурацию SSH, чтобы сменить порт по умолчанию и отключить вход по паролю.

# От имени root:
# Создать выделенный файл конфигурации
cat <<EOF > /etc/ssh/sshd_config.d/99-root-ermnvldmr.conf
Port 2222
PasswordAuthentication no
PermitEmptyPasswords no
AllowUsers adam
EOF

# Проверить синтаксис перед перезапуском, чтобы избежать блокировки
sshd -t && systemctl restart ssh

Доступ к GitHub (Deploy Key)

Хосту требуется собственная идентификация для загрузки обновлений из репозитория GitHub.

# От имени root:
# Сгенерировать специфичный для хоста SSH-ключ (без парольной фразы для автоматизации)
sudo -u adam ssh-keygen -t ed25519 -f /home/adam/.ssh/github_ed25519 -N ""

# Настроить SSH для использования этого ключа для GitHub
cat <<EOF | sudo -u adam tee /home/adam/.ssh/config
Host github.com
  AddKeysToAgent yes
  IdentityFile ~/.ssh/github_ed25519
EOF

# Отобразить публичный ключ для добавления в GitHub (Settings > Deploy Keys)
cat /home/adam/.ssh/github_ed25519.pub

Tip

Добавьте вывод выше в GitHub: Repository Deploy Keys с правами read access.

Развертывание репозитория

Клонируйте инфраструктурный репозиторий и инициализируйте узел.

# От имени root:
# Настроить директорию сервиса
export REPO_DIR="/srv/root.ermnvldmr.com"
mkdir -p $REPO_DIR
chown adam:adam $REPO_DIR

# Клонировать от имени пользователя adam
sudo -u adam git clone git@github.com:deytenit/root.ermnvldmr.com.git $REPO_DIR

# Инициализировать узел (Установите имя вашего узла, например, daedalus)
export NODE="daedalus"
cd $REPO_DIR
sudo -u adam ./init.sh

Специфичная для узла конфигурация

Запустите скрипты инициализации по порядку:

# От имени root:
# Выполните последовательность для вашего конкретного узла
cd $REPO_DIR
./$NODE/.host/.scripts/00-base
./$NODE/.host/.scripts/10-ufw
./$NODE/.host/.scripts/20-crowd
./$NODE/.host/.scripts/30-cron

Хранение и усиление безопасности

Определите уровни данных (tiers) и защитите среду, создав непривилегированных пользователей для контейнеризированных сервисов.

# От имени root:
# Создать (или примонтировать) директории хранилища
mkdir -p /srv/com-ermnvldmr-root-$NODE-{tier1,tier2,tier3}

# Настроить уровни и непривилегированных пользователей
cd $REPO_DIR
sudo -u adam .scripts/ops/setup-tiers $NODE
  /srv/com-ermnvldmr-root-$NODE-tier1
  /srv/com-ermnvldmr-root-$NODE-tier2
  /srv/com-ermnvldmr-root-$NODE-tier3

sudo -u adam .scripts/ops/setup-noroot-users $NODE

{{% /steps %}}


См. также: