Преобразовать строку журнала в регулярное выражение для fail2ban - PullRequest
0 голосов
/ 02 октября 2019

У меня возникают проблемы при преобразовании строки журнала, связанной с взаимодействием VNC-сервера и клиента, чтобы я мог запретить определенные IP-адреса с использованием fail2ban.

Проблемная строка в журналах VNCвыглядит следующим образом:

** (vino-server:28986): WARNING **: 01:02:54.300: VNC authentication failure from '888.88.9.999.dynamic.whatever.net'

Это именно та строка, которую мне нужно сопоставить (со всеми круглыми скобками, звездочками ...), с явным указанием fail2ban следующей команды, где хостis.

ЧТО Я ПОПРОБОВАЛ ТАК ДАЛЬШЕ:

Команда для проверки: fail2ban-regex "log line" "failregex"


fail2ban-regex "00:19:51.297: VNC authentication failure from 'server-185-153-197-251.cloudedic.net'" "VNC authentication failure from '<HOST>'"

Работает;но строка строки журнала не совпадает со строкой журнала.

При использовании точной строки журнала постоянно происходит сбой:

fail2ban-regex "** (vino-server:11241): WARNING **: 00:19:51.297: VNC authentication failure from 'server-185-153-197-251.cloudedic.net'" "authentication failure from '<HOST>'"
  • Это как-то связаноне понимая, как следует поместить выражение failregex?

  • Это связано с наличием специальных символов в файле журнала?

  • Этолюбая ошибка, которую я сделал со строками?

Если бы вы могли помочь мне двигаться в правильном направлении, я бы так сильно оценил его, чтобы я мог понять больше о регулярных выраженияхи быть в состоянии защитить системы.

1 Ответ

1 голос
/ 11 октября 2019

Это не имеет ничего общего с регулярным выражением, более того, это fail2ban - чтобы избежать путаницы с ожидаемыми данными, некоторые из его datepattern по умолчанию "привязаны" к началу строки (особенно простое время, как ваш формат), так что вычтобы указать свой datepattern для этого.

Это должно работать для вас:

msg="** (vino-server:11241): WARNING **: 00:19:51.297: VNC authentication failure from 'server-185-153-197-251.cloudedic.net'"
fail2ban-regex -d '\s%H:%M:%S\.%f:' "$msg" "authentication failure from '<HOST>'"

Обратите внимание, что fail2ban будет вырезать часть сообщения, совпадающую с datepattern перед поиском failregexбудет запущен, поэтому якорь failregex для вашего отрывка журнала выглядит следующим образом:

fail2ban-regex -d '\s%H:%M:%S\.%f:' "$msg" "^\*\* \(\S+\): WARNING \*\*: VNC authentication failure from '<HOST>'"

Также обратите внимание, что в файлах конфигурации fail2ban вы должны указывать % -char, используя %%, поэтомувыглядело бы так:

datepattern = \s%%H:%%M:%%S\.%%f:
...