{"id":36489127,"url":"https://github.com/juitde/traefik-plugin-fail2ban","last_synced_at":"2026-01-12T01:54:09.973Z","repository":{"id":65662064,"uuid":"595617088","full_name":"juitde/traefik-plugin-fail2ban","owner":"juitde","description":"Block or allow IPs depending on various conditions","archived":false,"fork":false,"pushed_at":"2025-10-17T07:42:51.000Z","size":37,"stargazers_count":16,"open_issues_count":1,"forks_count":4,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-10-18T10:38:46.178Z","etag":null,"topics":["traefik-middleware","traefik-plugin"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/juitde.png","metadata":{"files":{"readme":"README.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":"2023-01-31T13:10:25.000Z","updated_at":"2025-10-17T07:40:47.000Z","dependencies_parsed_at":"2024-01-14T14:01:24.656Z","dependency_job_id":null,"html_url":"https://github.com/juitde/traefik-plugin-fail2ban","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/juitde/traefik-plugin-fail2ban","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juitde%2Ftraefik-plugin-fail2ban","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juitde%2Ftraefik-plugin-fail2ban/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juitde%2Ftraefik-plugin-fail2ban/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juitde%2Ftraefik-plugin-fail2ban/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/juitde","download_url":"https://codeload.github.com/juitde/traefik-plugin-fail2ban/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juitde%2Ftraefik-plugin-fail2ban/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28331279,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T00:36:25.062Z","status":"ssl_error","status_checked_at":"2026-01-12T00:36:15.229Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["traefik-middleware","traefik-plugin"],"created_at":"2026-01-12T01:54:09.881Z","updated_at":"2026-01-12T01:54:09.951Z","avatar_url":"https://github.com/juitde.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fail2Ban middleware plugin for traefik reverse proxy\n\n![Continuous Integration Status](https://github.com/juitde/traefik-plugin-fail2ban/actions/workflows/ci.yml/badge.svg?branch=main)\n\nThis plugin is a small but growing implementation of a fail2ban instance as a middleware plugin for traefik. It is\ninspired by other implementations similar in the goal but is tailored to our needs.\n\nInspirations taken from:\n- https://github.com/tomMoulard/fail2ban\n- https://github.com/safing/scanblock\n\n## Installation\n\nInstallation instructions are provided via the [traefik Plugin Catalog](https://plugins.traefik.io/plugins/).\n\n### CAUTION: Breaking Changes\n\n#### Version 0.2.0\n\n- traefik v2.10+ is required due to now having a vendored dependency which results\n  in go routine panics in previous traefik versions.\n\n## Configuration\n\nAll configuration options may be specified either in config files or as CLI parameters.\n\n### Always allowing or blocking certain IPs(/IP-ranges)\n\nThere can be configured certain ip addresses or ranges which are either always allowed or always denied access.\nBlocking always takes precedence before allowing access and allowing access takes precedence before executing other\nfail2ban rules.\n\n```yaml\ntestData:\n    alwaysAllowed:\n        ip: \"::1,127.0.0.1\"\n    alwaysDenied:\n        ip: \"192.168.0.0/24\"\n```\n\n### Restricting logging messages\n\nIn order to help managing the use of this plugin the level of logged messages can be adjusted.\n\n```yaml\ntestData:\n    logLevel: \"INFO\"\n```\n\n### Fail2Ban rules\n\nThe ultimate goal is to support any rule matcher fail2ban supports themselves but implementation follows the direct\nneeds of our projects.\n\nCurrently the implemented settings consist of:\n\n```yaml\ntestData:\n    rules:\n        banTime: \"3h\"\n        findTime: \"10m\"\n        maxRetries: 4\n        response:\n            statusCodes: \"400,401,403-499\"\n            errorCode: \"403\"\n```\n\n## Processing requests\n\nPrior to executing the defined rules if the Remote IP is in the `alwaysDenied`-list the request will be immediately\ndenied. This applies for the `alwaysAllowed`-list accordingly.\n\nIn the first request from an unknown IP address they are added to the pool starting the `findTime` timer:\n\nIn every subsequent request (while the findTime is not exceeded) the IP address counter in the pool is incremented\nand the rules are checked.\n\n# How to develop in this project\n\n- First clean install vendor dependencies: `make clean vendor`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuitde%2Ftraefik-plugin-fail2ban","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuitde%2Ftraefik-plugin-fail2ban","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuitde%2Ftraefik-plugin-fail2ban/lists"}