当Linux主机发生安全事件,需要排查是否有入侵时,一般可以使用常用的shell命令,通过分析主机异常、进程端口、启动方式等信息来确认主机,可疑文件和日志记录。主机是否已被破坏。在此,结合工作中对Linux安全事件的分析处理方法,对Linux人工入侵排查过程中的分析方法进行总结。01.查看系统账户从攻击者的角度来看,入侵者入侵成功后,往往会留下后门再次访问被攻陷的系统,创建系统账户是一种比较常见的后门方式。在进行入侵排查时,用户配置文件/etc/passwd和密码配置文件/etc/shadow是需要重点关注的地方。(1)查询特权用户特权用户(uid为0)awk-F:'$3==0{print$1}'/etc/passwd(2)查询可远程登录的账户信息awk'/\$1|\$6/{print$1}'/etc/shadow(3)除了root账号,其他账号是否有sudo权限。如果不是管理要求,普通账户应该删除sudo权限more/etc/sudoers|grep-v"^#\|^$"|grep"ALL=(ALL)"(4)禁用或删除多余和可疑账户usermod-luser禁用账号,账号无法登陆,/etc/shadow第二列是!userdeluser开头删除用户useruserdel-ruser会删除用户user,并删除/home目录下的用户目录。用户信息who查看当前登录用户(ttylocalloginptsremotelogin)w查看系统信息,想知道用户在某个时刻的行为uptime查看登录多久,有多少用户,load02,check异常端口(1)使用netstat网络连接命令,分析可疑端口、IP、PID等信息。netstat-antlp|more(2)如果发现网络连接异常,需要持续观察,可以进行抓包分析tcpdump-c10-q//简化模式显示10个包03、查看可疑进程(1)使用ps命令列出系统当前运行的进程,分析异常进程名、PID、可疑命令行等psaux/ps-ef(2)使用top命令显示系统中各个进程的资源使用情况。如果发现资源占用过高。:psehocommand-p$PID查看进程启动目录:readlink/proc/$PID/cwd查看pid对应的进程文件路径:ls-l/proc/$PID/exe查看完整进程时启动环境变量:strings-f/proc/1461/environ|cut-f2-d''列出进程打开的所有文件:lsof-p$PID04,查看systemservicelinux系统服务管理,之前CentOS7使用systemd控制CentOS6使用chkconfig控制。(1)对于systemd服务管理器,可以通过以下方式查看自启动服务:systemctllist-unit-files--type=service|grep"enabled"(2)chkconfig是CentOS6之前用来控制系统服务的工具查看服务自启动状态:chkconfig--listchkconfig--list|grep"3:on\|5:on"05、查看启动项(1)查看启动项脚本more/etc/rc.conflocal/etc/rc.d/rc[0~6].dls-l/etc/rc.d/rc3.d/(2)例子:当我们需要启动自己的脚本时,只需要将可执行脚本在/etc/init.d目录下,然后在/etc/rc.d/rc*.dln-s/etc/init.d/sshd/etc/rc.d/rc3中创建软链接。d/S100ssh这里sshd是具体服务的脚本文件,S100ssh是它的软链接,S开头表示加载时自动启动;如果是K开头的脚本文件,说明加载运行关卡时需要关闭。06.检查计划任务。使用计划任务维护权限,可以被入侵者用作持久化机制。检查定时任务是否异常,重点关注以下目录是否存在恶意脚本。/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/*07.检查异常文件1.检查敏感目录,如/tmp目录下的文件,注意隐藏文件夹。名为“..”的文件夹隐藏了属性2。获取WEBSHELL和远程控制木马的创建时间。如何找出在同一时间范围内创建的文件?可以使用find命令查找,比如find/opt-iname"*"-atime1-typef在/opt3下查找。可以使用stat查看可疑文件的创建和修改时间。08.查看历史命令一般而言,入侵者在获得shell后,会执行一些系统命令在主机上留下痕迹。我们可以通过history命令查询shell命令的执行历史。(1)查询某个用户在系统上执行过哪些命令使用root用户登录系统,查看/home目录下用户家目录下的.bash_history文件(2)默认情况下,系统可以保存1000条历史命令,且不记录命令执行时间,按要求进行安全加固。a)保存10,000条命令sed-i's/^HISTSIZE=1000/HISTSIZE=10000/g'/etc/profileb)在/etc/profile文件末尾添加如下几行配置信息:######家谷历史先史#########USER_IP=`who-uami2>/dev/null|awk'{print$NF}'|sed-e's/[()]//g'`if["$USER_IP"=""]thenUSER_IP=`hostname`fiexportHISTTIMEFORMAT="%F%T$USER_IP`whoami`"shopt-shistappendexportPROMPT_COMMAND="history-a"#########jiaguhistoryxianshi##########c)source/etc/profile使配置生效如果出现问题,用户可以快速通过查看日志定位并解决问题。常用的日志文件如下:/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授权,甚至添加用户、修改用户密码都会记录在这log文件一般需要关注secure安全日志,查看系统错误登录日志,统计ip重试次数,登录成功时间,用户名和ip,确认账号是否有暴力破解或异常登录。1.定位有多少个IP在爆破主机的root账号:grep"Failedpasswordforroot"/var/log/secure|awk'{print$11}'|排序|uniq-c|排序-nr|在暴力破解中找到哪些IP:grep"Failedpassword"/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"密码失败"/var/log/secure|perl-e'while($_=<>){/for(.*?)from/;print"$1\n";}'|uniq-c|sort-nr2,登录成功的IP是什么:grep"Accepted"/var/log/secure|awk'{print$11}'|排序|uniq-c|排序-nr|更多成功登录日期、用户名、IP:grep"Accepted"/var/log/secure|awk'{打印$1,$2,$3,$9,$11}'
