netstat 命令为你的 Linux 服务器提供了监测和网络故障排除的重要观察手段 。
在 之前的文章中,我分享了一些管理你的个人 Linux 服务器的首要步骤 。我简要的提到了监测网络连接的监听端口,我想通过 Linux 系统的
netstat
命令来扩展开讲讲 。服务监测和端口扫描是标准的行业惯例 。有很好的软件,如 Prometheus协助这个过程自动化 , SELinux协助上下文和保护系统访问权限 。然而 , 我相信了解你的服务器是如何连接到其他网络和设备的,是建立正常服务器基准的关键,能够帮助你识别有可能表明错误和入侵等异常情况 。作为一个初学者,我已经掌握了
netstat
命令为我的服务器提供了监测和网络故障排除的重要观察手段 。Netstat 和类似的一些网络监测工具被归入 net-tools 软件包里,用来显示关于活动连接的信息 。因为运行在开放的端口的服务往往容易被利用,定期进行网络监测能够帮助你及早探测到可疑的活动 。
安装 netstat
netstat
经常预装在 Linux 发行版上 。如果netstat
没有在你的服务器上安装,用你的包管理器安装它 。下面是在基于 Debian 的系统上:$ sudo apt-get install net-tools
在基于 Fedora 的系统上:$ dnf install net-tools
使用 netstat
就其本身而言,netstat
命令显示了全部建立成功的连接 。你可以使用netstat
的参数指定进一步预期的输出 。举个例子,要显示所有监听和非监听的连接 , 使用--all
(-a
为简写)的参数 。这将返回许多结果 , 所以在例子中我用管道符输出给head
命令来显示输出的前 15 行:$ netstat --all | head -n 15Active Internet connections (servers and established)Proto Recv-Q Send-Q Local AddressForeign AddressStatetcp00 *:27036*:*LISTENtcp00 localhost:27060*:*LISTENtcp00 *:16001*:*LISTENtcp00 localhost:6463*:*LISTENtcp00 *:ssh*:*LISTENtcp00 localhost:57343*:*LISTENtcp00 *:ipp*:*LISTENtcp00 *:4713*:*LISTENtcp00 10.0.1.222:48388syd15s17-in-f5.1e:https ESTABLISHEDtcp00 10.0.1.222:48194ec2-35-86-38-2.us:https ESTABLISHEDtcp00 10.0.1.222:56075103-10-125-164.va:27024 ESTABLISHEDtcp00 10.0.1.222:46680syd15s20-in-f10.1:https ESTABLISHEDtcp00 10.0.1.222:52730syd09s23-in-f3.1e:https ESTABLISHED
要只显示 TCP 端口 , 使用 --all
和--tcp
参数 , 或者简写成-at
:$ netstat -at | head -n 5Active Internet connections (servers and established)Proto Recv-Q Send-Q Local AddressForeign AddressStatetcp00 *:27036*:*LISTENtcp00 localhost:27060 *:*LISTENtcp00 *:16001*:*LISTEN
要只显示 UDP 端口 , 使用 --all
和--udp
参数,或者简写成-au
:$ netstat -au | head -n 5Active Internet connections (servers and established)Proto Recv-Q Send-Q Local AddressForeign AddressStateudp00 *:27036*:*udp00 10.0.1.222:44741224.0.0.56:46164ESTABLISHEDudp00 *:bootpc
netstat
命令参数常常是简单易懂的 。举个例子,要显示带有全部进程 ID(PID)和数字地址的监听 TCP 和 UDP 的端口:$ sudo netstat --tcp --udp --listening --programs --numericActive Internet connections (only servers)Proto Recv-Q Send-Q Local AddressForeign AddrStatePID/Program nametcp00 0.0.0.0:1110.0.0.0:*LISTEN1/systemdtcp00 192.168.122.1:530.0.0.0:*LISTEN2500/dnsmasqtcp00 0.0.0.0:220.0.0.0:*LISTEN1726/sshdtcp00 127.0.0.1:6310.0.0.0:*LISTEN1721/cupsdtcp00 127.0.0.1:60100.0.0.0:*LISTEN4023/sshd: tux@tcp600 :::111:::*LISTEN1/systemdtcp600 :::22:::*LISTEN1726/sshdtcp600 ::1:631:::*LISTEN1721/cupsdtcp600 ::1:6010:::*LISTEN4023/sshd: tux@udp00 0.0.0.0:405140.0.0.0:*1499/avahi-daemon:udp00 192.168.122.1:530.0.0.0:*2500/dnsmasqudp00 0.0.0.0:670.0.0.0:*2500/dnsmasqudp00 0.0.0.0:1110.0.0.0:*1/systemdudp00 0.0.0.0:53530.0.0.0:*1499/avahi-daemon:udp600 :::111:::*1/systemdudp600 :::44235:::*1499/avahi-daemon:udp600 :::5353:::*1499/avahi-daemon:
这个常用组合简写版本是 -tulpn
。要显示一个指定服务的信息,使用 grep 命令过滤:
$ sudo netstat -anlp | grep cupstcp00 127.0.0.1:6310.0.0.0:*LISTEN1721/cupsdtcp600 ::1:631:::*LISTEN1721/cupsdunix2[ ACC ]STREAMLISTENING272511/systemd /var/run/cups/cups.sockunix2DGRAM595301721/cupsdunix3STREAMCONNECTED551961721/cupsd /var/run/cups/cups.sock
接下来的步骤
一旦你运行了netstat
命令,你就可以采取措施来保护你的系统,确保只有你主动使用的服务在你的网络上被监听 。- 识别通常被利用的端口和服务 。一般来说,关闭你实际不使用的端口 。
- 留意不常见的端口号,认识了解在你系统上使用的合法端口 。
- 密切注意 SELinux 错误 。有时你需要做的只是更新上下文,以匹配你对系统做的合法更改,但是要阅读错误警告,以确保 SELinux 提醒你的不是可疑或者恶意的活动 。
如果你在使用
firewall-cmd
,运行这些命令:$ sudo firewall-cmd –remove-port=
如果你在使用 UFW , 运行以下的命令:$ sudo ufw deny
下一步,使用 systemctl
来停止这个服务:$ systemctl stop
理解 netstat
netstat
是一个快速收集你的服务器网络连接信息的有用工具 。定期网络监测是了解你的系统的重要组成部分,对帮助你保持你的系统安全有着重要意义 。将这一步纳入你的日常管理中,你可以使用类似netstat
或者ss
,以及Nmap 等开源端口扫描器或者 Wireshark 等嗅探器,它们都允许设定计划任务 。【自己搭建小型服务器 linux服务器重启命令 - 秒懂生活 www.miaodongshenghuo.com】
随着服务器存储了大量的个人数据,确保个人服务器的安全日益重要 。通过了解你的服务器怎样连接到互联网,你可以降低你的机器的风险 , 同时你仍可以在数字时代大量的连接中获得益处 。