在没有root的UNIX套接字连接上进行窃听

时间:2016-02-01 12:59:25

标签: sockets security unix

假设服务器正在运行并正在监听/var/run/some-socket.sock/var/run/some-socket.sock拥有所有者root和群组root

不能在B下运行的程序root是否可以窃听从程序A到套接字的写入/读取?如何阻止程序B窃听来自A的连接?

1 个答案:

答案 0 :(得分:0)

一般来说,没有。

套接字不是文件,.sock文件不是套接字。套接字是内存中的构造,可以由已建立连接的两个进程访问。每个进程都可以读取和写入套接字构造,就像它是一个文件一样,因此进行通信。这个套接字“文件”只作为内存中的抽象存在;它永远不会写入磁盘。

但是,希望打开另一个程序的套接字的进程需要某种方式与其他程序通信,以便它们可以建立套接字并进行通信。当然,这会带来一些问题。 .sock个文件是解决此问题的唯一方法。它们代表一个进程(在本例中为A)正在侦听的地址。如果另一个进程(如B)尝试打开.sock文件的套接字,则操作系统会将连接请求传递给A。如果A实际上正在侦听该地址并接受连接,则AB可以设置套接字连接并进行通信。

当然,如果套接字表示与外部网络的连接,即互联网连接,则可以窃听通过用于该连接的接口发送的内容。 Wireshark和tcpdump可以做到这一点。