Bagaimana saya membuat detik mengabaikan cap waktu dengan benar

13

Saya memiliki aturan yang diatur seperti itu;

Di /etc/sec/rules.d saya punya;

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" [email protected]
window=300

Jadi jika ini datang melalui syslog;

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

Itu harus cocok dengan ini (yang, menurut editor regex saya) sesuai dengan pola;

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

Kami mengalami masalah dengan spam karena stempel waktu berubah. Jadi saya menulis ulang pola untuk mencocokkan semuanya setelah nama host.

Namun, ini sepertinya tidak berfungsi dan setiap kali pengguna "otentikasi gagal", saya masih mendapatkan email.

Saya telah menggunakan yang berikut untuk menguji;

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

Ada ide? Saya mungkin hanya salah paham sec. Ini adalah pertama kalinya saya bekerja dengannya! Bantuan apa pun akan sangat dihargai. Terima kasih!

Etabelle
sumber

Jawaban:

11

Ya, setelah hampir seharian mencabut rambut, akhirnya saya mengerti a) bagaimana melakukannya dan b) kesalahpahaman yang saya miliki tentang detik.

Dalam membaca halaman manual detik dan itu menggambarkan desc = sebagai dasarnya menunjukkan kecocokan. Jadi dalam pikiran saya, itu berarti harus menunjukkan apa pun yang cocok dengan polanya. Ya, itu benar, dalam hal ini kecocokan dalam pola itu adalah; nama host, rhost, dan pengguna.

Jadi ketika saya sedang melakukan desc = Kegagalan Login: $ 0, saya menutup seluruh baris. Itu buruk.

Jadi alih-alih saya mengubahnya untuk menghapus nama pengguna dan nama host, yang kemudian menyebabkannya mematuhi aturan window = 300 karena stempel waktu (seluruh baris) tidak berubah; alias, jadwal berikut;

/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 protected]
window=300

Baris Kesalahan

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

Ia akan memperhatikan pengguna [email protected] dan tidak akan melaporkannya kecuali terjadi lagi setelah 300 detik, karena itu mematikan [email protected].

Saya sudah mengujinya beberapa kali sekarang.

Etabelle
sumber
1
Kerja bagus untuk itu.
Magellan
4
Dengar sini. +1 dari saya baik untuk pertanyaan yang sangat baik, ditulis dengan baik, penelitian baik dan cakupan, dan untuk kembali dan memposting jawaban detail setelah Anda memiliki pencerahan yang dibutuhkan! Terima kasih.
MadHatter