使用 netstat 命令来管理各个端口的网络连接

了解 netstat

NETSTAT命令有什么作用?NETSTAT一般用于显示与IP 、TCP 、UDP 和ICMP 协议相关的统计数据,一般用于检测本机各端口的网络连接情况。
netstat 是一个快速收集你的服务器网络连接信息的有用工具。定期网络监测是了解你的系统的重要组成部分,对帮助你保持你的系统安全有着重要意义。将这一步纳入你的日常管理中,你可以使用类似 netstat 或者 ss ,以及 Nmap 等开源端口扫描器或者 Wireshark 等嗅探器 ,它们都允许设定 计划任务。

安装 netstat

netstat 经常预装在 Linux 发行版上。如果 netstat 没有在你的服务器上安装,用你的包管理器安装它。下面是在基于centos7系统,安装命令如下:

[root@localhost]# yum install -y net-tools

在基于ubuntu的系统上:

$ sudo apt install net-tools

使用 netstat

就其本身而言,netstat 命令可以显示了全部建立成功的连接。你可以使用 netstat 的参数指定进一步预期的输出。举个例子,要显示所有监听和非监听的连接,使用 --all-a 为简写)的参数。这将返回许多结果,所以在例子中我用管道符输出给 head 命令来显示输出的前 15 行:

[root@localhost ~]# netstat --all | head -n 15
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ftp             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ddi-tcp-1       0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:cddbp           0.0.0.0:*               LISTEN     
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN     
tcp        0     68 103.56.17.172:ssh       49.77.196.64:pwgpsi     ESTABLISHED
tcp6       0      0 [::]:ftp                [::]:*                  LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN     
tcp6       0      0 [::]:mysql              [::]:*                  LISTEN     
raw6       0      0 [::]:ipv6-icmp          [::]:*                  7          
Active UNIX domain sockets (servers and established)

若你要只显示 TCP 端口,使用 --all 和 --tcp 参数,或者简写成 -at :

[root@localhost ~]# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ftp             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ddi-tcp-1       0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:cddbp           0.0.0.0:*               LISTEN     
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN     
tcp        0     36 103.56.17.172:ssh       49.77.196.64:pwgpsi     ESTABLISHED
tcp6       0      0 [::]:ftp                [::]:*                  LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN     
tcp6       0      0 [::]:mysql              [::]:*                  LISTEN 

若要只显示 UDP 端口,使用 --all 和 --udp 参数,或者简写成 -au :

[root@localhost ~]# netstat -au | head -n 5
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address     Foreign Address    State      
udp        0      0 *:27036           *:*                                
udp        0      0 10.0.1.222:44741  224.0.0.56:46164   ESTABLISHED
udp        0      0 *:bootpc     

netstat 命令参数常常是简单易懂的。举个例子,要显示带有全部进程 ID(PID)和数字地址的监听 TCP 和 UDP 的端口,这个常用组合简写版本是 -tulpn :

