173 lines
4.9 KiB
Markdown
173 lines
4.9 KiB
Markdown
|
|
# 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 адресов.
|
|||
|
|
|