Различия
Показаны различия между двумя версиями страницы.
| vm:nginx:07-file2ban_log [2025/12/13 20:21] – создано admin | vm:nginx:07-file2ban_log [2026/03/03 14:00] (текущий) – удалено admin | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ====== Очистка диска Ubuntu и настройка fail2ban ====== | ||
| - | ===== Проблема ===== | ||
| - | |||
| - | Диск заполнен на 97%, основная причина - логи fail2ban занимают ~33GB из-за записи каждого запроса от локального IP в INFO уровне. | ||
| - | |||
| - | ===== Диагностика ===== | ||
| - | |||
| - | ==== Проверка свободного места ==== | ||
| - | |||
| - | <code bash> | ||
| - | # Общая информация по разделам | ||
| - | df -h | ||
| - | |||
| - | # Размер основных директорий | ||
| - | sudo du -h --max-depth=1 / 2>/ | ||
| - | |||
| - | # Размер логов | ||
| - | sudo du -sh /var/log/* | sort -rh | head -20 | ||
| - | |||
| - | # Проверка размера journald | ||
| - | journalctl --disk-usage | ||
| - | </ | ||
| - | |||
| - | ==== Проверка Docker ==== | ||
| - | |||
| - | <code bash> | ||
| - | # Что занимает место в Docker | ||
| - | docker system df | ||
| - | |||
| - | # Размер Docker директорий | ||
| - | sudo du -sh / | ||
| - | sudo du -sh / | ||
| - | sudo du -sh / | ||
| - | </ | ||
| - | |||
| - | ===== Решение проблемы с fail2ban ===== | ||
| - | |||
| - | ==== Шаг 1: Проверка текущего состояния ==== | ||
| - | |||
| - | <code bash> | ||
| - | # Проверка логов fail2ban | ||
| - | sudo tail -100 / | ||
| - | |||
| - | # Проверка активных jail | ||
| - | sudo fail2ban-client status | ||
| - | |||
| - | # Количество записей от локального IP | ||
| - | grep " | ||
| - | </ | ||
| - | |||
| - | ==== Шаг 2: Изменение уровня логирования ==== | ||
| - | |||
| - | <code bash> | ||
| - | # Редактирование конфига | ||
| - | sudo nano / | ||
| - | </ | ||
| - | |||
| - | Найти и изменить: | ||
| - | |||
| - | < | ||
| - | [DEFAULT] | ||
| - | loglevel = WARNING | ||
| - | </ | ||
| - | |||
| - | **Важно: | ||
| - | |||
| - | ==== Шаг 3: Исправление прав на /var/log ==== | ||
| - | |||
| - | <code bash> | ||
| - | # Проверка текущих прав | ||
| - | ls -ld /var/log | ||
| - | |||
| - | # Исправление прав (если нужно) | ||
| - | sudo chmod 755 /var/log | ||
| - | |||
| - | # Проверка результата | ||
| - | ls -ld /var/log | ||
| - | </ | ||
| - | |||
| - | Должно быть: '' | ||
| - | |||
| - | ==== Шаг 4: Настройка logrotate ==== | ||
| - | |||
| - | <code bash> | ||
| - | sudo nano / | ||
| - | </ | ||
| - | |||
| - | Содержимое файла: | ||
| - | |||
| - | < | ||
| - | / | ||
| - | daily | ||
| - | rotate 3 | ||
| - | maxsize 50M | ||
| - | compress | ||
| - | notifempty | ||
| - | delaycompress | ||
| - | missingok | ||
| - | su root root | ||
| - | postrotate | ||
| - | fail2ban-client flushlogs 1>/ | ||
| - | endscript | ||
| - | create 640 root adm | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | **Изменения: | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | ==== Шаг 5: Тестирование logrotate ==== | ||
| - | |||
| - | <code bash> | ||
| - | # Тест конфигурации | ||
| - | sudo logrotate -d / | ||
| - | |||
| - | # Должно быть без ошибок " | ||
| - | </ | ||
| - | |||
| - | ==== Шаг 6: Очистка логов ==== | ||
| - | |||
| - | <code bash> | ||
| - | # Очистка больших логов fail2ban | ||
| - | sudo truncate -s 0 / | ||
| - | sudo truncate -s 0 / | ||
| - | sudo rm -f / | ||
| - | |||
| - | # Проверка результата | ||
| - | df -h / | ||
| - | ls -lh / | ||
| - | </ | ||
| - | |||
| - | ==== Шаг 7: Перезапуск fail2ban ==== | ||
| - | |||
| - | <code bash> | ||
| - | # Перезапуск сервиса | ||
| - | sudo systemctl restart fail2ban | ||
| - | |||
| - | # Проверка статуса | ||
| - | sudo systemctl status fail2ban | ||
| - | |||
| - | # Проверка применения loglevel | ||
| - | sudo fail2ban-client get loglevel | ||
| - | </ | ||
| - | |||
| - | Должно вывести: | ||
| - | |||
| - | ==== Шаг 8: Проверка через время ==== | ||
| - | |||
| - | <code bash> | ||
| - | # Подождать минуту | ||
| - | sleep 60 | ||
| - | |||
| - | # Размер лога должен остаться маленьким | ||
| - | ls -lh / | ||
| - | |||
| - | # Последние строки - только важные сообщения | ||
| - | tail -50 / | ||
| - | </ | ||
| - | |||
| - | ===== Дополнительная очистка (опционально) ===== | ||
| - | |||
| - | ==== Очистка journald ==== | ||
| - | |||
| - | <code bash> | ||
| - | # Проверка размера | ||
| - | journalctl --disk-usage | ||
| - | |||
| - | # Очистка старше 3 дней | ||
| - | sudo journalctl --vacuum-time=3d | ||
| - | |||
| - | # Или ограничение размером | ||
| - | sudo journalctl --vacuum-size=500M | ||
| - | </ | ||
| - | |||
| - | ==== Очистка Docker ==== | ||
| - | |||
| - | <code bash> | ||
| - | # Удаление неиспользуемых образов, | ||
| - | docker system prune -a --volumes | ||
| - | |||
| - | # Или избирательно | ||
| - | docker image prune -a | ||
| - | docker volume prune | ||
| - | docker container prune | ||
| - | </ | ||
| - | |||
| - | ==== Очистка APT кеша ==== | ||
| - | |||
| - | <code bash> | ||
| - | sudo apt autoremove | ||
| - | sudo apt autoclean | ||
| - | sudo apt clean | ||
| - | </ | ||
| - | |||
| - | ===== Результат ===== | ||
| - | |||
| - | После выполнения всех шагов: | ||
| - | * ✅ Освобождено ~32-33GB дискового пространства | ||
| - | * ✅ Диск заполнен на 44% вместо 97% | ||
| - | * ✅ Fail2ban больше не генерирует гигабайты логов | ||
| - | * ✅ Автоматическая ротация логов настроена | ||
| - | * ✅ Система работает стабильно | ||
| - | |||
| - | ===== Мониторинг ===== | ||
| - | |||
| - | <code bash> | ||
| - | # Регулярная проверка дискового пространства | ||
| - | df -h | ||
| - | |||
| - | # Проверка размера логов | ||
| - | sudo du -sh / | ||
| - | |||
| - | # Проверка топ-10 больших файлов | ||
| - | sudo find /var/log -type f -exec du -h {} + | sort -rh | head -10 | ||
| - | </ | ||
| - | |||
| - | ---- | ||
| - | |||
| - | **Дата создания: | ||
| - | **Проверено на:** Ubuntu 24.04 LTS\\ | ||
| - | **Fail2ban версия: | ||