• Linux系统


     
    简单整理一下 Linux 下的安全加固、痕迹清理、应急响应
     

    安全加固

    用户安全

     
    设置口令生存期
     
    vim /etc/login/defs
     

    PASS_MAX_DAYS  //密码最长有效期
    PASS_MIN_DAYS  //密码修改之间最小的天数
    PASS_MIN_LEN   //密码最小长度
    PASS_WARN_AGE  //口令失效前多少天开始通知用户修改密码
    

     
    一键修改脚本
     

    read -p  "设置密码最多可多少天不修改:" A
    read -p  "设置密码修改之间最小的天数:" B
    read -p  "设置密码最短的长度:" C
    read -p  "设置密码失效前多少天通知用户:" D
    sed -i '/^PASS_MAX_DAYS/cPASS_MAX_DAYS   '$A'' /etc/login.defs
    sed -i '/^PASS_MIN_DAYS/cPASS_MIN_DAYS   '$B'' /etc/login.defs
    sed -i '/^PASS_MIN_LEN/cPASS_MIN_LEN     '$C'' /etc/login.defs
    sed -i '/^PASS_WARN_AGE/cPASS_WARN_AGE   '$D'' /etc/login.defs
    echo "已设置好密码策略......"
    

    设置口令复杂度
     

    vim /etc/pam.d/system-auth
     

    将 password requisite  pam_cracklib.so 改为 password requisite  pam_cracklib.so retry=3 difok=2 minlen=8 lcredit=-1 dcredit=-1
    
    difok:本次密码与上次密码至少不同字符数
    minlen:密码最小长度,此配置优先于login.defs中的PASS_MAX_DAYS
    ucredit:最少大写字母
    lcredit:最少小写字母
    dcredit:最少数字
    retry:重试多少次后返回密码修改错误
    

     
    登录失败策略
     
    vim /etc/pam.d/sshd
     

    在下面编辑
    
    auth required pam_tally2.so deny=3 unlock_time=150 even_deny_root root_unlock_time300
    
    even_deny_root    限制root用户
    deny     设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户 
    unlock_time     设定普通用户锁定后,多少时间后解锁,单位是秒
    root_unlock_time      设定root用户锁定后,多少时间后解锁,单位是秒
    

     
    禁止 root 用户远程登录
     

    vim /etc/ssh/sshd_config
    

     

     
    设置为 no 即可
     

    访问控制

     
    删除多余的账户
     

    userdel user  //删除账户
    userdel -r user //删除的同时且删除家目录
    

     
    锁定不必要的账户
     

    passwd -l user
    
    awk -F: '($7=="/bin/bash"){print $1}' /etc/passwd  //查看具有登录权限的用户
    awk -F: '($3==0)' /etc/passwd  //查看UID为0的账户,UID为0的用户会自动切换到root用户,所以危害很大
    awk -F: '($2=="")' /etc/shadow //查看空口令账号
    

     
    脚本管理
     

    echo "系统中有登录权限的用户有:"
    awk -F: '($7=="/bin/bash"){print $1}' /etc/passwd
    echo "********************************************"
    echo "系统中UID=0的用户有:"
    awk -F: '($3=="0"){print $1}' /etc/passwd
    echo "********************************************"
    N=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
    echo "系统中空密码用户有:$N"
    if [ $N -eq 0 ];then
     echo "恭喜你,系统中无空密码用户!!"
     echo "********************************************"
    else
     i=1
     while [ $N -gt 0 ]
     do
        None=`awk -F: '($2==""){print $1}' /etc/shadow|awk 'NR=='$i'{print}'`
        echo "------------------------"
        echo $None
        echo "必须为空用户设置密码!!"
        passwd $None
        let N--
     done
     M=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
     if [ $M -eq 0 ];then
      echo "恭喜,系统中已经没有空密码用户了!"
     else
    echo "系统中还存在空密码用户:$M"
     fi
    fi
    
    

    安全审计

     
    开启审核策略
     

    service rsyslog status
    
    service auditd status
    
    systemctl start auditd
    

     
    有点多不想在总结了
     

    痕迹清理

    清除历史命令

    1. history -r //退出前执行
    
    2. history -c //清除当前用户命令记录
    
    3. vim打开
    
    :set history=0
    :!command
    
    4. 修改配置文件 /etc/profile
    
    HISTSIZE=0
    
    5. .
    
    unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null; export HISTSIZE=0; export HISTFILESIZE=0
    
    

    清除系统日志痕迹

     
    日志文件
     

    /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
    /var/log/secure 与安全相关的日志信息
    /var/log/maillog 与邮件相关的日志信息
    /var/log/cron 与定时任务相关的日志信息
    /var/log/spooler 与UUCP和news设备相关的日志信息
    /var/log/boot.log 守护进程启动和停止相关的日志消息
    /var/log/btmp – 记录所有失败登录信息  命令:lastb
    /var/log/auth.log 系统授权信息,包括用户登录和使用的权限机制等 (debian)
    /var/log/lastlog 记录系统中所有用户最后一次登录时间的日志,使用lastlog命令查看
    /var/log/wtmp    记录所有用户的登录、注销信息,使用last命令查看
    /var/log/utmp    记录当前已经登录的用户信息,使用w,who,users等命令查看
    

     
    清空日志文件
     

    echo > /var/log/xxx
    

     
    删除/替换ip
     

    删除
    sed -i '/ip/'d  /var/log/xx
    替换
    sed -i 's/ip/127.0.0.1/g' /var/log/xxx
    

    清除web入侵痕迹

    替换
    sed -i 's/ip/127.0.0.1/g' access.log
    清除
    cat /var/log/nginx/access.log | grep -v evil.php > tmp.log
    cat tmp.log > /var/log/nginx/access.log/
    

    使用安全文件删除工具

     
    shred
     

    shred -f -u -z -v -n 8 1.txt  //指定覆盖8次
    

     
    dd可用于安全地清除硬盘或者分区的内容
     

    dd if=/dev/zero of=要删除的文件 bs=大小 count=写入的次数
    

     
    wipe 使用特殊的模式来重复地写文件,从磁性介质中安全擦除文件。
     

    wipe filename
    

    隐藏远程登录SSH登记记录

     
    隐身登录系统,不会被w、who、last等指令检测到。
     

    ssh -T root@192.168.0.1 /bin/bash -i
    

     
    不记录ssh公钥在本地.ssh目录中

    ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash –i
    

    应急响应

    入侵排查

    账号排查

    1、查询特权用户特权用户(uid 为0)
    awk -F: '$3==0{print $1}' /etc/passwd
    2、查询可以远程登录的帐号信息
    awk '/$1|$6/{print $1}' /etc/shadow
    3、除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限
    more /etc/sudoers | grep -v "^#|^$" | grep "ALL=(ALL)"
    4、禁用或删除多余及可疑的帐号
        usermod -L user    禁用帐号,帐号无法登录,/etc/shadow第二栏为!开头
        userdel user       删除user用户
        userdel -r user    将删除user用户,并且将/home目录下的user目录一并删除
    

    历史命令

    cat .bash_history
    

    检查异常端口

    netstat -antlp|more
    查看下pid所对应的进程文件路径
    运行ls -l /proc/$PID/exe或file /proc/$PID/exe($PID 为对应的pid 号)
    

    检查异常进程

    ps aux | grep pid
    

    检测自启项

    启动项文件:
        more /etc/rc.local
        /etc/rc.d/rc[0~6].d
        ls -l /etc/rc.d/rc3.d/
    

    检测定时任务

    crontab -l
    

     
    排查目录
     

        /var/spool/cron/* 
        /etc/crontab
        /etc/cron.d/*
        /etc/cron.daily/* 
        /etc/cron.hourly/* 
        /etc/cron.monthly/*
        /etc/cron.weekly/
        /etc/anacrontab
        /var/spool/anacron/*
    

    检查异常文件

    1、查看敏感目录,如/tmp目录下的文件,同时注意隐藏文件夹,以“..”为名的文件夹具有隐藏属性
    2、得到发现WEBSHELL、远控木马的创建时间,如何找出同一时间范围内创建的文件?
    可以使用find命令来查找,如 find /opt -iname "*" -atime 1 -type f  找出 /opt 下一天前访问过的文件
    3.针对可疑文件可以使用stat进行创建修改时间
    

    检查系统日志

     
    一开始很多的发行版用的是 /var/log/secure 但是最近最新的用的是 rsyslog,两者存放日志不一样(因此后面的查询命令有两条)
     

    1、定位有多少IP在爆破主机的root帐号
    
    grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
    
    grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
    
    定位有哪些IP在爆破:
    
    grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
    
    grep "Failed password" /var/log/auth.log|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
    
    爆破用户名字典是什么?
    
     grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1
    ";}'|uniq -c|sort -nr
     
      grep "Failed password" /var/log/auth.log|perl -e 'while($_=<>){ /for(.*?) from/; print "$1
    ";}'|uniq -c|sort -nr
      
    2.登录成功的IP有哪些
    
    grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
    
    grep "Accepted " /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
    
    
    登录成功的日期、用户名、IP:
    
    grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
    
    grep "Accepted " /var/log/auth.log | awk '{print $1,$2,$3,$9,$11}'
    
    3.查看是否有添加/删除用户
    
    grep "useradd" /var/log/secure
    
    userdel 
    
    grep "useradd" /var/log/auth.log
    

    应急响应工具

     
    Webshell查杀工具
     
    还有最近新出来的应急响应工具whohk
     
     

    参考资料

     
    https://github.com/heikanet/whohk

    https://mp.weixin.qq.com/s/i2WvFmF1qQjbx-BaStXb1Q

    https://www.cnblogs.com/anbuxuan/p/11837007.html

    https://www.cnblogs.com/17bdw/p/11354141.html

  • 相关阅读:
    mysql int类型 int(11) 和int(2)区别
    mysql 用户 登陆 权限相关
    【转】ext4+delalloc造成单次写延迟增加的分析
    write 系统调用耗时长的原因
    【转】通过blktrace, debugfs分析磁盘IO
    win7 wifi热点
    【SystemTap】 Linux下安装使用SystemTap源码安装SystemTap
    pdflush进程介绍与优化【转】
    How to find per-process I/O statistics on Linux
    oom_killer
  • 原文地址:https://www.cnblogs.com/Mikasa-Ackerman/p/Linux-xi-tong.html
Copyright © 2020-2023  润新知