86、系统日志管理与安全策略全解析

系统日志管理与安全策略全解析

1. 特定程序日志文件
  • su 日志
    在系统管理中,su 日志用于记录所有尝试切换到超级用户的操作。以下是相关配置示例:
# 用于记录所有 su 尝试的设备
CONSOLE=/dev/console
# 是否也使用系统日志工具进行记录
SYSLOG=yes

以下是运行 Ultrix V4.2A 计算机的 sulog 示例:

BADSU: han /dev/ttyqc Wed Mar  8 16:36:29 1995
BADSU: han /dev/ttyqc Wed Mar  8 16:36:40 1995
BADSU: rhb /dev/ttyvd Mon Mar 13 11:48:58 1995
SU: rhb /dev/ttyvd Mon Mar 13 11:49:39 1995

从这个示例可以看出,用户 han 可能不知道超级用户密码,而用户 rhb 第一次可能输错密码,第二次输入正确。扫描 sulog 是了解用户是否试图通过搜索密码成为超级用户的好方法。如果发现某个不应访问超级用户账户的用户有多次 su 尝试,可询问其情况。但要注意,如果用户获得超级用户权限,可能会删除其失败的 su 尝试记录。因此,可将失败的 su 尝试记录到硬拷贝打印机或远程安全计算机上。

  • xferlog 日志文件
    许多 FTP 服务器能够记录每个传输的文件,默认日志文件名为 xferlog ,默认位置在 /var/log /var/adm 目录。华盛顿大学 FTP 服务器上该文件的位置由 pathnames.h 文件中的配置变量 _PATH_XFERLOG 定义。每个传输文件在 xferlog 中记录的信息如下:
    • 传输日期和时间
    • 发起传输的远程主机名
    • 传输文件的大小
    • 传输文件的名称
    • 传输文件的模式(a 表示 ASCII;b 表示二进制)
    • 特殊操作标志(C 表示压缩;U 表示未压缩;T 表示 tar 存档)
    • 传输方向(o 表示传出,i 表示传入)
    • 登录用户的类型(a 表示匿名用户;g 表示访客;r 表示通过密码认证的本地用户)

以下是华盛顿大学 FTP 服务器 xferlog 的示例:

Sat Mar 11 20:40:14 2000 329 CU-DIALUP-0525.CIT.CORNELL.EDU 426098 /pub/simson/scans/91.Globe.Arch.ps.gz b _ o a ckline@tc.cornell.edu ftp 0 *
Mon Mar 13 01:32:29 2000 9 slip-2-36.ots.utexas.edu 14355 /pub/simson/clips/95.Globe.IW.txt a _ o a mediaman@mail.utexas.edu ftp 0 *
Mon Mar 13 23:30:42 2000 1 mac 52387 /u/beth/.newsrc a _ o r bethftp 0 *
Tue Mar 14 00:04:10 2000 1 mac 52488 /u/beth/.newsrc a _ i r bethftp 0 *

最后两条记录是由在 Macintosh 计算机上运行 Newswatcher 网络新闻程序的用户生成的。23:30 时,Newswatcher 检索用户的 .newsrc 文件;次日 00:04,该文件被发送回去。

  • access_log 日志文件
    如果运行 Apache 网络服务器,可通过检查 access_log 日志文件来确定哪些站点与系统进行了联系,以及哪些文件被下载。Apache 服务器允许指定 access_log 文件的保存位置,在许多系统中,它位于 /usr/local/apache/logs ,在其他系统中位于 /var/log/httpd 。典型日志文件的每行包含以下信息:
    • 发起传输的远程计算机名称
    • 如果远程主机运行 identd,则为远程登录名;否则为 “-”
    • 如果使用用户认证,则为远程用户名;否则为 “-”
    • 传输发起时间(月中的日期、月份、年份、小时、分钟、秒和时区偏移)
    • 执行的 HTTP 命令(通常是 GET)
    • 返回的状态码
    • 传输的字节数

以下是一些示例日志条目:

