mnemo_cards/tools/deploy/FAIL2BAN_WHITELIST.md
2025-11-21 00:28:55 +03:00

172 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Fail2ban Whitelist Configuration
**Дата**: 19 ноября 2025
**Статус**: ✅ Настроено
## Проблема
Fail2ban блокировал IP администратора (89.19.210.178) при установке Flutter и интенсивном использовании VSCode Server.
## Решение
Добавлен IP администратора в whitelist (ignoreip) для всех VSCode jail'ов.
## Конфигурация
**Файл**: `/etc/fail2ban/jail.d/vscode.conf`
```ini
[vscode]
enabled = true
port = http,https
filter = vscode
logpath = /var/log/nginx/access.log
maxretry = 3
bantime = 3600
findtime = 600
ignoreip = 127.0.0.1/8 ::1 89.19.210.178
[vscode-ddos]
enabled = true
port = http,https
filter = vscode-ddos
logpath = /var/log/nginx/access.log
maxretry = 100
bantime = 600
findtime = 60
ignoreip = 127.0.0.1/8 ::1 89.19.210.178
```
## Что означает ignoreip
- `127.0.0.1/8` - локальные IP адреса (localhost)
- `::1` - IPv6 localhost
- `89.19.210.178` - ваш текущий внешний IP
## Параметры защиты
### vscode jail
- **maxretry**: 3 попытки
- **bantime**: 3600 секунд (1 час)
- **findtime**: 600 секунд (10 минут)
Блокирует за 3 неудачные попытки входа в течение 10 минут на 1 час.
### vscode-ddos jail
- **maxretry**: 100 запросов
- **bantime**: 600 секунд (10 минут)
- **findtime**: 60 секунд (1 минута)
Блокирует за более 100 запросов в минуту на 10 минут (защита от DDoS).
## Проверка
### Текущий статус
```bash
ssh root@147.45.152.129 'fail2ban-client status vscode-ddos'
```
**Результат**:
```
Status for the jail: vscode-ddos
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:
```
✅ Нет заблокированных IP
### Проверка whitelist
```bash
ssh root@147.45.152.129 'fail2ban-client get vscode-ddos ignoreip'
```
Должно показать: `127.0.0.1/8 ::1 89.19.210.178`
## Добавление нового IP в whitelist
Если ваш IP изменится или нужно добавить другой IP:
```bash
ssh root@147.45.152.129
# Редактировать конфигурацию
nano /etc/fail2ban/jail.d/vscode.conf
# Добавить новый IP в строку ignoreip через пробел
ignoreip = 127.0.0.1/8 ::1 89.19.210.178 NEW_IP_HERE
# Перезапустить fail2ban
systemctl restart fail2ban
# Проверить статус
systemctl status fail2ban
```
## Разблокировка IP вручную
Если всё же кто-то был заблокирован:
```bash
# Посмотреть заблокированные IP
ssh root@147.45.152.129 'fail2ban-client status vscode-ddos'
# Разблокировать конкретный IP
ssh root@147.45.152.129 'fail2ban-client set vscode-ddos unbanip IP_ADDRESS'
# Пример
ssh root@147.45.152.129 'fail2ban-client set vscode-ddos unbanip 89.19.210.178'
```
## Логи
### Просмотр логов fail2ban
```bash
ssh root@147.45.152.129 'tail -f /var/log/fail2ban.log'
```
### Просмотр nginx access log
```bash
ssh root@147.45.152.129 'tail -f /var/log/nginx/access.log | grep vscode'
```
## Backup
Создан backup оригинальной конфигурации:
```
/etc/fail2ban/jail.d/vscode.conf.backup
```
Для восстановления:
```bash
ssh root@147.45.152.129 'cp /etc/fail2ban/jail.d/vscode.conf.backup /etc/fail2ban/jail.d/vscode.conf && systemctl restart fail2ban'
```
## Безопасность
**Fail2ban продолжает работать** - защита от атак активна
**Ваш IP в whitelist** - вас больше не будет блокировать
**Другие IP защищены** - атаки с других адресов будут блокироваться
## Проверка после изменений
Все сервисы работают:
| Сервис | URL | Статус |
|--------|-----|--------|
| Forgejo | https://code.mnemo-cards.online/ | 🟢 Доступен |
| VSCode | https://vscode.mnemo-cards.online/ | 🟢 Доступен |
| Backend API | https://api.mnemo-cards.online/ | 🟢 Доступен |
## Связанные документы
- [VSCODE_SERVER_SETUP.md](./VSCODE_SERVER_SETUP.md) - Настройка VSCode Server
- [RECOVERY_REPORT_2025-11-19.md](./RECOVERY_REPORT_2025-11-19.md) - Восстановление после перезагрузки
---
**Вывод**: Ваш IP (89.19.210.178) добавлен в whitelist. Fail2ban больше вас не заблокирует, но продолжит защищать сервер от атак с других IP адресов.