【Linux系统】第12节 Linux系统日志管理及日志的异地备份

1 日志概述

日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。日志主要的功能有:审计和监测。他还可以实时的监测系统状态,监测和追踪侵入者等等。

1.1 日志的分类

对于linux系统,日志一般存放在/var/log目录下。打开CentOS终端编辑器,输入cd /var/log进入到log目录下,可以查看有哪些日志文件。
在这里插入图片描述
日志文件大致可以分为三类:

  • 1)系统日志;
  • 2)登录日志;
  • 3)程序日志。

不同版本的系统对各日志存放路径及文件名不尽相同,Linux系统常用日志文件及其存放信息如下:

  • /var/log/messages:记录linux内核消息及各种应用程序的公共日志消息,包括启动、I/O错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获取相关的时间记录信息。使用命令 cat /var/log/messages 查看系统日志内容如下。
    在这里插入图片描述
  • /var/log/secure:安全相关,主要是用户认证,如登录 、创建和删除账号 、sudo等。使用命令 cat /var/log/secure 查看系统日志内容如下。
    在这里插入图片描述
  • /var/log/maillog:邮件相关的日志信息。
  • /var/log/boot.log:系统启动日志。能看到启动流程。
  • /var/log/cron:计划任务日志。会记录crontab计划任务的创建、执行信息。
  • /var/log/dmesg:硬件设备信息(device)。纯文本,也可以用dmesg命令查看。
  • /var/log/yum.log:yum软件的日志。记录yum安装、卸载软件的记录。
  • /var/log/lastlog:用来记录用户最后登录事件的日志。用lastlog查看(二进制日志文件)
  • /var/log/btmp:登录失败的信息(bad)。用lastb查(二进制日志文件)
  • /var/log/wtmp:该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件,用last查(二进制日志文件)。
  • /var/log/spooler:与UUCP和news设备相关的日志信息。

1.2 日志管理服务 rsyslog

那么日志为什么会记录在上述1.1节中的那些文件中,什么样的日志就会被记录呢?这些都是根据日志管理服务配置文件rsyslog.conf来进行管理的。那么下面将主要介绍下日志管理服务配置文件rsyslog.conf。
(1)作用:主要用来管理日志采集。

(2)存放路径:日志管理服务配置文件文件存放在/etc目录下。

(3)查看:使用命令 vim /etc/rsyslog.conf 打开日志管理配置文件并编辑。配置文件中主要有以下内容:

  • 1)规定是否开放TCP或UDP以及其端口号;
  • 2)规定全局指示,包括时间戳、对所有日志设置默认权限、指定脱机与状态文件目录、指定所有配置文件所在目录/etc/rsyslog.d/。
  • 3)规定哪些服务哪些级别的日志保存到哪个文件中。
    在这里插入图片描述

(4)具体内容如下:

# rsyslog configuration file

# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html

#### MODULES ####

# The imjournal module bellow is now used as a message source instead of imuxsock.
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
#$ModLoad imklog # reads kernel messages (the same are read from journald)
#$ModLoad immark  # provides --MARK-- message capability

# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514

# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514


#### GLOBAL DIRECTIVES ####

# Where to place auxiliary files
$WorkDirectory /var/lib/rsyslog

# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on

# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf

# Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
$OmitLocalLogging on

# File to store the position in the journal
$IMJournalStateFile imjournal.state


#### RULES ####

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog


# Log cron stuff
cron.*                                                  /var/log/cron

# Everybody gets emergency messages
*.emerg                                                 :omusrmsg:*

# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log


# ### begin forwarding rule ###
# The statement between the begin ... end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#$ActionQueueFileName fwdRule1 # unique name prefix for spool files
#$ActionQueueMaxDiskSpace 1g   # 1gb space limit (use as much as possible)
#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
#$ActionQueueType LinkedList   # run asynchronously
#$ActionResumeRetryCount -1    # infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ###

(5)rsyslog.conf文件的解读:#开头的为注释,黑色的为有效行。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
tips:
当.后面写 none时代表什么都不记录

