Linux系统运维:一个组合命令实现“查看访问某个linux主机的IP地址,看是否有网络攻击”

目          录

一、需求

二、新的解决办法-组合命令实现

(一)使用netstat命令查看当前与本机建立的连接的远程IP地址

1、命令参考

2、命令详细解释

3、命令执行效果

(二)使用ss命令查看当前与本机建立的连接的远程IP地址

1、命令参考

2、命令详细解释

3、命令执行效果


一、需求

        如果一个Linux网络主机接收到太多来自某个未知IP地址的数据包,可能涉及多种情况,以下是一些可能有如下情况:有人进行网络扫描或探测、发生拒绝服务攻击(DoS/DDoS)、误配置或网络故障、僵尸网络活动、一些意外而带来的流量;出现这种情况,基本上是危险的前兆。

        特别是网络视频监控系统中,由于视频访问量大,经常出现大量的未知IP访问的情况。比如在AS-V1000视频监控平台上,由于有时候部署在公有云上面,经常插线这种情况。

       那么,我们有没有办法通过命令或者脚本等手段,找到这个问题根源呢?

       前面我写了一篇文章:

Linux系统运维脚本:如何查看访问我的linux系统的IP地址,并判断是否有网络攻击?(Linux系统运维脚本:如何查看访问我的linux系统的IP地址,并判断是否有网络攻击?-CSDN博客)      

       感觉到这个方法要两个步骤,有点麻烦,因此一直想着优化。功夫不负有心人,找到了更好的办法。

二、新的解决办法-组合命令实现

(一)使用netstat命令查看当前与本机建立的连接的远程IP地址

        使用`netstat`命令来查看当前与本机建立的连接状态,显示与本机建立连接的远程IP地址,并进行统计。

1、命令参考

        直接输出命令,如下:

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

        这条命令会列出所有与本机建立TCP连接的远程IP地址,并统计每个IP地址的连接数。

2、命令详细解释

        组合命令的主要目的是统计系统中所有TCPUDP连接的远程地址及其出现的次数,并按照出现次数进行排序。解释如下:

(1)-ntu:

           - `-n` 选项表示以数字形式显示地址和端口号,而不是尝试解析主机名、服务名等。

           - `-t` 选项表示只显示TCP连接。

           - `-u` 选项表示只显示UDP连接。

        `netstat -ntu` 会列出系统中所有的TCP和UDP连接,但不包括监听套接字,并且地址和端口号以数字形式显示。

(2). awk '{print $5}':

           - `awk` 是一个文本处理工具,用于在文本文件中查找和打印特定的模式。

           - `{print $5}` 是一个 `awk` 程序,它告诉 `awk` 打印每一行的第五个字段。

        在这个命令中,`awk` 用于提取 `netstat` 命令输出的每一行的第五个字段,这通常是远程地址和端口号的组合。

(3). cut -d: -f1:

           - `cut` 命令用于从文本行中提取指定的部分。

           - `-d:` 指定冒号 `:` 作为字段分隔符。

           - `-f1` 表示提取第一个字段。

        由于远程地址和端口号之间通常由冒号分隔,这个 `cut` 命令用于从 `awk` 输出的字符串中提取远程地址部分。

(4). sort:

           - `sort` 命令用于对文本行进行排序。

        在这里,它用于对提取的远程地址进行排序,这样相同的地址就会相邻排列,方便后续的统计。

(5). uniq -c:

           - `uniq` 命令用于报告或省略重复的行。

           - `-c` 选项会在每行前面加上该行在输入文件中出现的次数。

        这个命令用于统计每个唯一远程地址的出现次数。

(6). sort -n:

        - `sort` 命令再次被调用,但这次使用了 `-n` 选项,表示按数字排序。

        这个 `sort` 命令用于按照远程地址的出现次数进行数字排序,这样出现次数最多的地址就会排在最前面。

3、命令执行效果

        在centos系统中执行命令,结果显示如下:

[root@localhost ~]#
[root@localhost ~]# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
      1 192.168.1.222
      1 192.168.1.54
      1 Address
      1 servers)
      2 192.168.1.88
      4 192.168.1.191
    309 127.0.0.1
