基本使用:
1 )用 户 信 息 文 件 /etc/passwd root:x:0:0:root:/root:/bin/bash
account:password:UID:GID:GECOS:directory:shell
用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell 注:无密码只允许本机登陆,远程不允许登陆
2)影子文件/etc/shadow
root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7:::
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之
后的宽限天数:账号失效时间:保留
who//查看当前登录用户(tty本地登陆pts远程登录)
w //查看系统信息,想知道某一时刻用户的行为
uptime //查看登陆多久、多少用户,负载
1)查询特权用户特权用户(uid 为0)
[root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd
2)查询可以远程登录的帐号信息
[root@localhost ~]# awk '/$1|$6/{print $1}' /etc/shadow
3)除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限[root@localhost ~]# more /etc/sudoers | grep -v "^#|^$" | grep "ALL=(ALL)" 4、禁用或删除多余及可疑的帐号
usermod -L user禁用帐号,帐号无法登录,/etc/shadow第二栏为!开头
userdel user删除user用户
userdel -r user将删除user用户,并且将/home目录下的user目录一并删除
1)敏感目录的文件分析[类/tmp 目录,命令目录/usr/bin /usr/sbin 等]
ls用来显示目标列表
2)查看 tmp 目录下的文件:ls –alt /tmp/
3)查看开机启动项内容:ls -alt /etc/init.d/,/etc/init.d 是 /etc/rc.d/init.d的软链接
基本使用:
系统运行级别示意图:
入侵排查:
启动项文件: more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d
4)按时间排序查看指定目录下文件:ls -alt | head -n 10
针对可疑文件可以使用 stat 进行创建修改时间、访问时间的详细查看,若修改时间距离事件日期接近,有线性关联,说明可能被篡改或者其他。
(1) Access Time:简写为 atime,表示文件的访问时间。当文件内容被访问时,更新这个时间。
(2) Modify Time:简写为 mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。
(3) Change Time:简写为 ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks 数。
5)查看历史命令记录文件~/.bash_history
查找~/.bash_history 命令执行记录,主要分析是否有账户执行过恶意操作系统;命令在 linux 系统里,只要执行过命令的用户,那么在这个用户的 HOME 目录下,都会有一个.bash_history 的文件记录着这个用户都执行过什么命令;
那么当安全事件发生的时候,我们就可以通过查看每个用户所执行过的命令,来分析一下这个用户是否有执行恶意命令,如果发现哪个用户执行过恶意命令, 那么我们就可以锁定这个线索,去做下一步的排查。
基本使用:
通过.bash_history查看帐号执行过的系统命令
①root的历史命令
histroy
②打开/home各帐号目录下的.bash_history,查看普通帐号的历史命令
为历史的命令增加登录的IP地址、执行命令时间等信息:
a)保存1万条命令
sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile
b)在/etc/profile的文件尾部添加如下行数配置信息:
######jiagu history xianshi#########
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then USER_IP=`hostname`
fi
export HISTTIMEFORMAT="%F %T $USER_IP `whoami` " shopt -s histAppend
export PROMPT_COMMAND="history -a"
######### jiagu history xianshi ##########
c)source /etc/profile让配置生效
生成效果: 12018-07-10 19:45:39 192.168.204.1 root source /etc/profile
③历史操作命令的清除:history -c
注:此命令并不会清除保存在文件中的记录,因此需要手动删除.bash_profile文件中的记录。
入侵排查:
进入用户目录下
cat .bash_history >> history.txt
6)查看操作系统用户信息文件/etc/passwd
查找/etc/passwd 文件, /etc/passwd 这个文件是保存着这个 linux 系统所有用户的信息,通过查看这个文件,我们就可以尝试查找有没有攻击者所创建的用户,或者存在异常的用户。我们主要关注的是第 3、4 列的用户标识号和组标识号,和倒数一二列的用户主目录和命令解析程序。一般来说最后一列命令解析程序如果是设置为 nologin 的话,那么表示这个用户是不能登录的,所以可以结合我们上面所说的 bash_history 文件的排查方法。首先在/etc/passwd 中查找命令解释程序不是 nologin 的用户, 然后再到这些用户的用户主目录里, 找到bash_history,去查看这个用户有没执行过恶意命令。
/etc/passwd 中一行记录对应着一个用户,每行记录又被冒号(:)分隔为 7 个字段, 其格式和具体含义如下:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell
7)查看新增文件
find:在指定目录下查找文件
例:find ./ -mtime 0 -name "*.php"(查找 24 小时内被修改的 php 文件)
find / -ctime 2(查找 72 小时内新增的文件)
8)特殊权限的文件查看
查找 777 的权限的文件:find / *.jsp -perm 4777
9)隐藏的文件(以 "."开头的具有隐藏属性的文件)
注:在文件分析过程中,手工排查频率较高的命令是 find grep ls 核心目的是为了关联推理出可疑文件;
1)使用netstat 网络连接命令,分析可疑端口、IP、PID
netstat -antlp|more
查看下pid所对应的进程文件路径:运行ls -l /proc/$PID/exe或file /proc/$PID/exe($PID 为对应的pid 号)
netstat 用于显示与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
选项参数:
-a 显示所有连线中的 Socket。
-n 直接使用 IP 地址,而不通过域名服务器。
-t 显示 TCP 传输协议的连线状况。
-u 显示 UDP 传输协议的连线状况。
-v 显示指令执行过程。
-p 显示正在使用 Socket 的程序识别码和程序名称。
-s 显示网络工作信息统计表。
2)根据 netstat 定位出的 pid,使用 ps 命令,分析进程
-a 代表 all。同时加上 x 参数会显示没有控制终端的进程
-aux 显示所有包含其他使用者的行程(ps -aux --sort -pcpu | less 根据 cpt 使用率进行排序)
-C 显示某的进程的信息
-axjf 以树形结构显示进程
ps aux | grep pid | grep –v grep
将 netstat 与 ps 结合:
1)查看系统用户登录信息
a)使用 lastlog 命令,系统中所有用户最近一次登录信息。
b)使用 lastb 命令,用于显示用户错误的登录列表;
c)使用 last 命令,用于显示用户最近登录信息(数据源为/var/log/wtmp,var/log/btmp);
utmp 文件中保存的是当前正在本系统中的用户的信息。
wtmp 文件中保存的是登录过本系统的用户的信息。
/var/log/wtmp 文 件 结 构 和 /var/run/utmp 文 件 结 构 一 样 , 都 是 引 用
/usr/include/bits/utmp.h 中 的 struct utmp;