Как использовать так называемые переменные действия в fail2ban?

Я видел несколько упоминаний о них в документах и misc сценариях, но ничто конкретное на точно, как они используются. Кто-либо мог дать мне некоторые примеры?

Это - просто случай

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

Раз так какой смысл?

Во-вторых, как я использую "Ярлыки действия" в jail.conf? например. action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"], какие-либо документы об этом?

5
задан 11 April 2014 в 23:52
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 , `% (protocol) s и т.д.

Из man jail.conf man страница:

Использование механизмов "интерполяции строк" 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 ...) s в Python называется оператором форматирования или интерполяции строки. s в конце % (... string ...) - это флаг, указывающий, что любые объекты Python, которые могут быть переданы ему, преобразуются в строки. Из ссылки, на которую я ссылался, есть таблица со всеми разрешенными флагами:

ss#1

% указывает, где вы хотите, чтобы спецификатор начинался, а (... строка ...) - это переменная Python, которую мы хотим здесь расширить. .

6
ответ дан 3 December 2019 в 01:31

Теги

Похожие вопросы