Puncte:2

Pot împiedica un utilizator non-root să folosească loggerul pentru a face intrări false (de exemplu, sshd) în syslog?

drapel eg

Tocmai am jucat cu logger un utilizator non-root, dar se pare că toată lumea este capabilă să creeze intrări false în syslog folosind parametrul „-t”.

Este de așteptat să funcționeze în acest fel? Aș putea inunda jurnalul sau ascunde unele acțiuni sub un val de diferite intrări false - nu sunt bune în ceea ce privește securitatea sistemului.

O pot preveni? => logger face parte din pachetul util-linux-systemd (util-linux anterior) și nu poate fi dezinstalat cu ușurință, în al doilea rând, este executabil pentru toată lumea de pe mașină în mod implicit.

Sistem utilizat: diferit SuSE Linux (SLE 10, 11, 15)

Linie de comanda:

justin@garfield:~ > logger -t sshd[986]: Cheie publică acceptată de la portul 127.0.0.19.8 65537 sha2: RSA 2e:45:25:54:6o:34:3a:z3:55:07:04 (doar un fals)"
justin@garfield:~ > su -l
Parola:
root@garfield:~ > tail -n 2 /var/log/messages
27 oct 13:35:45 garfield sshd[986]: Cheie publică acceptată de la 127.0.0.19.8 portul 65537 sha2: RSA 2e:45:25:54:6o:34:3a:z3:55:07:04 (doar un fals)
Oct 27 13:36:21 garfield su: (la root) justin pe /dev/pts/0

Notă: am folosit doar valori imposibile (IP, cheie publică) pentru a fi clar că este o intrare falsă.

Puncte:0
drapel in

Cred că este de așteptat să funcționeze în acest fel, uneori este destul de util să postezi mesaje de jurnal dintr-un script. Cu siguranță nu a fost destinat ca utilizatorii să polueze jurnalele de sistem. Soluția, în opinia mea, este să ai un sistem de logare bine configurat, care va împiedica utilizatorii să polueze jurnalele sau să falsifice mesajele sistemului, permițându-ți să identifici utilizatorii care au obiceiul să facă acest lucru.

eu folosesc rsyslogd, așa că îl folosesc pentru exemple.

În primul rând, trebuie să configurați rsyslogd pentru a stoca anumite variabile din socket se deschide:

modul (încărcare="imuxsock"
    SysSock.Annotate="on"
    SysSock.ParseTrusted="on"
)

Cu aceasta, puteți accesa următoarele variabile:

  • pid: PID-ul procesului de înregistrare.
  • uid și gid: UID-ul și GID-ul în care rulează procesul de înregistrare.
  • numele aplicatiei: numele procesului de înregistrare
  • cmd: linia de comandă completă a procesului de înregistrare

În cazul în care logger, pid va fi PID-ul systemd-journald, și numele aplicatiei va fi intotdeauna jurnal-systemd. Cu acestea, puteți face câteva lucruri:

Pur și simplu înregistrează-le

Puteți folosi un șablon care include aceste variabile, astfel încât să puteți vedea dacă există o discrepanță între mesaj și parametrii obținuți. Într-un șablon, puteți accesa aceste variabile cum ar fi %$!pid%. Deci, de exemplu, dintre voi folosiți un șablon ca acesta:

$template SomeLogFormat,"%TIMESTAMP:::date-rfc3339% <%pri-text%> %syslogtag%%msg% (înregistrat de pid=%$!pid% rulând ca %$!uid%)\n"

daemon.* /var/log/daemon.log;SomeLogFormat

va produce următoarea intrare:

2021-10-27T18:27:54.638759+02:00 <daemon.info> sshd[986]: Cheie publică acceptată de la portul 127.0.0.19.8 65537 sha2: RSA 2e:45:25:54:36o::3 z3:55:07:04 (doar un fals) (înregistrat de pid=540 rulând ca 1000)

Din el, puteți vedea dacă mesajul este legitim, iar dacă nu, obțineți UID-ul utilizatorului care este într-o dispoziție amuzantă. Rețineți că, în loc să furnizați parametrii unul câte unul, puteți utiliza %$!% șablon, care va înregistra valorile de mai sus în format JSON.

Redirecționați jurnalele utilizatorilor

Puteți plasa jurnalele scrise de utilizatori într-un fișier separat (poate pe un sistem de fișiere separat, astfel încât utilizatorii să nu poată umple sistemul de fișiere rădăcină). Puteți redirecționa toate jurnalele care provin de la utilizatori cu următoarea configurație:

dacă $!uid > 999 atunci /opt/log/user.log;SomeLogFormat
& Stop

Utilizarea șablonului ( ; SomeLogFormat parte) este opțională. În acest fel, totul care provine de la orice cu un UID de 1000+ va fi scris în /opt/log/user.log. Puteți chiar să separați jurnalele utilizatorilor după UID astfel:

$template userLogFile,"/opt/log/userlog_%$!uid%.log"

dacă $!uid > 999 atunci ?userLogFile;SomeLogFormat
& Stop

În acest fel, fiecare utilizator va avea propriile sale userlog_xxxx.log fişier.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.