如何在Linux下记录用户为任何服务建立的连接

时间:2020-01-09 10:42:00  来源:igfitidea点击:

问题描述:如何将有关选定的入站和出站TCP/IP连接的信息记录到日志文件中。
例如,用户tom为服务ftp或者ssh建立的日志连接?
如何配置Linux记录连接?

解决方法:您可以编写一个Perl或者Shell脚本来监视和记录所有连接。
但是,有一个简单的方法。
使用名为tcpspy的工具。
顾名思义,它可以监视用户。

tcpspy将有关选定的入站和出站TCP/IP连接的信息记录到syslog。
记录以下信息:

a)用户名b)本地地址和端口c)远程地址,端口以及可执行文件的文件名

它仅支持IPv4协议。

安装tcpspy

使用apt-get或者yup或者ports集合:

apt-get install tcpspy

配置文件

缺省配置文件位于/etc/tcpspy.rules。

示例配置

打开/etc/tcpspy.rules文件:

# vi /etc/tcpspy.rules

要记录用户tom为服务ssh建立的连接,请执行:

user "jom" and rport "ssh"

您还可以在命令提示符下输入以上规则:

# tcpspy -e 'user "tom" and rport "ssh"'

记录用户tom为服务ftp建立的连接,执行:

# tcpspy -e 'user "tom" and rport "ftp"'

以下将记录用户Hyman和tom与不在Intranet 10.0.0.0/24上的计算机上的远程端口25(SMTP)建立的连接:

# tcpspy -e 'not raddr 10.0.0.0/255.0.0.0 and rport 25 and (user "Hyman" or user "tom")'

记录由/usr/bin/ftp建立的连接:

# tcpspy -e 'exe "/usr/bin/ftp"'

或者结合监视ftp和telnet二进制文件:

# tcpspy -e 'exe "/usr/bin/ftp and /usr/bin/telnet"'

-e选项用于设置规则。
它可用于记录有关符合此规则的连接的信息,从而覆盖记录所有连接的默认设置。

tcpspy规则

  • `user username'如果启动或者接受连接的本地用户名/用户具有有效的用户ID uid,则为true。
  • rport port它比较连接远端的端口号,即传出连接
  • lport port如果连接的本地端具有端口号port,则为true。
  • exe模式如果创建/接受连接的可执行文件的完整文件名(包括目录)匹配模式(UNIX(全局)样式通配符模式),则为true。
  • 或者定义逻辑或者(expr1或者expr2)
  • 并定义逻辑和(expr1和expr2)
  • 未定义逻辑非(非用户插孔)