LINUX.ORG.RU
ФорумAdmin

Fail2ban. Правильные регулярки

 , ,


0

1

Всем привет! Помогите мне написать правильную регулярку для fail2ban. Перепробывал разные варианты, но что-то не хочет работать.

Есть строка:

May 21 07:09:09 site_ru postfix/smtps/smtpd[152745]: warning: hostname 31-14-254-81.infrawat.ch does not resolve to address 31.14.254.81: Name or service not known

Не могу настроить поиск строки по части текста: «does not resolve to address» и «Name or service not known».

поиск строки по части текста: «does not resolve to address» и «Name or service not known»

does not resolve to address.*Name or service not known
firkax ★★★★★
()

Есть еще проблема:

Написал фильтр, но он не работает. Подскажите, что не правильно? Или подправьте мой фильтр. Это строка лога:

May 30 21:21:21 imap-login: Info: Disconnected: Aborted login by logging out (no auth attempts in 0 secs): user=<>, rip=78.108.80.212, lip=111.222.333.444, session=

А это сам фильтр:

^.(?:imap|pop3)-login: Info: Disconnected: Aborted login by logging out (no auth attempts in \d+ secs): user=<>, rip=, lip=.$

Также второй фильтр: Лог:

Jun 02 07:16:23 site postfix/smtps/smtpd[110365]: warning: unknown[41.220.3.101]: SASL PLAIN authentication failed: (reason unavailable), sasl_username=admin @ site.ru

Фильтр:

^.postfix/smtpd[\d+]: warning: unknown []: SASL PLAIN authentication failed: (reason unavailable), sasl_username=$

Также сам jail:

[mail] enabled = true filter = mail journalmatch = _SYSTEMD_UNIT=dovecot.service port = imap,imaps,pop3,pop3s,143,993,110,995 findtime = 10m maxretry = 2 bantime = 1h bantime.increment = true bantime.factor = 2 bantime.maxtime = 12h logpath = /var/log/mail/mail.log action = iptables-allports[name=mail, blocktype=DROP, protocol=all]

Строки в логе появляются, но фильтр не срабатывает (((

P.S. ОС Ubuntu 24.04

Google-moogle
() автор топика

А попробуй свои регулярки проверить на сайте regex101.com.

Также в частности, важно понимать, что «все украдено до нас», например данные регулярки наверное, уже давно распарсены и находятся в Elasticsearch, Filebeat.

Я в свое время сильно упарывался по Postfix и помню как настраивал ElasticSearch как централизованное хранилище логов с множества Postfix серверов. Ну вот точно помню что регулярки уже были готовые. Rsyslog тоже вроде умеют в эти регулярки.

Вот загуглил и нашел такой пайплайн. попробуй регулярку отсюда.

PUT _ingest/pipeline/postfix-parser-pipeline
{
  "description": "Parses standard Postfix maillogs",
  "processors": [
    {
      "grok": {
        "field": "message",
        "patterns": [
          "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} postfix/%{WORD:postfix_component}\\[%{POSINT:postfix_pid}\\]: %{HEX:postfix_queue_id}: client=%{DATA:postfix_client_hostname}\\[%{IP:postfix_client_ip}\\]",
          "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} postfix/%{WORD:postfix_component}\\[%{POSINT:postfix_pid}\\]: %{HEX:postfix_queue_id}: from=<%{DATA:postfix_from}>, size=%{POSINT:postfix_size}, nrcpt=%{POSINT:postfix_recipient_count}",
          "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} postfix/%{WORD:postfix_component}\\[%{POSINT:postfix_pid}\\]: %{HEX:postfix_queue_id}: to=<%{DATA:postfix_to}>, relay=%{DATA:postfix_relay}, delay=%{NUMBER:postfix_delay:float}, delays=%{DATA:postfix_delays}, dsn=%{DATA:postfix_dsn}, status=%{WORD:postfix_status}"
        ],
        "ignore_missing": true
      }
    },
    {
      "date": {
        "field": "syslog_timestamp",
        "formats": ["MMM  d HH:mm:ss", "MMM dd HH:mm:ss"],
        "target_field": "@timestamp"
      }
    }
  ]
}
Nurmukh ★★★★
()
Последнее исправление: Nurmukh (всего исправлений: 1)
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария