linux - 服务名称与对应的端口
前言
在 Linux 上,端口的使用是有一定的规范:
-
端口号 0 不使用;
-
端口号 1 - 1023,系统默认只给 root 使用;
-
端口号 1024 - 4999 由客户端程序自由分配;
-
端口号 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 这个文件被修改,出现异常或者安全问题。
- 原文作者:Linux运维菜
- 原文链接:https://www.opcai.top/post/2019/2019-01/linux_service_ports/
- 版权声明:本作品采用进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。