PHPackages                             anthonymartin/aws\_acl\_fail2ban - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. anthonymartin/aws\_acl\_fail2ban

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

anthonymartin/aws\_acl\_fail2ban
================================

This package includes a script and fail2ban configuration that allows you to use fail2ban when utilizing AWS elastic load balancer (ELB) and an apache webserver.

v1.0.0(9y ago)3414.2k—0%12[2 issues](https://github.com/anthonymartin/aws-acl-fail2ban/issues)CC 3.0PHPPHP &gt;=5.3.0

Since Sep 17Pushed 7y ago3 watchersCompare

[ Source](https://github.com/anthonymartin/aws-acl-fail2ban)[ Packagist](https://packagist.org/packages/anthonymartin/aws_acl_fail2ban)[ Docs](https://github.com/anthonymartin/aws-acl-fail2ban)[ RSS](/packages/anthonymartin-aws-acl-fail2ban/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

aws-acl-fail2ban
================

[](#aws-acl-fail2ban)

This package includes a script and fail2ban configuration that allows you to use fail2ban when utilizing AWS elastic load balancer (ELB) and an apache webserver. It is useful to protect your site against DoS and brute force attacks when behind a reverse proxy load balancer like ELB. Special consideration is required when using ELB with fail2ban because ELB only forwards the client IP to the server in an X-Forwarded-For header. Following this guide will enable you to use ELB, Apache webservers and AWS ACL together with fail2ban for an dynamic firewall solution.

Dependencies
------------

[](#dependencies)

- AWS CLI must be installed and your access credentials must be setup as specified in AWS CLI docs (either through a ~/.aws/config or through an environment variable). \*\* IF someone would like to update the code to use AWS composer package, I'm sure that would make many people's lives easier \*\*
- An ACL must be created and associated with your load balancer and webservers in AWS
- Make sure that the credentials you've configured in AWS for the AWS CLI allow read/write to ACL resources.
- Your apache logs must log the X-Forwarded-For header instead of the ELB IP address. Instructions on how to do so are found below.

Installation
------------

[](#installation)

1. The recommended method of installation is by using composer to install: `composer require anthonymartin/aws_acl_fail2ban` - alternatively, you can clone or download this repository.
2. Ensure that your apache configuration and your fail2ban configuration is correct. Some help has been provided below.

Apache Configuration
--------------------

[](#apache-configuration)

1. Enable RemoteIP mod
2. Update apache configuration - the configuration below is what my configuration found at /etc/apache2/apache2.conf looks like. Be sure to include RemoteIPHeader and replace LogFormat with the lines found below.

```
  RemoteIPHeader X-Forwarded-For
  LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
  LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
  LogFormat "%h %l %u %t \"%r\" %>s %O" common
  LogFormat "%{Referer}i -> %U" referer
  LogFormat "%{User-agent}i" agent

```

3. run `sudo service apache2 reload`

fail2ban Configuration
----------------------

[](#fail2ban-configuration)

1. Copy `fail2ban/action.d/aws-acl.conf` in `/etc/fail2ban/action.d/` directory
2. Copy `fail2ban/filter.d/aws-acl-example-filter.conf` to `/etc/fail2ban/filter.d/` directory
3. Update `actionban` and `actionunban` definitions in `/etc/fail2ban/action.d/aws-acl.conf`. You need tos replace both instances of `/path/to/aws-acl-fail2ban` to the location of `aws-acl-fail2ban` on your server. If you've installed with composer, the location is `vendor/bin/aws-acl-fail2ban`, otherwise the location is in `bin/aws-acl-fail2ban`. You should use the absolute path when updating `actionban` and `actionunban`.
4. Replace both instances of `ACL_ID_GOES_HERE` in `/etc/fail2ban/action.d/aws-acl.conf` with the acl-id of the ACL that you would like to use.
5. Create or update your jail.local configuration. Replace the filter definition below with your own filter if you have one. The example filter configuration included in this package will match all POST and GET requests that are not images, css or javascript (note this doesn't include font files as of this time, but it probably should). The filter together with the jail.local configuration here will be useful for stopping crawl attempts and certain types of HTTP Flood DoS or brute force attacks. Here's an example jail.local configuration:

```
[aws-acl-example]
enabled = true
filter = aws-acl-example-filter
action = aws-acl
  sendmail-whois[name=LoginDetect, dest=youremail@example.com, sender=youremail@local.hostname, sendername="Fail2Ban"]
logpath = /var/log/apache2/access.log
maxretry = 60
findtime = 60
bantime = 14400

```

###  Health Score

35

—

LowBetter than 79% of packages

Maintenance19

Infrequent updates — may be unmaintained

Popularity37

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 90.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

3523d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/cdc24d0fd0480fdf8dedba588ac8937c8164d62887cf52b91aa59d6353c8a20a?d=identicon)[anthony](/maintainers/anthony)

---

Top Contributors

[![anthonymartin](https://avatars.githubusercontent.com/u/949506?v=4)](https://github.com/anthonymartin "anthonymartin (10 commits)")[![roparz](https://avatars.githubusercontent.com/u/204520?v=4)](https://github.com/roparz "roparz (1 commits)")

---

Tags

awsaclapacheapache2DOS protectionamazon web servicesdosfail2banelbelastic load balancer

### Embed Badge

![Health badge](/badges/anthonymartin-aws-acl-fail2ban/health.svg)

```
[![Health](https://phpackages.com/badges/anthonymartin-aws-acl-fail2ban/health.svg)](https://phpackages.com/packages/anthonymartin-aws-acl-fail2ban)
```

###  Alternatives

[spatie/laravel-permission

Permission handling for Laravel 12 and up

12.9k89.8M1.0k](/packages/spatie-laravel-permission)[zizaco/entrust

This package provides a flexible way to add Role-based Permissions to Laravel. Supports laravel 5|6|7|8

6.0k5.3M61](/packages/zizaco-entrust)[santigarcor/laratrust

This package provides a flexible way to add Role-based Permissions to Laravel

2.3k5.4M43](/packages/santigarcor-laratrust)[bezhansalleh/filament-shield

Filament support for `spatie/laravel-permission`.

2.8k2.9M88](/packages/bezhansalleh-filament-shield)[casbin/casbin

a powerful and efficient open-source access control library for php projects.

1.3k1.4M54](/packages/casbin-casbin)[nette/security

🔑 Nette Security: provides authentication, authorization and a role-based access control management via ACL (Access Control List)

3839.3M279](/packages/nette-security)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
