入侵排查思路
账号安全
->
历史命令
->
检查异常端口
->
检查异常进程
->
检查开机启动项
->
检查定时任务
->
检查服务
->
检查异常文件
->
检查系统日志
一、账号安全
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
目录一并删除
|
二、历史命令
ls -a //
查看隐藏文件
.
开头的为隐藏文件
通过
.bash_history
查看帐号执行过的系统命令
1
、
root
的历史命令
history
2
、打开
/home
各帐号目录下的
.bash_history
,查看普通帐号的历史命令
为历史的命令增加登录的
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
文件中的记录。
入侵排查:
进入用户目录下
cat .bash_history >> history.txt
|
三、检查异常端口
检查异常端口
使用
netstat
网络连接命令,分析可疑端口、
IP
、
PID
netstat -antlp|more
a:all
所有监听的端口
n:
直接使用
ip
t:tcp
协议
l:listen
监听
p:
进程
查看下
pid
所对应的进程文件路径,
运行
ls -l /proc/$PID/exe
或
file /proc/$PID/exe
(
$PID
为对应的
pid
号)
|
四、检查异常进程
检查异常进程
使用
ps
命令,分析进程
ps aux | grep pid
VSZ
:虚拟内存的占用大小
RSS
:实际内存的占用大小
TTY
:终端类型(
tty:
控制终端,
pts:
虚拟终端)
STAT
:进程状态
R:正在运行或者可运行的进程
S:休眠中
s:一个信息头
<:高优先级
N:低优先级
l:多线程
+:在前台进程组
START
:进程的启动时间
TIME
:进程运行时长
COMMAND
:启动进程的命令
|
五、检查开机启动项
systemctl enable
服务名
//
自启动服务
开机自启动的脚本:
#! /bin/bash
#chkconfig:2345 10 90
#description:ziqi.sh
echo 123
2345
:默认的启动级别
10
:启动优先级
90
:停止优先级
查看运行级别命令
runlevel
运行级别 含义
0
关机
1
单用户模式,可以想象为
windows
的安全模式,主要用于系统修复
2
不完全的命令行模式,不含
NFS
服务(无网络连接的多用户命令行模式)
3
完全的命令行模式,就是标准字符界面(有网络连接的多用户命令行模式)
4
系统保留
5
图形模式(带图形化界面的多用户命令行模式)
6
重启动
优先级的范围:
0-100
,数字越大,优先级越低
设置开机自启动,只需将可执行脚本丢在
/etc/init.d
目录下,然后在
/etc/rc.d/rc*.d
中建立软链接即可
[root@localhost ~]# ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh
此处
sshd
是具体服务的脚本文件,
S100ssh
是其软链接,
S
开头代表加载时
自启动;如果是
K
开头的脚本文件,代表运行级别加载时需要关闭的。
S100-->
启动优先级
100
chkconfig --add ziqi.sh //
将脚本添加自启动列表
chkconfig --list //
查看自启动列表
chkconfig ziqi.sh on //
启用脚本
|
硬链接
|
软链接
| |
类似完整克隆,但不完
成是
|
类似链接克隆,但不完全是
| |
创建方式
|
ln [
原文件
] [
目标链接文
件]
|
ln -s [原文件
] [
目标链接文件
]
|
原文件删除
|
若有可执行权限,才能
执行,不受影响
|
随之损坏,不能执行
|
更改原文件权限
|
权限随之更改
|
权限不会更改,但是若原文件没有执行权
限,软链接也无法执行
|
新建一个与被删除原文
件的同名文件
|
执行将结果与被删除原
文件的内容一样
|
执行结果是新建文件的内容
|
六、检查定时任务
入侵排查:
重点关注以下目录中是否存在恶意脚本
/var/spool/cron/*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*
小技巧:
more /etc/cron.daily/*
查看目录下所有文件
|
七、检查服务
systemctl list-units --type=service //
查看正在运行的服务
systemctl list-units --all --type=service //
查看系统中所有的服务
|
八、检查异常文件
1
、查看敏感目录,如
/tmp
目录下的文件,同时注意隐藏文件夹,以
“..”
为名的文件夹具有隐藏属性
2
、得到发现
WEBSHELL
、远控木马的创建时间,如何找出同一时间范围内创建的文件?
可以使用
find
命令来查找,如
find /opt -iname "*" -atime 1 -type f
找出
/opt
下一天前访问过的文件
-atime 1
:一天之内
-type f
:类型,
f-->file,
普通文件
3
、针对可疑文件可以使用
stat
进行创建修改时间。
[root@os39 ~]# stat 1.txt
File: ‘1.txt’
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 35006567 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2023-07-26 21:10:09.071949332 -0400 //
访问时间(
cat
)
Modify: 2023-07-26 21:10:09.071949332 -0400 //
修改文件内容时间
Change: 2023-07-26 21:10:09.071949332 -0400 //
改变状态的时间(包括内容修改、权限修改 等)
Birth: -
|
九、检查系统日志
日志默认存放位置:
/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
授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
|
日志分析技巧:
1
、定位有多少
IP
在爆破主机的
root
帐号:
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq
-c | sort -nr | more
2
、定位有哪些
IP
在爆破:
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
、爆破用户名字典是什么?
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/;
print "$1\n";}'|uniq -c|sort -nr
4
、登录成功的
IP
有哪些:
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
sort
:对文本文件中所有行进行排序
uniq -c
:在每行开头的时候增加重复次数
sort -nr
:统计出现的次数
5
、登录成功的日期、用户名、
IP
:
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
6
、增加用户日志:
grep "useradd" /var/log/secure
7
、删除用户日志:
grep "userdel" /var/log/secure
8
、
su
切换用户
more /var/log/secure | grep 'su:'
|
十、工具使用
Rootkit
查杀
1
、
chkrootkit
网址:
http://www.chkrootkit.org
使用方法:
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar -zxf chkrootkit.tar.gz
cd chkrootkit-0.55
./chkrootkit
2
、
rkhunter
网址:
http://rkhunter.sourceforge.net/
使用方法:
wget https://sourceforge.net/projects/rkhunter/files/rkhunter/1.4.6/rkhunter-
1.4.6.tar.gz
tar -zxf rkhunter-1.4.6.tar.gz
cd rkhunter-1.4.6/
./installer.sh --install
rkhunter -c
病毒查杀
Clamav
ClamAV
的官方下载地址为:
http://www.clamav.net/download.html
使用方法:
yum -y install epel-release
yum install –y clamav clamav-update
freshclam
clamscan -r /home
webshell
查杀
河马
webshell
查杀
网址:
https://www.shellpub.com/
使用方法:
https://www.shellpub.com/doc/hm_linux_usage.html
深信服
Webshell
网站后门检测工具
网址:
https://edr.sangfor.com.cn/#/index/home
|