Security

使用 UDP 的伺服器埠全部打開

  • July 11, 2017

我是在 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

我得到相同的結果。

之後,我使用ncUDP 掃描埠:

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

引用自:https://serverfault.com/questions/861409