利用端口,进程,文件,服务和日志信息来排查系统安全

提示:主要是对主机系统进行安全排查操作


前言

分享一下自己对主机系统排查应该做哪些工作的理解。不管你做什么,现在都离不开一台电脑。而网络安全问题日益严重,那么学会对主机安全系统排查据很有必要了。话不多说,开整。

一、查看系统进程ps

进程可以理解为计算机的工作任务,每个进程就是一个任务。

<1>ps是什么

ps是Process Status的缩写。译为进程状态。它的主要作用就是去查看系统各个进程,通过不同选项来进行不同操作。

<2>使用ps

各个字段含义我放在最后了,大家不理解的可以看一看

//显示主机所有进程,效果与ps -e等同
ps -A

在这里插入图片描述
在这里插入图片描述

//显示当前终端所有进程
ps -a

在这里插入图片描述

//显示有效的用户id或者用户名使用的进程。制定所有控制终端。
ps -u

在这里插入图片描述

//显示没有控制终端的进程。显示范围为系统。
ps -x

在这里插入图片描述

//长格式显示,增加新字段(F,wchan,C等)。结尾查看字段含义。如没有指定显示范围,默认是终端内。 
ps -l

在这里插入图片描述

//格式输出,一般不单用。默认也是终端内。
ps -f

在这里插入图片描述

//常用显示进程命令,查看cpu占用和内存占用等,还有大小等。结尾给出字段含义。
ps -aux

在这里插入图片描述

//常用命令,格式化输出进程。
ps -elf

在这里插入图片描述
UID: 负责启动进程的用户;
PID: 进程的ID;
PPID: 父进程的PID(如果某个进程由另一个进程启动);
USER: 进程所有者的用户名;
C: 进程存续期的处理器利用率;
TIME: 进程启动时的系统时间;
TTY: 进程从中启动的终端设备;
CMD: 启动程序的名称;
F: 内核分配给进程的系统标记;
S: 进程的状态(O (TASK_OPERATING)=在处理器上运行,即运行态;S (TASK_INTERRUPTIBLE)=睡眠,即阻塞态;R(TASK_RUNNING)=可运行,等待运行,即就绪态;Z(TASK_DEAD - EXIT_ZOMBIE)=死进程,进程已终止,同时父进程不可用,即退出态;T(TASK_STOPPED or TASK_TRACED)=暂停状态或跟踪状态)
PRI: 进程的优先级(数字越大优先级越低);
NI: nice value 用于判断优先级;
ADDR: 进程的内存地址;
SZ: 换出进程大致需要的交换空间;
WCHAN: 进程睡眠时所在的内核函数的地址;
VSZ: 进程在内存中的大小,以KB为单位;
RSS: 进程使用过的且未被换出的物理内存;
STAT: 由两个字符组成的状态码,用于表示当前进程的状态;
VIRT: 进程所使用的虚拟内存总量;
SHR: 进程与其他进程共享的内存量;
%CPU: 进程正使用的CPU时间份额;
%MEM: 进程正使用的可用物理内存份额;
TIME+: 进程启动后已使用的总CPU时间;
COMMAND: 进程的命令行名称(已启动程序);
这是比较常用的命令,还有一些并没介绍,感兴趣的小伙伴可以自行探索。

二、网络接口与连接netstat

<1>netsat是什么

netstat命令的作用是显示网络连接、路由表和网络接口信息,可以让用户得知有哪些网络连接正在运作,使用时如果不带参数,netstat显示活动的TCP连接。netstat全拼写netwoking statistics.(网络统计学)。
Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。
总而言之,就是自身网络侦察工具。

<2>netstat的使用

字段含义在最后,自行查看

//显示所有选项,默认不显示LISTEN相关
netstat -a

在这里插入图片描述

//地址和端口以及主机强制数字显示,搭配TCP整理一下
netstat -n

在这里插入图片描述

//显示LISTEN(监听)相关
netstat -l

在这里插入图片描述

//这个P代表Progress,意思是显示建立链接的程序名
netstat -p

在这里插入图片描述

//显示路由表路由信息
netstat -r

在这里插入图片描述

//显示计时器
netstat -o

在这里插入图片描述

//显示tcp相关
netstat -t

在这里插入图片描述

//显示udp相关
netstat -u

在这里插入图片描述

//显示额外拓展信息,例如UID(用户信息)
netstat -e

在这里插入图片描述

//查找5432端口状态
netstat -pantuoe |grep :5432

在这里插入图片描述

//查找acunetix服务对应端口.(postgresql是acunetix前置服务)
netstat -pantuoe acunetix

在这里插入图片描述
很多字段看字面英文意思读懂了,这里不做介绍了。
timer:计时器
Inode:索引结点
针对路由字段flag
在这里插入图片描述

三、查看进程与文件之间关系lsof

<1>lsof是什么

lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。
lsof命令全拼写为list of open file,列出打开文件。

<2>lsof的使用

字段解释在下面

//展示主机上所有进程打开文件
lsof 

在这里插入图片描述

//展示postgres用户所有进程打开的文件
lsof -u postgreps

在这里插入图片描述

//展示进程号(PID)为659打开的文件
lsof -p 659

在这里插入图片描述

//展示文件夹var/log所有打开文件对应进程
lsof +D /var/log

在这里插入图片描述

//展示5432端口对应进程
lsof -i :5432

在这里插入图片描述

//只看特定进程名,为了跟-u加以区分,我过滤了含6的进程
//注意看,用户变了,不是postgres了
lsof -c postgres|grep -v 6

在这里插入图片描述

