Adoptable Cookbooks List

Looking for a cookbook to adopt? You can now see a list of cookbooks available for adoption!
List of Adoptable Cookbooks

Supermarket Belongs to the Community

Supermarket belongs to the community. While Chef has the responsibility to keep it running and be stewards of its functionality, what it does and how it works is driven by the community. The chef/supermarket repository will continue to be where development of the Supermarket application takes place. Come be part of shaping the direction of Supermarket by opening issues and pull requests or by joining us on the Chef Mailing List.

Select Badges

Select Supported Platforms

Select Status


fail2ban (54) Versions 4.0.1

Installs and configures fail2ban

cookbook 'fail2ban', '= 4.0.1', :supermarket
cookbook 'fail2ban', '= 4.0.1'
knife supermarket install fail2ban
knife supermarket download fail2ban
Quality 100%

fail2ban Cookbook

Build Status Cookbook Version

Installs and configures fail2ban, a utility that watches logs for failed login attempts and blocks repeat offenders with firewall rules. On Redhat systems this cookbook will enable the EPEL repository in order to retrieve the fail2ban package.



  • Debian/Ubuntu
  • RHEL/CentOS/Scientific/Amazon/Oracle
  • Fedora
  • OpenSUSE


  • Chef 12.1+


  • yum-epel



Installs the fail2ban package, manages 2 templates: /etc/fail2ban/fail2ban.conf and /etc/fail2ban/jail.conf, and manages the fail2ban service.


Typically, include recipe[fail2ban] in a base role applied to all nodes.


This cookbook has a set of configuration options for fail2ban

  • default['fail2ban']['socket'] = '/var/run/fail2ban/fail2ban.sock'
  • default['fail2ban']['logtarget'] = '/var/log/fail2ban.log'
  • default['fail2ban']['pidfile'] = '/var/run/fail2ban/'
  • default['fail2ban']['dbfile'] = '/var/lib/fail2ban/fail2ban.sqlite3'
  • default['fail2ban']['dbpurgeage'] = 86_400

This cookbook has a set of configuration options for jail.conf

  • default['fail2ban']['ignoreip'] = ''
  • default['fail2ban']['findtime'] = 600
  • default['fail2ban']['bantime'] = 300
  • default['fail2ban']['maxretry'] = 5
  • default['fail2ban']['backend'] = 'polling'
  • default['fail2ban']['email'] = 'root@localhost'
  • default['fail2ban']['sendername'] = 'Fail2Ban'
  • default['fail2ban']['action'] = 'action_'
  • default['fail2ban']['banaction'] = 'iptables-multiport'
  • default['fail2ban']['mta'] = 'sendmail'
  • default['fail2ban']['protocol'] = 'tcp'
  • default['fail2ban']['chain'] = 'INPUT'

This cookbook makes use of a hash to compile the jail.local-file and filter config files:

