題 在程序中使用localhost TCP / IP通信 - 總是安全嗎?


我有一個應用程序,它被分成幾個部分(進程)通過TCP / IP進行通信,使用localhost上的預定義端口。

這總是安全嗎?某種防火牆(公司,本地安裝,Windows防火牆等)可以阻止這種流量嗎?或者操作系統中的某些用戶設置是否可以阻止此流量?

我感興趣的操作系統是Windows(XP到7)和Linux(Ubuntu,RHEL,SUSE)


4
2018-03-27 14:24


起源


我不確定您是在嘗試阻止流量還是確保流量通過?如果有人自願,可以阻止通過特定端口的流量。 - CreeDorofl
@CreeDorofl:確保它通過 - Eli Bendersky


答案:


  • 交通到 127.0.0.0/8 並 ::1/128 由TCP / IP堆棧內部處理。它不會到達物理網卡,也不會離開計算機,因此企業防火牆無法阻止它。

  • 由於環回套接字對於IPC非常常見,因此良好的防火牆不應該阻止它。 (Windows防火牆沒有。)然而,有一些過於偏執的...在這種情況下,我會責怪防火牆,而不是你的軟件。

  • 在Unix上,有可能(意外地)關閉環回接口(通常 lo)。再次,這是非常不尋常的。

  • 而不是硬編碼端口, socketpair() 應在適用時使用,以避免端口衝突。

  • 更好的方法是在Linux上使用Unix套接字並在Windows上使用命名管道。


7
2018-03-27 15:18





所有這些操作系統都支持運行防火牆軟件這些可以阻止localhost連接,雖然這不常見(根據我的經驗)。

有很多應用程序/服務可以做到這一點。試試看吧 netstat -an 在你的盒子上:很可能你會看到很多帶有開放式偵聽套接字的應用程序 127.0.0.1

我不知道可能阻止它在Linux上運行的用戶設置。不知道Windows。但同樣,這是一種常見的技術。


2
2018-03-27 15:17