我是一名在CentOS7服务器上工作的开发者。 今天我想检查服务器的所有端口的状态。
首先我执行命令: firewall-cmd --zone=public --list-ports
,我得到这个:
110 / tcp 443 / tcp 80 / tcp 995 / tcp 143 / tcp 3306 / tcp 993 / tcp
以上所有的端口都由我打开,所以一切都很好。
然后我用另一台Linux PC,用nc
来扫描服务器的端口(说服务器的ip是aaaa):
nc -v -z -w2 aaaa 1-4000
我得到相同的结果。
之后,我使用nc
来扫描使用UDP的端口:
nc -v -z -w2 -u aaaa 1-4000
令我惊讶的是,似乎所有的端口都打开了,因为我得到的结果如下:
Connection to aaaa port 1 [udp/tcpmux] succeeded! found 0 associations found 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif (null) src bbbb port 62086 dst aaaa port 2 rank info not available Connection to aaaa port 2 [udp/compressnet] succeeded! found 0 associations found 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif (null) src bbbb port 60795 dst aaaa port 3 rank info not available Connection to aaaa port 3 [udp/compressnet] succeeded! found 0 associations found 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif (null) src bbbb port 50133 dst aaaa port 4 rank info not available Connection to aaaa port 4 [udp/*] succeeded! found 0 associations found 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif (null) src bbbb port 64246 dst aaaa port 5 rank info not available Connection to aaaa port 5 [udp/rje] succeeded! found 0 associations found 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif (null) src bbbb port 50334 dst aaaa port 6 rank info not available ... ...
现在我很困惑。
为什么所有的端口都打开UDP? 安全吗? 如果不安全,为什么防火墙不closures它们?
对我来说,“端口是开放的”是指某个程序或系统正在监听它。 例如, 80/tcp
意味着我的web程序正在侦听端口80.如果我是正确的,是否意味着服务器正在使用UDP监听所有的端口?
或者“端口是开放的”只是意味着防火墙不会阻塞端口,这样就可以使用一些程序来侦听呢?
UDP响应是一个假阳性,你可以忽略这一点。 UDP是一种无连接/无状态的协议,所以它不需要任何回应……没有反应,坏的反应……都是一样的。 TCP是一种有状态的协议,因为两个端点都保留有关对方状态的信息,确认是必需的,并且可以重传。
阅读无状态协议: https : //en.wikipedia.org/wiki/Stateless_protocol
TCP状态: https : //upload.wikimedia.org/wikipedia/commons/a/a2/Tcp_state_diagram_fixed.svg