Tôi sẽ viết một câu trả lời với RHEL trong đầu nhưng chỉ cần biết rằng nếu bạn đang sử dụng bản phân phối dựa trên SuSE hoặc Debian, sẽ có những điểm tương tự với những gì tôi mô tả.
Trước hết, nếu bạn chỉ muốn xác minh rằng đó là bản cập nhật hệ thống chứ không phải ai đó đang cố root máy, bạn có thể "xác minh" openssh-clients
gói như vậy:
[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]#
Tôi cũng đã làm openssh-server
như vậy để bạn có thể thấy nó trông như thế nào khi có gì đó thay đổi. Phần quan trọng là "5" cho chúng ta biết rằng md5sum của tệp khác với những gì tồn tại trong cơ sở dữ liệu RPM. Nếu điều đó kiểm tra thì có lẽ là do cập nhật hệ thống.
Nếu họ đã sử dụng yum (rất có thể) sẽ có một mục /var/log/yum.log cho RPM đó được cập nhật. Điều này hữu ích để có được thời gian cụ thể cập nhật xảy ra để xem lại sau này yum history
.
Nếu họ sử dụng rpm
trực tiếp, bạn có thể thực hiện một số queryformat
phép thuật hoặc rpm -q openssh-clients --last
để biết ngày xảy ra (mặc dù có vẻ như bạn đã biết chút thông tin đó)
Có một yum
tiểu ban được gọi là history
ghi lại auid / loginuid của người dùng đang gọi:
[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]#
Thông tin đăng nhập là không thể tha thứ bởi vì trẻ em của init bị loại bỏ, chúng bắt đầu với một loginuid -1 (số âm). Khi bạn đăng nhập thông qua tty hoặc sshd
pam_loginuid (có các mô-đun khác cũng thực hiện việc này) sẽ đặt nó thành UID của người dùng được xác thực. Khi đã được đặt thành một cái gì đó khác với -1
root thậm chí không thể thay đổi giá trị này (chỉ trong các hạt mới hơn) vì nó không có chức năng / chỉ tính toán và cần phải xem xét rằng kẻ tấn công có thể đã lấy được root. Tất cả trẻ em đều thừa hưởng loginuid của cha mẹ, mặc dù sudo
sinh ra một chương trình có EUID bằng 0 (hoặc bất kỳ người dùng nào) bạn vẫn sẽ có cùng một loginuid.
Bạn có thể kiểm tra điều này bằng cách chỉ chia sẻ sudo của mình và thực hiện cat /proc/self/loginuid
mỗi lần người dùng mà bạn đăng nhập ban đầu, bất kể bạn đã thực hiện bao nhiêu lần su
hoặc sudo
yêu cầu. Đây là cách mà yum history
trên đó biết jadavis6
được yum update
mặc dù tôi đã làm tất cả với tư cách là người dùng root.
Nếu có một sự mơ hồ giữa hai giao dịch yum, bạn có thể thực hiện yum history info <transID>
như nếu tôi muốn biết thêm về giao dịch cuối cùng đó:
[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
Tôi đã cắt nó bởi vì có vẻ như đây là một bản cập nhật hệ thống khá dài.
AFAIK không có cách nào để theo dõi lại nếu họ cập nhật rpm
trực tiếp bên ngoài cấu hình auditd
để theo dõi các thay đổi đối với các tệp cơ sở dữ liệu RPM. Làm như vậy sẽ cho phép bạn thực hiện ausearch
sẽ cho phép bạn xem danh sách các thay đổi của PID và đăng nhập được liên kết (sẽ được hiển thị dưới dạng auid
).
Nếu họ trực tiếp thay đổi nó bên ngoài RPM, bạn sẽ phải xem từng tệp bạn muốn theo dõi để thay đổi trước khi thay đổi được thực hiện. Sau thực tế bạn không thể làm gì nhiều nhưng bạn có thể cân nhắc làm gì đó auditd
để giám sát các tệp mà bạn cảm thấy là mục tiêu rootkit. Làm quá nhiều có thể làm hỏng hệ thống xuống. Điều đáng nói là bạn nên gửi những bản ghi này ra khỏi máy chủ ở đâu đó để ngăn chặn hành vi giả mạo độc hại.
Mong rằng sẽ giúp.
BIÊN TẬP:
Một điều cần lưu ý, có vẻ như root có thể thay đổi loginuid nếu nó có CAP_SYS_AUDITCONTROL
(không bắt buộc nếu hiện tại loginuid -1
) nhưng bạn có thể xóa khả năng đó khỏi bộ giới hạn của hệ thống, điều này sẽ yêu cầu kẻ tấn công khởi động lại hệ thống đạt được khả năng đó, một hoạt động ồn ào như địa ngục để lại các sự kiện có thể nghe được ở khắp mọi nơi nên họ khó có thể làm điều đó.