如何查看linux服务器开放了哪些端口

如何查看linux服务器开放了哪些端口,第1张

常常看到有些人想要知道自己的Linux主机到底开放了多少Port?要如何来检测呢。通常我们知道的Port有下面这几个:

ftp:21

telnet:23

smtp:25

http:80

pop-3:110

netbios-ssn:139

squid:3128

mysql:3306

端口当然不只这些个,如何知道Port是否被开启呢?

检测你开启的服务有哪些?使用功能强大的 netstat 指令。

在做为服务器的Linux系统中,服务项目是越少越好!这样可以减少避免不必要的入侵通道。要了解自己的系统当中的服务项目,最简便的方法就是使用nestat 了!这个命令不但简单(是每一个Linux系统都会安装的套件!),而且功能也是很不错的,例如我们在检查WWW使用者的人数时,就很需要这个命令!好了,我们来看一下netstat 的使用方法:

复制内容到剪贴板

代码:

[root@localhost ~]# netstat

Active Internet connections (w/o servers)

Proto Recv-Q Send-Q Local Address Foreign Address Stat e

tcp 0 0 ::ffff:1921681178:ssh ::ffff:1921681175:4235 ESTA BLISHED

Active UNIX domain sockets (w/o servers)

Proto RefCnt Flags Type State I-Node Path

unix 10 [ ] DGRAM 4701 /dev/log

unix 2 [ ] DGRAM 5846 @/var/run/hal/hotplug_s ocket

unix 2 [ ] DGRAM 2901 @udevd

unix 3 [ ] STREAM CONNECTED 5845 /var/run/dbus/system_bu s_socket

unix 3 [ ] STREAM CONNECTED 5844

unix 3 [ ] STREAM CONNECTED 5792 /var/run/dbus/system_bu s_socket

unix 3 [ ] STREAM CONNECTED 5791

unix 3 [ ] STREAM CONNECTED 5724

unix 3 [ ] STREAM CONNECTED 5723

如上所示,单纯使用 netstat 的时候,仅 列出目前已经连通的服务与服务名称。所以你可以看到,由于目前仅有一个ssh连接成功,所有就只显示出一个 ESTABLISHED(连接中的意思)。 上面的 :

复制内容到剪贴板

代码:

tcp 0 0 ::ffff:1921681178:ssh ::ffff:1921681175:4235

这一行表示有一个SSH的服务开放,是由远端的 1921681175这个IP连接到 1921681178 的。而连接的端口是4235。那如果我需要将所有的项目列出来呢?

复制内容到剪贴板

代码:

[root@localhost ~]# netstat -a

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address Stat e

tcp 0 0 :32768 : LIST EN

tcp 0 0 :sunrpc : LIST EN

tcp 0 0 :auth : LIST EN

tcp 0 0 localhostlocaldomain:ipp : LIST EN

tcp 0 0 localhostlocaldomain:smtp : LIST EN

tcp 0 0 :ssh : LIST EN

tcp 0 0 ::ffff:1921681178:ssh ::ffff:1921681175:1237 ESTA BLISHED

udp 0 0 :32768 :

udp 0 0 :955 :

udp 0 0 :sunrpc :

udp 0 0 :ipp :

如上所示,加入 -a(all)就可以了。将所有在机器上 (监听 Listem)或者是(已建立连接的)的服务通通列出的意思。不过,服务的名称已经使用 /etc/services 里面的名称了,而不是使用 port 的数字!目前我主机上面的服务共开放了:sunrpc、auth、ssh、ipp、smtp等服务(就是 Listen的那几个服务)至于已经建立的服务就只有 SSH 这一个!那如果我想知道开放了哪些端口号呢?呵呵,就使用下面的命令吧!

复制内容到剪贴板

代码:

[root@localhost ~]# netstat -an

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 0000:32768 0000: LISTEN

tcp 0 0 0000:111 0000: LISTEN

tcp 0 0 0000:113 0000: LISTEN

tcp 0 0 127001:631 0000: LISTEN

tcp 0 0 127001:25 0000: LISTEN

tcp 0 0 :::22 ::: LISTEN

tcp 0 52 ::ffff:1921681178:22 ::ffff:1921681175:1237 ESTABLISHED

udp 0 0 0000:32768 0000:

udp 0 0 0000:955 0000:

udp 0 0 0000:111 0000:

udp 0 0 0000:631 0000:

如上所示,我接通的服务只有22这一个,而其它的你可以参照上面的命令输出结果来对照,所以你就可以知道:smtp为25端口。因此,通过使用此命令,就可以轻易的子解目前主机的运作状况与服务状态了。当然了,netstat的用途不止于此,你可以使用 man netstat 来查阅一番喔!相信对你的主机会有更大的了解。