port15.ts1.msstate.edu - - [09/Apr/2000:11:55:37 -0400] "GET /simson HTTP/1.0" 302 -
ayrton.eideti.com - - [09/Apr/2000:11:55:37 -0400] "GET /Unix-haters-title.gif HTTP/1.0" 200 49152
port15.ts1.msstate.edu - - [09/Apr/2000:11:55:38 -0400] "GET /simson/ HTTP/1.0" 200 1248
mac-22.cs.utexas.edu - - [09/Apr/2000:14:32:50 -0400] "GET /Unix-haters.html HTTP/1.0" 200 2871
204.32.162.175 - - [09/Apr/2000:14:33:21 -0400] "GET /wedding/slides/020.jpeg HTTP/1.0" 200 9198
mac-22.cs.utexas.edu - - [09/Apr/2000:14:33:53 -0400] "GET /Unix-haters-title.gif HTTP/1.0" 200 58092

有许多程序可用于分析网络服务器日志,例如 analog 。该程序可告诉你有多少人访问了服务器、他们来自哪里、哪些文件最受欢迎以及其他有趣的统计信息。更多关于 analog 的信息可查看 http://www.analog.cx 。此外,Apache 还会记录网络操作导致的错误,默认错误日志名为 error_log ,与 access_log 存储在一起。

2. 网络服务日志记录

部分版本的 inetd Internet 服务守护进程有 -t (跟踪)选项,可用于记录传入的网络服务。要启用 inetd 日志记录,需找到启动 inetd 的启动文件并添加 -t 选项。例如,在 Solaris 2.5.x 下, inetd /etc/rc2.d/S72inetsvc 文件中通过以下行启动:

#
# 以“独立”模式(-s 标志)运行 inetd,这样它就不必服从 SAF 的控制。我们为什么要让他们更改 inetd 呢?
#
/usr/sbin/inetd -s

要启用传入 TCP 连接的日志记录,最后一行应改为:

/usr/sbin/inetd -t -s

日志将出现在 /var/adm/messages 中。例如:

Jan  3 10:58:57 vineyard.net inetd[4411]: telnet[4413] from 18.85.0.2
Jan  3 11:00:38 vineyard.net inetd[4411]: finger[4444] from 18.85.0.2 4599
Jan  3 11:00:42 vineyard.net inetd[4411]: systat[4446] from 18.85.0.2 4600

如果 inetd 版本不支持日志记录(即使支持),可考虑使用 tcpwrapper

3. 其他日志

Unix 系统上还有许多其他可能的日志文件,这些文件可能来自第三方软件。Usenet 新闻程序、DNS 名称服务器、数据库应用程序和许多其他程序通常会生成日志文件,以显示使用情况并指示潜在问题,应定期监控这些文件。建议将所有这些日志放在同一目录中,如果无法做到,可使用符号链接将日志文件的硬编码位置链接到公共目录中的新日志文件(假设系统支持符号链接),这样便于编写脚本监控文件并跟踪系统上的日志文件。

4. 设计全站日志策略
  • 日志记录位置
    由于系统日志工具提供了多种不同的日志记录选项,这使得各个站点在设置自己的日志记录时具有灵活性。不同类型的消息可以用不同的方式处理。例如,大多数用户不希望被大多数日志消息打扰,而 auth.crit 消息应显示在系统管理员的屏幕上(除了记录在文件中)。以下是几种不同的方法:
    • 记录到打印机 :如果有一台打印机专门用于系统日志记录,可将其连接到终端端口,并在 /etc/syslog.conf 文件中指定该端口名称。例如,将专用打印机连接到 /dev/ttya 端口,可通过在 syslog.conf 文件中插入以下行来记录授权系统的所有消息(如无效密码):
auth.*                 /dev/ttya

建议使用逐行显示打印机(如点阵打印机),而不是激光打印机,因为逐行显示打印机可让你在写入日志时逐行查看,而不是等到整页完成。但要注意,不要仅将日志记录到硬拷贝设备,否则如果打印机卡纸、缺纸、色带断裂或有人偷走打印输出,将丢失有价值的信息。
- 跨网络记录 :如果有多台机器通过 TCP/IP 网络连接,可将所有机器的事件记录到一台(或多台)日志机器上。如果该机器安全,即使其他机器的安全受到破坏,日志文件也无法被更改。要将一台计算机的所有消息发送到另一台计算机,只需在第一台计算机的 syslog.conf 文件中插入以下行:

*.*               @loghost

此功能可能会产生大量网络流量,因此应将日志限制为仅 “重要” 消息。例如,以下日志文件仅将硬件和安全相关消息发送到远程日志主机,但在本地主机上保留一些副本用于调试:

*.err;kern.debug;auth.notice /dev/console
daemon,auth.notice           /var/adm/messages
lpr.*                        @loghost1,@loghost2
auth.*                       @loghost1,@loghost2
*.emerg                      @loghost1,@loghost2
*.alert                      @loghost1,@loghost2
mark.*                       /dev/console

