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

文章目录

  • 前言
  • 一、查看系统进程`ps`
    • <1>ps是什么
    • <2>使用ps
  • 二、网络接口与连接`netstat`
    • <1>netsat是什么
    • <2>netstat的使用
  • 三、查看进程与文件之间关系`lsof`
    • <1>lsof是什么
    • <2>lsof的使用
  • 四、nc检测目标主机特定端口是否通
    • <1>nc介绍
    • <2>nc使用
  • 五、检查日志
    • <1>什么是日志
    • <2>为什么要监控日志
    • <3>监控日志需要做些什么
    • <4>日志解读
      • `alternatives.log`
      • `auth.log`
      • `boot.log`
      • `btmp`
      • `daemon.log`
      • `debug.log`
      • `dpkg.log`
      • `faillog`
      • `fontconfig.log`
      • `kern.log`
      • `lastlog`
      • `macchanger.log`
      • `messags`
      • `syslog`
      • `user.log`
      • `wtmp`
      • `vm-*`虚拟机相关,略。
    • <5>utmp与用户检测
  • 总结

前言

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

一、查看系统进程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目录下,所以命令是这个,大家注意,不在这个目录跟我命令不能一样

总结

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

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

  1. 利用winston和morgan记录express日志信息

    最近忙着做毕业设计,项目是一个多用户博客程序.后端技术栈为express+mongodb,为了能够更为详细的记录程序运行日志,便开始研究如何使用winston和morgan.项目代码已托管到GitHu ...

  2. 演示如何利用log4net记录程序日志信息

    log4net是一个功能著名的开源日志记录组件.利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括 MS SQL Server, Access, Oracl ...

  3. sqlite库——C实现,给sqlite数据库添加信息并把信息写入文件,删除日志和库中的日志信息

    一.功能 在开机启动时候,给sqlite3数据库内,添加 '固定' 信息的运行日志: 并把日志写入[.log]文件内: 日志信息的6个字段为: 时间time.类型type.主体subject.客体ob ...

  4. 架构设计:文件服务的设计与实现

    功能 文件服务器的核心功能就两个:「文件上传」和「文件下载」!其中上传可能需要支持断点续传.分片上传.而下载可能需要进行下载保护,例如非指定客户端无法下载.除了这两个核心功能,一般都会有一个额外功能, ...

  5. scrapy日志信息等级

    基础配置scrapy中的日志信息 在settings.py文件中: 日志信息等级有: CRITICAL:严重错误 ERROR:一般错误 WARRING:警告 INFO:一般的信息 DEBUG:调试信息 ...

  6. LinuxProbe 0x14 虚拟网站主机功能(基于端口)、Vsftpd服务传输文件、TFTP简单文件传输协议

    虚拟网站主机功能 基于端口号 基于端口号的虚拟主机功能可以让用户通过指定的端口号来访问服务器上的网站资源.在使用Apache配置虚拟网站主机功能时,基于端口号的配置方式是最复杂的. 因此我们不仅要考虑 ...

  7. [译] APT分析报告:04.Kraken - 新型无文件APT攻击利用Windows错误报告服务逃避检测

    这是作者新开的一个专栏,主要翻译国外知名的安全厂商APT报告文章,了解它们的安全技术,学习它们溯源APT组织的方法,希望对您有所帮助.前文分享了APT组织Fin7 / Carbanak的Tirion恶 ...

  8. 诸神之眼-nmap详细使用介绍2!端口扫描技术和操作系统与服务检测篇! (*╹▽╹*) 信息收集 ~ 其三

    文章目录 端口扫描技术相关知识 端口介绍 端口分类 Nmap对端口的定义 Nmap中的端口扫描技术 指定端口扫描(`-p`.`-F`) TCP建立连接(SYN:synchronous)扫描(`-sS` ...

  9. Icesword FAQ端口 进程 服务篇

    问:现在进程端口工具很多,什么要使用IceSword? 答:1.绝大多数所谓的进程工具都是利用Windows的Toolhlp32或psapi再或 ZwQuerySystemInformation系统调 ...

最新文章

  1. 线性表的链式表示——循环链表
  2. 基于C++全局变量的声明与定义的详解
  3. C语言数组中找到第一个重复元素的算法(附完整源码)
  4. Java 和 Python 解析动态 key 的 JSON 数据
  5. 【计算机视觉】计算机视觉、模式识别、机器学习常用牛人主页链接
  6. MSP430F5529 DriverLib 库函数I2C驱动OLED屏幕
  7. 如何在SQL Server数据库中删除角色
  8. 20-21-2网络管理quiz5
  9. 学生签到系统c代码_c语言学生签到
  10. Redis源码之——跳表skiplist原理和源码调试
  11. win7自定义html为桌面,Win7系统如何自定义个性桌面?
  12. studio 3T破解
  13. 软件配合HT8691功放使用技巧
  14. 微信公众号 模板消息 定时推送 java
  15. 产品经理为什么比程序员工资要高?百度员工:因为他是产品灵魂
  16. kafak集群python外网无法访问:kafka.errors.NoBrokersAvailable: NoBrokersAvailable
  17. staring mysql.the_mysql 启动异常失败 Starting MySQL..The server quit without updating PID file
  18. C语言:str函数(一)
  19. Application Loader上传app,一直卡在“正在通过 App Store 进行鉴定”
  20. 说下类加载器与类加载?加载的信息放在哪个区域?

热门文章

  1. openlayers加载百度地图作为底图坐标偏移的解决办法
  2. 老调重弹,Android Studio 打包H5项目(2020版)
  3. “一见杨过误终身” ——体验式营销,你也可以创造传奇_营销人论坛
  4. 小学计算机教师业务考试题库,小学数学教师业务模拟考试试题
  5. 大丰银行:银行IPO被否第一家,宣告商业银行IPO的审核标准发生了重大变化
  6. PyCharm自动格式化代码
  7. 3.26 haas506 2.0开发教程-example- 简易相机-串口控制ESP32-CAM OV2640拍照
  8. 1134:猴子与香蕉 dp
  9. 用DirectX绘制使用纹理的立方体
  10. 上海市房管局局长否认房产税试点政策失败