LINUX
分析敏感文件或目录
TMP临时目录
tmp目录是一个放置临时文件的目录,普通用户对其目录内的文件都具有读写的权限,因此tmp目录通常用于提权
开机自启动文件分析
查看自启动文件:ls -alh /etc/init.d/ (-h显示文件大小)
查询敏感文件
以下是常用到的find命令:
查询一些敏感的文件后缀名, 例如php , aspx , jsp 等webshell常用后缀
find ./ mtime 0 name "*.php" //查找24小时内修改过的指定文件 mtime(修改时间) 0表示24小时
find ./ ctime -2 name "*.php" //查找72小时内生成的指定文件 ctime(创建时间)
find ./ iname "*.php*" -perm 777 //查找权限为777的指定文件 iname表示不区分大小写 perm表示权限
分析可疑进程
分析网络连接
常用命令:
netstat -pantl ,列出TCP相关的服务连接。
netstat -pantl | grep "ESTABLISHED" ,查看已建立的TCP服务连接。
以下是netstat的使用参数
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
对进程文件分析
以下是常用到的linux命令:
分析异常登录
在linux的操作都会被记录在系统日志中,可以通过查询日志信息判断是否有异常登录
last -i | grep -v 0.0.0.0 : 查询非本地登录的日志信息,-i表示IP
w 命令 : 实时查看登录日志
分析异常用户
提权root用户实操
新建用户,随后修改用户uid为0, 以此获取root权限
useradd test
passwd test {输入密码}
vim /etc/passwd //修改用户uid为0
排查异常用户
grep "0:0" /etc/passwd : 查找root权限用户
ls -l /etc/passwd : 查看用户文件最近修改时间
awk -F: '$3==0 {print $1}' /etc/passwd : 查看root权限用户
awk -F: '$2=="!" {print $1}' /etc/shadow : 查看空密码用户
禁用以及删除可疑账号
usermod -L user //禁用帐号,帐号无法登录
userdel user //删除
userdel -r user //将删除user用户,并且将/home目录下的user目录一同删去
分析历史命令
linux系统之前执行的命令会保存在/root/.bash_history文件中,以下是查看history的命令。
cat /root/.bash_history
history
常见的可疑历史命令: wegt(远程下载)、ssh(连接内网)、tar zip(压缩打包)
特别要注意, 有些黑客还会修改你的系统命令,例如把netstat命令给改成别的了,从而导致无法使用此命令
分析计划任务
crontab命令排查计划任务
crontab -l //列出计划任务
crontab -r //删除计划任务
crontab -e //编辑计划任务
anacron命令实现异步定时任务调度
vi /etc/anacrontab
@daily 10 example.daily /bin/bash /home/shell.sh //每天机器开机十分钟之后运行shell.h。
more命令查询计划任务目录
使用more命令查询以下目录,重点查询/etc/cron.d/* 目录
/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/*
分析自启动项
设置开机自启动
ls /etc/init.d/ 查看开机自启动文件
update-rc.d apache2 enable 设置apache2服务开机自启动
通过创建软连接设置自启动,将脚本文件放在/etc/init.d目录下,然后在/etc/rc.d/rc*.d 中建立软连接即可。
S100ssh是sshd脚本的软连接,S表示运行级别加载时自启动,K则表示加载时需关闭
ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh
ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/K100ssh
关闭开机自启动
update-rc.d apache2 disable 取消apache2服务开机自启动
排查启动项文件
more /etc/rc.local
more /etc/rc.d/rc[0~6].d
ls -l /etc/rc.d/rc3.d/
分析服务自启动项
修改服务自启动
1、使用chkconfig命令(红帽linux)
命令参数:chkconfig [--level 运行级别][独立服务名][on|off]
chkconfig –level 2345 httpd on //自动启动http服务
chkconfig httpd on //若没填写level参数,默认值为2345
2、修改/etc/rc.local文件,加入 /etc/init.d/httpd start
3、使用ntsysv 命令管理自启动,该命令适用于红帽linux
入侵排查
chkconfig --list //查看服务自启动状态,可以看到所有的RPM包安装的服务
ps aux | grep crond //查看当前服务
查看3与5级别下的启动项
chkconfig --list | grep "3:启用|5:启用" //中文环境下
chkconfig --list | grep "3:on|5:on" //英文环境下
$PATH变量异常
$PATH就是环境变量,分析是否有异常环境变量
echo $PATH : 输出环境变量目录
export PATH=$PATH:/usr/lol/theshy 添加环境变量,临时有效,重启无效
vim /etc/profile ,随后添加export PATH=$PATH:/usr/lol/faker ,再source /etc/profile 。这个是永久修改$PATH变量的方法
系统日志分析
日志存放位置
日志默认存放位置:/var/log/
查看日志配置:more /etc/rsyslog.conf
日志文件 | 说明 |
---|
/var/log/cron | 记录定时任务日志 | /var/log/cups | 记录打印信息日志 | /var/log/mailog | 记录邮件信息日志 | /var/log/message | 记录系统重要信息日志,若出问题,首先检查该日志 | /var/log/btmp | 记录错误信息日志,二进制文件,要用lastb命令查看 | /var/log/lastlog | 记录所有用户最后一次登录时间日志,二进制文件 | /var/log/wtmp | 记录所有用户的登录、注销信息,同时记录系统的启动、重启等事件,是个二进制文件 | /var/log/utmp | 记录当前登录用户信息,会随着用户注销而不断变化,只能通过w,who,users命令查看 |
日志分析技巧
注意:Centos系统登录日志记录在/var/log/secure,Ubuntu系统登录日志记录在/var/log/auth.log。
1、分析爆破root账户的ip相关信息
查看爆破root用户的IP数量
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
查看爆破的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
查看爆破所用到的用户名字典
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
2、分析登录成功的ip
查看所有的登录成功的ip
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
查看登录成功的ip,用户及日期
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
3、查看用户操作的日志
grep "useradd" /var/log/secure //查看“useradd”命令的操作日志
grep "userdel" /var/log/secure //查看“userdel”命令的操作日志
rkhunter工具使用
rkhunter工具会自动为我们排查linux系统的加固安全隐患
安装工具:apt-get install rkhunter
常用命令:rkhunter --check --sk //–sk表示自动补全
安全加固
阻止非root用户登录
touch /etc/nologin
给密码文件设置权限
chmod命令的使用可以看我linux专栏的文章,这里不过多解释
chmod 644 /etc/passwd
chmod 600 /etc/shadow
chmod 644 /etc/group
修改文件默认权限
umask=027
给日志或其他重要文件加固
chattr +a /var/log/messages //设置此文件只能追加数据
chattr +i /var/log/messages.* //设置文件不能被修改且删除
chattr +i /etc/shadow
chattr +i /etc/passwd
chattr +i /etc/group
屏蔽banner信息
vi /etc/ssh/sshd_config 将banner设置成NONE
增强秘钥
authconfig --passalgo=sha512 --update //启用 SHA512 替代 MD5加密
限制登录次数
auth required pam_tally2.so deny=3 unlock_time=5 even_deny_root root_unlock_time=120
//登录三次后锁定账户,普通用户5秒后解锁,root用户120秒后解锁
设置历史命令最大保存条数
vim /etc/profile ,修改HISTSIZE为20(默认是1000)
|