Linux安全检查基线

比眉伴天荒 2022-10-30 07:28 260阅读 0赞

1.检查用户登录情况

lastlog命令,检查最后登录时间

  1. [root@localhost]# lastlog
  2. 用户名 端口 来自 最后登陆时间
  3. root pts/0 192.168.124.88 2 18 10:05:04 +0800 2021
  4. bin pts/1 7 21 18:35:54 +0800 2020
  5. daemon **从未登录过**
  6. adm **从未登录过**
  7. lp **从未登录过**
  8. sync **从未登录过**
  9. shutdown **从未登录过**
  10. ossec **从未登录过**
  11. ntp **从未登录过**
  12. test **从未登录过**
  13. testx pts/1 7 21 18:35:54 +0800 2020
  14. hids pts/0 192.168.124.88 2 18 10:05:04 +0800 2021
  15. tss **从未登录过**
  16. tcpdump **从未登录过**

w命令

  1. [root@localhost]# w
  2. 14:09:13 up 454 days, 17:19, 1 user, load average: 0.18, 0.17, 0.15
  3. USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
  4. root pts/0 192.168.124.88 10:05 1.00s 0.05s 0.05s -bash

lastb命令,检查登录失败日志

  1. [root@localhost]# lastb
  2. root ssh:notty 192.168.60.48 Thu Feb 4 17:39 - 17:39 (00:00)
  3. btmp begins Thu Feb 4 17:39:35 2021

2.检查命令历史记录

root用户history

  1. [root@localhost]# history
  2. 1 cd /opt/security-agent/plugin/
  3. 2 md5sum run_filebeat.sh
  4. 3 ps -aux | grep filebeat
  5. 4 cd /var/log/security-agent/
  6. 5 tail -n 100 2021-1-11.log
  7. 6 ps -aux
  8. 7 ps -aux | grep filebeat

打开/home各帐号目录下的.bash_history,查看普通帐号的历史命令

  1. cat .bash_history >> history.txt

保存1万条命令

  1. sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile

在/etc/profile的文件尾部添加如下行数配置信息,可以显示登录的IP地址、执行命令时间等信息:

  1. USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
  2. if [ "$USER_IP" = "" ]
  3. then
  4. USER_IP=`hostname`
  5. fi
  6. export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "
  7. shopt -s histappend
  8. export PROMPT_COMMAND="history -a"

让配置生效

  1. source /etc/profile

3.检查端口开放

使用netstat 网络连接命令,分析可疑端口、IP、PID

  1. [root@localhost]# netstat -antlp|more
  2. Active Internet connections (servers and established)
  3. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  4. tcp 0 0 0.0.0.0:26379 0.0.0.0:* LISTEN 5332/redis-sentinel
  5. tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 5231/redis-server 0
  6. tcp 0 0 192.168.3.155:2379 0.0.0.0:* LISTEN 32340/./etcd
  7. tcp 0 0 127.0.0.1:2379 0.0.0.0:* LISTEN 32340/./etcd
  8. tcp 0 0 192.168.3.155:2380 0.0.0.0:* LISTEN 32340/./etcd
  9. tcp 0 0 192.168.3.155:8300 0.0.0.0:* LISTEN 32536/./consul
  10. tcp 0 0 192.168.3.155:8301 0.0.0.0:* LISTEN 32536/./consul
  11. tcp 0 0 192.168.3.155:8302 0.0.0.0:* LISTEN 32536/./consul
  12. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1091/sshd

4.检查进程

ps命令和top命令,这个就不解释了。。

  1. ps aux
  2. top

5.开机启动项

查看运行级别命令 runlevel

  1. [root@localhost]# runlevel
  2. N 3

运行级别 含义
0 关机
1 单用户模式,可以想象为windows的安全模式,主要用于系统修复
2 不完全的命令行模式,不含NFS服务
3 完全的命令行模式,就是标准字符界面
4 系统保留
5 图形模式
6 重启动

检查启动项

  1. more /etc/rc.local /etc/rc.d/rc[0~6].d
  2. ls -l /etc/rc.d/rc[0~6].d/

6.定时任务

crontab

  1. crontab -l #列出某个用户cron服务的详细内容

默认编写的crontab文件会保存在 /var/spool/cron/用户名
例如: /var/spool/cron/root

查看目录中是否存在恶意脚本

  1. more /var/spool/cron/*
  2. more /etc/crontab
  3. more /etc/cron.d/*
  4. more /etc/cron.daily/*
  5. more /etc/cron.hourly/*
  6. more /etc/cron.monthly/*
  7. more /etc/cron.weekly/
  8. more /etc/anacrontab
  9. more /var/spool/anacron/*

7.服务检查

查询已安装的服务

  1. [root@localhost]# chkconfig --list
  2. 注:该输出结果只显示 SysV 服务,并不包含
  3. 原生 systemd 服务。SysV 配置数据
  4. 可能被原生 systemd 配置覆盖。
  5. 要列出 systemd 服务,请执行 'systemctl list-unit-files'
  6. 查看在具体 target 启用的服务请执行
  7. 'systemctl list-dependencies [target]'
  8. netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
  9. network 0:关 1:关 2:开 3:开 4:开 5:开 6:关

查看当前服务

  1. ps aux | grep crond

查看服务enabled状态

  1. systemctl list-unit-files | grep enabled

8.系统日志检查

日志默认存放位置:/var/log/
查看日志配置情况:more /etc/rsyslog.conf


















































文件路径 说明
/var/log/cron 记录了系统定时任务相关的日志
/var/log/cups 记录打印信息的日志
/var/log/dmesg 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/mailog 记录邮件信息
/var/log/message 记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件
/var/log/btmp 记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看
/var/log/lastlog 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看
/var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看
/var/log/utmp 记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询
/var/log/secure 记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中

定位有多少IP在爆破主机的root帐号:

  1. grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

定位有哪些IP在爆破:

  1. 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

爆破用户名字典

  1. grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr

登录成功的IP

  1. grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

登录成功的日期、用户名、IP

  1. grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'

增加用户的日志

  1. grep "useradd" /var/log/secure

删除用户的日志

  1. grep "userdel" /var/log/secure

查看具有root权限的用户

  1. awk -F: '$3==0{print $1}' /etc/passwd

查看可使用ssh登录的用户

  1. cat /etc/passwd | grep -E '/bin/bash'

发表评论

表情:
评论列表 (有 0 条评论,260人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Web安全检查

    在使用成熟的框架编写Web应用程序时,有时候开发会处于永无止境的修改=>测试=>修改=>测试的状态。尽管如此,开发人员更专注于更改的功能和可视输出,而在安全性方面花费的时间却少

    相关 编写自己的Linux安全检查脚本

    因为本人工作中要涉及到很多东西,审计(日志、数据神马的)、源代码审计、渗透测试、开发一大堆东西,有些东西,越是深入去做,越会发现,没有工具或脚本,工作起来是有多么的坑。 工作