使用 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

相关推荐

  • 路由生成

    1、获取路由的方式1)直连路由 路由器的直连网段,自动添加到路由表中 2)静态路由 静态路由的方式是指网络管理员手工配置路由条目,只能适用网络比较简单、规模比较小的环境 3)动态路由 动态感知、动态更新路由,占用链路带宽、协议包括ospf、rip、isis、bgp等 2、直连路由的来源 直连路由指向本地直连网路的路由,由设备自动生成当路由器为路由转发的最后一…

    2024年6月21日
    1.2K00
  • Cisco 交换机端口err-disable 解决方法

    我的一台2960GG透过多模 10G SFP-10GBase-LRM光纤接核心3850交换机,今天早上之间网络不通,3850G和2960上的SFP模块指示灯都不亮,查看CISCO 2960G端口有如下提示: 解决如下: 查阅关于link-flap及err-disable的资料如下: Cisco网站上关于link-flap的说明:Link-flap error…

    2024年6月19日
    1.3K00
  • 临时的解决防火墙上网不稳定

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

    2024年5月20日
    93300
  • 一分钟解决打不开网页的故障

    做IT外包N多年了,每天就是面对各种大大小小的报修,有些小事,也算值得一记,分享给各位。 本文讲述的是一个非常多见的问题——微信和QQ能正常收发消息,但是所有网页都打不开,这个问题具有一定的普遍性和高发性,所以,我也是再一次地发文讲述 客户报修给技术小伙,他当时正开车,就直接转发给我了,我一看这种问题,大概率就是DNS的问题,与其我再安排别的技术小伙,还不如…

    2024年5月17日
    1.0K00
  • 详解DNS BIND配置及原理

    简介 DNS,全称Domain Name System,是一个记录域名和IP地址互相映射的一个系统,可以将用户访问互联网中所使用的域名转换成对应的IP地址。通过域名得到对应的IP地址的过程被称为域名解析。DNS运行于UDP协议之上,使用53端口 DNS 解析过程 首先,客户端先在本地缓存查找是否有缓存域名,比如没有,客户端发送DNS请求IP地址或主机名,DN…

    2023年3月31日
    1.3K00

发表回复

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

在线咨询: QQ交谈

邮件:712342017@qq.com

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

关注微信