linux-端口与对应的服务名称

前言

在Linux上,端口的使用是有一定的规范:

1、端口号 0 不使用;

2、端口号 1 - 1023,系统默认只给root使用;

3、端口号 1024 - 4999 由客户端程序自由分配;

4、端口号 5000 - 65535 由服务器端程序自由分配;

端口号名称注册

在Linux下有一个 /etc/services的文件,记录着服务名和他们对应的端口和协议。

在一些应用中可以直接使用协议名称来操作对应的端口,比如 iptables 添加规则的时候可以直接写http,https,来代替对应的80,443。(当然是默认的配置),如果名称对应的端口号变了,重新查找的时候就添加规则后的端口就会随着改变。

/etc/services文件格式

这个文件的每一行对应一种服务,由三个字段组成,中间用TAB或者空格分隔,从左到右,分别对应 服务名称 使用端口/协议名称 别名:

例如:

cat /etc/services

...

ftp-data 20/tcp

ftp-data 20/udp

ftp-data 20/sctp

ftp 21/tcp

ftp 21/udp

ftp 21/sctp

ssh 22/tcp ssh2

ssh 22/udp

ssh 22/sctp

telnet 23/tcp

telnet 23/udp

smtp 25/tcp

smtp 25/udp

...

这里我们给ssh加一个ssh2的别名,这样子在iptables中我们可以指定端口是ssh2端口

iptables -A INPUT -p tcp --dport ssh2 -j ACCEPT

其他地方的应用

我们在使用netstat或者ss命令常看网络连接的时候如果不加-n参数,默认就会解析端口对应的服务名称。

例如:

ss -ltp

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

LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*

LISTEN 0 5 127.0.0.1:ipp 0.0.0.0:*

LISTEN 0 128 [::]:ssh [::]:*

LISTEN 0 5 [::1]:ipp [::]:*

总结

/etc/services对我们一些端口操作有一定的遍历和直观,但是也存在被篡改的风险。因此,建议不要随便去修改这个文件,我们平时操作对应的端口的时候直接写上对应的端口号,防止因/etc/services这个文件被修改,出现异常或者安全问题。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190111A1IUSP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券