Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam
Chciałbym wysyłać maile z sysloga po znalezieniu w nim konkretnej frazy ale w ten sposób, żeby linia z loga z frazą była tematem maila.
Obecnie używam swatch ale on jako temat przypisuje albo swój temat, albo z góry przeze mnie nadany w configu. Czy jest możliwość za jego pomocą lub jakiegoś innego narzędzia wysłać maila o temacie - linijka z loga a treść może być pusta.
Offline
Po co maila?
Puszczasz logi w syslogu na kolejkę fifo stworzoną poleceniem np:
mkfifo /dev/syslog
Apotem możesz sobie do dowolnego skrypta z czytywać tą kolejkę, przykład w Perlu:
#!/usr/bin/perl use strict; open(FIFO, "< /dev/syslog") or die ": unable to open /dev/syslog: $!\n"; while (<FIFO>) { print $_; }
Następnie dodajesz dowolne regexy
np tak:
https://forum.dug.net.pl/viewtopic.php?id=22977
A potem moduł NET::SMTP albo lepiej jakiś moduł do XMPP - np AnyEvent:XMPP wysyła wyjście regexa przez maila lub jabbera.
Jakmają tego iść wieksze ilości, to lepiej mieć własny serwer maila i jabbera, bo na innych mogą się ważne rzeczy na limitach zatrzymać.
Po drugiej stronie podobny robot może wiadomości XMPP odbierać i wykonywać z nimi dowolne akcje, jakie Ci do głowy przyjdą.
PS
Tak się przypadkowo składa, że wszystkie znane mi implementacje sysloga w Linuxie potrafią wysyłać logi przez sieć przeważnie używając szyfrowania TLS:
np:
http://www.rsyslog.com/doc/v8-stable/tutorials/tls_cert_summary.html
To chyba najciekawsze wyjście, a np rsyslog też obrabia regexy w pliku konfiguracyjnym.
To może być ciekawsze i prostsze wyjście.
http://www.rsyslog.com/doc/v8-stable/configuration/filters.html
http://www.rsyslog.com/regex/
Pozdro
Ostatnio edytowany przez Jacekalex (2017-09-14 20:58:43)
Offline
nic prościej nie da rady ogarnąć? :)
Offline
Co to znaczy prościej?
Prościej, to masz swatcha właśnie.
Pokaż przykład takiego loga,co potrzebujesz wysłać, może się coś innego da wykombinować.
Przy okazji napisz, co dokładnie ma tego maila odbierać, że log musi być w temacie
a nie w treści wiadomości.
Z resztą syslogi też potrafią skrypty odpalać:
https://unix.stackexchange.com/questions/87223/rsyslog-execute-script-on-matching-log-event
Ostatnio edytowany przez Jacekalex (2017-09-14 21:05:07)
Offline
mam syslog do którego trafiają różne info np. ze snorta, arpwatcha itd... i jak wpada tam jakaś konkretna fraza to chcę otrzymać na maila powiadomienie... np. nowe urządzenie loguje się do sieci - do laga trafia mi info że jest nowy mac, IP jakie dostał itd... teraz dostaję maila z tematem jaki napisałem a w treści jest IP i mac tego urządzenia, podobnie z logami ze snorta.
Czasami przychodzi 1 mail na dzień, czasami kilka - dużo wygodniej przegląda się takie wiadomości jeżeli te info miałbym w temacie a nie musiał wchodzić do każdej wiadomości osobno.
Mam np. Bacule i z niej logi przychodzą w formie czytelnego tematu i z niego wiem czy coś się zrobiło na danym hoście czy nie i jeżeli chcę szczegóły to dopiero wtedy otwieram danego maila.
Czy do tematu w configu swatch można zastosować jakaś zmienną typu $0 albo $1, która odzwierciedlałaby konkretne fragmenty linii loga?
przykładowa linia:
Aug 2 11:02:35 smoothsec64 arpalert: seq=322184, mac=33:33:33:33:33:33, ip=192.168.100.100, type=new, dev=eth0, vendor="(null)"
W temacie wystarczyłoby: new IP mac=33:33:33:33:33:33 ip=192.168.100.100
Czy właśnie tutaj mógłbym zastosować w jakiś sposób Subject: new IP $7 $8 ??
Ostatnio edytowany przez moro (2017-09-14 21:15:30)
Offline
Trzeba było od razu pisać, ze chodzi o nowych pacjentów w sieci.
Do takiej zabawy masz gotowe narzędzie, [b]arpwatch[/b], który zawiadamia na maila
o nowych urządzeniach.
Ale arpwatch wysyła takiego maila:
temat:
new station (router) net
treść:
hostname: router ip address: 192.168.0.1 interface: net ethernet address: c0:c6:87:5e:d2:3e ethernet vendor: <unknown> timestamp: Thursday, September 14, 2017 21:53:17 +0200
Ostatnio edytowany przez Jacekalex (2017-09-14 21:54:48)
Offline
[quote=Jacekalex]Trzeba było od razu pisać, ze chodzi o nowych pacjentów w sieci.
Do takiej zabawy masz gotowe narzędzie, [b]arpwatch[/b], który zawiadamia na maila
o nowych urządzeniach.
Ale arpwatch wysyła takiego maila:
temat:
new station (router) net
treść:
hostname: router ip address: 192.168.0.1 interface: net ethernet address: c0:c6:87:5e:d2:3e ethernet vendor: <unknown> timestamp: Thursday, September 14, 2017 21:53:17 +0200
[/quote]
Tak tak wiem że jest arpwatch - ale on również nie wysyła maila o takim temacie jak bym chciał .
Dlatego próbuję wyjąć treść z sysloga.
Offline
Dlaczego log musi być w temacie? jakiś program odbierający maila potrzebuje takiego rozwiązania, czy co?
Maila z arpwatcha nietrudno przetworzyć wyciągając IP i MAC z poziomu np Procmaila.
Offline
[quote=Jacekalex]Dlaczego log musi być w temacie? jakiś program odbierający maila potrzebuje takiego rozwiązania, czy co?[/quote]
Tak jak pisałem ... jak przychodzi mail to łatwiej mi szybko sprawdzić co w nim jest przeglądając temat... dostaję różne raporty na maila z sieci i to jest szybsza forma wyciągania ważnych informacji.
ok poradziłem sobie
#!/bin/bash EMAILADDRESS="moj@mail.pl" EMAILSUBJECT="$(cut -f 7,8,9 -d" " /home/alert.txt)" MESSAGEBODY="/home/alert.txt" SEARCHSTRING='type=new_mac' SYSLOG=/var/log/syslog tail -f /var/log/syslog | while read LINE do if [ `echo $LINE | grep -c "type=new_mac"` -gt 0 ] then echo $LINE > $MESSAGEBODY echo "Nowy MAC ADDRESS w sieci" >> $MESSAGEBODY mail -s "$EMAILSUBJECT" "$EMAILADDRESS" < $MESSAGEBODY fi done
Ostatnio edytowany przez moro (2017-09-15 13:01:32)
Offline
Time (s) | Query |
---|---|
0.00014 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00146 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.144.31.17' WHERE u.id=1 |
0.00104 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.144.31.17', 1732398456) |
0.00043 | SELECT * FROM punbb_online WHERE logged<1732398156 |
0.00083 | DELETE FROM punbb_online WHERE ident='54.36.148.15' |
0.00074 | DELETE FROM punbb_online WHERE ident='54.36.149.48' |
0.00071 | DELETE FROM punbb_online WHERE ident='54.36.149.71' |
0.00093 | SELECT topic_id FROM punbb_posts WHERE id=314237 |
0.00089 | SELECT id FROM punbb_posts WHERE topic_id=29905 ORDER BY posted |
0.00076 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=29905 AND t.moved_to IS NULL |
0.00006 | SELECT search_for, replace_with FROM punbb_censoring |
0.00113 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=29905 ORDER BY p.id LIMIT 0,25 |
0.00074 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=29905 |
Total query time: 0.0099 s |