fail2banのjail.confファイルにあるこれらの%(…)s文字列は何で、どのように機能しますか?


2

セットアップfail2banでは、上部に次のjail.confような変数のように見えるものがあります。

mytime=300
.
.
.
[ssh]
bantime=%(mytime)s

または、このようなより複雑な形式の場合:

action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"].

ご質問

  • これらはどのように機能し、何が起こっているのでしょうか?
  • 具体的には何との取引%(...string...)sですか?

回答:


3

含まれているルールを見ると、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など、 `%(プロトコル)Sを、

man jail.confmanページから:

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.

%(...string...)sPythonで文字列フォーマットや補間演算子と呼ばれています。のs最後は%(...string...)フラグであり、渡されるPythonオブジェクトが文字列に変換されることを指定します。私が参照したリンクから、すべてのフラグが許可されたテーブルがあります:

  ss#1

%あなたが指定を開始したい、と指定し(...string...)、我々がここに拡大しているしたいのか、Pythonの変数です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.