• Linux系统中的日志管理


    日志对于安全来说,非常重要,它记录了系统每天发生的各种各样的事情,你可以通过它来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。
    日志主要的功能有:审计和监测。它还可以实时的监测系统状态,监测和追踪侵入者等等
    那么日志存放的位置在哪里呢?
    我们的 /var/log 是存放日志的位置
    这里写图片描述

    常用的日志文件如下:
    btmp 记录denglu失败的信息
    lastlog 记录最近几次成功登录的事件和最后一次不成功的登录
    messages 从syslog中记录信息(有的链接到syslog文件)
    utmp    记录当前登录的每个用户
    wtmp    系统登录的情况:登入登出

    登录信息的查看
    我们也可以通过last 命令查看登录日志内容
    哪个用户在哪个时间通过哪种方式登录系统的情况

    /var/log/lastlog  #最后登录信息
    lastlog  #记录所有的用户什么时候登录过系统
    /var/log/btmp  # 用户登录系统的错误信息
    lastb  查看
    # 如果说你发现你的btmp文件变得很大,说明有很大的可能是有人在暴力破解你的主机

    lastlog 和 last的区别:
    last 查看IP
    lastlog 查看后门的账号

    日志的记录方式
    日志的种类:
    daemon 后台进程相关
    kern 内核产生的信息
    lpr 打印系统产生的
    authpriv 安全认证
    cron 定时相关
    mail 邮件相关
    syslog 日志服务本身的
    news 新闻系统
    local 0local 7 8个系统保留的类, 供其它的程序使用 /或者是用户自定义
    日志的级别: 轻重
    debug 排错的信息
    info 正常的信息
    notice 注意
    warn 警告
    err 错误
    crit 关键的错误
    alert 警报
    energ 紧急

    日志服务
    旧版本 rhel5

    服务名称  syslog 
    配置文件  /etc/syslog.conf
    rhel6-7
    服务名称  rsyslog
    配置文件  /etc/rsyslog.conf
    
    #编辑配置文件  vim /etc/rsyslog.conf
    #kern.*    #内核类型的所有级别日志 存放到        /dev/console
    *.info;mail.none;authpriv.none;cron.none                /var/log/messages
        所有的类别级别是info以上 除了mail,authpriv,cron (产生的日志太多,不易于查看) 
    类别.级别 
    authpriv.*      认证的信息存放                  /var/log/secure
    mail.*         邮件相关的信息 存放             -/var/log/maillog
    cron.*         计划任相关的信息 存放            /var/log/cron
    local7.*        开机时显示的信息存放-->             /var/log/boot.log
    注:
        “- ”号: 邮件的信息比较多,现将数据存储到内存,达到一定大小,全部写到硬盘.有利于减少I/O进程的开销
    数据存储在内存,如果关机不当数据消失

    日志输入的规则
    .info 高于info级别的信息全部记录到某个文件
    =级别 仅记录等于某个级别的日志
    例:.=info 只记录info级别的日志
    ! 级别 除了某个级别意外,记录所有的级别信息
    例.!err 除了err外记录所有
    none 指的是排除某个类别

    自定义ssh服务的日志

    #编辑rsyslog配置文件
    vi /etc/rsyslog.conf
    输入 local 0 .*     /var/log/sshd.log   #日志的保存路径
    
    #定义ssh服务的日志级别
    #编辑sshd服务的主配置文件
    vim /etc/ssh/sshd_config

    这里写图片描述

    #先重启rsyslog服务(生效配置)
     systemctl restart rsyslog
    #再重启sshd服务.生成日志
     systemctl restart sshd
    #查看一下有没有对应的日志产生

    日志的回滚
    在linux下的日志会定期进行回滚,
    控制系统执行日志回滚操作的配置文件主要有:
    /etc/logrotate.conf 以及 /etc/logrotate.d/ 这个目录下的明细配置文件。
    日志是很大的,如果让日志无限制的记录下去 是一件很可怕的事情,日积月累就有几百兆占用磁盘的空间,
    如果你要找出某一条可用信息海底捞针
    日志回滚原理:
    当日志达到某个特定的大小,我们将日志分类,之前的日志保留一个备份,再产生的日志创建一个同名的文件保存新的日志.

    vim /etc/logrotate.conf 
    
    # see "man logrotate" for details
    # rotate log files weekly
    weekly  # 每周执行回滚
    
    # keep 4 weeks worth of backlogs
    rotate 4   #保留4个副本 
    
    # create new (empty) log files after rotating old ones
    create   #创建新的文件存储数据
    
    # use date as a suffix of the rotated file
    dateext   #使用日期为后缀的回滚文件  #可以去/var/log目录下看看
    
    # uncomment this if you want your log files compressed
    #compress
    
    # RPM packages drop log rotation information into this directory
    include /etc/logrotate.d
    
    # no packages own wtmp and btmp -- we'll rotate them here
    /var/log/wtmp {  #指定的日志文件
        monthly     #每月轮转一次
        create 0664 root utmp
            minsize 1M    #日志文件必须大于1M才会去轮换(回滚)
        rotate 1      #保存一个轮换日志
    }
    
    /var/log/btmp {
        missingok  #  如果日志文件不存在,继续处理下一个文件而不产生报错信息。
        monthly
        create 0600 root utmp  #设置utmp  这个日志文件的权限,属主,属组
        rotate 1
    }
    

    同样的,我们也可以自定义ssh日志的基础上,实现日志回滚

    vim /etc/logrotate.conf
    
    
    /var/log/sshd.log{
        missingok  #  如果日志文件不存在,继续处理下一个文件而不产生报错信息。
        monthly
        create 0600 root utmp #root用户,utmp组创建
        minsize 1M
        rotate 1
    }

    配置远程日志服务器->实现日志集中的管理
    准备两台服务器
    server端配置

    # 编辑 /etc/rsyslog.conf
    
    #Provides TCP syslog reception  
    
    $ModLoad imtcp   #开启支持tcp的模块
    $InputTCPServerRun 514 #允许接收tcp 514的端口传来的日志
    
    #UDP速度快不保证数据的完整
    #   TCP可靠.完整
    #   使用TCP的方式,去除#号注释
    #  重新启动 rsyslog
    systemctl  restart  rsyslog 
    
    

    查看服务监听的状态

      netstat -anlput |grep 514
    tcp        0      0 0.0.0.0:514             0.0.0.0:*               LISTEN      4471/rsyslogd       
    tcp        0      0 192.168.75.129:514      192.168.75.128:33801    ESTABLISHED 4471/rsyslogd       
    tcp6       0      0 :::514                  :::*                    LISTEN      4471/rsyslogd       
    

    client端配置:

    vim /etc/rsyslog.conf
    
    # Provides TCP syslog reception
    
    #$ModLoad imtcp
    #$InputTCPServerRun 514
    
    # remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
    #*.* @@remote-host:514
    
    *.* @@192.168.75.129:514   #添加此行 服务器 

    . 所有类别和级别的日志
    @@192.168.1.63:514 服务端的IP:端口
    重启rsyslog 服务

    systemctl  restart  rsyslog 

    服务端验证:
    关闭防火墙

    tail -f /var/log/message  #动态查看增加内容
  • 相关阅读:
    WebService安全机制的思考与实践
    Typora
    谷歌隐藏功能开启
    在Idea中jdk11和jdk8环境变量的切换
    win10安装两个不同版本的mysql(mysql5.7和mysql8.0.19)
    Guava中这些Map的骚操作,让我的代码量减少了50%
    MySQL TransactionMySQL锁升级引发的死锁问题
    mac 在 home 目录下创建文件夹
    忍者系统
    DNS服务简介和配置详解
  • 原文地址:https://www.cnblogs.com/flyhgx/p/6367977.html
Copyright © 2020-2023  润新知