记录到另一台主机可增加整体系统安全性,但如果仅通过网络将日志记录到单台主机,该主机将成为单点故障。还可使用非 Unix 机器作为日志主机,如 DOS 或运行 OS 8 或 9 的 Macintosh 机器,以进一步保护日志。
- 全面记录 :如今磁盘价格便宜,资源充足且人员训练有素的站点有时会选择记录所有可能有用的信息,并将其记录在多个不同的位置。除了为不同类型的消息设置单独的日志文件外,许多系统管理员还会配置系统日志将所有级别的消息记录到单个文件中,以提供所有记录事件的时间顺序记录。网络上的工作站可以创建自己的系统日志事件日志文件,并将所有日志消息发送到多个不同的日志主机(可能在不同的网络上)。多位置记录的优点是使攻击者更难擦除其存在的证据,也便于验证日志条目。但如果不检查多个日志文件,它们将毫无用处;如果不进行清理,它们可能会变得非常大,从而对操作产生负面影响。

常见日志消息含义
程序 消息 含义
halt halted by 使用 /etc/halt 命令关闭系统
login ROOT LOGIN REFUSED ON [FROM ] root 尝试登录到不安全的终端
login REPEATED LOGIN FAILURES ON [FROM ] 有人尝试以 身份登录并多次输入错误密码
reboot rebooted by 使用 /etc/reboot 命令重启系统
su BAD SU on 有人尝试切换到超级用户但未提供正确密码
shutdown reboot, halt, or shutdown by on 使用 /etc/shutdown 命令重启、停止或关闭系统
程序 消息 含义
date date set by 更改了系统日期
login ROOT LOGIN [FROM ] root 登录
su on 使用 su 命令成为超级用户
getty /bin/getty 无法打开
5. 手写日志

出于安全原因,有些信息不应被记录。例如,虽然应记录失败的密码尝试,但不应记录失败尝试中使用的密码,因为用户经常会输错自己的密码,记录这些错误密码会帮助攻击者破解用户账户。一些系统管理员认为,在失败的登录尝试中也不应记录账户名,特别是当用户输入的账户不存在时。因为用户有时会在被提示输入用户名时输入密码,如果记录了无效账户,攻击者可能会利用这些日志推断人们的密码,这也是 auth 工具消息有时会记录到只有 root 可读的特殊日志文件中的原因之一。

手写日志是另一种有助于安全的日志记录方式,它由你和你的员工完成,而不是由计算机完成。应保留一本日志簿,记录当天的活动。日志簿应纸质保存,并放在物理安全的位置,因为纸质记录即使超级用户也无法篡改,能提供几乎防篡改的重要信息记录。

手写日志相对于在线日志有以下优点:
- 可以记录多种不同类型的信息,例如计算机不会记录可疑的电话或炸弹威胁,但你可以(并且应该)在日志簿中记录这些事件。
- 如果系统停机,仍可访问纸质日志,因此这是保存账户号码和重要电话号码(如现场服务、服务联系人以及自己关键人员的电话号码)的好地方。
- 如果磁盘遭遇灾难,可从日志簿中的纸质记录中重建一些重要信息。
- 如果日常都保留日志簿,并将异常日志的打印副本记录其中,这些信息在法庭诉讼中更有可能被作为商业记录接受,这在需要进行刑事或民事诉讼时非常重要。
- 陪审团更容易相信纸质日志的真实性,而不是计算机日志。
- 日志簿中保存重要信息的副本,可避免在所有工作站的磁盘上搜索特定信息。
- 如果其他工具失效或可能被破坏,将同一文件的旧打印件和新打印件放在一起对着强光查看,可能是快速发现更改的方法。

应将日志簿视为实验室笔记本,只不过实验室是你自己的计算机中心。每页应编号,不要撕页,用墨水书写,不要用铅笔。如果需要划掉某些内容,画一条单线,但不要使划掉的文本不可读,同时保留旧的日志簿。

手写日志的最大问题是需要花费时间来保持更新,这些工作无法通过 shell 脚本自动化。不幸的是,这也是许多管理员不愿保留日志的主要原因,特别是在有数百(或数千)台机器的站点,每台机器可能都需要自己的日志簿。建议发挥创造力,找到一种平衡,在保证良好记录的同时,减少维护多本日志簿的繁琐工作。例如,压缩信息并为每组机器保留日志,可在减少开销的同时获得(几乎)相同的好处。

