# linux应急响应
--------
### Linux快捷键
ctrl + a 跳到行首
ctrl + e 跳到行尾
ctrl + u 删除光标前内容
ctrl + k 删除光标后内容
## 入侵排查思路
账号安全 -> 历史命令 -> 检查异常端口 -> 检查异常进程 -> 检查开机启动项 -> 检查定时任务 -> 检查服务 -> 检查异常文件 -> 检查系统日志
## 账号安全
1、查询特权用户特权用户(uid 为0)
①awk -F: '$3==0{print $1}' /etc/passwd
②awk -F: '{if($3==0) print $1}' /etc/passwd
2、查询可以远程登录的帐号信息
①远程登陆必须要有密码才能进行登陆,没有密码是连接不了的
②\$1|\$6 : 两个反斜杠表示转译的意思 $6表示sha512加密 $1表示MD5加密
[root@localhost ~]# awk '/\$1|\$6/ {print $1}' /etc/shadow
3、除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号 应删除sudo权限
知识点:
①在Linux系统操作时,通常不会直接采用root用户。但当某些命令需要root权限执行时,往往会通过sudo
命令提升当前用户的执行权限来完成。
②用户是否拥有sudo命令的执行权限,要看是否在于 /etc/sudoers 文件进行了设置。
③/etc/sudoers 是一个文本文件,有其特定的语法,不要直接用 vim 或者 vi 来进行编辑,而是采用 visudo 命令。需要注意的是只有root用户有该命令的执行权限。
命令:
[root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
看到还有一个%wheel组,此时还应该查看下他组下面有什么成员
4、禁用或删除多余及可疑的帐号
usermod -L user 禁用帐号,帐号无法登录,/etc/shadow第二栏为!开头
userdel user 删除user用户
userdel -r user 将删除user用户,并且将/home目录下的user目录一并删除
## 历史命令
再root用户的家目录下面列出所有文件
ls -a //列出所有文件包括隐藏文件+-
通过.bash_history查看帐号执行过的系统命令
1、查看root的历史命令
histroy
2、打开/home各帐号目录下的.bash_history,查看普通帐号的历史命令
查看历史命令可以保存条数:cat /etc/profile | grep "HISTSIZE"
为历史的命令增加登录的IP地址、执行命令时间等信息:
1)保存1万条命令 sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile
2)在/etc/profile的文件尾部添加如下行数配置信息:
历史加固脚本,放在/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 #####
3)source /etc/profile让配置生效 生成效果:
4、历史操作命令的清除
history -c 但此命令并不会清除保存在文件中的记录,只会清除当前终端的历史命令,再开另外一个终端还是可以看到历史命令。因此需要手动删除.bash_profile 文件中的记录。
入侵排查: 进入用户目录下 cat .bash_history >> history.txt
检查异常端口
分析可疑端口、pid、ip
netstat -atunlp
a all
t tcp
u udp
n 是否对端口服务做解析(加n解析成端口号,不加n没有解析成端口号)
l listen
p 进程号
端口的三种状态:
LISTEN 监听中
ESTABLISHED 已经建立起连接(需要特别注意)
TIME-WITE 过一会消失
netstat -atunlp | grep ESTABLISHED
ps aux 查看进程
VSZ 虚拟内存占用大小
RSS 实际内存占用大小
TTY 终端类型
tty 控制终端 pts(pty slave) 虚拟终端
pty分为 pty master和pty slave
STAT 进程状态
```
S 休眠中
s 一个信息头
< 高优先级
N 低优先级
R 正在运行中或者可运行
l 多线程
+ 在前台进程组
```
不同终端pts不一样
kill[参数][进程号]
-9 强制终止
-15 正常结束进程,是 kill 命令的默认信号。
systemctl list-units --all --type=service 列出系统所有服务
no found 表示再本机中没有配置的服务
检查开机启动项
脚本自启动在centenos7中是没办法实现的,在其他版本中是可以实现的
#chkconfig:2345 10 90
2:不完全命令行模式(没有网络连接的多用户模式 我们常见的linux终端)
3:完全命令行(有网络连接)
10 位置 : 启动优先级
90 位置 : 停止优先级
优先级范围 0-100
数字越大 优先级越低
如果脚本优先级过低,比如为0启动不了
centenos7把 chkconfig(配置文件自启动)和service合成了 systemctl
文件自启动脚本,写之后记得给可运行的权限
#/bin/bash
#chkconfig:2345 10 20
#description:
echo 123
进入到 /etc中,筛选出rc.d,123456分别对应6个自启动级别,想让他什么时候自启动就把他丢到对应的rc.d里面去,上面我们配置了2345,就可以把脚本放到rc.d里
进入到rc.d中,可以看到它下面还有很多和rc.d
设置开机自启动,只需将可执行脚本丢在/etc/init.d目录下,然后在/etc/rc.d/rc*.d中建立软链接即可
软硬链接语法
ln -s /etc/init.d/脚本文件名 rcn.d/要创建的文件名
-s 建立软连接
不加s建立硬连接
-f 强制。如果目标文件已经存在,则删除目标文件后再建立链接文件
软链接:软链接的原文件(链接文件)被删除后就爆红,无法查看它。在原来的位置建立一个一样的名字的文件之后,还是可以链接的上,打不打的开就是权限的问题。
硬链接:硬链接的原文件被删除之后,并不会影响它的存在。但是它并不是独立存在的,原文件的权限被更改之后,硬链接的权限也会跟着改变
删除原文件之后软链接报错,硬链接不变可以输出
重新建立文件之后软链接恢复正常。(此时软连接的权限依旧是满权限,但是能否执行脚本还是要看脚本的权限)
硬链接的权限跟原文件同步
建立一个软链接文件 S为设置启动的优先级 test为名字
将其添加到启动项 查看启动项
入侵排查:
查看每个启动项下面是否有脚本
启动项文件:more /etc/rc.local letc/rc.d/rc[O~6].d
ls -l /etc/rc.d/rc3.d/
more /etc/cron.daily/*
检查异常文件
stat
只要进行编辑 不管你有没有进行更改 三个状态都会改变
Access(访问时间): 2022-10-17 08:58:46.369385673 -0400
Modify(修改文件内容时间): 2022-10-17 08:45:03.435035259 -0400
Change(改变状态时间): 2022-10-17 08:45:03.435035259 -0400
grep "Failed password for" /var/log/secure | awk '{print $11,$13}' | sort | uniq -c| sort -nr | more 统计有多少IP在进行主机爆破