fail2ban
: Manage fail2ban and its configuration to jam bruteforce attempts on services running on a computer.
fail2ban::config
: Configure fail2ban servicefail2ban::install
: Install fail2banfail2ban::service
: Enable fail2ban daemon
fail2ban::action
: Create an action for fail2banfail2ban::filter
: Setup a filter for fail2banfail2ban::jail
: Setup a fail2ban jail to reduce effectiveness of bruteforce.
Fail2ban::AutoOrFlag
: A boolean flag that can also be set to the string 'auto'.Fail2ban::Backend
: Backend names that fail2ban understands Can be one of the pre-defined backend names, "systemd" with optionally a list of parameters between sFail2ban::Bantime_extra
: Optional additional bantime.* options. See manifests/init.pp for details about what each option means.Fail2ban::Dbfile
: Where fail2ban's database gets stored. None disables storageFail2ban::Loglevel
: How much logging is needed from fail2banFail2ban::Logtarget
: Where logs are sentFail2ban::Port
: Possible values for the port parameter ports can be specified by number, but you can also pass in a comma-separated list of values in a strinFail2ban::Protocol
: Options for protocol type This is used by the default action iptables-multiport to defined what protocol to ban for the specified ports.Fail2ban::Syslogsocket
: Path to a socket for communication with syslog, or 'auto' for letting fail2ban auto-discover the path.Fail2ban::Time
: Time in seconds for some configuration options can be specified either in an integer number of seconds, or an abbreviation that can help specFail2ban::Usedns
: Possible values for usedns parameter
fail2ban/manifests/init.pp
- Copyright (C) 2007 [email protected]
- Copyright (C) 2014-2018 [email protected]
-
Note
blocktype
is not offered as a global option since it's not a great idea to set a globally used default value for this option. It's used differently by all actions and different values are expected from each action, so it's generally recommended to override this for each action individually by creating a.local
file inactions.d
. -
See also
class { 'fail2ban: }
class { 'fail2ban':
ignoreip => ['127.0.0.1', '10.0.0.1'],
}
The following parameters are available in the fail2ban
class:
rm_fail2ban_local
rm_jail_local
purge_fail2ban_dot_d
purge_jail_dot_d
config_file_mode
manage_service
fail2ban_conf_template
loglvl
logtarget
syslogsocket
socket
pidfile
allowipv6
dbfile
dbpurgeage
dbmaxmatches
stacksize
jail_conf_template
enabled
mode
backend
usedns
filter
logpath
logencoding
logtimezone
datepattern
prefregex
failregex
ignoreregex
ignoreself
ignoreip
ignorecommand
ignorecache
maxretry
maxlines
maxmatches
findtime
action
bantime
bantime_extra
banaction
banaction_allports
chain
port
protocol
mta
destemail
sender
fail2ban_agent
Data type: Boolean
Force removal of file /etc/fail2ban/fail2ban.local if present.
Default value: true
Data type: Boolean
Force removal of file /etc/fail2ban/jail.local if present.
Default value: true
Data type: Boolean
Remove all unmanaged files in /etc/fail2ban/fail2ban.d/
Default value: true
Data type: Boolean
Remove all unmanaged files in /etc/fail2ban/jail.d/
Default value: true
Data type: Stdlib::Filemode
File mode set on all fail2ban configuration files managed by this module.
Default value: '0644'
Data type: Boolean
Manage the fail2ban service, true by default
Default value: true
Data type: String[1]
Alternative template to use for the fail2ban.conf
file.
Default value: 'fail2ban/fail2ban.conf.epp'
Data type: Fail2ban::Loglevel
Set fail2ban's loglevel.
Default value: 'INFO'
Data type: Fail2ban::Logtarget
Define where fail2ban's logs are sent.
Default value: '/var/log/fail2ban.log'
Data type: Fail2ban::Syslogsocket
Path to syslog's socket file, or "auto" for automatically discovering it.
Default value: 'auto'
Data type: Stdlib::Absolutepath
Path to fail2ban's own socket file. This file is used by fail2ban-client to communicate with the daemon.
Default value: '/var/run/fail2ban/fail2ban.sock'
Data type: Stdlib::Absolutepath
Path to fail2ban's pid file. This usually needs to be in a place where the init script or systemd unit file can find it.
Default value: '/var/run/fail2ban/fail2ban.pid'
Data type: Fail2ban::AutoOrFlag
Whether or not fail2ban interfaces with IPv6 stack on the system. Defaults
to auto
. Set to boolean true or false to force allowing or disallowing,
respectively.
Default value: 'auto'
Data type: Fail2ban::Dbfile
Path to fail2ban's database file.
Default value: '/var/lib/fail2ban/fail2ban.sqlite3'
Data type: Integer
Age of entries in fail2ban's database that get removed when performing a database purge operation.
Default value: 86400
Data type: Integer
Number of matches stored in database per ticket.
Default value: 10
Data type: Variant[Integer[0,0], Integer[32]]
Specifies the stack size (in KiB) to be used for subsequently created threads, and must be 0 or a positive integer value of at least 32. 0 means that fail2ban will use platform or configured default.
Default value: 0
Data type: String[1]
Alternative template to use for the jail.conf
file.
Default value: 'fail2ban/debian/jail.conf.epp'
Data type: Boolean
Whether or not to enable jails by default. fail2ban's man page recommends to keep this to false, but by default the module purges jail.d of unknown files so it might be safe to set to true in order to avoid repeating this setting on all jails. If you set purge_jail_dot_d to false, it might be wiser to keep this to false in order to avoid enabling jails that get dropped in jail.d.
Default value: false
Data type: String
Change the default behavior for filters. Watch out however, each individual filter can define its own value and so most values are not guaranteed to be available with all filters. The mode will generally determine which regular expressions the filter will include. To know exactly which values are available in filters, you need to read their configuration files.
Default value: 'normal'
Data type: Fail2ban::Backend
Default method used to get information from logs.
Default value: 'auto'
Data type: Fail2ban::Usedns
Default behaviour whether or not to resolve IPs when they are found in a log by a filter.
Default value: 'warn'
Data type: String
Default name of filter to use for jails.
Default value: '%(__name__)s[mode=%(mode)s]'
Data type: Array[String]
Array of absolute paths specifying the default path(s) to log file(s) being used by jails. This value is usually not set and logpath is defined for each jail for more clarity.
Default value: []
Data type: String
Name of the encoding of log files. If set to "auto", fail2ban will use what is set in the system's locale setting.
Default value: 'auto'
Data type: Optional[String]
Force a timezone by default for logs that don't specify them on timestamps.
Default value: undef
Data type: Optional[String]
Change the default format of recognized dates. Warning: it is generally not recommended to change the global value, if at all. If you need to change the datepattern for some reason, it is usually recommended to set this paramter at filter level.
Default value: undef
Data type: Optional[String]
Regular expression to parse common part in every message.
Default value: undef
Data type: Optional[Variant[String, Array[String[1]]]]
Array of regular expressions to add to all filters' failregex. This is usually not used at the global level, but it can still be set.
Default value: undef
Data type: Optional[Variant[String, Array[String[1]]]]
Array of regular expressions to add to all filters' ignoreregex. This is usually not used at the global level, but could be useful to have something excluded from bans everywhere.
Default value: undef
Data type: Boolean
If set to false, fail2ban will not ignore IP addresses that are bound to interfaces on the host.
Default value: true
Data type: Array[String, 0]
Default list of IPs or CIDR prefixes that should not get banned.
Default value: ['127.0.0.1']
Data type: Optional[String]
Default command used to determine if an IP should be exempted from being banned.
Default value: undef
Data type: Optional[String]
If set, caches the results from ignoreip
, ignoreself
and
ignorecommand
for a set amount of time to avoid calling ignorecommand
repeatedly.
Default value: undef
Data type: Integer[1]
Default number of times an IP should be detectd by a filter during findtime for it to get banned.
Default value: 3
Data type: Optional[Integer[1]]
Default number of lines to buffer for regex search. Used for multi-line regexes. Note that it is rather unsual to set a default global value for this, and it is usually rather set on a filter itself.
Default value: undef
Data type: Variant[Integer[1], String]
Number of matches stored in ticket.
Default value: '%(maxretry)s'
Data type: Fail2ban::Time
Default interval during which to count occurences of an IP.
Default value: '10m'
Data type: Variant[String, Array[String, 1]]
List of default actions that get called when an IP triggers maxretry number of times a filter within findtime.
Default value: ['%(action_)s']
Data type: Fail2ban::Time
Default duration in number of seconds to ban an IP address for.
Default value: '10m'
Data type: Optional[Fail2ban::Bantime_extra]
Set of additional optional settings relating to bantime. The keys in this
structure are set in the configuration file as bantime.$key
. The
different possible keys are:
- increment: boolean. set to true to make IP search happen across all jails instead of only the one being processed.
- maxtime: string. maximum number of seconds that the formula (see below) can reach.
- rndtime: string. upper bounds in seconds for ban time randomization (to prevent bots from guessing the exact ban time)
- formula: string. python mathematical expression used for calculating
next value of ban time. The values provided by the formula are
multiplied by
bantime
and by the factor exponent coefficient to give the actual amount of time that an IP gets banned. - factor: sting. coefficient to calculate exponent growing of the ban times. The default value is 1, thus the bantime grows by 1, 2, 4, 8, 16...
- multipliers: string. if set, used to calculate the next ban times instead of the formula. numbers are used sequentially until the last one is reached, at which point the same value will be used for all subsequent bantimes.
- overalljails: boolean. if set to true, search for IP in the database will be done across all jails instead of only the currently processed jail.
Default value: undef
Data type: String
Default action name extrapolated when defining some of the default actions.
Default value: 'iptables-multiport'
Data type: String
Default action name that can be extrapolated when defining some of the default actions. This one is meant to ban all ports at once instead of specific ones.
Default value: 'iptables-allports'
Data type: String
Default name of the iptables chain used by iptables-based actions.
Default value: 'INPUT'
Data type: Fail2ban::Port
Default comma separated list of ports, port names or port ranges used by actions when banning an IP.
Default value: '0:65535'
Data type: Fail2ban::Protocol
Default protocol name used by actions.
Default value: 'tcp'
Data type: String
Default program name used for sending out email by actions that do so.
Default value: 'sendmail'
Data type: String
Default email address used as recipient by actions that send out emails.
Default value: 'root@localhost'
Data type: String
Default email address set as sender by actions that send out emails.
Default value: 'root@localhost'
Data type: String
User-agent sent on HTTP requests that are made by some actions.
Default value: 'Fail2Ban/%(fail2ban_version)s'
fail2ban/manifests/action.pp
- Copyright (C) 2014-2019 [email protected]
Actions define what fail2ban should do when if finds mischief happening in logs. Usually, an action defines commands that should be run during setup/teardown and commands for when a ban or an unban happen. Using action you can make fail2ban whatever you want, from creating an iptables rule to calling out to your edge server API to create a rule there instead.
- See also
- jail.conf(5)
fail2ban::action { 'rest_api':
ensure => present,
actionban => ['curl -s -X PUT http://yourapi:8080/theapi/v4/firewall/rules -H "Content-Type:application/json" -H "Authorization: ..." -d "{\"ban\": \"<ip>\"}"'],
actionunban => ['curl -s -X DELETE http://yourapi:8080/theapi/v4/firewall/rules/1 -H "Authorization: ..."'],
}
The following parameters are available in the fail2ban::action
defined type:
ensure
config_file_mode
timeout
init
includes
includes_after
additional_defs
actionban
actionunban
actioncheck
actionstart
actionstop
Data type: Enum['present', 'absent']
Whether the resources should be installed or removed.
Default value: 'present'
Data type: String
Permission mode given to the filter file created by this defined type.
Default value: '0644'
Data type: Optional[Integer[1]]
Special tag in the Init section that, if present, defines the maximum period of time in seconds that an action command can be executed before being killed.
Default value: undef
Data type: Array[String]
List of arbitrary lines that will be a part of the [Init] section. All tags (variables) defined in this section can be overridden by any individual jail to change the action's behaviour.
Default value: []
Data type: Array[String]
List of files to include before considering the rest of the action definition. These files can declare variables used by the action to set default or common behaviours.
Default value: []
Data type: Array[String]
List of files to include after action definition.
Default value: []
Data type: Array[String]
List of arbitrary lines that should appear at the begining of the action's definition section, for anything that didn't fit in other parameters. Each item in the list is output on its own line in the action file. No syntax checking is done.
Default value: []
Data type: Array[String[1], 1]
List of commands that are executed when fail2ban has found too many matches for a given IP address.
Data type: Array[String[1], 1]
List of commands that are executed after bantime
has elapsed.
Data type: Array[String[1]]
List of commands that are run by fail2ban before any other action to verify that the environment (or setup) is still in good shape.
Default value: []
Data type: Array[String[1]]
List of commands that are executed when the jail is started.
Default value: []
Data type: Array[String[1]]
List of commands that are executed when the jail is stopped.
Default value: []
fail2ban/manifests/filter.pp
- Copyright (C) 2014-2018 [email protected]
Filters are how fail2ban detects mischief in logs. They contain regular expressions that should catch bad activity and identify the IP that is doing this activity.
- See also
fail2ban::filter { 'jenkins':
failregexes => [
# Those regexes are really arbitrary examples.
'Invalid login to Jenkins by user mooh by IP \'<HOST>\'',
'Forced entry trial by <HOST>',
],
}
The following parameters are available in the fail2ban::filter
defined type:
filter_template
failregexes
ensure
config_file_mode
init
includes
includes_after
additional_defs
prefregex
ignoreregexes
maxlines
datepattern
journalmatch
Data type: String[1]
Path to the epp template given to the epp() function in order to render the filter file.
Default value: 'fail2ban/filter.epp'
Data type: Array[String, 1]
List of regular expressions that will be run against new log lines as they reach fail2ban. The regular expressions follow the Python regular expression format, and there are some special patterns that fail2ban can use. See the jail.conf(5) man page for more details. Each item in the list is placed on its own line. Lines starting with the second one are prepended with spaces so that the regular expressions line up with the beginning of the first one.
Data type: Enum['present', 'absent']
Whether the resources should be installed or removed.
Default value: 'present'
Data type: String
Permission mode given to the filter file created by this defined type.
Default value: '0644'
Data type: Array[String]
List of arbitrary lines that should appear in the optional filter Init section. Variable definitions in the Init section can be overridden by users in *.local files. Each item in the list is output on its own line in the filter file. No syntax checking is done.
Default value: []
Data type: Array[String, 0]
List of files to include before considering the rest of the filter definition. These files can declare variables used by the filter to set default behaviours.
Default value: []
Data type: Array[String, 0]
List of files to include after filter definition.
Default value: []
Data type: Array[String, 0]
List of arbitrary lines that should appear at the begining of the filter's definition section, for anything that didn't fit in other parameters. Each item in the list is output on its own line in the filter file. No syntax checking is done.
Default value: []
Data type: Optional[String]
If this is set, it contains a regular expression that should be used to parse (after datepattern found a match) a common part to all messages that can then match a smaller failregex or ignoreregex. If this regex does not match, then failregex or ignoreregex are not even tried.
Default value: undef
Data type: Array[String, 0]
List of Python regular expressions that should prevent a log line from being considered for banning. If a line matches regular expressions contained in this parameter, they are ignored even though they would have matched a failregex. Each item in the list is placed on its own line. Lines starting with the second one are prepended with spaces so that the regular expressions line up with the beginning of the first one.
Default value: []
Data type: Optional[Integer[1]]
Maximum number of lines that fail2ban should buffer for matching multi-line regexes.
Default value: undef
Data type: Optional[String]
Custom date pattern/regex for the log file. This is useful if dates use a non-standard formatting.
Default value: undef
Data type: Optional[String]
If the log backend is set to systemd, this specifies a matching pattern to filter journal entries.
Default value: undef
fail2ban/manifests/jail.pp
- Copyright (C) 2014-2018 [email protected]
Jails are the top level of fail2ban configuration; what you'll be using most often to setup protection of a service from bruteforce attempts or pesky attack traffic. They rely on a filter to find out IPs that are doing mischief, and then use an action to ban (and subsequently unban) IPs.
Most parameters of this defined type are used for overriding what has been set in the global context in jail.conf/jail.local (see parameters to the fail2ban class). They are not mandatory if you can reuse the global values.
- See also
fail2ban::jail { 'honeypot':
findtime => 300,
maxretry => 1,
port => 'all',
logpath => ['/var/log/honeypot.log'],
}
$ssh_params = lookup('fail2ban::jail::sshd')
fail2ban::jail { 'sshd':
* => $ssh_params,
}
$ssh_extra_params = {
'bantime' => 300,
'findtime' => 200,
'maxretry' => 3,
}
$ssh_params = lookup('fail2ban::jail::sshd') + $ssh_extra_params
fail2ban::jail { 'sshd':
* => $ssh_params,
}
The following parameters are available in the fail2ban::jail
defined type:
ensure
config_file_mode
enabled
mode
backend
usedns
filter
logpath
logencoding
logtimezone
datepattern
prefregex
failregex
ignoreregex
ignoreself
ignoreip
ignorecommand
ignorecache
maxretry
maxlines
maxmatches
findtime
action
bantime
bantime_extra
banaction
banaction_allports
chain
port
protocol
mta
destemail
sender
fail2ban_agent
additional_options
Data type: Enum['present','absent']
Whether resources for the defined jail should be installed or removed.
Default value: 'present'
Data type: String
Permission mode given to the jail file created by this defined type.
Default value: '0644'
Data type: Boolean
Whether or not a jail is enabled. Setting this to false makes it possible to keep configuration around for a certain jail but temporarily disable it.
Default value: true
Data type: Optional[String]
Change the behavior of the filter used by this jail. The mode will generally determine which regular expressions the filter will include. The values that this can take are determined by each individual filter. To know exactly which values are available in filters, you need to read their configuration files.
Default value: undef
Data type: Optional[Fail2ban::Backend]
Method used by fail2ban to obtain new log lines from the log file(s) in logpath.
Default value: undef
Data type: Optional[Fail2ban::Usedns]
Whether or not to resolve DNS hostname of IPs that have been found by a failregex.
Default value: undef
Data type: Optional[String]
Name of the filter to use for this jail. The default value for the filter is usually to use a filter with the same name as the jail name (although this could be changed by the filter parameter on the fail2ban class).
Default value: undef
Data type: Array[String]
Array of absolute paths to the log files against which regular expressions should be verified to catch activity that you want to block. This parameter must be set to a non-empty array when not using the 'systemd' backend, however it must be empty if the 'systemd' backend is used.
Default value: []
Data type: Optional[String]
Name of the encoding of log files. If set to "auto", fail2ban will use what is set in the system's locale setting.
Default value: undef
Data type: Optional[String]
Force a timezone if the logs don't specify them on timestamps.
Default value: undef
Data type: Optional[String]
Change the format of dates recognized by the filter this jail uses.
Default value: undef
Data type: Optional[String[1]]
Regular expression to parse common part in every message for this jail.
Default value: undef
Data type: Optional[Array[String[1]]]
Regular expressions to add to the failregex of the filter used by this jail.
Default value: undef
Data type: Optional[Array[String[1]]]
Regular expressions to add to the ignoreregex of the filter used by this jail.
Default value: undef
Data type: Optional[Boolean]
If set to false, fail2ban will not ignore IP addresses, for this jail, that are bound to interfaces on the host.
Default value: undef
Data type: Optional[Array[String, 1]]
List of IPs or CIDR prefixes to ignore when identifying matches of failregex. The IPs that fit the descriptions in this parameter will never get banned by the jail.
Default value: undef
Data type: Optional[String]
Command used to determine if an IP should found by a failregex be ignored. This can be used to have a more complex and dynamic method of listing and identifying IPs that should not get banned. It can be used also when ignoreip is present.
Default value: undef
Data type: Optional[String]
If set, caches the results from ignoreip
, ignoreself
and
ignorecommand
for a set amount of time to avoid calling ignorecommand
repeatedly.
Default value: undef
Data type: Optional[Integer[1]]
Number of failregex matches during findtime after which an IP gets banned.
Default value: undef
Data type: Optional[Integer[1]]
Number of lines to buffer for filter's regex search when looking for multi-line regex matches.
Default value: undef
Data type: Optional[Variant[Integer[1], String]]
Number of matches stored in ticket.
Default value: undef
Data type: Optional[Fail2ban::Time]
Time period in seconds during which maxretry number of matches will get an IP banned.
Default value: undef
Data type: Optional[Variant[String, Array[String, 1]]]
List of actions that should be used to ban and unban IPs when maxretry matches of failregex has happened for an IP during findtime.
Default value: undef
Data type: Optional[Fail2ban::Time]
Time period in seconds for which an IP is banned if maxretry matches of failregex happen for the same IP during findtime.
Default value: undef
Data type: Optional[Fail2ban::Bantime_extra]
Set of additional optional settings relating to bantime. The keys in this
structure are set in the configuration file as bantime.$key
. See the
same parameter in class fail2ban for more details on the possible values.
Default value: undef
Data type: Optional[String]
Name of the action that is extrapolated in default action definitions, or in the action param. This can let you override the action name but keep the default parameters to the action.
Default value: undef
Data type: Optional[String]
Action name that can be extrapolated by some of the default actions. This one is meant to ban all ports at once instead of specific ones. Setting this will change the action for this jail.
Default value: undef
Data type: Optional[String]
Name of the iptables chain used by iptables-based actions.
Default value: undef
Data type: Optional[Fail2ban::Port]
Comma separated list of ports, port ranges or service names (as found in /etc/services) that should get blocked by the ban action.
Default value: undef
Data type: Optional[Fail2ban::Protocol]
Name of the protocol to ban using the action.
Default value: undef
Data type: Optional[String]
Program name used for sending out email by actions that do so.
Default value: undef
Data type: Optional[String]
Email address used as recipient by actions that send out emails. Setting this will override destemail for this jail only.
Default value: undef
Data type: Optional[String]
Email address set as sender by actions that send out emails.
Default value: undef
Data type: Optional[String]
User-agent sent on HTTP requests that are made by some actions.
Default value: undef
Data type: Hash[String, String]
Hash of additional values that should be declared for the jail. Keys represent the jail configuration value names and hash values are placed to the right of the "=". This can be used to declare arbitrary values for filters or actions to use. No syntax checking is done on the contents of this hash. Note that any keys in this hash that correspond to a parameter name for this defined type will get overridden by the value that the defined type's parameter was given (e.g. if there is mode => '0600' in additional_options, the value of mode in the file on disk will not take on the value '0600' since there is a resource parameter that already corresponds to this key name).
Default value: {}
A boolean flag that can also be set to the string 'auto'.
Alias of Variant[Boolean, Enum['auto']]
Backend names that fail2ban understands Can be one of the pre-defined backend names, "systemd" with optionally a list of parameters between square brackets or a python-style variable
Alias of Variant[Enum['auto','pyinotify','gamin','polling'], Pattern[/^systemd(\[.*\]$)?/], Pattern[/%\(\w+\)s/]]
Optional additional bantime.* options. See manifests/init.pp for details about what each option means.
Alias of
Struct[{
Optional[increment] => Boolean,
Optional[factor] => String[1],
Optional[formula] => String[1],
Optional[multipliers] => String[1],
Optional[maxtime] => String[1],
Optional[rndtime] => String[1],
Optional[overalljails] => Boolean,
}]
Where fail2ban's database gets stored. None disables storage
Alias of Variant[Stdlib::Absolutepath, Enum['None']]
How much logging is needed from fail2ban
Alias of Enum['CRITICAL', 'ERROR', 'WARNING', 'NOTICE', 'INFO', 'DEBUG', 'TRACEDEBUG', 'HEAVYDEBUG']
Where logs are sent
Alias of Variant[Stdlib::Absolutepath, Enum['STDOUT', 'STDERR', 'SYSLOG', 'SYSOUT', 'SYSTEMD-JOURNAL']]
Possible values for the port parameter ports can be specified by number, but you can also pass in a comma-separated list of values in a string. The values in the string can be port numbers (integers), a range of port numbers in the format 'number:number', service names (looked up in /etc/services) or 'all' which is translated to '0:65535'
Alias of Variant[Integer, String]
Options for protocol type This is used by the default action iptables-multiport to defined what protocol to ban for the specified ports.
Alias of Enum['tcp', 'udp', 'icmp', 'all']
Path to a socket for communication with syslog, or 'auto' for letting fail2ban auto-discover the path.
Alias of Variant[Stdlib::Absolutepath, Enum['auto']]
Time in seconds for some configuration options can be specified either in an integer number of seconds, or an abbreviation that can help specify some time periods more easily
Time abbreviation can be combined to make a more precise amount. For example 1d3h20m
- See also
Alias of Variant[Integer[1], Pattern[/^(\d+(ye(a(r(s)?)?)?|yy?|mo(n(th(s)?)?)?|we(e(k(s)?)?)?|ww?|da(y(s)?)?|dd?|ho(u(r(s)?)?)?|hh?|mi(n(ute(s)?)?)?|mm?|se(c(ond(s)?)?)?|ss?))+$/]]
Possible values for usedns parameter
Alias of Enum['yes', 'no', 'warn', 'raw']