Security
使用 UDP 的伺服器埠全部打開
我是在 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 a.a.a.a 1-4000
我得到相同的結果。
之後,我使用
nc
UDP 掃描埠:nc -v -z -w2 -u a.a.a.a 1-4000
令我驚訝的是,似乎所有埠都打開了,因為我得到如下結果:
Connection to a.a.a.a port 1 [udp/tcpmux] succeeded! found 0 associations found 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif (null) src b.b.b.b port 62086 dst a.a.a.a port 2 rank info not available Connection to a.a.a.a port 2 [udp/compressnet] succeeded! found 0 associations found 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif (null) src b.b.b.b port 60795 dst a.a.a.a port 3 rank info not available Connection to a.a.a.a port 3 [udp/compressnet] succeeded! found 0 associations found 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif (null) src b.b.b.b port 50133 dst a.a.a.a port 4 rank info not available Connection to a.a.a.a port 4 [udp/*] succeeded! found 0 associations found 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif (null) src b.b.b.b port 64246 dst a.a.a.a port 5 rank info not available Connection to a.a.a.a port 5 [udp/rje] succeeded! found 0 associations found 1 connections: 1: flags=82<CONNECTED,PREFERRED> outif (null) src b.b.b.b port 50334 dst a.a.a.a port 6 rank info not available ... ...
現在我很困惑。
為什麼所有埠都為UDP打開?安全嗎?如果不安全,為什麼防火牆不關閉它們?
對我來說,“埠已打開”意味著某個程序或系統正在監聽它。例如,
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