`
walksing
  • 浏览: 217823 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

linux入侵系统日志分析

阅读更多

记录重要的系统事件是系统安全的一个重要因素。多数U N I X 系统能够运行三个不同的日志子系统:使用wtmp / utmp 文件的连接时间日志;使用acct 或pacct 文件的进程统计;经过syslog 实施的错误日志。本章讲述了这些日志子系统以及允许系统或安全管理员监测、审计和维护日志的命令和程序。还讲述了几个额外的工具,从帮助查找侵入者的Zap 到标准UNIX syslog 的一个安全加强版本syslog-ng 。
UNIX 维护了几个基本的日志文件来跟踪和记录系统中发生了什么事情,包括谁登录进入,谁退出登录,以及他们做了些什么。较新的U N I X 版本还跟踪其他一些信息,如超级用户登录的次数,通过网络传输的文件,电子邮件以及其他更多方面。
日志文件对于维护系统安全很重要。它们为两个重要功能提供数据:审计和监测。它们通过提供一个历史记录—系统中关于活动的审计轨迹—允许用户或第三方回头来系统地评价安全程序的效率以及确定引起安全破坏或系统功能失效的原因。如果需要,它们还能作为呈现给权威机构的证据。
它们还能用来“实时”地监测系统状态,检测和追踪侵入者,发现bug 以及阻止问题发生。用户可以通过浏览日志条目来查看自己的系统或使用Swatch这样的工具来代为查看。警告日志使用户对自己的行为负责,特别是在有较强用户授权策略的系统中。但是,总可能有一个用户冒充另一个。不要认为包含在一个日志中的信息是神圣不可侵犯的—在采取行动之前要试着通过独立手段来确认日志记录。
虽然一个日志的存在不能提供完全的可记录性,但日志能使系统管理员和安全官员做到:
(1)发现试图攻击系统安全的重复举动(也就是一个攻击者试图冒充root 登录)。
(2)跟踪那些想要越权的用户(也就是那些使用sudo 命令作为root 执行命令的用户)。
(3)跟踪异常的使用模式(Carol 从9 点工作到5 点而日志显示在 3AM 登录;Mallory 贪取CPU时间)。
(4)实时跟踪侵入者。
日志能够帮助检测。当系统被攻击或有人侵入时,尽快知道是很重要的。虽然日志不能阻止一次侵入,但它能体现出基本帐户安全的一个漏洞。甚至当帐户安全失败,一个攻击者能够剥夺用户权利时,也希望这件事能记录下来。一旦知道发生了什么事,就可以采取相应的行动:切断用户、加强网络控制,监测一个侵入者以搜索证据等等。记录日志、维护日志、日志监测和审计等策略都是完整安全策略的重要组成部分。也许日志最重要的安全功能是制止。基础人类心理学指出当人类得知自己的行为被监测时会举止异常。仅仅安装日志是不够的—应该公布这件事以灌输恐惧感。应该发展通信策略以加强攻击者可能被抓住的印象。其目的是阻止一个攻击者或任性的用户到达行为的危险点。
应该宣传出去说系统建立了日志。一个有效的方式是使用登录标志警告:“警告!继续使用本系统要同意安全监测和测试。所有的用户行为都与用户名、主机名和IP 地址一起记录下来”。
不幸的是,日志文件本身易被攻击。任何有能力的系统破坏者都试图通过修改日志文件或更坏情况是修改日志机制本身来掩盖自己的踪迹。有一些防范措施可以帮助保持日志子系统的完整性和可用性。这将在本章后面讲到。
提示要想知道一个破坏者在侵入UNIX 系统后怎样掩盖其踪迹,可参见Phrack 杂志的文章“Playing Hide and Seek, Unix Style ”,可在下面地址找到:
http://www.fish.com/security/hide-n-seek.html .

8.1 日志子系统
在多数UNIX 系统中,有三个主要的日志子系统:
(1) 连接时间日志—由多个程序执行,把记录写入到/var/log/wtmp (或/var/adm/Wtmp )和/var/run/utmp (可以是/etc/utmp 或/var/adm/utmp)。login 等程序更新wtmp 和utmp 文件,使系统管理员能跟踪谁在何时登录进入系统。
(2) 进程统计—由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct )中写一个记录。进程统计的主要目的是为系统中的基本服务提供命令使用统计。
(3) 错误日志—由syslogd 执行。各种系统守护程序、用户程序和内核通过syslog 向文件/var/adm/messages 和/var/log/syslog 报告值得注意的事件。另外有许多UNIX 程序创建日志。像HTTP 或FTP 这样提供网络服务的服务器也保持详细的日志。
根据不同的U N I X 版本,日志文件通常写到/var/log 、/var/adm 、/usr/adm 或有时/etc 目录中。
多数Linux 系统在/var/log 中保存主要的日志—我将在多数例子中使用该习惯。常用的日志文件在表1 中总结。

表1 常用UNIX 日志文件
日志文件 目标
access-log 记录HTTP/web的传输
acct/pacct 记录用户命令
aculog 记录调制解调器的活动
btmp 记录失败的登录
lastlog 记录最近几次成功登录的时间和最后一次不成功的登录
messages 从syslog中记录信息(通常链接到syslog 文件)
sudolog 记录使用sudo 发出的命令
sulog 记录su 命令的使用
syslog 从syslog 中记录信息(通常链接到message 文件)
utmp 记录当前登录的每个用户
wtmp 一个用户每次登录进入和退出时间的永久记录
xferlog 记录FTP会话

8.2 登录记录
utmp 、wtmp 和lastlog 日志文件是多数重要UNIX 日志子系统的关键—保持用户登录进入和退出的记录。有关当前登录用户的信息记录在文件utmp 中;登录进入和退出记录在文件wtmp 中;最后一次登录在文件lastlog 中。数据交换、关机和重启也记录在wtmp 文件中。所有的记录都包含时间戳。
这些文件(除了lastlog )在具有大量用户的繁忙系统中增长得很迅速。例如wtmp 文件可以无限制增长,除非定期进行截取。许多系统以一天或一周为单位把wtmp 配置成循环使用。它通常由cron 运行的脚本来删改。这些脚本重命名并循环使用wtmp 文件,能保持一周有价值的数据。通常,wtmp 在第一天结束后重命名为wtmp.1 ;第二天后wtmp.1 变为wtmp.2 等等,直到wtmp.7 。
警告如果/var/log/wtmp 文件不存在,则不执行登录和连接时间统计。它必须手工进行创建(touch /var/log/wtmp )。

8.2.1 基本机制
每次有一个用户登录时,login 程序在文件lastlog 中查看用户的UID 。如果找到了,则把用户上次登录、退出时间和主机名写到标准输出中,然后login 程序在lastlog 中记录新的登录时间。
在新的lastlog 记录写入后,utmp 文件打开并插入用户的utmp 记录。该记录一直到用户登录退出时删除。utmp 文件被各种命令使用,包括who 、w 、users 和finger (参见下面讲到的这些命令)。
下一步,login 程序打开文件wtmp 附加用户的utmp 记录。当用户登录退出时,具有更新时间戳的同一utmp 记录附加到文件中。wtmp 文件被程序lost 和ac 使用(参见下面)。
警告在老的UNIX 版本中,/etc/utmp 文件是所有人可写的(- r w - r w - r w -)。这是不应该的,因为它使任何用户能够编辑该文件(他们可隐藏自己的存在)。新的UNIX 系统对/etc/utmp 进行更严格的限制(-rw-r--r--)。

8.2.2 使用基于utmp/wtmp 的命令进行监测
wtmp 和utmp 文件都是二进制格式,它们不能被剪贴(使用tail 命令)或合并(使用cat 命令)。用户需要几个命令之一,包括who 、w 、users 、last 和ac —来使用这两个文件包含的信息。
一个系统管理员应该通过定期检查谁曾登录过,以及做了些什么事来监测系统的安全,尤其是一个安全机密系统或者有许多用户的系统。
如是否有人在假期里登录?
是否有个业务经理编译程序?
是否有一个程序员在早上9 点进入?
要精心观察,就像一个店主警惕谁进来或离开了商店那样。要在每天第一次登录和最后一个退出之前运行w 。要观察失败的登录—它们可能预示有人侵入。运行ac 来看谁偷取了系统资源,是一个电子邮件使用者在提交大量的工作吗?不放松警惕是安全的一部分。
警告日志中的一个漏洞是su 命令。当一个用户用一个有效的UID 代替另一个时,它不更新utmp 和wtmp 。这可能导致一些奇怪地结果,例如一个使用su 的用户运行mail 或其他使用utmp 文件的程序。幸运的是,su 维护它自己的日志(参见8.5.1 节)。

8.2.3 who 命令
who 命令查询utmp 文件并报告当前每个登录的用户。who 的缺省输出包括用户名、终端类型、登录日期和时间以及远程主机(如果是的话)。
$who
root tty1 May 15 16:09
bob console May 15 14:49
alice ttyp2 May 16 00:13
carol ttyp3 May 11 13:20

如果指明了wtmp 文件名,则who 命令查询所有以前的登录。命令who /var/log/wtmp 将报告自从wtmp 文件创建或删改以来的每一次登录。
对于正处于危机中的用户,特殊形式whoami 提供了一些安慰:
$ whoami
alice

有些UNIX 系统中包括一些扩充的who 命令。例如HP-UX 支持16 个不同的标志和选项。“-a ”标志产生一个“包含一切”的报告,包括用户名、终端类型、时间、空闲时间、进程ID 和注释。它还显示最后一次系统启动时间及其他内容。

8.2.4 w 命令
w 命令查询utmp 文件并显示当前系统中每个用户和他所运行的进程信息。标题栏显示当前时间、系统已运行了多长时间、当前有多少用户登录以及过去1 、5 和1 5 分钟内的系统平均负载。
uptime 命令与w 密切相关。它也输出以上的题头信息。

8.2.5 users 命令
users 命令用单独一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数。
$ users
alice carol dave bob

8.2.6 last 命令
last 命令往回搜索wtmp 来显示自从文件第一次创建后登录过的用户。它还报告终端类型和日期。
若使用“-R ”标志(BSDish 系统中为“-h ”),则last 命令显示用户的主机名。“-number”标志把报告的行数限制为number 。
如果指明了用户,那么last 只报告该用户的近期活动。

8.2.7 lastb 命令
有些UNIX 系统还支持lastb 命令,它往回搜索数据文件/var/adm/btmp 并显示有关错误登录信息(就是那些口令错误的登录)。要看前面5 次错误登录,可以用root 登录并运行命令:
警告应该限制用户以适当的权限访问btmp 文件—该文件只应由root 拥有并可读,因为它也许包含口令信息(用户经常错误地把口令作为用户名输入)。

8.2.8 ac 命令
ac 命令根据当前/var/log/wtmp 文件中的登录进入和退出来报告用户连接的时间(小时)。如果不使用标志,则报告总的时间。
$ ac
total 136.25
“-d ”标志产生每天的总的连接时间。
“-p ”标志报告每个用户的总的连接时间。

8.2.9 lastlog 文件
如上面所述,lastlog 文件在每次有用户登录时被查询。多数UNIX 系统报告最后一次成功登录,并显示日期和终端类型。有些System V 系统还报告最后一次不成功的登录。这看起来如下例所示(H P - U X 登录会话):
提示每次登录时要检查一下有关成功和不成功登录的报告,让其他用户也这么做。无需多说,用户应确保没有其他人以自己用户名登录或重复尝试不成功的登录。
如果运行Linux ,可以使用lastlog 命令来检查某特定用户上次登录的时间,它格式化并输出上次登录日志/var/log/lastlog (在其他系统上也许是/var/adm/lastlog )的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog 显示“* *
Never logged**”—这是多数系统用户应该看到的。注意需要以root 运行该命令。
在上面例子中,lastlog 报告自lastlog 文件创建以来的所有用户。可以使用“-u”标志限制对某个特定用户进行报告—lastlog -u 102 将报告UID 为102 的用户。要限制为上一周的报告,可使用“-t”标志—lastlog -t 7 。
分享到:
评论

相关推荐

    windows日志分析#linux日志分析#web日志分析#windows入侵排查#linux入侵排查

    本篇文章将深入探讨Windows、Linux以及Web日志分析和相关入侵排查的知识点。 首先,我们来看Windows日志分析。Windows操作系统提供了事件查看器(Event Viewer)工具,它收集并记录了系统、应用程序、安全、设置和...

    Linux入侵检测系统的设计.pdf

    "Linux入侵检测系统的设计" 本文主要介绍了Linux平台下的入侵检测系统的设计原理和整体框架,同时也阐述并实现了入侵过程,以及相应的规则解析引擎。提出了将应用协议分析方法应用到网络入侵检测中,实现基于应用的...

    基于Linux的入侵检测系统的设计与实现.pdf

    本文总结了基于Linux的入侵检测系统的设计与实现,涵盖了入侵检测技术的相关概念、Snort入侵检测系统的捕包机制和分析、Linux入侵检测系统模型的设计和实现、实验验证等内容。 知识点1:入侵检测技术的相关概念 ...

    Linux环境下的日志分析系统LASL.pdf

    ### Linux环境下的日志分析系统LASL #### 概述 日志文件是记录计算机系统运行轨迹的重要文档,对于安全事件的检测与响应至关重要。在《Linux环境下的日志分析系统LASL》这篇论文中,作者们介绍了一种结合传统日志...

    Linux入侵检测方法及系统安全建议.pdf

    Linux入侵检测方法及系统安全建议主要关注的是保护Linux操作系统免受恶意攻击和保障系统稳定运行。随着信息技术的快速发展,Linux因其开源、稳定和高效的特点,成为许多业务系统的基础平台,尤其是气象部门。然而,...

    UNIX Linux网络日志分析与流量监控

    UNIX/Linux网络日志分析与流量监控是网络管理员和安全分析师必备技能之一。该技能不仅有助于实时监控系统运行状态,还能在系统遭受攻击或出现故障时,通过分析日志文件快速定位问题,以及在安全事件发生后进行取证...

    linux系统日志解析

    ### Linux系统日志解析 在Linux系统中,日志文件是非常重要的组成部分,它们记录了系统的运行状态、应用程序的行为以及各种事件的发生情况。通过对这些日志的分析,可以帮助系统管理员及时发现并解决问题,确保系统...

    Linux入侵检测系统的实现.pdf

    Linux入侵检测系统的实现.pdf Linux入侵检测系统是指使用Linux操作系统作为平台,实现入侵检测功能的系统。该系统的主要目的是检测和防止黑客攻击、病毒和恶意软件等网络攻击。 Linux入侵检测系统的设计原理和整体...

    Linux下基于Snort入侵检测系统的研究及实现.pdf

    Linux下基于Snort入侵检测系统的研究及实现 本文主要介绍了基于Snort的入侵检测系统在Linux操作系统下的研究和实现。入侵检测系统(Intrusion Detection System,简称IDS)是用来检测对计算机系统或网络系统非法...

    一种查看Linux系统审计日志的图形工具.pdf

    10. 系统日志管理:该工具可以帮助管理员管理系统日志,避免了日志文件的膨胀和占用系统资源。 该工具可以帮助管理员快速浏览和统计分析Linux系统中的审计日志,提高了系统审计日志的实用性和安全性。

    LINUX入侵检测

    HIDS通过监视系统日志、文件系统更改以及进程行为来识别潜在的攻击。当检测到异常或已知恶意模式时,HIDS会触发警报或采取自动防御措施。 1. **审计和日志分析**:Linux系统提供了丰富的日志信息,如syslog、auth....

    系统日志批量收集分析(Linux).zip

    针对“系统日志批量收集分析(Linux)”这一主题,我们可以深入探讨如何在Linux环境中高效地管理和分析系统日志。 首先,Linux系统日志通常存储在`/var/log`目录下,包括各种服务的日志文件,如`syslog`、`auth.log...

    Linux环境下入侵检测系统的研究与实现.pdf

    基于主机的入侵检测技术的检测对象是系统内部,主要的数据来源是系统日志。入侵检测系统通过监视系统全部或部分的动态行为来获得整个计算机系统的状态,一般而言,入侵者在入侵之后会留下痕迹,入侵检测系统可以对...

    了解Linux系统内核安全的入侵侦察系统

    Linux入侵侦察系统(LIDS,Linux Intrusion Detection System)是一种强化Linux内核安全性的解决方案,主要通过内核补丁和管理工具lidsadm实现。LIDS的核心在于它引入了参考模式和强制访问控制(MAC)模式,以增强...

    Linux操作系统安全及入侵排查

    课程还介绍了针对系统入侵的应急排查步骤和要求,主要涉及的排查内容包括:检查系统日志及命令记录 、检查账户、检查文件、检查系统启动项和计划任务、检查进程和网络连接、检查是否存留后门等恶意程序,根据上述...

    在Linux系统下构建Snort入侵检测系统.pdf

    在 Linux 系统下构建 Snort 入侵检测系统 Snort 是一个开源的入侵检测系统(IDS),它可以实时检测网络中的入侵行为,并对其进行响应。Snort 的主要组件包括数据包解析器、检测引擎和日志/警报三个子系统。数据包...

    简单几个小技巧查找linux入侵证据.pdf

    * 系统日志分析:需要对系统日志进行分析,检测任何可疑的攻击痕迹。 * 网络流量分析:需要对网络流量进行分析,检测任何可疑的攻击痕迹。 * 系统文件分析:需要对系统文件进行分析,检测任何可疑的攻击痕迹。 结论...

    Linux系统日志文件的远程存储实现.pdf

    Linux系统日志文件的远程存储实现 Linux系统日志文件的远程存储实现是指在Linux系统中对日志文件的存储和管理的一种方法。日志文件是Linux系统中非常重要的一部分,它记录了系统每天发生的各种事件,可以通过日志来...

Global site tag (gtag.js) - Google Analytics