chore(ops): скрипты аудита и первичной настройки выделенного сервера Selectel #3050

Merged
lekss361 merged 2 commits from chore/selectel-bootstrap into main 2026-08-22 11:53:34 +00:00
Showing only changes of commit fb75bce22d - Show all commits

View file

@ -28,7 +28,11 @@ ADMIN_PUBKEY="${ADMIN_PUBKEY:-}"
SSH_PORT="${SSH_PORT:-22}"
SWAP_GB="${SWAP_GB:-8}"
# Версии — те же, что на текущем прод-хосте, чтобы поведение compose не разъехалось.
# Версии на текущем прод-хосте — ориентир для сверки, НЕ то, что ставится.
# Репозиторий Docker отдаёт последнюю версию; закреплять старую ради совпадения
# значило бы отказаться от исправлений безопасности. Расхождение печатается
# предупреждением, чтобы оно не прошло незамеченным (22.08.2026 приехали
# docker 29.7.2 и compose 5.5.0 против 29.4.1 / v5.1.3 на Beget).
WANT_DOCKER="29.4.1"
WANT_COMPOSE="v5.1.3"
@ -177,7 +181,12 @@ systemctl enable --now fail2ban >/dev/null
systemctl is-active fail2ban
log "10. Ужесточение sshd"
cat > /etc/ssh/sshd_config.d/60-hardening.conf <<SSHD
# Имя начинается с 00, а не с 60, намеренно: sshd берёт ПЕРВОЕ встреченное
# значение директивы, а Ubuntu кладёт рядом 50-cloud-init.conf с
# PasswordAuthentication yes. При имени 60-* парольный вход молча остаётся
# включённым, и `sshd -t` при этом рапортует, что всё в порядке.
rm -f /etc/ssh/sshd_config.d/60-hardening.conf
cat > /etc/ssh/sshd_config.d/00-hardening.conf <<SSHD
Port $SSH_PORT
PermitRootLogin prohibit-password
PubkeyAuthentication yes
@ -190,6 +199,13 @@ SSHD
sshd -t || die "конфиг sshd невалиден — НЕ перезапускаю, доступ сохранён"
echo "конфиг валиден"
# Синтаксическая валидность ничего не говорит о том, какое значение победило.
# Проверяем итог так, как его увидит sshd после перезапуска.
eff_pass="$(sshd -T 2>/dev/null | awk '/^passwordauthentication /{print $2}')"
eff_root="$(sshd -T 2>/dev/null | awk '/^permitrootlogin /{print $2}')"
echo "итог: passwordauthentication=$eff_pass permitrootlogin=$eff_root"
[ "$eff_pass" = "no" ] || die "PasswordAuthentication остался '$eff_pass' — какой-то файл в sshd_config.d перебивает наш; НЕ перезапускаю"
cat <<EOF
============================================================