Как заставить sec игнорировать метку времени должным образом

13

У меня есть правило, которое настроено так;

В /etc/sec/rules.d у меня есть;

type=SingleWithSuppress
ptype=regexp
pattern=(\S+) sshd\[\d+\]: PAM \d+ more authentication failures\; logname=.* uid=.* euid=.* tty=ssh ruser=.* rhost=(.*) user=(.*)
desc=Login Failure: $0
action=pipe '%s ' /bin/mail -s "login failure $2 to $3@$1" team@team.com
window=300

Так что, если это произошло через системный журнал;

Nov 21 11:24:10 servername.server.com sshd[26846]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost= user=kloggins

Это должно соответствовать этому (что, согласно моему редактору регулярных выражений) согласно шаблону;

servername.server.com sshd[26846]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost= user=kloggins

У нас была проблема со спамом, потому что метка времени менялась. Поэтому я переписал шаблон, чтобы соответствовать всему после имени хоста.

Однако, похоже, что это не работает, и каждый раз, когда пользователь «не проходит аутентификацию», я все равно получаю электронное письмо.

Я использовал следующее, чтобы проверить;

logger -p syslog.err 'sshd[26846]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost= user='

Есть идеи? Я мог бы просто неправильно понять с. Это первый раз, когда я работаю с этим! Любая помощь будет принята с благодарностью. Благодарность!

Ethabelle
источник

Ответы:

11

Ну, после почти дня стягивания волос, я наконец понимаю, а) как это сделать и б) неправильное представление о с.

При чтении справочной страницы sec, она описывает desc = как показывающую совпадение. Так что, на мой взгляд, это означало, что это должно показать все, что соответствует шаблону. Ну, да, это правда, в этом случае соответствие в этом шаблоне является; имя хоста, хост и пользователь.

Поэтому, когда я делаю desc = Ошибка входа в систему: $ 0, я отключаю всю строку. Плохо.

Поэтому вместо этого я изменил его, чтобы отключить имя пользователя и имя хоста, что затем заставляет его придерживаться правила window = 300, поскольку метка времени (вся строка) не меняется; ака, следующее краткое изложение;

/etc/sec/rules.d/ssh.sec

type=SingleWithSuppress
ptype=regexp
pattern=(\S+) sshd\[\d+\]: PAM \d+ more authentication failures\; logname=.* uid=.* euid=.* tty=ssh ruser=.* rhost=(.*) user=(.*)
desc=Login Failure: $3@$1
action=pipe '%s $0' /bin/mail -s "Login Failure: $3@$1" email@email.com
window=300

Строка ошибки

Nov 21 01:58:10 test.test.com sshd[26846]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=test.test.com user=kloggins

Он заметит пользователя kloggins@test.test.com и не сообщит об этом, если это не произойдет снова через 300 секунд, поскольку он отключил kloggins@test.test.com.

Я проверил это несколько раз, теперь это 'werkin.

Ethabelle
источник
1
Хорошая работа над этим.
Магеллан
4
Слушай, здесь. +1 от меня как за отличный, хорошо написанный, хорошо проработанный и содержательный вопрос, так и за то, что я вернулся и опубликовал подробный ответ после того, как у вас было необходимое прозрение! Спасибо.
Безумный Шут