default['fail2ban']['services'] = {
  'ssh' => {
        "enabled" => "true",
        "port" => "ssh",
        "filter" => "sshd",
        "logpath" => node['fail2ban']['auth_log'],
        "maxretry" => "6"
  'smtp' => {
        "enabled" => "true",
        "port" => "smtp",
        "filter" => "smtp",
        "logpath" => node['fail2ban']['auth_log'],
        "maxretry" => "6"

The following attributes can be used per service:

  • enabled
  • port
  • filter
  • logpath
  • maxretry
  • protocol
  • banaction
  • bantime

Creating custom fail2ban filters:

default['fail2ban']['filters'] = {
  'nginx-proxy' => {
        "failregex" => ["^ -.*GET http.*"],
        "ignoreregex" => []

Issues related to rsyslog

If you are using rsyslog parameter "$RepeatedMsgReduction on" in rsyslog.conf file
then you can get "Last message repeated N times" in system log file (for example auth.log).
Fail2ban will not work because the internal counter maxretry will not expand the repeated messages.
Change parameter "$RepeatedMsgReduction off" in rsyslog.conf file for maximum accuracy of failed login attempts.

This rsyslog parameter is default ON for ubuntu 12.04 LTS for example.

License and Author

Author:: Joshua Timberman ()

Copyright:: 2009-2016, Chef Software, Inc

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.

fail2ban Cookbook CHANGELOG

This file is used to list changes made in each version of the fail2ban cookbook.

4.0.1 (2017-04-26)

  • Update apache2 license string

4.0.0 (2017-03-14)

NOTE The next version of this cookbook will be a rewrite to use custom resources and eliminate attributes. This should be backwards compatible to previous versions of the cookbook, but there are some changes that might break current assumptions so doing a major bump.

  • [#33] Fix ubuntu platforms
  • Add ubuntu platform guards to default recipe
  • Update README to be more clear with regards to rsyslog
  • Remove defaults-debian.conf on ubuntu platforms, that assumes ssh enabled on nodes.
  • Modify metadata dependency to Chef 12.5+
  • Modify chef spec to remove service start, enable on resources as on debian platforms the service is started by install of package
  • Make test kitchen show deprecation errors
  • Remove EOL debian and ubuntu logic from default recipe

3.1.0 (2016-11-14)

  • Add support for jail ignorecommand

3.0.0 (2016-09-16)

  • Testing updates
  • Require Chef 12.1+
  • Add opensuse and opensuseleap to the metadata

v2.3.1 (2016-07-20)

  • Added fixture cookbook
  • Cleanup of kitchen configurations
  • [#38] Default config values to avoid warning from pbanderas
  • [#37] Add support for 'sendername' setting on config from Restless-ET
  • [#35] Add support for configuring service backend from ares
  • many updates to testing
  • [#25] Allow jail actions of either format from rchekaluk
  • Add OpenSUSE platform

v2.3.0 (2015-08-22)

  • Updated Berksfile to 3.0 format
  • Added "generated by chef" comment headers to all templates
  • Added missing bantime service attribute to the readme
  • Resolved all rubocop warnings
  • Added yum-epel to the readme as a dependency
  • Removed the dependency on the yum cookbook. This cookbook only requires yum-epel, which handles the yum dependency
  • Added a chefignore file to prevent unnecessary files from being uploaded to the chef-server
  • Changed fail2ban package to install only vs. upgrading. Administrators should be able to choose when packages are upgraded
  • Change file mode definitions to be strings to preserve the leading zeros
  • Added testing / cookbook version badges to the readme
  • Added source_url and issues_url metadata for Chef 12
  • Add basic cookbook convergence chefspec tests
  • Updated the testing and contributing docs to more recent versions
  • Bumped all development and testing gems to the latest versions
  • Expanded Travis testing to ruby 2/2.1/2.2
  • Changed Opscode to Chef Software in all locations

v2.2.1 (2014-10-15)

  • [#24] Add default value for pidfile


  • 15 - Fix small typo in for smtp

  • 16 - Support custom fail2ban filters

  • 21 - Service and defaults improvements, Fedora support



  • COOK-3899 - Allow action override in service block


Updating for cookbook yum ~> 3.0 Fixing style or rubocop Updating test bits


fixing metadata version error. locking to 3.0


Locking yum dependency to '< 3'


[COOK-2530] Allow customisation of jail.local


New Feature

  • COOK-3383 - Add clarifying caveat about rsyslog in README


  • COOK-3249 - Fix default jail.conf on CentOS


  • COOK-2748 - Handle /etc.init.d/fail2ban status for older versions



  • [COOK-2588]: Fail2ban needs to store the socket in the correct location
  • [COOK-2592]: fail2ban: Update jail file template to match current config file


  • [COOK-2292] - Add fail2ban support for RHEL using EPEL
  • [COOK-2426] - Fail2ban cookbook needs syslog tunables in config file
  • Development repository only: test kitchen 1.0.alpha support


  • [COOK-2291] - Add additional tunables to the fail2ban cookbook


  • [COOK-2217] - Users should be able to configure the email address fail2ban uses to send messages


  • Current public release.

Collaborator Number Metric

4.0.1 passed this metric

Contributing File Metric

4.0.1 passed this metric

Foodcritic Metric

4.0.1 passed this metric

License Metric

4.0.1 passed this metric

No Binaries Metric

4.0.1 passed this metric

Testing File Metric

4.0.1 passed this metric

Version Tag Metric

4.0.1 passed this metric