相信有不少的朋友都会有这个困扰,就是要怎样删除已经建立的联机呢?因为总有些不速之客会连到您的主机来进行一些破坏的工作!或者是您根本不想让对方联机过来!呵呵!还记得 鸟哥的 Linux 私房菜--基础学习篇内的资源管理 里面提到的几个常用的指令吧!?那就是找出那个联机程序的 PID ,然后给他 kill 掉就是了!简单呀!不过,大问题是『我要怎样找出联机的 PID 呀!?』呵呵!由于 PID 的管理与整体的系统资源有关,这个时候,虽然可以使用 netstat 来观察 PID ,不过只有 root 可以观察到联机状态的 PID 号码呦!( 注:还记得资源管理提及的 PID 概念吗?就是说,在 Linux 系统之内,每个『程序』系统都会给予一个号码来管理!这个就是 PID 啰!)

 

复制内容到剪贴板

代码:

[root@test root]# netstat -ap

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 :ssh : LISTEN 32149/sshd

tcp 0 284 14011614119:ssh 192168111:1391 ESTABLISHED 24751/sshd

Active UNIX domain sockets (servers and established)

Proto RefCnt Flags Type State I-Node PID/Program name Path

unix 7 [ ] DGRAM 944 509/syslogd /dev/log

unix 2 [ ] DGRAM 3035915 16648/xinetd

unix 2 [ ] DGRAM 739227 5951/pppoe

unix 2 [ ] DGRAM 739189 5949/pppd

unix 2 [ ] DGRAM 1070 628/crond

unix 2 [ ] DGRAM 953 514/klogd

unix 2 [ ] STREAM CONNECTED 690 1/init [3]

 

看到上面那个斜体字的联机建立的网络状态了吗?嘿嘿!最后面一栏就是显示那个 PID/Program name ,那个 PID ( 上面是 24751 )也就是我们要来砍掉的啦!这个时候,如果要将该联机砍掉时,就直接以 kill 来做吧!

 

复制内容到剪贴板

代码:

[root@test root]# kill -9 24751

 

这样就能将该联机给他『踢出去』您的主机啦!! ^_^""

Linux查看服务的端口号,参考命令如下:

netstat -anltp|grep  server_name

以上,请使用查看的服务名称来替换server_name

1 ss命令简介

ss 是 Socket Statistics 的缩写。ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快。当服务器的 socket 连接数量变得非常大时,无论是使用 netstat 命令还是直接 cat /proc/net/tcp,执行速度都会很慢。ss 命令利用到了 TCP 协议栈中 tcp_diag。tcp_diag 是一个用于分析统计的模块,可以获得 Linux 内核中第一手的信息,因此 ss 命令的性能会好很多。

ss命令简介

2 常用选项

-h, --help 帮助

-V, --version 显示版本号

-t, --tcp 显示 TCP 协议的 sockets

-u, --udp 显示 UDP 协议的 sockets

-x, --unix 显示 unix domain sockets,与 -f 选项相同

-n, --numeric 不解析服务的名称,如 "22" 端口不会显示成 "ssh"

-l, --listening 只显示处于监听状态的端口

-p, --processes 显示监听端口的进程(Ubuntu 上需要 sudo)

-a, --all 对 TCP 协议来说,既包含监听的端口,也包含建立的连接

-r, --resolve 把 IP 解释为域名,把端口号解释为协议名称

3 常见用法

如果不添加选项 ss 命令默认输出所有建立的连接(不包含监听的端口),包括 tcp, udp, and unix socket 三种类型的连接:

31 查看前5名的连接:

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port

u_str ESTAB 0 0 20040 20041

u_str ESTAB 0 0 20030 20031

u_str ESTAB 0 0 20044 20043

u_str ESTAB 0 0 /run/dbus/system_bus_socket 18592 18591

32 查看主机的监听端口

State Recv-Q Send-Q Local Address:Port Peer Address:Port

LISTEN 0 128 127001:9016 :

LISTEN 0 128 127001:9017 :

LISTEN 0 100 127001:25 :

LISTEN 0 128 127001:9018 :

LISTEN 0 128 127001:1723 :

LISTEN 0 128 127001:9019 :

33 linux查看tcp连接

ESTAB 0 0 ::1:ssh ::1:53238

ESTAB 0 0 ::1:53278 ::1:ssh

ESTAB 0 0 ::1:ssh ::1:53280

ESTAB 0 0 ::1:53288 ::1:ssh

ESTAB 0 0 ::1:ssh ::1:53296

