如何在 fail2ban 中使用所谓的动作变量?

如何在 fail2ban 中使用所谓的动作变量?

我在文档和其他脚本中看到过一些关于这些内容的提及,但没有具体说明它们的具体用法。有人能给我举几个例子吗?

这仅仅是一个案例

myvar=7
.
.
.
[ssh]
bantime=%(myvar)s

如果是这样那有什么意义呢?

其次,如何使用 jail.conf 中的“操作快捷方式”?例如action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"],有关于此的文档吗?

答案1

如果您查看随附的规则,fail2ban您会注意到他们使用这些变量使事情变得更简洁、更参数化。例如,在随附的规则中,jail.conf他们使用它们来制定通用操作规则,然后在定义各种监狱时使用这些规则。

例子

这里顶部是一些基本变量。

# Destination email address used solely for the interpolations in
# jail.{conf,local,d/*} configuration files.
destemail = root@localhost

# Sender email address used solely for some actions
sender = root@localhost

# Default protocol
protocol = tcp

# Ports to be banned
# Usually should be overridden in a particular jail
port = 0:65535

然后这些变量被用在其他变量中来构建一些基本动作。

# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overridden globally or per
# section within jail.local file
banaction = iptables-multiport

# The simplest action to take: ban only
action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]

# ban & send an e-mail with whois report to the destemail.
action_mw = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
            %(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s"]

请注意,他们正在构建一个名为的通用操作,action_该操作使用其他变量(例如%(banaction)s,,,%(port)s`%(协议)等)制作。

man jail.conf手册页中:

使用 Python“字符串插值”机制,允许其他定义,并且稍后可以在其他定义中以 %(name)s 的形式使用。例如。

         baduseragents = IE|wget
         failregex = useragent=%(baduseragents)s

因此,它们%(...)s是 Python 语言的一部分。如果你搜索它们,你最终会找到 Python 语言规范中的这个页面,特别是标题为:5.6.2. 字符串格式化操作。此页上有一个例子:

>>> print '%(language)s has %(number)03d quote types.' % \
...       {"language": "Python", "number": 2}
Python has 002 quote types.

在 Python 中,称为%(...string...)s字符串格式化或插值运算符。s末尾的%(...string...)是一个标志,指定传递给它的任何 Python 对象都会转换为字符串。从我引用的链接中,有一个包含所有允许使用的标志的表格:

  1号

指定%说明符的开始位置,以及(...string...)我们希望在此处扩展的 Python 变量。

相关内容