# 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 ```bash sudo ufw status verbose sudo fail2ban-client status curl -I https://git.papatramp.ru ssh -T -p 2222 git@git.papatramp.ru ``` ## Безопасное применение SSH hardening ```bash 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. Применяй только безопасным скриптом: ```bash 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-файла.