日志簿基本上有两种类型:站点级日志和机器级日志,以下是可能需要在每种类型中保留的信息:
- 站点级日志
- 异常和活动报告
- 停电的时间、日期和持续时间,随着时间的推移,这些信息可能有助于证明使用不间断电源的合理性,或追踪频繁问题的原因。
- 警报系统的维护和测试情况。
- 警报系统的触发情况。
- 灭火系统的维护和测试情况。
- 服务人员(包括电话公司)的访问情况。
- 具有特权访问权限(或任何访问权限)的员工的雇佣和离职日期。
- 信息材料
- 重要人员的联系信息,包括公司法律顾问、执法人员、现场服务人员以及可能参与任何事件的其他人员。

系统日志管理与安全策略全解析

6. 站点级日志与机器级日志详细解析
  • 站点级日志
    站点级日志涵盖的信息对整个运营和所有机器都有重要作用。我们可以将其细分为异常和活动报告以及信息材料两部分。

异常和活动报告记录的内容至关重要。停电信息,如时间、日期和持续时间,长期积累下来,能为是否需要安装不间断电源提供有力依据,也有助于排查频繁出现问题的根源。对于警报系统和灭火系统,其维护、测试以及触发情况的记录,能确保这些关键安全设施时刻处于良好的运行状态。服务人员的来访记录可以让我们清晰了解外部人员对系统的操作情况。而员工的雇佣和离职日期记录,特别是涉及有特权访问权限的员工,能有效防范内部人员可能带来的安全风险。

信息材料部分则为应对各种突发情况提供了可靠的支持。重要人员的联系信息,包括公司法律顾问、执法人员、现场服务人员等,在遇到各类事件时,能让我们迅速与相关人员取得联系,及时解决问题。

  • 机器级日志
    机器级日志主要聚焦于每台机器的具体运行状况。它可以记录机器的启动和关闭时间,这有助于分析机器的使用频率和运行时长,判断是否存在异常的开关机行为。硬件故障信息的记录,如硬盘故障、内存错误等,能让我们及时发现并解决硬件问题,避免影响机器的正常运行。软件安装和卸载记录则能帮助我们掌握机器上软件的使用情况,防止未经授权的软件安装带来安全隐患。
7. 日志管理的最佳实践
  • 定期审查日志
    定期审查日志是保障系统安全的重要环节。通过定期查看日志,我们可以及时发现异常活动,如多次失败的登录尝试、异常的文件访问等。建议每周或每月进行一次全面的日志审查,具体频率可根据系统的安全级别和使用情况进行调整。在审查过程中,要重点关注关键日志文件,如 access_log error_log 等,仔细分析其中的异常记录。

  • 备份日志文件
    日志文件是系统运行和安全状况的重要记录,因此定期备份日志文件至关重要。可以使用自动化脚本定期将日志文件备份到外部存储设备或远程服务器。备份的频率应根据日志文件的重要性和变化频率来确定,一般建议每天或每周进行一次备份。同时,要确保备份数据的安全性,可采用加密等手段对备份文件进行保护。

  • 设置日志保留期限
    合理设置日志保留期限可以避免日志文件占用过多的存储空间。不同类型的日志文件可以设置不同的保留期限,例如,安全相关的日志文件可以保留较长时间,以便在需要时进行追溯和调查;而一些临时的操作日志可以保留较短时间。一般来说,安全日志可以保留 6 个月至 1 年,普通操作日志可以保留 1 个月至 3 个月。

8. 日志分析工具的选择与使用
  • 常见日志分析工具
    市面上有许多优秀的日志分析工具,如 analog Splunk ELK Stack 等。 analog 是一款轻量级的日志分析工具,操作简单,能快速生成网站访问的统计信息,如访问量、访问来源、热门文件等。 Splunk 则是一款功能强大的商业日志分析工具,具有强大的搜索和分析功能,能处理大规模的日志数据,并提供直观的可视化界面。 ELK Stack 由 Elasticsearch、Logstash 和 Kibana 组成,是一套开源的日志分析解决方案,能实现日志的收集、存储、搜索和可视化展示。

  • 如何选择合适的工具
    选择日志分析工具时,需要考虑多个因素。首先是日志数据的规模,如果日志数据量较小,可以选择轻量级的工具,如 analog ;如果数据量较大,则需要选择能处理大规模数据的工具,如 Splunk ELK Stack 。其次是功能需求,如果只需要简单的统计分析功能, analog 就可以满足;如果需要复杂的搜索、关联分析和可视化展示功能,则需要选择 Splunk ELK Stack 。最后是成本因素,商业工具如 Splunk 通常需要付费使用,而开源工具如 ELK Stack 则可以免费使用,但需要一定的技术能力进行部署和维护。

  • 使用示例(以 analog 为例)
    analog 的使用非常简单,以下是基本的操作步骤:
    1. 安装 analog :根据不同的操作系统,使用相应的包管理工具进行安装。例如,在 Ubuntu 系统上,可以使用以下命令进行安装:

