Custom Bouncer
๐ Documentation๐ Hub๐ฌ Discourse
Crowdsec bouncer written in golang for custom scripts.
crowdsec-custom-bouncer will periodically fetch new and expired/removed decisions from CrowdSec Local API and will pass them as arguments to a custom user script.
Installation from packages#
- Debian/Ubuntu
- RHEL/Centos/Fedora
sudo apt install crowdsec-custom-bouncersudo yum install crowdsec-custom-bouncerManual install (via script)#
First, download the latest crowdsec-custom-bouncer release.
$ tar xzvf crowdsec-custom-bouncer.tgz$ sudo ./install.shFrom source#
Run the following commands:
git clone https://github.com/crowdsecurity/crowdsec-custom-bouncer.gitcd crowdsec-custom-bouncer/make releasetar xzvf crowdsec-custom-bouncer.tgzcd crowdsec-custom-bouncer-v*/sudo ./install.shConfiguration
Before starting the crowdsec-custom-bouncer service, please edit the configuration to add your API url and key.
The default configuration file is located under : /etc/crowdsec/bouncers/
$ vim /etc/crowdsec/bouncers/crowdsec-custom-bouncer.yamlbin_path: <absolute_path_to_binary>piddir: /var/run/update_frequency: 10sdaemonize: truelog_mode: filelog_dir: /var/log/log_level: infoapi_url: <API_URL> # when install, default is "localhost:8080"api_key: <API_KEY> # Add your API key generated with `cscli bouncers add --name <bouncer_name>`cache_retention_duration: 10s cache_retention_duration : The bouncer keeps track of all custom script invocations from the last cache_retention_duration interval. If a decision is identical to some decision already present in the cache, then the custom script is not invoked. The keys for hashing a decision is it's Type (eg ban, captcha etc) and Value (eg 1.2.3.4, CH etc).
You can then start the service:
sudo systemctl start crowdsec-custom-bouncerUpgrade (for manual install only)
If you already have crowdsec-custom-bouncer installed, please download the latest release and run the following commands to upgrade it:
tar xzvf crowdsec-custom-bouncer.tgzcd crowdsec-custom-bouncer-v*/sudo ./upgrade.shUsage
The custom binary will be called with the following arguments :
<my_custom_binary> add <ip> <duration> <reason> <json_object> # to add an IP address<my_custom_binary> del <ip> <duration> <reason> <json_object> # to del an IP addressip: ip address to block<ip>/<cidr>duration: duration of the remediation in secondsreason: reason of the decisionjson_object: the serialized decision
โ ๏ธ don't forget to add execution permissions to your binary/script
Examples:#
custom_binary.sh add 1.2.3.4/32 3600 "test blacklist"custom_binary.sh del 1.2.3.4/32 3600 "test blacklist"