我正在尝试查找导致客户网站服务器被入侵的根本原因。
auditd
对我帮助很大,它告诉我在出现另一个恶意软件时应该在哪个目录中查找(该网站有点像混乱,但即使我想清理也不是我能够清理的)激活并搞砸了网站,但审计日志很难读取,因为它还记录每两分钟连接一次以检查各种状态的监控脚本的 ssh 活动,以及由 cron 触发的另一个监控系统。
我已在 auditctl 中尝试多次告诉它停止报告这些内容:
root@zelia:/var/log/audit# auditctl -l
-a never,user -F auid=116
-a never,task -F auid=116
-a never,exit -S all -F auid=116
-a never,exit -S all -F uid=116
(UID 116,我想要抑制的用户是“meminfo”)
然而,每隔几分钟我仍然会收到以下信息:
type=USER_ACCT msg=audit(1491386883.189:462708): pid=1502 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:accounting acct="meminfo" exe="/usr/sbin/sshd" hostname=prtg.systemec.nl addr=89.20.80.149 terminal=ssh res=success'
type=CRED_ACQ msg=audit(1491386883.189:462709): pid=1502 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:setcred acct="meminfo" exe="/usr/sbin/sshd" hostname=monitor.company.internal addr=89.20.80.149 terminal=ssh res=success'
type=LOGIN msg=audit(1491386883.189:462710): pid=1502 uid=0 old-auid=4294967295 auid=116 old-ses=4294967295 ses=368164 res=1
type=USER_ACCT msg=audit(1491386883.197:462711): pid=1504 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:accounting acct="meminfo" exe="/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
type=USER_START msg=audit(1491386883.197:462712): pid=1504 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:session_open acct="meminfo" exe="/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
type=SERVICE_START msg=audit(1491386883.213:462713): pid=1 uid=0 auid=4294967295 ses=4294967295 msg=' comm="user@116" exe="/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
type=SERVICE_STOP msg=audit(1491386883.365:462714): pid=1 uid=0 auid=4294967295 ses=4294967295 msg=' comm="user@116" exe="/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
结果,审计日志不断填满,我错过了重要的积压工作。
另一方面,虽然我没有思考入侵是通过 SSH 进行的,记录谁在何时登录服务器可能会很有用。
显然,我尝试添加的保持抑制的规则meminfo
无法正常工作。我做错了什么?
附录由于某种原因,auditctl -a never,task
之后添加会导致never,task
规则首先被加载,然后一切被压抑,包括我真正想看到的。
附录 #2正如解释的那样这个问题,我试图抑制的消息是 PAM 子系统默认生成的,而不是由 中的附加规则生成的audit.rules
,所以这是额外的问题……
答案1
在您的日志文件中,uid=0
这些行意味着这些进程是由 启动的root
,而不是meminfo
。
auid=500
auid 字段记录了审计用户 ID,即 loginuid。此 ID 在用户登录时分配给用户,并且即使用户身份发生变化(例如,通过使用命令切换用户帐户
su - john
),每个进程也会继承此 ID。
uid=500
uid 字段记录启动被分析进程的用户的用户 ID。可以使用以下命令将用户 ID 解释为用户名:
ausearch -i --uid UID
。在本例中,500
是用户 的用户 IDshadowman
。
root
这可能是由于用户运行程序crontab
或进程调用必须先以 身份启动的服务导致的root
(使用setuid
)才能使用特权端口 <1024
。
您可能不想抑制所有auid=0
活动,因为这会抑制一些有意义的东西。
如果你auditd
可以按进程名称进行过滤exe=
,例如RHEL7 自 BZ#1135562 起,如果您还具有以下情况,则抑制sshd
由 开始的root
应该是安全的PermitRootLogin no
:
auditctl
-a never,user -F auid=0 -F exe="/usr/sbin/sshd"
-a never,task -F auid=0 -F exe="/usr/sbin/sshd"
然而,大多数情况下-F
仅限于外部字段msg=' '
并且只有不允许正则表达式的运算符:-F [n=v | n!=v | n<v | n>v | n<=v | n>=v | n&v | n&=v]
。
如果日志大小不是问题,一个选择是增加max_log_file
或保留更多历史记录。num_logs
你不必直接阅读日志格式,正如你所说aureport
和ausearch
。