sudo apt-get install analog
  1. 配置 analog :编辑 analog 的配置文件,指定要分析的日志文件路径和输出报告的格式。配置文件通常位于 /etc/analog.conf
  2. 运行 analog :在终端中输入以下命令运行 analog
analog /path/to/access_log -o /path/to/output/report.html

其中, /path/to/access_log 是要分析的日志文件路径, /path/to/output/report.html 是输出报告的文件路径。
4. 查看报告:打开生成的 HTML 报告文件,即可查看网站访问的统计信息。

9. 日志安全的重要性及保障措施
  • 日志安全的重要性
    日志文件记录了系统的各种操作和事件,包含了大量的敏感信息,如用户登录信息、文件访问记录等。如果日志文件被篡改或泄露,可能会导致系统安全受到威胁,甚至造成数据泄露和业务损失。因此,保障日志文件的安全至关重要。

  • 保障日志安全的措施

    • 访问控制 :对日志文件设置严格的访问权限,只有授权人员才能访问。可以通过设置文件的读写权限和用户组来实现访问控制。例如,将 auth 相关的日志文件设置为只有 root 用户可读,防止普通用户查看敏感信息。
    • 加密日志文件 :对日志文件进行加密可以有效防止日志文件在传输和存储过程中被窃取或篡改。可以使用加密算法对日志文件进行加密,如 AES 加密算法。在传输日志文件时,使用安全的传输协议,如 SSL/TLS,确保数据的安全性。
    • 监控日志文件的完整性 :定期检查日志文件的完整性,确保日志文件没有被篡改。可以使用哈希算法计算日志文件的哈希值,并将其与之前记录的哈希值进行比较。如果哈希值不一致,则说明日志文件可能被篡改。
10. 总结

日志管理是系统安全和运营的重要组成部分。通过合理设置日志记录位置、选择合适的日志分析工具、定期审查和备份日志文件以及保障日志安全等措施,可以有效提高系统的安全性和可靠性。同时,手写日志作为一种补充手段,能记录计算机无法记录的重要信息,为系统安全提供额外的保障。在实际操作中,要根据系统的特点和需求,制定适合的日志管理策略,确保系统的稳定运行。

附录:相关流程图

graph LR
    A[系统日志管理] --> B[特定程序日志文件]
    A --> C[网络服务日志记录]
    A --> D[其他日志]
    A --> E[设计全站日志策略]
    A --> F[手写日志]
    B --> B1[su日志]
    B --> B2[xferlog日志文件]
    B --> B3[access_log日志文件]
    C --> C1[inetd日志记录]
    C --> C2[tcpwrapper使用]
    E --> E1[日志记录位置]
    E1 --> E11[记录到打印机]
    E1 --> E12[跨网络记录]
    E1 --> E13[全面记录]
    F --> F1[站点级日志]
    F --> F2[机器级日志]

附录:日志管理操作步骤总结

操作 步骤
启用 inetd 日志记录 1. 找到启动 inetd 的启动文件;2. 添加 -t 选项;3. 日志将出现在 /var/adm/messages
记录到打印机 1. 将打印机连接到终端端口;2. 在 /etc/syslog.conf 文件中指定端口名称;3. 插入相应记录行
跨网络记录 1. 在 syslog.conf 文件中插入 *.* @loghost ;2. 可根据需求限制日志为重要消息
使用 analog 分析日志 1. 安装 analog ;2. 配置 analog ;3. 运行 analog 并指定日志文件和输出报告路径;4. 查看报告
备份日志文件 1. 编写自动化脚本;2. 定期将日志文件备份到外部存储设备或远程服务器
设置日志保留期限 1. 根据日志类型确定保留期限;2. 定期清理过期日志文件
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值