前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux应急响应排查思路

Linux应急响应排查思路

作者头像
Baige
发布2022-03-21 14:41:36
2.7K0
发布2022-03-21 14:41:36
举报
文章被收录于专栏:世荣的博客

前言

当企业发生黑客入侵,系统崩溃或者影响其他业务逻辑的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查询入侵来源,还原入侵事故过程,同时给出解决方案与防范措施,为企业挽回或者减少损失。

针对常见的攻击事件,结合工作中应急响应事件分析和解决的方法,整理了一些思路。

1.账号安全

基本使用:

代码语言:javascript
复制
root:x:0:0:root:/root:/bin/bash
account:password:UID:GID:GECOS:directory:shell

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

roor:6oGs1PqhL2p3ZetrE

用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期的警告天数:密码过期之后的宽限天数:账号失效时间:保留

代码语言:javascript
复制
root:x:0:0:root:/root:/bin/bash
account:password:UID:GID:GECOS:directory:shell

用户名:密码:用户ID:组ID:用户说明:家目录:登录之后shell 注意:无密码只允许本机登录,远程不允许登录

2.影子文件/etc/shadow

root:6oGs1PqhL2p3ZetrE

用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期的警告天数:密码过期之后的宽限天数:账号失效时间:保留

who:查看当前登录用户(tty本地登录 pts远程登录)

w :查看系统信息。想知道某一时刻用户的行为

uptime:查看登录多久,多少用户,负载

入侵排查

代码语言:javascript
复制
[root@localhost ~]# awk -F: '$s==0{print $1}' /etc/passwd
[root@localhost ~]# ak '/\$1|\$6/{print $1}' /etc/shadow

3.除了root账号之外,其他账号是否存在sudo权限,如非管理需要,普通账号应删除sudo权限

代码语言:javascript
复制
more /etc/sudores | grep -v "^#\|^$" | grep "ALL=(ALL)"

usermod -L user  禁用账号,账号无法登录,/etc/shadow第二栏为!开头
userdel user     删除user用户
userdel -r user  将删除user账户,并且将/home目录下的user目录一并删除

1.查询特权用户为uid为0

[root@localhost ~]#awk -F: 'You can't use 'macro parameter character #' in math modeYou can't use 'macro parameter character #' in math mode1|You can't use 'macro parameter character #' in math modeYou can't use 'macro parameter character #' in math mode" | grep "ALL=ALL"

4.禁用或删除多余及可疑账号

代码语言:javascript
复制
usermod -L user  禁用账号,账号无法登录,/etc/shadow第二栏为!开头
userdel user     删除user用户
userdel -r user  将删除user账户,并且将/home目录下的user目录一并删除

2.历史命令

基本使用:

(1)root历史命令

代码语言:javascript
复制
history

通过.bash_history查看账号执行过得权限 (2)打开/home各账号目录下的.bash_history,查看普通账号的历史命令 为历史命令增加登录的IP地址,执行命令时间等信息。

代码语言:javascript
复制
sed -i 's/^HISTSIZE=1000/HISTSZE=10000/g' /etc/profile

(3)在/etc/profile的文件尾部添加如下行数配置信息:

代码语言:javascript
复制
jiagu history xianshi
USER_IP=who -u am i 2>/dev/null | awk '{print 
jiagu history xiashi

(4)source /etc/profile 让配置生效

生成效果: 1 2021-3-16 19:45:39 193.xxx.xxx.xxx root source /etc/profile

但此命令并不会清除保存在文件中的记录,因此需要手动删除.bash_profile文件中的记录

入侵排查:

代码语言:javascript
复制
cat .bash_history >> history.txt

3.端口

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

查看下pid所对应的进程文件路径:运行:ls -l /proc/PID/exe或 :file /proc/PID/exePID:对应的pid号

4.进程

使用ps命令,分析进程

代码语言:javascript
复制
pa aux | grep pid

5.开机自启

基本使用: 这里顺便提一嘴Windows Windows系统运行级别示意图:

查看运行级别的命令:runlevel

系统默认允许级别

id=3: initdefault 系统默认开机后直接进入哪个运行级别

开机启动的配置文件

代码语言:javascript
复制
/etc/rc.local
/etc/rc.d/rc[0~6].d

当我们需要开机自己启动自己的脚本的时候,只需要将可执行脚本丢在/etc/init.d目录下,然后在 /etc/rc.d/rc*.d中软连接即可

代码语言:javascript
复制
ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh

此处sshd是具体的脚本文件,S100ssh是其软连接,S开头代表加载时自启动;如果是K开头的脚本文件,代表运行级别加载时需要关闭的。

入侵排查:

代码语言:javascript
复制
启动文件:more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d

6.定时任务

基本使用

1.利用crontbab创建计划任务

crontab -l 列出某个用户cron服务的详细内容 Tips: 默认编写的crontab文件回报存在:/var/spool/cron/用户名(例如:root) crontab -r 删除某个用户cront任务 谨慎:删除某个用户的所有计划任务 crontab -w 使用编辑器编辑当前的crontab文件

如:/1 * echo "hello world" >> /tmp/test.txt 每分钟写入文件

2.利用anacron实现异步定时任务调度

每天运行 /home/backup.sh脚本:

代码语言:javascript
复制
vi /etc/anacrontab @daily 10 example.daily /bin/bash/home/backup.sh

