Linux主机入侵检测

时间:2023-03-09 23:22:52
Linux主机入侵检测

检查系统信息、用户账号信息

● 操作系统信息

cat /proc/version

用户信息

用户信息文件

/etc/passwd

root:x:0:0:root:/root:/bin/bash
用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后的 shell

查看哪些用户为root权限,有没有新增的

cat /etc/passwd | grep x:0

Linux主机入侵检测

查询特权用户特权用户(uid 为0)

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

Linux主机入侵检测

注: guest用户uid为0为非正常用户

查询可以远程登录的帐号信息

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

查看空口令账户

awk -F: 'length($2)==0 {print $1}' /etc/shadow

查询有sudo权限账户

more /etc/sudoers | grep -v "^#\|^$" | grep "

查看当前用户登录系统情况

who

查看用户错误的登录信息

lastb

查看所有用户最后的登录信息

lastblog

历史命令

当前用户的历史命令

history

打开 /home 各帐号目录下的 .bash_history,查 看普通帐号执行的历史命令。

应急措施

● usermod -L user 禁用帐号,帐号无法登录,/etc/shadow 第二栏为 ! 开头

● userdel user 删除 user 用户

● userdel -r user 将删除 user 用户,并且将 /home 目录下的 user 目录一并删除

检查启动项、计划任务

启动项

more /etc/rc.local
/etc/rc.d/rc[0~6].d
ls -l /etc/rc.d/rc3.d

计划任务

利用 crontab 创建计划任务

● crontab -l 列出某个用户cron服务的详细内容

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

● crontab -r 删除每个用户cront任务(谨慎:删除所有的计划任务)

● crontab -e 使用编辑器编辑当前的crontab文件

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

入侵排查

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

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/* 查看目录下所有文件

检查异常端口

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

查看TCP连接

netstat -an | grep tcp | awk '{print $5}

查看SYN连接情况

netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq - c | sort -nr | more

查看对应链接的文件路径

ls -l /proc/$PID/exe 或 file /proc/$PID/ exe($PID 为对应的 pid 号)

检查异常进程

使用ps命令,分析进程

ps -aux | grep pid

监控某一应用线程数(如ssh

ps -eLf | grep ssh| wc –l

监控网络客户连接数

netstat -n | grep tcp | grep 侦听端口 | wc -l

查看cpu占用率前十的进程,有时候可以发现

ps aux --sort=pcpu | head -10

检查服务

服务自启动

第一种修改方法:

● chkconfig [--level 运行级别] [独立服务名] [on|off]

● chkconfig –level 2345 httpd on 开启自启动

● chkconfig httpd on (默认level是2345)

第二种修改方法:

● 修改 /etc/re.d/rc.local 文件

● 加入 /etc/init.d/httpd start

第三种修改方法:

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

systemctl list-unit-files | grep enable #通过Systemctl查看所有开启的服务

检查异常文件

查看敏感目录

● 如/tmp目录下的文件,同时注意隐藏文件夹,以 “..”为名的文件夹具有隐藏属性

时间点查找

列出攻击日期内变动的文件

find

● 在指定目录下查找文件

find -type b/d/c/p/l/f

● 查找块设备、目录、字符设备、管道、符号链 接、普通文件。

find -mtime -n +n

● 按文件更改时间来查找文件,-n 指n天以内,+n 指n天前

find -atime -n +n

● 按文件访问时间来查找文件,-n 指n天以内,+n 指n天前

find -ctime -n +n

● 按文件创建时间来查找文件,-n指n天以内,+n 指n天前

find / -ctime 0 -name "*.sh"

● 可查找一天内新增的sh文件

特殊权限文件查找

find / tmp -perm 777

webshell查找

find /var/www "*.php" | xargs egrep 'assert| phpspy|c99sh|milw0rm|eval|base64_decode| shell_exec|passthru|\(\$\_\$POST\[|eval'

● 查找/var/www下的所有php文件,xargs egrep 及之后的命令是查询php文件中是否包含后面的 关键字

对系统命令进行排查

● findWebshell、Scan_Webshell.py等进行 webshell扫描

● ls和ps等命令很可能被攻击者恶意替换,所以可以使用ls -alt /bin,查看命令目录中相 关系统命令的修改时间,而进行排查。

● ls -alt /bin查看相关文件大小,若明显偏大,则 文件恒可能被替换

Linux后门检测

● 使用第三方查杀工具(chkrootkit,rkhunter)

排查SUID程序

● find / -type f -perm -04000 -ls -uid 0 2>/ dev/null

检查系统日志

● 日志默认存放位置:/var/log/

● 查看日志配置情况:more /etc/rsyslog.conf