{"id":26397246,"url":"https://github.com/sotchenkov/binbanned","last_synced_at":"2025-03-17T12:16:54.174Z","repository":{"id":282621240,"uuid":"949161271","full_name":"sotchenkov/binbanned","owner":"sotchenkov","description":" Passive bad bot blocking based on nginx log analysis","archived":false,"fork":false,"pushed_at":"2025-03-15T21:14:00.000Z","size":45,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-15T21:28:34.107Z","etag":null,"topics":["anti-bot","blocking","bot","bot-blocker","crowdsec","fail2ban","logs","nginx","protection","scanneres","security","spam","spam-blocker"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sotchenkov.png","metadata":{"files":{"readme":"README-RU.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-15T20:17:38.000Z","updated_at":"2025-03-15T21:14:04.000Z","dependencies_parsed_at":"2025-03-15T21:28:40.875Z","dependency_job_id":"9bb176a9-76fb-4da8-b2c9-1b1125d46c1f","html_url":"https://github.com/sotchenkov/binbanned","commit_stats":null,"previous_names":["sotchenkov/binbanned"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sotchenkov%2Fbinbanned","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sotchenkov%2Fbinbanned/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sotchenkov%2Fbinbanned/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sotchenkov%2Fbinbanned/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sotchenkov","download_url":"https://codeload.github.com/sotchenkov/binbanned/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244031152,"owners_count":20386534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anti-bot","blocking","bot","bot-blocker","crowdsec","fail2ban","logs","nginx","protection","scanneres","security","spam","spam-blocker"],"created_at":"2025-03-17T12:16:53.722Z","updated_at":"2025-03-17T12:16:54.160Z","avatar_url":"https://github.com/sotchenkov.png","language":"Go","readme":"# binbanned\n\n**binbanned** — это утилита для мониторинга логов Nginx в режиме реального времени и автоматической блокировки на уровне Nginx IP-адресов с подозрительными запросами. Поддерживает как JSON-логи, так и стандартный формат логов (Common Log Format).\n\n### Возможности\n- **Мониторинг логов в реальном времени:** Чтение логов с помощью режима tail и поддержка ротации файлов.\n- **Поддержка различных форматов логов:** Обработка JSON и стандартных логов.\n- **Фильтрация подозрительных запросов:** Блокировка IP-адресов, если URI содержит скрытые файлы (например, `/.env`, `/.git/config`) или если в user-agent присутствуют подозрительные шаблоны. Этот паттерн охватывает большинство плохих веб-ботов.\n- **Whitelist:** Возможность запретить блокировку IP, указанных в отдельном файле.\n- **Отправка сиганала Nginx на перечитывание конфигурации:** При добавлении ip в блок-лист, утилита отправляет nginx сигнал на перечитывание конфигурации.\n- **Telegram уведомления:** Отправка уведомлений о новых блокировках через Telegram-бота.\n- **Кастомные лейблы:** Возможность добавлять пользовательские лейблы в алерты и логи через флаг `--labels` (например, `--labels '{\"server name\": \"my-server\", \"region\":\"us\"}'`).\n\n\n### Установка и сборка\nВы можете скачать уже собранный бинарный файл, либо собрать его самостоятельно: \n\n* **Скачивание бинаря**\nПерейдите в релизы, выберите интересующую вас версию и скачайте бинарь\n```bash\nwget  https://github.com/sotchenkov/binbanned/releases/ (нужный файл)\nsudo mv binbanned-* /usr/bin/binbanned\nsudo chmod +x /usr/bin/binbanned\n```\n\n* **Сборка:**\n```bash\ngit clone git@github.com:sotchenkov/binbanned.git\ncd binbanned\ngo build -o binbanned ./cmd/binbanned/main.go\n```\nИли для статической сборки:\n```bash\nCGO_ENABLED=0 go build -ldflags=\"-extldflags=-static\" -o binbanned ./cmd/binbanned/main.go\n```\n### Использование\n\n1. **Создайте необходимые файлы и задайте права:**\n\n```bash\nsudo touch /etc/nginx/conf.d/binbanned.conf\nsudo touch /etc/nginx/ip-whitelist\nsudo mkdir /var/log/binbanned\nsudo chmod +x binbanned\nsudo mv binbanned /usr/bin/\n```\n\n2. **Создайте systemd-сервис и укажите нужные параметры:**\n```bash\nsudo vim /etc/systemd/system/binbanned.service\n```\n\n```ini\n[Unit]\nDescription=binbanned service\nAfter=network.target\n\n[Service]\nType=simple\nUser=root\nExecStart=/usr/bin/binbanned -telegram-token 'YOUR_TELEGRAM_BOT_TOKEN' -telegram-chat 'YOUR_TELEGRAM_CHAT_ID' --labels '{\"server name\": \"my-server\", \"region\":\"ru\"}'\nRestart=on-failure\nRestartSec=20\nStandardOutput=append:/var/log/binbanned/binbanned.log\nStandardError=append:/var/log/binbanned/binbanned.log\n\n[Install]\nWantedBy=multi-user.target\n```\n\n```bash\nsudo systemctl daemon-reload\nsudo systemctl start binbanned\nsudo systemctl status binbanned\n```\n\n### Параметры командной строки\n\n    --logdir\n    Директория с логами Nginx (по умолчанию: /var/log/nginx/).\n    \n    --banned\n    Файл для записи заблокированных IP (по умолчанию: /etc/nginx/conf.d/binbanned.conf).\n    \n    --whitelist\n    Файл с белым списком IP (по умолчанию: /etc/nginx/ip-whitelist).\n    \n    --reload-interval\n    Интервал проверки новых банов и перезагрузки Nginx (по умолчанию: 10s).\n    \n    --parse-all\n    Парсить логи с начала файлов (если задан).\n    \n    --telegram-token\n    Telegram Bot token для отправки уведомлений.\n    \n    --telegram-chat\n    Telegram Chat ID для уведомлений.\n    \n    --labels\n    Пользовательские лейблы для алертов/логов в формате JSON.\n\n### Настройка Nginx\n\nУбедитесь, что в основном конфигурационном файле Nginx (/etc/nginx/nginx.conf) присутствует директива:\n```bash\ninclude /etc/nginx/conf.d/*.conf;\n```\nЭто гарантирует, что Nginx будет применять настройки из файла с забаненными IP.\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsotchenkov%2Fbinbanned","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsotchenkov%2Fbinbanned","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsotchenkov%2Fbinbanned/lists"}