[root@localhost ~]#

(二)使用ss命令查看当前与本机建立的连接的远程IP地址

        Ss命令前面也介绍过,可以参考:

Linux网络管理命令ss的详细解释,ss的语法、用法和使用场景

(https://blog.csdn.net/weixin_70208651/article/details/136783708)

1、命令参考

        直接提供命令如下:

ss -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

        这条命令与上面的`netstat`命令类似,只是使用了`ss`命令来查看连接状态。`ss`命令通常比`netstat`更快,因为它直接读取内核的网络统计信息,而不是通过`/proc/net`接口。

2、命令详细解释

        命令分析系统中TCP和UDP连接的工具链,用于统计每个远程地址的连接数量。如下为详细解释:

(1). -ntu:

        - `-n` 选项表示以数字形式显示地址和端口号,而不是尝试解析主机名、服务名等。

        - `-t` 选项表示只显示TCP套接字。

        - `-u` 选项表示只显示UDP套接字。

        `ss -ntu` 命令将列出系统中所有的TCP和UDP连接,但不包括监听套接字,并且地址和端口号以数字形式显示。

(2). awk '{print $5}':

        - `awk` 是一个强大的文本处理工具,用于模式扫描和文本/数据提取。

        - `{print $5}` 是一个 `awk` 程序,它打印每行的第五个字段。

        在这个上下文中,`awk` 用于提取 `ss` 命令输出的每一行的第五个字段,该字段通常是远程地址和端口号。

(3). cut -d: -f1:

        - `cut` 命令用于从每行文本中提取指定的字段。

        - `-d:` 指定冒号 `:` 作为字段分隔符。

        - `-f1` 表示提取第一个字段。

        这个命令将上一步中提取的远程地址和端口号字符串分割开,并只保留地址部分。

(4). sort:

        - `sort` 命令用于对文本行进行排序。

        这里,它用于对提取的远程地址进行排序,以便后续统计时相同的地址能够相邻排列。

(5). uniq -c:

         - `uniq` 命令用于报告或省略重复的行。

        - `-c` 选项表示在每行前面加上该行在输入文件中出现的次数。

        这个命令统计每个唯一远程地址的出现次数。

(6). sort -n:

        - `sort` 命令再次被调用,但这次使用了 `-n` 选项,表示按数字排序。

        sort用于对远程地址的出现次数进行数字排序,以便出现次数最多的地址排在最前面。

3、命令执行效果

        在centos系统中执行命令,结果显示如下:


[root@localhost ~]# ss -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
      1 Local
      8 192.168.1.191
     67 [
    221 127.0.0.1
[root@localhost ~]#

大家觉得这两个组合命令是不是比较简单,使用起来也比较方便?可以在评论区讨论一下。

若想了解更多,可以“点击” 下面的 “威迪斯特 微信名片”,就会出现我的二维码

最近更新

  1. TCP协议是安全的吗?

    2024-03-20 15:06:06       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-20 15:06:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-20 15:06:06       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-20 15:06:06       20 阅读

热门阅读

  1. 使用canvas剪切掉两图相交部分

    2024-03-20 15:06:06       17 阅读
  2. uniapp 兼容pc与手机的样式方法

    2024-03-20 15:06:06       20 阅读
  3. 商品规格存储问题

    2024-03-20 15:06:06       20 阅读
  4. 实现:mysql-5.7.42 到 mysql-8.2.0 的升级(rpm方式)

    2024-03-20 15:06:06       18 阅读
  5. MySQL TRIM函数

    2024-03-20 15:06:06       19 阅读
  6. 工作岗位(主要是Qt相关)

    2024-03-20 15:06:06       18 阅读
  7. uncaught error: dynamic require of “buffer“ is not supported

    2024-03-20 15:06:06       21 阅读
  8. 信息化项目可研报告模板(第五章)

    2024-03-20 15:06:06       16 阅读
  9. 深度学习常见的三种模型

    2024-03-20 15:06:06       22 阅读
  10. AI助力快速定位数据库难题

    2024-03-20 15:06:06       20 阅读