笔记整理1.14-计划任务-日志分析-自定义日志-切割日志-收集日志
vi /etc/crontab #系统级别的计划任务
[root@node62 ~]# vi /etc/cron
cron.d/ cron.deny cron.monthly/ cron.weekly/
cron.daily/ cron.hourly/ crontab
cron.d/ #是系统自动定期需要做的任务,但是又不是按小时,按天,按星期,按月来执行的,那么就放在这个目录下面。
cron.deny #控制用户是否能做计划任务的文件;
cron.monthly/ #每月执行的脚本;
cron.weekly/ #每周执行的脚本;
cron.daily/ #每天执行的脚本;
cron.hourly/ #每小时执行的脚本;
crontab #主配置文件 也可添加任务;
每天晚上21:00 重启apache
0 21 * * * /etc/init.d/httpd restart
每月1、10、22日的4 : 45重启apache。
45 4 1,10,22 * * /etc/init.d/httpd restart
每月1到10日的4 : 45重启apache。
45 4 1-10 * * /etc/init.d/httpd restart
每隔两天的上午8点到11点的第3和第15分钟重启apach
3,15 8-11 */2 * * /etc/init.d/httpd restart
晚上11点到早上7点之间,每隔一小时重启apach
0 23-7/1* * */etc/init.d/apach restart
周一到周五每天晚上 21:15 寄一封信给 root@panda:
15 21 * * 1-5 mail -s "hi" root@panda < /etc/fstab
互动:crontab不支持每秒。 每2秒执行一次脚本,怎么写?
在脚本的死循环中,添加命令 sleep 2 ,执行30次自动退出,然后添加,计划任务:
* * * * * /back.sh
案例要求:
每天2:00备份/etc/目录到/tmp/backup下面
将备份命令写入一个脚本中
每天备份文件名要求格式: 2017-08-19_etc.tar.gz
在执行计划任务时,不要输出任务信息
存放备份内容的目录要求只保留三天的数据
====================================================
mkdir /tmp/backup
tar zcf etc.tar.gz /etc
find /tmp/backup -name “*.tar.gz” -mtime +3 -exec rm -rf {}\;
============================================================
[root@xuegod63 ~]# crontab -l 13 21 * * * echo "xuegod1707" > /tmp/a.txt 0 22 * * * /root/backup.sh & > /dev/null [root@xuegod63 ~]# cat backup.sh #!/bin/bash find /tmp/backup -name "*.tar.gz" -mtime +3 -exec rm -f {}\; #find /tmp/backup -name "*.tar.gz" -mtime +3 -delete #find /tmp/backup -name "*.tar.gz" -mtime +3 |xargs rm -f tar zcf /tmp/backup/`date +%F`_etc.tar.gz /etc
注:工作中备份的文件不要放到/tmp,因为过一段时间,系统会清空备/tmp目录
如何排查所有用户的计划任务? 注:所有用户的计划任务,都会在/var/spool/cron/下产生对应的文件 [root@xuegod63 ~]# ll /var/spool/cron/
total 8
-rw------- 1 root root 42 Nov 12 10:11 bin
-rw------- 1 root root 19 Nov 12 10:06 root
所以后期可以使用这一招排查,黑客是否在你的机器中安装了定时任务
2.日志文件目录
/var/log/message 大多数系统日志消息记录在此处。有也例外的:如与身份验证,电子邮件处理相关的定期作业任务等 /var/log/secure 安全和身份验证相关的消息和登录失败的日志文件。 ssh远程连接产生的日志 /var/log/maillog 与邮件服务器相关的消息日志文件 /var/log/cron 与定期执行任务相关的日志文件 /var/log/boot.log 与系统启动相关的消息记录 /var/log/dmesg 与系统启动相关的消息记录
grep Failed /var/log/secure|awk '{print $11}'|uniq -c
last
/var/log/wtmp
last -f /var/log/wtmp
lastb
如果发现/var/log/btmp日志文件比较大,大于1M,就算大了,就说明很多人在暴力破解ssh服务,此日志需要使用lastb程序查看
lastb | awk '{ print $3}' | sort | uniq -c | sort -n #查看暴力破解的ip
iptables -A INPUT -i eth0 -s 192.168.1.63 -j DROP
分类 级别
日志的分类:
daemon 后台进程相关
kern 内核产生的信息
lpr 打印系统产生的
authpriv 安全认证
cron 定时相关
mail 邮件相关
syslog 日志服务本身的
news 新闻系统
local0~7 自定义的日志设备
local0-local7 8个系统保留的类, 供其它的程序使用或者是用户自定义
7 debug 信息对开发人员调试应用程序有用,在操作过程中无用
6 info 正常的操作信息,可以收集报告,测量吞吐量等
5 notice 注意,正常但重要的事件,
4 warning 警告,提示如果不采取行动。将会发生错误。比如文件系统使用90%
3 err 错误,阻止某个模块或程序的功能不能正常使用
2 crit 关键的错误,已经影响了整个系统或软件不能正常工作的信息
1 alert 警报,需要立刻修改的信息
0 emerg 紧急,内核崩溃等严重信息
日志的配置文件信息:
编辑配置文件 vim /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
“- ”号: 邮件的信息比较多,现将数据存储到内存,达到一定大小,全部写到硬盘.有利于减少I/O进程的开销
数据存储在内存,如果关机不当数据消失
. info 大于等于info级别的信息全部记录到某个文件
.=级别 仅记录等于某个级别的日志
例:.=info 只记录info级别的日志
.! 级别 除了某个级别意外,记录所有的级别信息
例.!err 除了err外记录所有
.none 指的是排除某个类别 例: mail.none 所有mail类别的日志都不记录
3.自定义ssh日志
[root@xuegod63 ~]# vim /etc/rsyslog.conf #以73行下,插入以下红色标记内容
73 local7.* /var/log/boot.log
74 local0.* /var/log/sshd.log
注:把local0类别的日志,保存到 /var/log/sshd.log路径
定义ssh服务的日志类别为local0,编辑sshd服务的主配置文件
[root@xuegod63 log]# vim /etc/ssh/sshd_config #插入
SyslogFacility local0
改:32 SyslogFacility AUTHPRIV
为:32 SyslogFacility local0
[root@xuegod63 log]# systemctl restart rsyslog
[root@xuegod63 log]# systemctl restart sshd
vim /etc/logrotate.conf #日志切割文件
weekly 每周执行回滚,或者说每周执行一次日志回滚
rotate:表示日志切分后历史文件最多保存离现在最近的多少份 旋转
create :指定新创建的文件的权限与所属主与群组
dateext :使用日期为后缀的回滚文件#可以去/var/log目录下看看
/var/log/btmp { 指定的日志文件的名字和路径
missingok 如果文件丢失,将不报错
monthly 每月轮换一次
create 0664 root utmp 设置btmp这个日志文件的权限,属主,属组
minsize 1M 文件超过1M进行回滚,所以大家要知道它不一定每个月都会进行分割,要看这个文件大小来定
rotate 1 日志切分后历史文件最多保存1份,不含当前使用的日志
16.3.3 实战-使用 logrotate 进行ssh日志分割
定义了ssh日志存储在/var/log/sshd的基础上执行:
[root@xuegod63 ~]# vim /etc/logrotate.d/sshd #创建一个sshd配置文件,插入以一下内容:
/var/log/sshd.log {
missingok
weekly
create 0600 root root
minsize 1M
rotate 3
}
systemctl restart rsyslog
logrotate -d /etc/logrotate.d/sshd #预演,不实际轮循
logrotate -vf /etc/logrotate.d/sshd #强制轮循
-v 显示指令执行过程
-f 强制执行
[root@xuegod63 ~]# ls /var/log/sshd*
/var/log/sshd.log /var/log/sshd.log.1 /var/log/sshd.log.2 /var/log/sshd.log.3
[root@xuegod63 httpd]# vim /etc/logrotate.d/nginx
/usr/local/nginx/logs/*.log { #指定日志文件位置,可用正则匹配
daily #调用频率,有:daily,weekly,monthly可选
rotate 5 #一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。
sharedscripts #所有的日志文件都轮转完毕后统一执行一次脚本
postrotate #执行命令的开始标志
if [ -f /usr/local/nginx/logs/nginx.pid ]; then #判断nginx是否启动
/usr/local/nginx/sbin/nginx -s reload
#让nginx重新加载配置文件,生成新的日志文件,如果nginx没启动不做操作
fi
endscript #执行命令的结束标志
}
server端配置
[root@xuegod63 ~]# vim /etc/rsyslog.conf # 使用TCP协议方式,收集日志
改:19 #$ModLoad imtcp
20 #$InputTCPServerRun 514
为:
19 $ModLoad imtcp
20 $InputTCPServerRun 514
注:使用UDP协议速度快不保证数据的完整,使用TCP协议可靠.完整
[root@xuegod63 ~]# systemctl restart rsyslog #重新启动 rsyslog
在服务端关闭selinux和防火墙
[root@xuegod63 ~]# getenforce
Enforcing
[root@xuegod63 ~]# setenforce 0 #关闭selinux功能
[root@xuegod63 ~]#getenforce
Permissive
[root@xuegod63 ~]# systemctl stop firewalld
[root@xuegod63 ~]# systemctl status firewalld
[root@xuegod63 ~]# iptables -F #清空防火墙规则
client端配置
[root@xuegod63 ~]# vim /etc/rsyslog.conf #在90行之后,插入
*.* @@192.168.1.63:514
[root@xuegod64 ~]# systemctl restart rsyslog.service
在客户端xuegod64进行测试
语法: logger 要模拟发送的日志
[root@xuegod64 ~]# logger “aaaaa”
[root@xuegod63 ~]# tail -f /var/log/messages | grep xuegod64 --color #服务器端到查看消息
May 21 16:32:16 xuegod64 root: aaaaa
注:
总结:服务器使用udp协议,客户端只能使用的配置文件中这一行只能有一个@
*.* @192.168.1.64:514
服务器使用tcp协议,客户端只能使用的配置文件中这一行必须有两个@@
*.* @@192.168.1.64:514
windows段日志收集
https://www.jianshu.com/p/1bc1a8ec2d29

浙公网安备 33010602011771号