Q&A Kan ek verhoed dat 'n nie-wortelgebruiker logger gebruik om vals inskrywings (bv. sshd) in die syslog te maak?
Ek het sopas met logger 'n nie-wortelgebruiker gespeel, maar dit lyk asof almal in staat is om vals inskrywings in die syslog te skep deur die "-t" parameter te gebruik.
Word verwag dat dit op hierdie manier sal werk? Ek kan die logboek oorstroom of sommige aksies onder 'n vloed van verskillende vals inskrywings versteek - nie goed in middel van stelselsekuriteit nie.
Kan ek dit voorkom? => logger is deel van die pakket util-linux-systemd (vorige util-linux) en kan nie maklik gedeïnstalleer word nie, tweedens is dit by verstek uitvoerbaar vir almal op die masjien.
gebruikte stelsel: verskillende SuSE Linux (SLE 10, 11, 15)
[email protected]:~ > logger -t sshd: Accepted publickey from 127.0.0.19.8 port 65537 sha2: RSA 2e:45:25:54:6o:34:3a:z3:55:07:04 (just a fake)"
[email protected]:~ > su -l
[email protected]:~ > tail -n 2 /var/log/messages
Oct 27 13:35:45 garfield sshd: Accepted publickey from 127.0.0.19.8 port 65537 sha2: RSA 2e:45:25:54:6o:34:3a:z3:55:07:04 (just a fake)
Oct 27 13:36:21 garfield su: (to root) justin on /dev/pts/0
Let wel: ek het net onmoontlike waardes (IP, publieke sleutel) gebruik om dit duidelik te maak dat dit 'n vals inskrywing is.
Ek dink dit word verwag om so te werk, soms is dit nogal nuttig om log boodskappe vanaf 'n skrif te plaas. Dit was beslis nie bedoel vir gebruikers om die stelsellogboeke te besoedel nie. Die oplossing na my mening is om 'n goed gekonfigureerde aantekenstelsel te hê, wat sal verhoed dat gebruikers die logs besoedel, of stelselboodskappe namaak, sodat jy gebruikers kan identifiseer wat die gewoonte het om dit te doen.
Ek gebruik rsyslogd, so ek gebruik dit vir voorbeelde.
Eerstens moet u opstel rsyslogdom sekere veranderlikes te stoor vanaf die sok wat dit oopmaak:
Hiermee kan u toegang tot die volgende veranderlikes verkry:
pid: die PID van die aantekenproses.
uiden gid: die UID en GID soos die aantekenproses loop.
appname: die naam van die aantekenproses
cmd: die volledige opdragreël van die aantekenproses
In die geval van logger, pidsal die PID van wees systemd-journald, en appnamesal altyd wees systemd-journal. Met hierdie kan jy 'n paar dinge doen:
Teken dit eenvoudig aan
Jy kan 'n sjabloon gebruik wat hierdie veranderlikes insluit, sodat jy kan sien of daar 'n verskil is tussen die boodskap en die verkrygde parameters. In 'n sjabloon het jy toegang tot hierdie veranderlikes soos %$!pid%. So byvoorbeeld, van jou gebruik 'n sjabloon soos hierdie:
$template SomeLogFormat,"%TIMESTAMP:::date-rfc3339% <%pri-text%> %syslogtag%%msg% (logged by pid=%$!pid% running as %$!uid%)\n"
sal die volgende inskrywing oplewer:
2021-10-27T18:27:54.638759+02:00 <daemon.info> sshd: Accepted publickey from 127.0.0.19.8 port 65537 sha2: RSA 2e:45:25:54:6o:34:3a:z3:55:07:04 (just a fake) (logged by pid=540 running as 1000)
Daaruit kan jy sien of die boodskap wettig is, en indien nie, kry jy die UID van die gebruiker wat in 'n snaakse bui is. Let daarop dat in plaas daarvan om die parameters een vir een te verskaf, jy die %$!%sjabloon kan gebruik , wat die bogenoemde waardes in JSON-formaat sal aanteken.
Jy kan logs wat deur gebruikers geskryf is, in 'n aparte lêer plaas (miskien op 'n aparte lêerstelsel, sodat gebruikers nie die wortellêerstelsel kan vul nie). U kan alle logs wat van gebruikers afkomstig is herlei met die volgende konfigurasie:
if $!uid > 999 then /opt/log/user.log;SomeLogFormat
Die gebruik van die sjabloon (die ;SomeLogFormatdeel) is opsioneel. Op hierdie manier sal alles wat afkomstig is van enigiets met 'n UID van 1000+ na geskryf word /opt/log/user.log. U kan selfs die gebruikerslogboeke so deur UID skei:
if $!uid > 999 then ?userLogFile;SomeLogFormat
Op hierdie manier sal elke gebruiker sy eie userlog_xxxx.loglêer hê.
Wat is die werklike voordele daarvan om sudo-voorregte aan 'n gebruiker toe te ken in plaas van om root te gebruik?
Hoe kan ek mysql root gebruiker laat herken na installasie?
Hoe kan ek Linux cgroups skep en gebruik as 'n nie-wortelgebruiker?
Is daar 'n manier in Linux waar een nie-wortelgebruiker kan kyk of 'n ander nie-wortelgebruiker OpenSSL gebruik of nie sonder sudo-toestemming nie?