1.3 日志事件级别划分

CentOS系统中,可以查询命令 man rsyslog.conf 获得日志事件级别划分内容,在Kali中暂未找到相关内容。日志事件级别如下(以最不严重到最严重的排列顺序):

  • debug:有调试信息的,日志通信最多
  • info:一般信息日志,最常用
  • notice:最具有重要性的普通条件的信息
  • warning(warn):警告级别
  • err(error):错误级别,阻止某个功能或者模块不能正常工作的信息
  • crit:严重级别,阻止整个系统或者整个软件不能正常工作的信息
  • alert:需要立刻修改的信息
  • emerg(panic):内核崩溃等重要信息
    在这里插入图片描述

2 日志异地备份

日志的异地备份也称为日志服务器的建立。当黑客通过密码爆破远程登录某靶机,黑客可能首先会清理登录日志,导致管理员很难发现。因此,对于日志,进行异地备份是非常重要的。

2.1 远程登录服务器并删除日志

(1)首先在CentOS上开启跟踪日志,输入命令tail -f /var/log/secure
(2)攻击者可以通过Telnet或SSH等方式远程登录服务器;
(3)登录后将其登录日志删除,如采用 echo “” > /var/log/secure 等命令可以清空日志。
(4)服务器管理员无法根据日志内容,判断主机是否有被远程操控。

2.2 日志的异地备份/日志服务器的建立

(1)对于需要备份日志的服务器,如WEB服务器等,需要完成以下操作:

  • 在/etc/rsyslog.conf中定义什么服务什么级别的日志要发,以什么协议发给哪个IP哪个端口。如在/etc/rsyslog.conf文件中的“begin forwarding rules模块”中添加代码authpriv.* @@192.168.1.1:514表示将登录服务的所有级别日志以TCP协议发给192.168.1.1的514端口,其中@@表示以TCP协议发。
  • 关闭防火墙对数据的拦截或加密,如果不关闭,很可能服务器与日志备份服务之间的通信会出问题。
  • 临时关闭selinux(加强型防火墙)服务。输入命令setenforce 0关闭该服务,不然可能系统会对日志文件强制加锁,导致日志发不出去
  • 重启服务 service rsyslog restart 。由于/etc/rsyslog.conf文件不会立即生效,需要重启下服务,才能生效。

tips:
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。
setenforce是Linux的selinux防火墙配置命令 执行setenforce 0 表示临时关闭selinux防火墙。
setenforce命令是单词set(设置)和enforce(执行)连写,另一个命令getenforce可查看selinux的状态

(2)对于日志备份服务器,需要完成以下操作:

  • 在/etc/rsyslog.conf中定义以什么协议接收哪个端口日志、定义接收谁的日志存放到哪。
    ①首先在/etc/rsyslog.conf文件中的“MODULES模块”中将下图两行代码的注释去掉,这两行代码定义了若别人给我发数据时用udp协议及端口号514接收。
    ②在/etc/rsyslog.conf文件中的“begin forwarding rules模块”增加代码 :fromhost-ip, isequal, “172.16.1.254” /var/log/client/172.16.1.254.log,接收到来自主机172.16.1.254的数据时存入/var/log/client/172.16.1.254.log中。
    在这里插入图片描述

  • 重启服务: service rsyslog restart

  • 查询开启端口: ss -antpl | grep 514 ,其中ss表示查询已开启端口号、a表示所有、n表示不用尝试解析服务名称、t表示TCP协议、p表示process进程、l表示监听状态、grep 514表示按514过滤。(也可以采用netstat -antpl | grep 514命令)。

3 总结

(1)掌握各种主要日志的存放位置;
(2)能够读懂日志管理服务配置文件rsyslog.conf,并了解日志管理服务配置文件rsyslog.conf的简单配置;
(3)了解日志的级别;
(4)了解日志异地备份的方法。

参考文章

[1]《Linux系统日志管理》
[2] 《Kali Linux系统日志管理及日志备份服务器》
[3] 《setenforce用法》
[4] 视频传送门

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值