当机器在backup.sh期望被运行时是关机,anacron会在开机十分钟后运行它,而不用再等待。

入侵排查

重点关注以下目录中是否存在恶意脚本

代码语言:javascript
复制
/var/spool/cron/*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monnthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*

小技巧:

more /etc/cron.daily/* 查看目录下面的所有文件

7.服务

服务自启动

第一种修改方式:

代码语言:javascript
复制
chkconfig [--level 运行级别] [独立服务台] [on|off]
chkconfig -level 2345 httpd on 开机自启动
chkconfig httpd on (默认level2345)

第二种修改方式:

代码语言:javascript
复制
修改/etc/re.d/rc.local 文件
加入/etc/init.d/httpd start

第三种修改方式:

使用ntsysv命令管理自启动,可以管理独立服务和xinetd服务。

入侵排查

1.查询已安装的服务

RPM包安装服务

chkconfig --list 查看服务自启动状态,可以看到所有RPM包安装的服务 ps aux | grep crond 查看当前服务 chkconfig -- list | 查看当前服务器自启动状态,可以看到所有的RPM安装服务

系统在3与5级别下的启动项:

chkconfig -- list | grep "3:启用|5:启用" chkconfig -- list | grep "3:on|5:on"

源码包安装服务:

查看服务安装位置,一般是在/usr/local/ 搜索/etc/rc.d/init.d/ 查看是否存在 service httpd start

8.系统日志

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

日志分析技巧:

1.定位有多少IP在爆破主机:

代码语言:javascript
复制
grep "Failed password for root" /var/log/secure | awk '{print $11}' 
| sort | uniq -c | sort -nr more

2.定位有哪些IP在爆破:

代码语言:javascript
复制
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

3.爆破用户名字典是什么?

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

4.登录成功的IP有哪些:

代码语言:javascript
复制
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | 
uniq -c | sort -nr | more

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

代码语言:javascript
复制
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}' 

6.增加一个用户kali日志:

代码语言:javascript
复制
Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001
Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001,
GID=1001, home=/home/kali
, shell=/bin/bash
Jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password
changed for kali

7.删除用户kali日志:

代码语言:javascript
复制
Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' 
owned by 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' 
owned by 'kali'
# grep "userdel" /var/log/secure

8.su切换用户:

代码语言:javascript
复制
Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened 
for user good by root(uid=0)

9.sudo授权执行:

代码语言:javascript
复制
sudo -l
Jul 10 00:43:09 localhost sudo:    good : TTY=pts/4 ; PWD=/home/good ; USER=root ; COMMAND=/sbin/shutdown -r now
#grep "useradd" /var/log/secure 

9.工具篇

Rookit查杀

(1)chkrootkit:http://www.chkrootkit.org

代码语言:javascript
复制
wget ftp://ftp.pangeia.com.vr/pub/seg/pac.chkrootkit.tar.gz
tar zxvf chrookit.tar.gz

cd chkrootkit-0.版本

代码语言:javascript
复制
make sense

编译完没有报错的话执行检查

代码语言:javascript
复制
./chkrootkit

(2)rkhunter:http:.rkhunter.sourceforge.net

wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz

代码语言:javascript
复制
tar -zxvf rkhunter-1.4.4.tar.gz
cd rkhunter-1.4.4.tar.gz
cd rkhunter-1.4.4
./installer.sh --install
rkhunter -c

病毒查杀

(1)Clamav:http://www.clamav.net/download.html

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

安装一下gcc编译环境: yum install gcc

代码语言:javascript
复制
CFLAGS="-O3 -fPIC" ./configure --prefix= /usr/local/zlib/
useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav
tar –zxvf clamav-0.97.6.tar.gz
./configure --prefix=/opt/clamav --disable-clamav -with-zlib=/usr/local/zlib
touch /opt/clamav/logs/freshclam.log
touch /opt/clamav/logs/clamd.log
chown clamav:clamav clamd.log
chown clamav:clamav freshclam.log
/opt/clamav/bin/freshclam 升级病毒库
./clamscan -r /home  扫描所有用户的主目录就使用
./clamscan -r --bell -i /bin  扫描bin目录并且显示有问题的文件的扫描结果
代码语言:javascript
复制
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

代码语言:javascript
复制
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
代码语言:javascript
复制
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目录并且显示有问题的文件的扫描结果

10.webshell查杀

linux版本:

河马webshell查杀:http://www.shellpub.com

深信服Webshell网站后门检测工具:http://edr.sangfor.com.cn/backdoor_detection.html

河马webshell查杀:http://www.shellpub.com 深信服Webshell网站后门检测工具:http://edr.sangfor.com.cn/backdoor_detection.html

11.RPM check检测

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

代码语言:javascript
复制
./rpm -Va > rpm.log

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

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

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/目录 修复文件丢失

文件提取还原案例: 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/目录 修复文件丢失

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022 年 03 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1.账号安全
  • 2.历史命令
    • 基本使用:
      • 入侵排查:
      • 3.端口
      • 4.进程
      • 5.开机自启
      • 6.定时任务
      • 入侵排查
      • 7.服务
      • 8.系统日志
      • 9.工具篇
      • 编译完没有报错的话执行检查
      • 安装一下gcc编译环境: yum install gcc
      • 安装一下gcc编译环境: yum install gcc
      • 10.webshell查杀
      • 11.RPM check检测
      相关产品与服务
      访问管理
      访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档