chore(ops): скрипты аудита и первичной настройки выделенного сервера Selectel #3050
1 changed files with 18 additions and 2 deletions
|
|
@ -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
|
||||
|
||||
============================================================
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue