linux中如何查看开放的端口

时间:2019-04-29 03:17:53  来源:igfitidea点击:

如何查看linux中所有打开的TCP和UDP端口,以避免安全问题。

什么是TCP和UDP端口?

端口是0到65535之间的16位数字。例如,TCP端口号22可能是OpenSSH服务的。因此,端口号22是一种识别sshd进程的方法。

端口号

众所周知的端口是从0到1023。
注册的端口为1024到49151。
动态和私有端口是49152到65535。

注册端口是由IANA(Internet assigned Numbers Authority)分配并存储在/etc/services文件中的网络端口。

cat /etc/services
grep -w '80/tcp' /etc/services
grep -w '443/tcp' /etc/services
egrep -w '22/(tcp|udp)' /etc/services

检查Linux中打开的端口

使用netstat列出打开的端口

sudo netstat -tulpn | grep LISTEN

其中

  • -t : 所有TCP端口
  • -u : 所有UDP端口
  • -l : 显示监听服务器套接字
  • -p : 显示每个套接字所属进程的PID和程序名
  • -n : 不要解析名字

输出:

tcp        0      0 :::22                       :::*                        LISTEN      45434/sshd   
tcp        0      0 ::1:631                     :::*                        LISTEN      1380/cupsd   

例如,由cupsd进程打开的TCP端口631,cupsd只在环回地址上监听。
sshd进程打开的TCP端口22。在所有地址上监听,即任何地址都可以连接它。

使用ss命令显示Linux中所有打开的TCP和UDP端口。

ss命令用于dump出套接字的统计信息。它可以显示更多的TCP和状态信息。

sudo ss -tulpn

使用lsof命令监听端口和应用程序

如何查看端口是哪个程序打开的?又如何查看程序打开了哪些端口?使用lsof即可。

sudo lsof -i -P -n | grep LISTEN

其中

-i : 查找列表端口
-P : 禁止将端口号转换为网络文件端口名,这样运行得更快一点
-n : 不要使用DNS名称

使用nmap来查找和列出Linux中打开的端口

### 查看打开的TCP端口
sudo nmap -sT -O localhost
### 查看打开的UDP端口
sudo nmap -sU -O 192.168.2.254
sudo nmap -sTU -O 192.168.2.24