Linux 服务器端口的基本信息
查看当前服务正在使用的端口状态,命令如下:
sudo netstat -tunlp
如图所示:
Linux 服务器端口 port 最大值可以设定为多少
端口号用来表示和区别网络中的不同应用程序。TCP/IP 协议中的端口在报头中占 2 个字节即 16 位,范围是从 0-65535。port 的最大值,可以达到 65535,即(2^16 - 1)。这个数字与操作系统无关,不管 linux 系统是 32 位还是 64 位,是由网络 tcp 协议决定的,tcp 协议头部中的 16 位表示端口号,这就决定了其最大值为 65535。
端口按端口号可以分为 3 大类:
- 公认端口(Well Known Ports)端口号从 0 到 1023。这些端口由 IANA 分配管理。IANA 把这些端口分配给最重要的一些应用程序,让所有的用户都知道,当一种新的应用程序出现后,IANA 必须为它指派一个公认端口。一般为系统服务所使用,如 FTP 服务对应的端口号为 21。
- 注册端口(Registered Ports)端口号从 1024 到 49151。 这些端口是公司和其他用户向互联网名称与数字地址分配机构(ICANN)登记的端口号,利用因特网的传输控制协议(TCP)和用户数据报协议(UDP)进行通信的应用软件需要使用这些端口。在大多数情况下,这些应用软件和普通程序一样可以被非特权用户打开。
- 动态或私有端口(Dynamic and/or Private Ports)端口号从 49152 到 65535。这些端口号仅在客户进程运行时才动态选择,因此又叫做短暂端口号。被保留给客户端进程选择暂时使用的。
Linux 默认的可用端口范围为 32768 到 61000,查看命令如下:
sudo sysctl -a | grep range
# 输出:
net.ipv4.ip_local_port_range = 32768 61000
net.ipv4.ping_group_range = 1 0
修改远程默认端口 22
以把 22 端口,修改为 50123 端口为例。
修改 sshd 配置,命令如下:
sudo vim /etc/ssh/sshd_config
找到 # Port 22
,把注释去掉,并新增一行,比如设置端口为 50123,结果如下:
Port 22
Port 50123
保存退出::wq
重启服务:systemctl restart sshd
修改 iptables 防火墙信息(如果开启了防火墙),命令如下:
vim /etc/sysconfig/iptables
找到 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
这一行并复制,把 22 修改为 50123,结果如下:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 50123 -j ACCEPT
保存退出::wq
重启服务:systemctl restart iptables
连接测试
对新增的端口 50123,进行连接测试。如果测试通过后,把 22 端口给注释掉。操作如下:
vim /etc/ssh/sshd_config
,修改为:
#Port 22
Port 50123
保存退出::wq
重启服务:systemctl restart sshd
vim /etc/sysconfig/iptables
,(如果开启了防火墙)修改为:
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 50123 -j ACCEPT
保存退出::wq
重启服务:systemctl restart iptables
此时,再用 22 端口,进行连接测试,会发现已经无法连接了。
特别说明: 在新的端口测试成功前,千万不要注释默认端口 22。
此外,自定义端口号的范围最好在 1024 到 49151 之间,并且避免与已知服务冲突。