Linux 环境下的应急响应知识

本文主要对Linux系统发生安全事件后如何进行应急响应进行学习总结、windows系统与Linux不同,但是思路基本也是相似的,记得那片文章看过说Linux系统被入侵基本都是网络应用的问题,所以WEB、FTP、弱口令等有较大可能,希望你看到这句话有帮助

账号安全

可以跟管理员对是否存在管理端口对外开放以及弱口令等情况进行确认,若是存在则极有可能是通过这种途径入侵的。

在Linux 系统中与用户账号相关的文件主要有 /etc/passwd文件以及/etc/shadow文件这两个

/etc/passwd

passwd文件的内容截图,我的虚拟机的,其中每一行代表一个账户有不同的信息由“:”进行分割
其代表的含义是

用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell

注意:无密码只允许本机登陆,远程不允许登陆

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Z6AZ8KF-1631455082446)(06B7475AE6E543C2AD4CEDB5A419845D)]

/etc/shadow

shadow文件与passwd文件相同,同样使用“:”分割信息每个字段表示的含义为

用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段

在这里插入图片描述

用户排查

查看可以远程登录的账号

ps:说实话这个命令我是真没看懂,百度了一阵子也没看懂,不知道什么鬼,不过看了好多文章都这么说,先记下,说不定以后就懂了

awk '/\$1|\$6/{print $1}' /etc/shadow

查看用户ID为0的用户,代表有root的权限

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

除 root 帐号外,其他帐号是否存在 sudo 权限。如非管理需要,普通帐号应删除 sudo 权限

more /etc/sudoers | grep -v "^#|^$" | grep "ALL=(ALL)"
禁用或者删除多余账号
usermod -L user    #禁用帐号,帐号无法登录,/etc/shadow 第二栏为 ! 开头

userdel user       #删除 user 用户

userdel -r user    #将删除user用户,并且将/home目录下的user目录一并删除
历史命令

通过.bash_history查看帐号执行过的系统命令
1、root的历史命令
histroy
2、打开/home各帐号目录下的.bash_history,查看普通帐号的历史命令

使用 HISTTIMEFORMAT 显示时间戳

显示成这种感觉比较舒服一点

# export HISTTIMEFORMAT='%F %T '
# history | more
1  2008-08-05 19:02:39 service network restart
2  2008-08-05 19:02:39 exit
3  2008-08-05 19:02:39 id
4  2008-08-05 19:02:39 cat /etc/redhat-release

注意:这个功能只能用在当 HISTTIMEFORMAT 这个环境变量被设置之后的那些新执行的 bash 命令才会被打上正确的时间戳。在此之前的所有命令,都将会显示成设置 HISTTIMEFORMAT 变量的时间。

添加点东西,利于审计

所谓听人劝吃饱饭,个人对于应急响应、审计之类的经验并不多,网上很多大佬都是这么说的,改一改,保存更多的信息和内容(默认记录一千条)

为历史的命令增加登录的IP地址、执行命令时间等信息:
1)保存1万条命令
sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile
2)在/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让配置生效

生成效果: 1  2018-07-10 19:45:39 192.168.204.1 root source /etc/profile

3、历史操作命令的清除:history -c
但此命令并不会清除保存在文件中的记录,因此需要手动删除.bash_profile文件中的记录。

除此之外还可以通过将文件搞成txt格式去分析

cat .bash_history >> history.txt
进程端口检查

使用以下命令对监听端口以及监听的链接进行查看

netstat -antlp|more

在这里插入图片描述

可以通过通过shell命令循环筛选出针对的恶意IP通信,也相当于可以检测到木马心跳,当然这是配合安全设备做出来的。

while true; do netstat -antp | grep [ip]; done

查看对应进程详情,可以查看进程的详情,以及对应的文件

ls -l /proc/$PID/exe  
file /proc/$PID/exe

在这里插入图片描述

lsof 可以查看对应进程打开的文件

在这里插入图片描述

可以使用ps 命令对疑似恶意程序的进程进行查看

ps aux                       #显示所有进程,包括没有终端的进程
ps ef                        #显示所有进程以及完整格式
ps aux --sort -pcpu          #静态查看进程,根据cpu使用情况排行,从高到低
ps aux --sort -pmem          #静态查看进程,根据内存使用情况排行,从高到低
ps -p PID -o lstart          #查看进程的启动时间
kill -9 pid                  #强制杀死进程

额外小知识
Linux 中的 ps 命令是 Process Status 的缩写。ps 命令用来列出系统中 当前正在运行 的那些进程,就是执行 ps 命令的那个时刻的那些进程的快照。使用该命令可以确定有哪些进程 正在运行 和 运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。

