88 lines
3.5 KiB
Markdown
88 lines
3.5 KiB
Markdown
# 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-файла.
|