[root@localhost ~]# netstat --tcp --udp --listening --programs --numeric
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address   Foreign Address    State     PID/Program name    
tcp        0      0 0.0.0.0:80      0.0.0.0:*         LISTEN      1144/nginx: master  
tcp        0      0 0.0.0.0:21      0.0.0.0:*         LISTEN      1068/pure-ftpd (SER 
tcp        0      0 0.0.0.0:22      0.0.0.0:*         LISTEN      1011/sshd           
tcp        0      0 0.0.0.0:8888    0.0.0.0:*         LISTEN      2437/python         
tcp        0      0 0.0.0.0:888     0.0.0.0:*         LISTEN      1144/nginx: master  
tcp        0      0 127.0.0.1:25    0.0.0.0:*         LISTEN      1891/master         
tcp6       0      0 :::21           :::*              LISTEN      1068/pure-ftpd (SER 
tcp6       0      0 :::22           :::*              LISTEN      1011/sshd           
tcp6       0      0 ::1:25          :::*              LISTEN      1891/master         
tcp6       0      0 :::3306         :::*              LISTEN      2275/mysqld

若要显示一个指定服务的信息,使用 grep 命令过滤:

[root@localhost ~]# netstat -anlp | grep mysql
tcp6  0      0 :::3306              :::*                    LISTEN    2275/mysqld         
unix  2      [ ACC ]     STREAM   LISTENING   22151   2275/mysqld     /tmp/mysql.sock

接下来的步骤

一旦你运行了 netstat 命令,你就可以采取措施来保护你的系统,确保只有你主动使用的服务在你的网络上被监听。

  1. 识别通常被利用的端口和服务。一般来说,关闭你实际不使用的端口。
  2. 留意不常见的端口号,认识了解在你系统上使用的合法端口。
  3. 密切注意 SELinux 错误。有时你需要做的只是更新上下文,以匹配你对系统做的合法更改,但是要阅读错误警告,以确保 SELinux 提醒你的不是可疑或者恶意的活动。

如果你发现一个端口正在运行一个可疑的服务,或者你只是简单的想要关闭你不再使用的端口,你可以遵从以下这些步骤,通过防火墙规则手动拒绝端口访问:

如果你在使用 firewall-cmd防火墙 ,运行这些命令:

[root@localhost ~]# firewall-cmd –remove-port=<port number>/tcp
[root@localhost ~]# firewall-cmd –runtime-to-permanent

然后,你可以使用systemctl来停止这个服务:

[root@localhost ~]# systemctl stop <service>

netstat的参数说明

  • -a或–all 显示所有连线中的Socket。
  • -A<网络类型>或–<网络类型> 列出该网络类型连线中的相关地址。
  • -c或–continuous 持续列出网络状态。
  • -C或–cache 显示路由器配置的快取信息。
  • -e或–extend 显示网络其他相关信息。
  • -F或–fib 显示路由缓存。
  • -g或–groups 显示多重广播功能群组组员名单。
  • -h或–help 在线帮助。
  • -i或–interfaces 显示网络界面信息表单。
  • -l或–listening 显示监控中的服务器的Socket。
  • -M或–masquerade 显示伪装的网络连线。
  • -n或–numeric 直接使用IP地址,而不通过域名服务器。
  • -N或–netlink或–symbolic 显示网络硬件外围设备的符号连接名称。
  • -o或–timers 显示计时器。
  • -p或–programs 显示正在使用Socket的程序识别码和程序名称。
  • -r或–route 显示Routing Table。
  • -s或–statistics 显示网络工作信息统计表。
  • -t或–tcp 显示TCP传输协议的连线状况。
  • -u或–udp 显示UDP传输协议的连线状况。
  • -v或–verbose 显示指令执行过程。
  • -V或–version 显示版本信息。
  • -w或–raw 显示RAW传输协议的连线状况。
  • -x或–unix 此参数的效果和指定”-A unix”参数相同。
  • –ip或–inet 此参数的效果和指定”-A inet”参数相同。

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/4374

(1)
郭靖的头像郭靖
上一篇 2022年6月9日 下午7:15
下一篇 2022年6月10日 下午4:50

相关推荐

  • 爱快路由安装

    一.准备工具 材料:电脑X1(用来制作安装工具),工控机(两个以上网口的电脑即可)X1,显示器X1,U盘(安装过程会清空U盘内全部数据)X1,键盘(USB接口)X1 二.制作路由安装工具 (1)将下方连接中的文件下载到本地并解压到桌面,打开写盘工具中的写盘程序(Win32DiskImager.exe) http://down.cnaaa.net/list_1…

    2023年2月13日
    36300
  • 解决无线频繁断网,这个办法值得收藏!

    你们好,我的网工朋友。 在如今互联网普及率非常高的环境下,我们的日常生活和工作都与网络紧密相连。在追求较高网速的同时,稳定的网络传输质量越来越受到关注。 无线网络是现在办公中最常见的弱电网络系统,也是现代生活中最不可缺少的,没有网络,意味着你无法正常开展工作。 而在这个过程中一定会发生很多问题,你可能遇到过很多问题,也解决过不少,但你缺少了汇总这一步,所以就…

    2024年1月15日
    29400
  • 临时的解决防火墙上网不稳定

    某客户的华为防火墙已经工作了十几年,最近有点不正常,每个月总有那么几次断网,接口会自动down,而且每次只能重启了事,但是防火墙重启时间长,次数多了总觉得影响办公。 由于体制原因,申请采购的时间周期会比较长,尤其是在如今这个形势下。 客户问我要个临时的解决方案,于是我就出了个歪招,被客户好好地夸了一番,嘿嘿,本着分享的精神,这事儿也不私藏,说穿了,也很简单。…

    2024年5月20日
    12000
  • Stream流式编程

    如何创建 Stream 对象 从集合创建:我们可以通过调用集合的 stream() 方法来创建一个 Stream 对象。例如: 从数组创建:Java 8 引入了 Arrays 类的 stream() 方法,我们可以使用它来创建一个 Stream 对象。例如: 通过 Stream.of() 创建:我们可以使用 Stream.of() 方法直接将一组元素转换为 …

    2023年9月4日
    28700
  • ip address与ifconfig以及网卡配置文件的总结

    为什么在network -scripts 中配置了网卡文件,nmcli connection show里面看都没有生效 可能是因为NetworkManager和network -scripts产生了冲突,导致配置文件未能生效。您可以尝试手动停止NetworkManager服务,并重启网络服务来使配置文件生效: 如果你想要永久停止NetworkManager服…

    2023年3月22日
    54600

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信