Files

207 lines
12 KiB
ObjectPascal
Raw Permalink Normal View History

2026-03-11 12:12:23 +01:00
## confdroid_fail2ban::params.pp
# Module name: confdroid_fail2ban
# Author: 12ww1160 (12ww1160@confdroid.com)
# @summary Class holds all parameters for the confdroid_fail2ban module
# @param [String] fn_pkg_ensure
2017-08-03 12:01:32 +01:00
# which [package type](https://confdroid.com/2017/05/puppet-type-package/)
# to choose, i.e. `latest` or `present`.
2026-03-11 12:12:23 +01:00
# @param [array] fn_reqpackages the packages to install.
2025-03-02 23:30:48 +01:00
# @param [boolean] fn_manage_config Whether to manage the fail2ban
# configuration files. If set to false, fail2ban will be installed, but the
# configuration will not be managed.
# @param [String] fn_enable_service Whether to enable/start or disable/stop
# the fail2ban service. Valid options are `running` or `stopped`.
# @param [String] fn_loglevel Set the log level output. Valid options are
# `CRITICAL`,`ERROR`,`WARNING`,`NOTICE`,`INFO` and `DEBUG`.
# @param [String] fn_logtarget Set the log target. This could be a file,
# SYSLOG, STDERR or STDOUT. Only one log target can be specified.
# @param [String] fn_syslogsocket Set the syslog socket file. Only used when
# logtarget is SYSLOG. auto uses platform.system() to determine predefined
# paths Valid options: [ auto | FILE ].
# @param [String] fn_socket Set the socket file to communicate with the daemon.
# @param [String] fn_pidfile Set the PID file to store the process ID of the
# fail2ban server.
# @param [String] fn_dbfile file for the fail2ban persistent data to be stored.
# A value of ":memory:" means database is only stored in memory
# and data is lost when fail2ban is stopped.
# A value of "None" disables the database.
# @param [String] fn_dbpurgeage age in seconds at which bans should be purged
# from the database.
# @param [String] fn_ignoreip can be an IP address, a CIDR mask or a DNS host.
2017-08-03 17:25:10 +01:00
# Fail2ban will not ban a host which matches an address in this list. Several
# addresses can be defined using space (and/or comma) separator.
# @param [String] fn_ignorecommand External command that will take an
2017-08-03 17:25:10 +01:00
# tagged arguments to ignore, e.g. <ip>,and return true if the IP is to be
# ignored. False otherwise.
# @param [String] fn_bantime number of seconds that a host is banned.
# @param [String] fn_findtime A host is banned if it has generated "maxretry"
2017-08-03 17:25:10 +01:00
# during the last "findtime" seconds.
# @param [String] fn_maxretry number of failures before a host get banned.
# @param [String] fn_backend specifies the backend used to get files
2017-08-03 17:25:10 +01:00
# modification. options are "pyinotify", "gamin", "polling", "systemd" and
# "auto".
# pyinotify: requires pyinotify (a file alteration monitor) to be installed.
# If pyinotify is not installed, Fail2ban will use auto.
# gamin: requires Gamin (a file alteration monitor) to be installed.
# If Gamin is not installed, Fail2ban will use auto.
# polling: uses a polling algorithm which does not require external libraries.
# systemd: uses systemd python library to access the systemd journal.
# Specifying "logpath" is not valid for this backend.
# See "journalmatch" in the jails associated filter config
# auto: will try to use the following backends, in order:
# pyinotify, gamin, polling.
# @param [String] fn_usedns specifies if jails should trust hostnames in logs,
2017-08-03 17:25:10 +01:00
# warn when DNS lookups are performed, or ignore all hostnames in logs
# yes: if a hostname is encountered, a DNS lookup will be performed.
# warn: if a hostname is encountered, a DNS lookup will be performed,
# but it will be logged as a warning.
# no: if a hostname is encountered, will not be used for banning,
# but it will be logged as info.
# raw: use raw value (no hostname), allow use it for no-host filters/actions
# (example user)
# @param [String] fn_logencoding specifies the encoding of the log files
2017-08-03 17:25:10 +01:00
# handled by the jail This is used to decode the lines from the log file.
# Typical examples: "ascii", "utf-8"
# auto: will use the system locale setting
2025-03-02 23:30:48 +01:00
# @param [boolean] fn_enabled enables the jails.
2017-08-03 17:25:10 +01:00
# By default all jails are disabled, and it should stay this way.
# Enable only relevant to your setup jails in your .local or jail.d/*.conf
# true: jail will be enabled and log files will get monitored for changes
# false: jail is not enabled
# @param [String] fn_filter defines the filter to use by the jail.
2017-08-03 17:25:10 +01:00
# By default jails have names matching their filter name
# @param [String] fn_destemail Destination email address used solely for the
# interpolations in jail.{conf.local.d/*} configuration files.
# @param [String] fn_mta E-mail action. Since 0.8.1 Fail2Ban uses sendmail MTA
2017-08-03 17:25:10 +01:00
# for the mailing. Change mta configuration parameter to mail if you want to
# revert to conventional 'mail'.
# @param [String] fn_protocol Default protocol.
# @param [String] fn_chain Specify chain where jumps would need to be added in
2017-08-03 17:25:10 +01:00
# iptables-* actions.
# @param [String] fn_port # Ports to be banned Usually should be overridden
2017-08-03 17:25:10 +01:00
# in a particular jail
# @param [String] fn_fail2ban_agent Format of user-agent
2017-08-03 17:25:10 +01:00
# https://tools.ietf.org/html/rfc7231#section-5.5.3
# @param [String] fn_banaction Default banning action
# @param [String] fn_banaction_allports Default banning action
# @param [String] fn_action_ ban only
# @param [String] fn_action_mw ban & send an e-mail with whois report to the
2017-08-05 14:03:52 +01:00
# destemail.
# @param [String] fn_action_mwl ban & send an e-mail with whois report and
2017-08-06 15:30:02 +01:00
# relevant log lines
# @param [String] fn_action_xarf ban & send a xarf e-mail to abuse contact of
2017-08-06 15:30:02 +01:00
# IP address and include relevant log lines.
# @param [String] fn_action_cf_mwl ban IP on CloudFlare & send an e-mail with
2017-08-06 15:30:02 +01:00
# whois report and relevant log lines.
# @param [String] fn_action_blocklist_de Report block via blocklist.de fail2ban
2017-08-06 15:30:02 +01:00
# reporting service API
# @param [String] fn_action_badips String to be be used in config files
# @param [String] fn_action_badips_report # Report ban via badips.com
2017-08-06 15:30:02 +01:00
# (uses action.d/badips.conf for reporting only).
# @param [String] fn_default_action Choose default action.
# @param [String] fn_jail_paths the fail path. defaults to fedora.
2026-03-11 14:27:05 +01:00
# @param [Boolean] fn_incl_target Whether to include monitoring targets for
# nagios. If set to true, monitoring targets will be included for the service.
# @param [String] fn_target_service The path to the nagios service configuration
# file to be created if fn_incl_target is set to true.
# @param [String] fn_target_contacts The nagios contacts to be notified for
# the service if fn_incl_target is set to true.
2026-03-12 12:33:00 +01:00
# @param [String] fn_procs_allowed The allowed number of fail2ban processes
# for the nagios check. Default is '1:1', which means exactly one process
# should be running.
2017-08-03 17:25:10 +01:00
###############################################################################
2026-03-11 12:12:23 +01:00
class confdroid_fail2ban::params (
2017-08-03 12:01:32 +01:00
2020-06-07 14:17:18 +02:00
# installation
2026-03-11 12:17:01 +01:00
String $fn_pkg_ensure = 'present',
Array $fn_reqpackages = ['fail2ban','fail2ban-firewalld',
2025-03-02 23:30:48 +01:00
'fail2ban-sendmail','fail2ban-server.noarch','whois'],
2020-06-07 14:22:43 +02:00
2026-03-11 12:17:01 +01:00
Boolean $fn_manage_config = true,
String $fn_enable_service = 'running',
2017-08-03 17:25:10 +01:00
# fail2ban.conf/local
2026-03-11 12:17:01 +01:00
String $fn_loglevel = 'INFO',
String $fn_logtarget = 'SYSLOG',
String $fn_syslogsocket = 'auto',
String $fn_socket = '/var/run/fail2ban/fail2ban.sock',
String $fn_pidfile = '/var/run/fail2ban/fail2ban.pid',
String $fn_dbfile = '/var/lib/fail2ban/fail2ban.sqlite3',
String $fn_dbpurgeage = '86400',
2017-08-03 13:07:42 +01:00
2017-08-03 17:25:10 +01:00
# jail.conf/local
2026-03-11 12:17:01 +01:00
String $fn_ignoreip = '127.0.0.1/8',
2026-03-11 12:26:37 +01:00
Optional[String] $fn_ignorecommand = undef,
2026-03-11 12:17:01 +01:00
String $fn_bantime = '600',
String $fn_findtime = '600',
String $fn_maxretry = '5',
String $fn_backend = 'auto',
String $fn_usedns = 'warn',
String $fn_logencoding = 'auto',
Boolean $fn_enabled = false,
String $fn_filter = '%(__name__)s',
String $fn_destemail = 'root@localhost',
String $fn_mta = 'sendmail',
String $fn_protocol = 'tcp',
String $fn_chain = 'INPUT',
String $fn_port = '0:65535',
String $fn_fail2ban_agent = 'Fail2Ban/%(fail2ban_version)s',
String $fn_banaction = 'iptables-multiport',
String $fn_banaction_allports = 'iptables-allports',
String $fn_action_ = '%(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]',
String $fn_action_mw = '%(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
2017-08-06 16:07:51 +01:00
%(mta)s-whois[name=%(__name__)s, sender="%(sender)s", dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s"]',
2026-03-11 12:26:37 +01:00
String $fn_action_mwl = '%(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
2017-08-06 16:07:51 +01:00
%(mta)s-whois-lines[name=%(__name__)s, sender="%(sender)s", dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s"]',
2026-03-11 12:17:01 +01:00
String $fn_action_xarf = '%(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
2017-08-06 16:07:51 +01:00
xarf-login-attack[service=%(__name__)s, sender="%(sender)s", logpath=%(logpath)s, port="%(port)s"]',
2026-03-11 12:17:01 +01:00
String $fn_action_cf_mwl = 'cloudflare[cfuser="%(cfemail)s", cftoken="%(cfapikey)s"]
2017-08-06 16:07:51 +01:00
%(mta)s-whois-lines[name=%(__name__)s, sender="%(sender)s", dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s"]',
2026-03-11 12:17:01 +01:00
String $fn_action_blocklist_de = 'blocklist_de[email="%(sender)s", service=%(filter)s, apikey="%(blocklist_de_apikey)s", agent="%(fail2ban_agent)s"]',
String $fn_action_badips = 'badips.py[category="%(__name__)s", banaction="%(banaction)s", agent="%(fail2ban_agent)s"]',
String $fn_action_badips_report = 'badips[category="%(__name__)s", agent="%(fail2ban_agent)s"]',
String $fn_default_action = 'action_',
String $fn_jail_paths = 'fedora',
2017-08-13 15:15:43 +01:00
2026-03-11 14:27:05 +01:00
# nagios
Boolean $fn_incl_target = false,
String $fn_target_service = '/etc/nagios/conf.d/fail2ban_service.cfg',
String $fn_target_contacts = 'nagiosadmin',
2026-03-12 12:33:00 +01:00
String $fn_procs_allowed = '1:1',
2026-03-11 14:27:05 +01:00
2017-08-03 12:01:32 +01:00
) {
2017-08-03 17:25:10 +01:00
# shortcuts
2025-03-02 23:30:48 +01:00
$fqdn = $facts['networking']['fqdn']
$fn_os = $facts['os']
2025-03-02 23:43:51 +01:00
$fn_sender = "fail2ban@${fqdn}"
2017-08-03 14:01:25 +01:00
2017-08-03 13:07:42 +01:00
# service
2025-03-02 23:30:48 +01:00
$fn_service = 'fail2ban'
2017-08-03 14:01:25 +01:00
# directories
2025-03-02 23:30:48 +01:00
$fn_main_dir = '/etc/fail2ban'
$fn_action_d_dir = "${fn_main_dir}/action.d"
$fn_fail2ban_d_dir = "${fn_main_dir}/fail2ban.d"
$fn_filter_d_dir = "${fn_main_dir}/filter.d"
$fn_jail_d_dir = "${fn_main_dir}/jail.d"
$fn_var_lib_dir = '/var/lib/fail2ban'
$fn_var_run_dir = '/var/run/fail2ban'
2017-08-03 14:01:25 +01:00
# files
2025-03-02 23:30:48 +01:00
$fn_fail2ban_conf_file = "${fn_main_dir}/fail2ban.conf"
2026-03-11 12:12:23 +01:00
$fn_fail2ban_conf_erb = 'confdroid_fail2ban/fail2ban_conf.erb'
2025-03-02 23:30:48 +01:00
$fn_fail2ban_local_file = "${fn_main_dir}/fail2ban.local"
2026-03-11 12:12:23 +01:00
$fn_fail2ban_local_erb = 'confdroid_fail2ban/fail2ban_local.erb'
2025-03-02 23:30:48 +01:00
$fn_jail_conf_file = "${fn_main_dir}/jail.conf"
2026-03-11 12:12:23 +01:00
$fn_jail_conf_erb = 'confdroid_fail2ban/jail_conf.erb'
2025-03-02 23:30:48 +01:00
$fn_jail_local_file = "${fn_main_dir}/jail.local"
2026-03-11 12:12:23 +01:00
$fn_jail_local_erb = 'confdroid_fail2ban/jail_local.erb'
2025-03-02 23:30:48 +01:00
$fn_paths_common_file = "${fn_main_dir}/paths-common.conf"
2026-03-11 12:12:23 +01:00
$fn_paths_common_erb = 'confdroid_fail2ban/paths_common_conf.erb'
2017-08-03 13:07:42 +01:00
2017-08-03 12:01:32 +01:00
# includes must be last
2026-03-11 12:12:23 +01:00
include confdroid_fail2ban::main::config
2017-08-03 12:01:32 +01:00
}