mnemo_cards/tools/deploy/FAIL2BAN_WHITELIST.md

173 lines
4.9 KiB
Markdown
Raw Normal View History

2025-11-20 21:28:55 +00:00
# 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 адресов.