ESTAB 0 0 ::1:53294 ::1:ssh

ESTAB 0 0 ::1:48456 ::1:ssh

ESTAB 0 0 ::1:53286 ::1:ssh

ESTAB 0 0 ::1:53292 ::1:ssh

ESTAB 0 0 ::1:ssh ::1:53272

linux查看tcp连接

34 解析IP和端口号

使用-r选项

State Recv-Q Send-Q Local Address:Port Peer Address:Port

LISTEN 0 128 my_public_ip:9016 :

LISTEN 0 128 my_public_ip:9017 :

LISTEN 0 100 localhost:smtp :

LISTEN 0 128 my_public_ip:9018 :

LISTEN 0 128 my_public_ip:pptp :

LISTEN 0 128 my_public_ip:9019 :

linux查看监听端口

35 输出时带进程名称

使用-p选项

Total: 2340 (kernel 2365)

TCP: 2126 (estab 72, closed 23, orphaned 1, synrecv 0, timewait 2/0), ports 0

Transport Total IP IPv6

36 根据条件过滤输出结果

可以通过语法过滤输出结果,根据源IP、源端口、目标IP、目标端口

src源

dst目标

ss dst 172162633

ss dst 172162643:http

ss dst 172162643:443

37 根据源端口号范围输出:

根据目标端口号范围输出:

ss dport OP PORT

OP 可以代表以下任意一个:

<=le小于或等于某个端口号 >=ge大于或等于某个端口号==eq等于某个端口号!=ne不等于某个端口号>gt大于某个端口号<lt小于某个端口号

比如:

输出源端口号小于8080的连接状态

或者

38 根据TCP 的状态进行过滤

ss命令还可以根据TCP连接的状态进行过滤,支持的 TCP 协议中的状态有:

established

syn-sent

syn-recv

fin-wait-1

fin-wait-2

time-wait

closed

close-wait

last-ack

listening

closing

除了上面的 TCP 状态,还可以使用下面这些状态:

状态输出结果 all输出所有TCP状态。connected输出已经建立连接的TCP状态。synchronized输出同步状态的连接。bucket输出maintained的状态,如:time-wait 和 syn-recv。big输出与bucket相反的状态。

只输出ipv4状态:

只输出ipv6状态:

输出ipv4监听状态:

39 根据TCP状态和端口号进行过滤

输入出ipv4协议下的ssh监听状态:

或者

要么使用转义小括号,要么使用单引号

查看所有已经建立TCP三次握手的HTTP连接:

查看所有正在进程的ssh连接:

4 总结

ss 命令功能丰富并且性能出色,完全可以替代 netsate 命令。已经成为我们日常查看 socket 相关信息的利器。未来netstat已经慢慢被ss取代。

https://wwwlinuxrumencom/cyml/821html

前言

如何确定端口是否在Linux或类unix系统下占用怎么检查哪些端口正在Linux服务器上被占用Linux系统如何使用命令行检查端口是否已经在占用

查询哪些端口正在服务器的网络接口上被占用是非常重要的工作。您需要查询打开端口以检测入侵。除了入侵之外,出于故障排除的目的,可能有必要检查服务器上的其他应用程序是否已经使用了某个端口。例如,您可以在同一系统上安装Apache和Nginx服务器。因此,有必要了解Apache或Nginx是否使用TCP端口80或443。本教程提供了使用netstat、nmap和lsof命令查询正在使用的端口并查看正在使用该端口的应用程序的步骤。

如何查询端口是否在使用中:

检查Linux上被占用的端口和应用程序:

Step1: 打开终端

Step2: 执行以下任意一条命令查看被占用的端口

查看端口22是否被占用:

较新版本的Linux使用以下查询命令:

方法1: 使用lsof命令查询占用端口

先安装lsof命令

RHEL/CentOS系统:

Debian/Ubuntu系统安装lsof命令

使用语法如下

OpenBSD

看到类似这样的输出结果:

sshd是进程名字

TCP 22表示sshd进程占用了TCP 22端口,正在监听中(LISTEN)

1243表示sshd进程号

方法二:使用netstat查询被占用的端口号

较新的Linux发行版已经不再默认集成netstat命令,而是使用新命令ss取代了。

如果要使用netstat命令,需要手动安装net-tools套件:

RHEL/CentOS系统安装net-tools套件,执行以下命令:

Debian/Ubuntu系统执行以下命令:

您可以使用netstat查询被占用的端口和应用程序,如下所示。

执行以下命令查询:

在Linux上,netstat命令已经废弃了一段时间。因此,你需要使用ss命令如下:

或者:

其中ss命令选项如下:

