Files
owngit/docs/security-hardening.md
T

3.5 KiB

Security Hardening Checklist

Этот список рассчитан на инфраструктуру из этого репозитория:

  • HAProxy как edge reverse proxy;
  • Gitea в Docker;
  • публичные порты 80, 443, 2222, 25, 3389.

Приоритет P0 (сделать в первую очередь)

  • Обновить систему:
    • sudo apt update && sudo apt full-upgrade -y
  • Включить автообновления security-пакетов (unattended-upgrades).
  • Сменить/усилить пароли админов, включить 2FA в Gitea.
  • Проверить ROOT_URL=https://git.papatramp.ru/ в app.ini.
  • Убедиться, что TLS-сертификат на HAProxy содержит SAN git.papatramp.ru.
  • Ограничить доступ к закрытым сервисам через allowed_ips.lst.

Приоритет P1 (в течение дня)

  • Настроить firewall (UFW):
    • sudo ./scripts/setup-ufw.sh
  • Настроить fail2ban:
    • sudo apt install -y fail2ban
    • sudo cp fail2ban/jail.d/owngit.local /etc/fail2ban/jail.d/owngit.local
    • sudo systemctl enable --now fail2ban
    • sudo fail2ban-client status
  • Отключить root login по SSH и парольный вход:
    • использовать безопасный скрипт:
      • sudo ./scripts/safe-apply-ssh-hardening.sh
    • шаблон конфига: ssh/sshd_config.d/90-owngit-hardening.conf

Приоритет P2 (регулярная эксплуатация)

  • Включить ежедневные бэкапы (systemd timer из systemd/).
  • Раз в месяц делать тестовое восстановление через scripts/restore-gitea.sh.
  • Проверять fail2ban:
    • sudo fail2ban-client status sshd
  • Проверять логи HAProxy/Gitea:
    • ошибки 4xx/5xx,
    • всплески соединений и brute-force.
  • Хранить бэкапы вне сервера (NAS/S3/другой хост).

Минимальная проверка после hardening

sudo ufw status verbose
sudo fail2ban-client status
curl -I https://git.papatramp.ru
ssh -T -p 2222 git@git.papatramp.ru

Безопасное применение SSH hardening

chmod +x scripts/safe-apply-ssh-hardening.sh
sudo ./scripts/safe-apply-ssh-hardening.sh

Скрипт:

  • делает backup текущих SSH-конфигов;
  • устанавливает include-конфиг в /etc/ssh/sshd_config.d/;
  • проверяет синтаксис sshd -t;
  • перезагружает ssh только при валидной конфигурации.

Опциональный Lockdown профиль

Если нужен строгий доступ только для отдельных пользователей/сетей:

  1. Отредактируй шаблон:
    • ssh/sshd_config.d/95-owngit-lockdown.conf.example
  2. Укажи реальные логины в AllowUsers.
  3. Применяй только безопасным скриптом:
chmod +x scripts/safe-apply-ssh-lockdown.sh
sudo ./scripts/safe-apply-ssh-lockdown.sh

Что делает скрипт:

  • проверяет наличие AllowUsers в шаблоне;
  • ставит конфиг в /etc/ssh/sshd_config.d/95-owngit-lockdown.conf;
  • валидирует sshd -t;
  • делает reload только при валидной конфигурации;
  • сохраняет backup предыдущего lockdown-файла.