//列出组id是(GID)1的进程号及文件
lsof -g 1

在这里插入图片描述
字段解释
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、nc检测目标主机特定端口是否通

<1>nc介绍

nc是netcat的简写,是一个功能强大的网络工具,有着网络界的瑞士军刀美誉。nc命令在linux系统中实际命令是ncat,nc是软连接到ncat。nc命令的主要作用如下:
1.实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
2.端口的扫描,nc可以作为client发起TCP或UDP连接
3.机器之间传输文件
4.机器之间网络测速
但是咱们做安全排查,就说一个危险主机连接排查,就是第二个功能,感兴趣的小伙伴可以自行探索。

<2>nc使用

//探测目标主机端口8080是否开放
//z代表扫描不发送数据,v代表详细输出,n代表不使用dns反向查询IP地址域名
nc -zvn 192.168.1.104 8080

我部署一个tomcat服务器,所以是显示open
在这里插入图片描述
这是错误失败报告
在这里插入图片描述

五、检查日志

<1>什么是日志

日志文件是Linux为管理员存储的一组记录,用于跟踪和监视重要事件。它们包含有关服务器的消息,包括在其上运行的内核,服务和应用程序等信息。
Linux提供了一个日志文件的集中存储库,通常是位于/ var / log目录下。在该目录下包含大量文件,我们可以在其中获取每个应用程序的信息。

<2>为什么要监控日志

通过监视Linux日志文件,我们可以获得有关服务器性能,安全性,错误消息和基础问题等等的详细信息。
如果我们想采用主动和被动方法进行服务器管理,则需要定期进行日志文件分析。
当系统被攻击时,无论怎么样都会产生影响,不管是异常操作被日志记录,还是删除日志信息等,总会留下线索。
因此监控日志很有必要。

<3>监控日志需要做些什么

1.需要检查的系统日志文件主要包括一般信息日志、网络连接日志、文件传输日志以及用户登录日志等。在检查这些日志时要特别注意时间记载分析日志产生的时间是否合理;
2.可疑的日志记录;
3.非正常时间凌晨的用户登录;
4.关键日志记录损坏尤其是记录用户登录登出信息的wtmp文件;
5.非正常IP的用户登录;
6.用户登录失败甚至一再尝试登录并失败的日志记录;
7.非正常的超级用户权限切换su指令;
8.非正常的控制进程启动或重启记录;
9.等等。

<4>日志解读

在这里插入图片描述

alternatives.log

更新替代信息都记录在这个文件中。

auth.log

包含系统授权信息,包括用户登录和使用的权限机制等。

boot.log

一般包含系统启动时的日志,包括自启动的服务。
这个文件只会存储本次开机启动的信息,前次开机的信息并不会被保留下来。

btmp

记录所有失败登录信息。使用last命令可以查看btmp文件。例如,last -f /var/log/btmp | more
在这里插入图片描述

daemon.log

包含各种系统后台守护进程日志信息。

debug.log

包含一些调试信息日志。

dpkg.log

包括安装或dpkg命令清除软件包的日志。

faillog

包含用户登录失败信息。此外,错误登录命令也会记录在本文件中.

fontconfig.log

字体配置相关日志。主要记录usr/share/fonts的日志。

kern.log

包含内核产生的日志,有助于在定制内核时解决问题。

lastlog

可以记录系统上面所有的账号最近一次登入系统时的相关信息。 该日志文件记录最近成功登录的事件和最后一次不成功的登录事件,由login生成。 在每次用户登录时被查询,该文件是二进制文件,需要使用 lastlog命令查看,根据UID排序显示登录名、端口号和上次登录时间。如果某用户从来没有登录过,就显示为"Never logged in"。(我没有启用,正常会有的)
使用lastlog,查看。last -u root,查看root用户最后一次登录。

macchanger.log

MAC地址相关的日志。

messags

包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。

syslog

syslog是Linux系统默认的日志守护进程。默认的syslog配置文件是/etc/sysctl.conf文件
通常,syslog 接受来自系统的各种功能的信息,每个信息都包括重要级。/etc/syslog.conf 文件通知 syslogd 如何根据设备和信息重要级别来报告信息。

user.log

记录所有等级用户信息的日志.

wtmp

该 日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。因此随着系统正常 运行时间的增加,该文件的大小也会越来越大,增加的速度取决于系统用户登录的次数。该日志文件可以用来查看用户的登录记录,last命令就通过访问这个文 件获得这些信息,并以反序从后向前显示用户的登录记录,last显示用户、终端 tty时间相应的记录。
在这里插入图片描述

vm-*虚拟机相关,略。

针对文件夹就是看名字,应用或者协议相关日志等,除了这两类,基本就都和英文意思相关了,不多介绍了,感兴趣的小伙伴自己去找一找。
最后附上一个没有的utmp

<5>utmp与用户检测

记录当前登录进系统的用户跟wtmp相似,但有区别。
last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户 last /var/log/wtmp
在这里插入图片描述

 users用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话
  在这里插入图片描述

w命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息 w /run/utmp
 who命令查询utmp文件并报告当前登录的每个用户 who /run/utmp
 
在这里插入图片描述

ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连结的时间(小时)ac /var/log/wtmp

在这里插入图片描述
我在/var/log目录下,所以命令是这个,大家注意,不在这个目录跟我命令不能一样

总结

很多命令并不是只有那些功能。我这主要对常用的有关于进程端口文件进行了介绍。分享就到这了,感觉有帮助的兄弟点个赞。希望能够对你有所帮助。再会!

猜你喜欢

转载自blog.csdn.net/qq_57223070/article/details/127087458