日志是查看系统运行情况的一个重要部分,在应急响应中,服务器的日志文件就扮演了一个特别重要的作用,管理员根据日志可以判断一些恶意的攻击行为,以此来将一些IP拉入黑名单或者对攻击进行溯源等等。为防止日志被恶意删除的行为,日志的备份就显得特别重要。
服务端:负责接收其他客户端发来的日志,并做好备份保存。
打开rsyslog的配置文件。
vim /etc/rsyslog.conf
选择接收的传输协议(UDP或者TCP)和端口号(默认514),我选择了TCP。
默认的存储文件位置是/var/log/messages
不过这样会把本机和客户机的日志都放在一起,可以单独新建一个文件进行存放,在最下方添加:
:fromhost-ip,isequal,"192.168.178.129" /var/log/client/client.log
意思是当主机IP为192.168.178.129时,日志文件保存到 /var/log/client/client.log
最后重启服务:
systemctl restart rsyslog
同样先打开rsyslog的配置文件。
复制第90行的格式,添加一条设置:
*.* @@192.168.178.10:514
#这一句表达的意思是将所有类型和等级的日志都用TCP服务发给.10主机的514号端口
这里详细解释一下各个符号的含义:
各个位分别表示日志类型、连接符号、日志等级、处理方式。
日志类型:
auth –pam产生的日志
authpriv –ssh,ftp等登录信息的验证信息
cron –时间任务相关
kern –内核
lpr –打印
mail –邮件
mark(syslog)–rsyslog服务内部的信息,时间标识
news –新闻组
user –用户程序产生的相关信息
uucp –unix to unix copy, unix主机之间相关的通讯
local 1~7 –自定义的日志设备
连接符号:
.xxx: 表示大于等于xxx级别的信息
.=xxx:表示等于xxx级别的信息
.!xxx:表示在xxx之外的等级的信息
日志级别:
级别从低到高,记录的信息越来越少
debug –有调式信息的,日志信息最多
info –一般信息的日志,最常用
notice –最具有重要性的普通条件的信息
warning –警告级别
err –错误级别,阻止某个功能或者模块不能正常工作的信息
crit –严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert –需要立刻修改的信息
emerg –内核崩溃等严重信息
none –什么都不记录
处理方式:
/var/log/file 发送到日志文件
@@(IP) 发送到TCP server
@(IP) 发送到UDP server
user1,user2 发送到在线用户user1,user2
~ 丢弃该日志
^/path/script 执行的脚本,^后面跟可以执行的脚本,日志内容可以作为脚本的第一个参数,可以用来触发告警
设置完成后,保存退出,重启服务。
在客户端输入命令logger,向日志文件写入内容:
logger "Rdrug"
查看日志文件(tail -f表示查看最后十行数据):
tail -f /var/log/messages
tail -f /var/log/client/client.log
刚开始自己实验时,忘记开放514端口,导致日志同步一直不成功,而且linux系统在设置完服务之后一定要重启生效。
如果你是在生产环境下,可不能直接关闭防火墙,应根据需要单独放开某个端口。
这里放上防火墙的一些端口配置命令
查看已开放的端口
firewall-cmd --list-ports
开放端口(开放后需要要重启防火墙才生效)
firewall-cmd --zone=public --add-port=3338/tcp --permanent
关闭端口(关闭后需要要重启防火墙才生效)
firewall-cmd --zone=public --remove-port=3338/tcp --permanent
重启防火墙
firewall-cmd --reload