vm:nginx:07-file2ban_log

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

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