-t : 只显示Linux上的TCP套接字

-u : 在Linux上只显示UDP套接字

-l : 监听套接字。例如,TCP端口22由SSHD服务器打开。

-p : 列出打开套接字的进程名

-n : 不要解析服务名称,即不要使用DNS

FreeBSD/MacOS X netstat 语法

FreeBSD/MacOS X查询被占用的端口

或者

OpenBSD netstat 语法

OpenBSD查询被占用的端口

或者

方法三:使用`nmap`命令查询Linux被占用的端口

默认情况下,Linux发行版并没有默认安装nmap命令,

CentOS系统安装nmap

Ubuntu系统安装nmap

使用nmap查询本机被占用的端口

查询Linux系统被占用的UDP端口

查询Linux系统被占用的TCP端口

你可以同时查询被占用的TCP和UDP端口

结论:

本教程解释了如何在Linux系统上使用命令行查询TCP或者UDP端口是否被占用。有关更多信息,请参见nmap命令和lsof命令页面

      linux怎么查看服务端口呢,下面就让我们来看看吧。

      1、打开linux系统,在linux的桌面的空白处右击。

      2、在弹出的下拉选项里,点击打开终端。

      3、在终端窗口中输入cat/etc/services命令,回车后即可查看到服务器端口。

      以上就是的分享,希望能帮助的大家。

      本文章基于ThinkpadE15品牌、centos7系统撰写的。

x使用过程中,需要了解当前系统开放了哪些端口,并且要查看开放这些端口的具体进程和用户,可以通过netstat命令进行简单查询

netstat命令各个参数说明如下:

  -t : 指明显示TCP端口

  -u : 指明显示UDP端口

  -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)

  -p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。

  -n : 不进行DNS轮询,显示IP(可以加速操作)

即可显示当前服务器上所有端口及进程服务,于grep结合可查看某个具体端口及服务情况··

netstat -ntlp //查看当前所有tcp端口·

netstat -ntulp |grep 80 //查看所有80端口使用情况·

netstat -ntulp | grep 3306 //查看所有3306端口使用情况·

Linux查看程序端口占用情况

使用命令:

ps -aux | grep tomcat

发现并没有8080端口的Tomcat进程。

使用命令:netstat –apn

查看所有的进程和端口使用情况。发现下面的进程列表,其中最后一栏是PID/Program name

发现8080端口被PID为9658的Java进程占用。

进一步使用命令:ps -aux | grep java,或者直接:ps -aux | grep pid 查看

就可以明确知道8080端口是被哪个程序占用了!然后判断是否使用KILL命令干掉!

方法二:直接使用 netstat -anp | grep portno

即:netstat -anp|grep 8080

netstat -anp|grep 8080 --> tcp 0 0 0000:8080 0000: LISTEN 28500/java

ps -aux | grep 28500 --> r/local/tomcat9-jforum/tomcat

安装lsof list open files//---也可以 netstat -tunlp|grep 端口号 netstat -anp|grep 端口号

yum install lsof

lsof -i:8080 查看8080端口占用

lsof abctxt 显示开启文件abctxt的进程

lsof -c abc 显示abc进程现在打开的文件

lsof -c -p 1234 列出进程号为1234的进程所打开的文件

lsof -g gid 显示归属gid的进程情况

lsof +d /usr/local/ 显示目录下被进程开启的文件

lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长

lsof -d 4 显示使用fd为4的进程

lsof -i 用以显示符合条件的进程情况

lsof -i[46] [protocol][@hostname|hostaddr][:service|port]

46 --> IPv4 or IPv6

protocol --> TCP or UDP

hostname --> Internet host name

hostaddr --> IPv4地址

service --> /etc/service中的 service name (可以不止一个)

port --> 端口号 (可以不止一个)

lsof -i //显示所有打开的端口

lsof -i:80 //显示所有打开80端口的进程

lsof -i -U //显示所有打开的端口和UNIX domain文件

其实我一般这样用:

[root@VM_39_230_centos bin]# lsof -i:3306

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

mysqld 16422 mysql 19u IPv6 148794 0t0 TCP :mysql (LISTEN)

mysqld 16422 mysql 39u IPv6 643698 0t0 TCP localhost:mysql->localhost:36582 (ESTABLISHED)

mysqld 16422 mysql 45u IPv6 643699 0t0 TCP localhost:mysql->localhost:36584 (ESTABLISHED)

mysql

netstat -ntlp 可以查看已启动的服务对应的端口号和PID

netstat -anp|grep 服务名 可以查看某个服务对应的端口号,

比如 netstat -anp |grep mysql

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何查看linux服务器开放了哪些端口

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情