Ich werde eine Antwort mit Blick auf RHEL schreiben, aber ich weiß nur, dass es Analoga für das geben wird, was ich beschreibe, wenn Sie in einer SuSE- oder Debian-basierten Distribution arbeiten.
Wenn Sie nur überprüfen möchten, ob es sich um ein Systemupdate handelt und nicht um jemanden, der versucht, den Computer zu rooten, können Sie das openssh-clients
Paket zunächst wie folgt "überprüfen" :
[root@hypervisor scsd]# rpm -V openssh-clients
[root@hypervisor scsd]#
[root@hypervisor scsd]# rpm -V openssh-server
S.5....T. c /etc/pam.d/sshd
S.5....T. c /etc/ssh/sshd_config
[root@hypervisor scsd]#
Ich habe es auch getan, openssh-server
damit Sie sehen können, wie es aussieht, wenn sich etwas ändert. Der wichtige Teil ist die "5", die uns sagt, dass sich die md5sum der Datei von der in der RPM-Datenbank vorhandenen unterscheidet. Wenn das auscheckt, lag es wahrscheinlich an einem Systemupdate.
Wenn sie yum verwendet haben (sehr wahrscheinlich), wird ein /var/log/yum.log-Eintrag für dieses RPM aktualisiert. Dies ist nützlich, um die genaue Zeit abzurufen, zu der das Update für eine spätere Überprüfung durchgeführt wurde yum history
.
Wenn sie rpm
direkt verwendet werden, können Sie entweder etwas queryformat
zaubern oder rpm -q openssh-clients --last
das Datum ermitteln, an dem es passiert ist (obwohl es so klingt, als ob Sie diese Informationen bereits kennen).
Es gibt einen yum
Unterbefehl namens history
, der die auid / loginuid des aufrufenden Benutzers aufzeichnet:
[root@hypervisor scsd]# yum history
Loaded plugins: product-id, refresh-packagekit, rhnplugin, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
This system is receiving updates from RHN Classic or RHN Satellite.
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
54 | <jadavis6> | 2013-07-15 09:03 | Install | 2
53 | <jadavis6> | 2013-07-09 17:25 | Update | 23
52 | <jadavis6> | 2013-06-24 10:10 | Install | 3 <
51 | <jadavis6> | 2013-06-14 22:33 | Install | 1 >
50 | <jadavis6> | 2013-06-14 07:47 | E, I, U | 90
49 | root <root> | 2013-06-14 00:58 | Update | 1
48 | <jadavis6> | 2013-06-03 08:28 | Install | 3
47 | <jadavis6> | 2013-05-28 11:57 | Install | 3 <
46 | <jadavis6> | 2013-05-20 18:25 | Install | 1 >
45 | <jadavis6> | 2013-05-20 12:00 | Install | 1
44 | <jadavis6> | 2013-05-19 15:29 | Install | 6
43 | <jadavis6> | 2013-05-18 20:16 | Install | 3
42 | <jadavis6> | 2013-05-16 16:21 | Install | 2 <
41 | <jadavis6> | 2013-05-16 12:48 | Install | 1 >
40 | <jadavis6> | 2013-05-10 09:28 | Install | 1
39 | <jadavis6> | 2013-05-10 09:28 | Install | 1
38 | <jadavis6> | 2013-04-29 19:45 | Install | 2 <
37 | <jadavis6> | 2013-04-29 18:51 | Install | 8 >
36 | <jadavis6> | 2013-04-29 18:35 | Update | 11
35 | <jadavis6> | 2013-04-27 15:44 | E, I, O, U | 429 EE
history list
[root@hypervisor scsd]#
Die Loginuid ist nicht fälschbar, da Kinder von init, wenn sie ausgegliedert werden, mit einer Loginuid von -1 (negative) beginnen. Wenn Sie sich über eine tty oder sshd
pam_loginuid anmelden (es gibt andere Module, die dies ebenfalls tun), wird diese auf die UID des authentifizierten Benutzers gesetzt. Einmal auf etwas anderes als -1
root gesetzt, kann dieser Wert nicht geändert werden (allerdings nur in neueren Kerneln), da er nicht funktionsfähig / nur buchhalterisch ist und berücksichtigen muss, dass ein Angreifer möglicherweise root gewonnen hat. Alle Kinder erben die Loginuid des Elternteils. Obwohl sudo
ein Programm mit der EUID Null (oder welcher Benutzer auch immer) erstellt wird, haben Sie immer noch dieselbe Loginuid.
Sie können dies testen, indem Sie einfach Ihren Anteil an sudos tun und dies cat /proc/self/loginuid
jedes Mal tun , wenn der Benutzer, bei dem Sie sich ursprünglich angemeldet haben, unabhängig davon, wie viele su
oder sudo
Aufrufe Sie seitdem durchgeführt haben. So yum history
weiß jadavis6
es dort oben yum update
, obwohl ich sie alle als Root-Benutzer gemacht habe.
Wenn zwischen zwei Yum-Transaktionen Unklarheiten bestehen, können Sie eine yum history info <transID>
ähnliche Aktion ausführen, wenn ich mehr über diese letzte Transaktion erfahren möchte:
[root@hypervisor scsd]# yum history info 35
Loaded plugins: product-id, refresh-packagekit, rhnplugin, security,
: subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
This system is receiving updates from RHN Classic or RHN Satellite.
Transaction ID : 35
Begin time : Sat Apr 27 15:44:57 2013
Begin rpmdb : 959:3d300ae2e8dc239f9f972306ba2406bd22ba29bc
End time : 15:50:39 2013 (5 minutes)
End rpmdb : 972:381cb76592ea2f779ee4521a4e7221196520486a
User : <jadavis6>
Return-Code : Success
Command Line : update -y
Transaction performed with:
Updated rpm-4.8.0-27.el6.x86_64 @anaconda-RedHatEnterpriseLinux-201206132210.x86_64/6.3
Updated subscription-manager-0.99.19.4-1.el6_3.x86_64 @rhel-x86_64-server-6
Updated yum-3.2.29-30.el6.noarch @anaconda-RedHatEnterpriseLinux-201206132210.x86_64/6.3
Installed yum-metadata-parser-1.1.2-16.el6.x86_64 @anaconda-RedHatEnterpriseLinux-201206132210.x86_64/6.3
Packages Altered:
Updated NetworkManager-glib-1:0.8.1-34.el6_3.x86_64 @rhel-x86_64-server-6
Update 1:0.8.1-43.el6.x86_64 @rhel-x86_64-server-6
Updated PackageKit-0.5.8-20.el6.x86_64 @rhel-x86_64-server-6
Update 0.5.8-21.el6.x86_64 @rhel-x86_64-server-6
Updated PackageKit-device-rebind-0.5.8-20.el6.x86_64 @rhel-x86_64-server-6
[...snip...]
Updated yum-3.2.29-30.el6.noarch @anaconda-RedHatEnterpriseLinux-201206132210.x86_64/6.3
Update 3.2.29-40.el6.noarch @rhel-x86_64-server-6
Updated yum-rhn-plugin-0.9.1-40.el6.noarch @anaconda-RedHatEnterpriseLinux-201206132210.x86_64/6.3
Update 0.9.1-43.el6.noarch @rhel-x86_64-server-6
Scriptlet output:
1 warning: /etc/shadow created as /etc/shadow.rpmnew
2 No input from event server.
3 warning: %postun(wdaemon-0.17-2.el6.x86_64) scriptlet failed, exit status 1
history info
Ich habe es abgeschnitten, weil es so aussieht, als wäre dies ein ziemlich langwieriges Systemupdate.
AFAIK gibt es keine Möglichkeit, es zurückzuverfolgen, wenn sie über rpm
direkt außerhalb der Konfiguration aktualisiert wurden auditd
, um Änderungen an den RPM-Datenbankdateien zu überwachen. Wenn Sie dies tun ausearch
, können Sie eine Liste der PIDs anzeigen, die Änderungen vorgenommen haben, sowie die zugehörige Loginuid (die als angezeigt wird auid
).
Wenn sie es direkt außerhalb von RPM geändert haben, müssen Sie jede der Dateien, die Sie überwachen möchten, auf Änderungen überwachen, bevor die Änderung vorgenommen wird. Im Nachhinein können Sie nicht viel tun, aber Sie könnten überlegen, etwas auditd
zu tun , um Dateien zu überwachen, die Sie als Rootkit-Ziele betrachten. Zu viel zu tun kann das System blockieren. Erwähnenswert ist auch, dass Sie diese Protokolle außerhalb des Servers versenden sollten, um böswillige Manipulationen zu verhindern.
Ich hoffe, das hilft.
BEARBEITEN:
Eine Sache zu beachten, es sieht so aus, als ob root die Loginuid ändern kann , wenn dies der Fall ist CAP_SYS_AUDITCONTROL
(nicht erforderlich, wenn die Loginuid aktuell ist -1
), aber Sie sollten in der Lage sein, diese Funktion aus dem Begrenzungssatz des Systems zu entfernen, wodurch der Angreifer das System neu starten müsste Erhalten Sie diese Fähigkeit, die eine verdammt laute Operation ist, bei der überall überprüfbare Ereignisse zurückbleiben, sodass es unwahrscheinlich ist, dass sie dies tun.