ps 查看的结果不是动态连续的,如果想要动态的显示进程信息,就可以使用 top、htop 命令。

kill 命令用于杀死进程。

持久化检查

跟windows 一样,在拿下Linux服务器的权限之后,也需要进行权限的维持

服务排查

列出所有的服务

service --status-all
chkconfig --list

应该是应为系统不同吧

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lnK77IVe-1631455082451)(4531A8C1DCF147B6B12FEFA0787FE048)]

在这里插入图片描述

开机启动项
/etc/rc.local

/etc/rc.local是/etc/rc.d/rc.local的软连接,该脚本是在系统初始化级别脚本运行之后再执行的,想要/etc/rc.local起作用必须chmod +x /etc/rc.d/rc.local

/etc/profile.d

/etc/profile.d是一个目录,/etc/profile.d/下有许多shell脚本,可以在开机时启动

/etc/rc.d/rcX.d与/etc/init.d

rcX.d 目录名,后面的X代表着每个运行级别,目录内有每个服务在init.d内启动脚本的链接文件,根据链接文件的名字来判断启动状态K开头表示不启动服务,S打头表示启动服务。这些服务都是软连接,真正的目录是/etc/init.d下的脚本,可用ls –l查看软链接

例子:当我们需要开机启动自己的脚本时,只需要将可执行脚本丢在/etc/init.d目录下,然后在/etc/rc.d/rc*.d中建立软链接即可
在这里插入图片描述

计划任务

crontab命令

-u# 指定用户,可省略
-l #列出对应的计划任务
-r #删除目前的时程表
-e #执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)

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

配置文件

/var/spool/cron/   #记录了每个用户的计划任务,已用户名命名

/etc/crontab #系统级配置文件

/etc/cron.d/ #该文件夹下一般是系统级别的用来管理其他定时任务的crontab文件


