a9f87f85cac2de319a9be9f65c34ee1a.png

Linux系统下如何确定端口是否被占用?如何查看系统正在监听的端口有哪些?

关注系统正在监听的端口对运维人员是一件非常重要的事情,因为对外开放的端口越多,系统增加的风险就越大(后面还会写一篇系统安全的文章,记得关注我哦)。除了入侵之外,运维人员在做故障排查的时候,也需要观察端口变化。

c132a2af4eccc6d693c6935f310945e3.png

例如:一台服务器上同时部署了Apache和Nginx,那么就必须确认他们是否是使用了TCP #80/443端口。服务宕了,就会先看端口在不在,端口不在,是不是服务停止了,被 OOM 等。

在Linux下检查被监听的端口进程

1:lsof命令

语法:

$ sudo lsof -i -P -n$ sudo lsof -i -P -n | grep LISTEN$ doas lsof -i -P -n | grep LISTEN ### [OpenBSD] ###

举例:使用lsof命令检查监听端口和应用程序

557788bc80e40dccdd51fa613d3bafc0.png

输出的最后一行是

sshd 85379 root 3u IPv4 0xffff80000039e000 0t0 TCP 10.86.128.138:22(LISTEN)
  • sshd 是应用程序的名称。
  • 10.86.128.138 是sshd应用程序绑定到的IP地址(LISTEN)
  • 22 是正在使用的TCP端口(LISTEN)
  • 85379 是sshd进程的进程ID

2:netstat命令

可以使用netstat检查端口端口和应用程序

  • Linux netstat语法
$ netstat -tulpn | grep LISTEN
  • FreeBSD / MacOS X netstat语法
$ netstat -anp tcp | grep LISTEN$ netstat -anp udp | grep LISTEN
  • OpenBSD netstat语法
$ netstat -na -f inet | grep LISTEN$ netstat -nat | grep LISTEN

3:nmap命令

语法:

$ sudo nmap -sT -O localhost$ sudo nmap -sU -O 192.168.2.13 ##[ list open UDP ports ]##$ sudo nmap -sT -O 192.168.2.13 ##[ list open TCP ports ]##

举例:使用nmap确定哪些端口正在侦听TCP连接

54510383ecac9d36be79ad678ae9bde5.png

可以在单个命令中组合TCP / UDP扫描:

$ sudo nmap -sTU -O 192.168.2.13

结束进程

根据PID kill掉相关进程:

kill -9 {PID}

在Windows下检查被监听的端口进程

常用的检查Windows操作系统的端口使用情况命令:

netstat -bano | morenetstat -bano | grep LISTENINGnetstat -bano | findstr /R /C:"[LISTEING]"

举例

1.查看所有的端口占用情况

C:>netstat -ano
4e48cb903b9c85282825898d58a2f42c.png

2.查看指定端口的占用情况

在dos下,输入netstat -ano|findstr 8189,查看端口使用情况

af993a8c8fbad6d2f57c18467662cd2e.png

3.结束该进程

输入taskkill /pid 13064 /f停止端口占用

fa80ba94b473819be84c6de0490c234b.png

掌握任何一项技能,需要至少练习20个小时,记得多加练习哦~

0f1aeaaa220af6b6b89cbbc3f98cc92f.gif
Logo

更多推荐