如何在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)
- 未定义逻辑非(非用户插孔)