/etc/cron.daily/* #存放可执行脚本

/etc/cron.hourly/* #存放可执行脚本

/etc/cron.monthly/* #存放可执行脚本

/etc/cron.weekly/* #存放可执行脚本

/etc/anacrontab #开机之后检查该执行的是否执行了,将没有进行的
crontab任务执行一遍

/var/spool/anacron/*

日志记录位置

/var/log/cron

小技巧

more /etc/cron.daily/*  #查看目录下所有文件
病毒查杀
Rootkit查杀

chkrootkit

网址:http://www.chkrootkit.org

使用方法

wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar zxvf chkrootkit.tar.gz
cd chkrootkit-0.52
make sense
#编译完成没有报错的话执行检查
./chkrootkit

rkhunter

网址:http://rkhunter.sourceforge.net

使用方法

Wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz
tar -zxvf rkhunter-1.4.4.tar.gz
cd rkhunter-1.4.4
./installer.sh --install
rkhunter -c
病毒查杀

Clamav

ClamAV的官方下载地址为:http://www.clamav.net/download.html

安装方式一:

1、安装zlib:
wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gz 
tar -zxvf  zlib-1.2.7.tar.gz
cd zlib-1.2.7
#安装一下gcc编译环境: yum install gcc
CFLAGS="-O3 -fPIC" ./configure --prefix= /usr/local/zlib/
make && make install

2、添加用户组clamav和组成员clamav:
groupadd clamav
useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav

3、安装Clamav
tar –zxvf clamav-0.97.6.tar.gz
cd clamav-0.97.6
./configure --prefix=/opt/clamav --disable-clamav -with-zlib=/usr/local/zlib
make
make install

4、配置Clamav
mkdir /opt/clamav/logs
mkdir /opt/clamav/updata
touch /opt/clamav/logs/freshclam.log
touch /opt/clamav/logs/clamd.log
cd /opt/clamav/logs
chown clamav:clamav clamd.log
chown clamav:clamav freshclam.log

5、ClamAV 使用:
 /opt/clamav/bin/freshclam 升级病毒库
./clamscan –h 查看相应的帮助信息
./clamscan -r /home  扫描所有用户的主目录就使用
./clamscan -r --bell -i /bin  扫描bin目录并且显示有问题的文件的扫描结果

安装方式二:

#安装
yum install -y clamav
#更新病毒库
freshclam
#扫描方法
clamscan -r /etc --max-dir-recursion=5 -l /root/etcclamav.log
clamscan -r /bin --max-dir-recursion=5 -l /root/binclamav.log
clamscan -r /usr --max-dir-recursion=5 -l /root/usrclamav.log
#扫描并杀毒
clamscan -r  --remove  /usr/bin/bsd-port
clamscan -r  --remove  /usr/bin/
clamscan -r --remove  /usr/local/zabbix/sbin
#查看日志发现
cat /root/usrclamav.log |grep FOUND
WEBshell 查杀

考出来搞,或者使用webshell 查杀的linux 版本

RPM check检查

系统完整性可以通过rpm自带的-Va来校验检查所有的rpm软件包,查看哪些命令是否被替换了:

./rpm -Va > rpm.log

如果一切均校验正常将不会产生任何输出,如果有不一致的地方,就会显示出来,输出格式是8位长字符串,每个字符都用以表示文件与RPM数据库中一种属性的比较结果 ,如果是. (点) 则表示测试通过。

验证内容中的8个信息的具体内容如下:
        S         文件大小是否改变
        M         文件的类型或文件的权限(rwx)是否被改变
        5         文件MD5校验是否改变(可以看成文件内容是否改变)
        D         设备中,从代码是否改变
        L         文件路径是否改变
        U         文件的属主(所有者)是否改变
        G         文件的属组是否改变
        T         文件的修改时间是否改变

如果命令被替换了,如果还原回来:

文件提取还原案例:
rpm  -qf /bin/ls  查询ls命令属于哪个软件包
mv  /bin/ls /tmp  先把ls转移到tmp目录下,造成ls命令丢失的假象
rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls 提取rpm包中ls命令到当前目录的/bin/ls下
cp /root/bin/ls  /bin/ 把ls命令复制到/bin/目录 修复文件丢失
文件痕迹
  • 查看敏感目录,如/tmp目录下的文件,同时注意隐藏文件夹,以“…”为名的文件夹具有隐藏属性

  • 得到发现WEBSHELL、远控木马的创建时间,如何找出同一时间范围内创建的文件?

  • 可以使用find命令来查找,如 find /opt -iname “*” atime 1 -type f 找出 /opt 下一天前访问过的文件

  • 针对可疑文件可以使用stat进行创建修改时间。

使用stat 命令

stat +文件名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zdYIP2qk-1631455082453)(B1226775D80A4D299563417EEC1CA9E6)]

解释一下,

  • access 是最近一次的访问时间,只要被读取时间就会更新
  • modify 是最近的文件内容修改时间
  • change 最近的文件属性的修改时间:当文件的目录被修改,或者文件的所有者,权限等被修改时

使用ls 命令查看

ls -l 文件名

这里ls -l 显示的时间是stat 显示的mtime,也就是文件的修改时间。

要是没发现什么异常的话,可以通过某些文件的修改时间点,对服务器何时被入侵的进行简单的判断,从而对日志审计之类的工作提供筛选依据。

touch 可以修改文件的时间属性的值,这个就不那么可信了,应急的时候一定要注意细节

在这里插入图片描述

touch命令

touch 参数  文件名,上面截图也有一个示例,可以看看

-a:或--time=atime或--time=access或--time=use

-c:或--no-creat,如果棉花地文件不存在,也不创建任何文档

-d:使用指定的日期时间,可以使用不同的格式

-m:或--time=mtime或--time=modify,改变修改时间

-r:把指定的文件日期更设成和参考文档或目录日期相同的时间

-t:使用指定的日期时间,格式与date指令相同 

在这里插入图片描述

日志审计

/var/log/cron :crontab命令日志

/var/log/lastlog:登录用户日志

/var/log/secure:记录登录成功与否

/var/log/wtmp:记录登录系统成功的账户信息,等同于last

/var/log/utmp:查看当前登录系统的情况,等同于who

/var/log/faillog:记录登录系统不成功的账号信息

history:查看所有历史命令记录

~/.bash_history:黑客可能会使用history -c清除日志,使用cat ~/.bash_history仍可查看相关的记录

/var/log/cups:记录打印信息的日志

/var/log/dmesg:记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息

/var/log/mailog:记录邮件信息

web日志默认也存放在/var/log/目录下

参考

http://c.biancheng.net/view/840.html
https://blog.csdn.net/u012062455/article/details/77228994
https://blog.csdn.net/qq_31828515/article/details/62886112
http://sunu11.com/2017/03/01/7/
https://blog.csdn.net/weixin_39190897/article/details/118784289
https://os.51cto.com/art/202012/636816.htm
https://github.com/AI0TSec/blog/issues/7
https://yinwc.github.io/2020/01/21/%E5%BA%94%E6%80%A5%E5%93%8D%E5%BA%94%E7%AC%94%E8%AE%B0%E4%B9%8BLinux%E7%AF%87/
https://cloud.tencent.com/developer/article/1803425
https://cloud.tencent.com/developer/article/1355030

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值