2

所以我正在尝试解析 FTP 日志并查看某个用户是否安全登录。到目前为止,我有这个在用户登录后拉下几行

cat proftpd.log.2 | grep -B 3 "USER $sillyvariable"

这是它创建的示例输出

::ffff:127.0.0.0 UNKNOWN ftp [04/Jan/2013:11:03:06 -0800] "AUTH TLS" 234 -
::ffff:127.0.0.0 UNKNOWN ftp [04/Jan/2013:11:03:06 -0800] "USER $sillyvariable" 331 -

现在这是我想要的一个完美示例,它显示AUTH TLS Message 和IPs match。然而,情况并非总是如此,因为许多用户不断地登录和退出,并且大多数时候输出是混乱的。

有没有办法我可以USER $sillyvariable在前一行中查找并找到包含“AUTH TLS”的他/她匹配的 IP,以便我可以知道他们安全登录?我想你可以说我想 grep 用户,然后向后 grep 看看他们源自(匹配 IP)的连接是否安全。我有点坚持这一点,真的可以使用一些帮助。谢谢!

4

2 回答 2

1
$ grep -B3 'USER $sillyvariable' proftpd.log.2 |
  tac | awk 'NR==1 {IP=$1} $1==IP {print}' | tac
::ffff:127.0.0.0 UNKNOWN ftp [04/Jan/2013:11:03:06 -0800] "AUTH TLS" 234 -
::ffff:127.0.0.0 UNKNOWN ftp [04/Jan/2013:11:03:06 -0800] "USER $sillyvariable" 331 -

这用于tac反转 grep 结果中的行。然后,它会查找 IP 地址与该行中的 IP 地址匹配的所有USER行。最后它tac再次运行以将行放回原始顺序。

于 2013-01-24T17:20:15.560 回答
0

我意识到我参加这个聚会已经很晚了,但是我之前对 AUTH 声明可能超过 3 行的评论让我感到疑惑。

我采取了一种略有不同的方法,其中我做出了最小的假设(基于对日志文件内容的有限了解):

  1. 每个 IP 地址有一个用户(如果他们位于防火墙后面,则可能不是这样)
  2. 对于每个 AUTH 条目,都应该有一个来自同一 IP 地址的“好”用户条目
  3. 在日志文件中有条目的 IP 地址的排序列表将显示对发出“错误”请求的任何 IP 地址的“用户”请求多于“授权”请求

如果这些假设是合理/正确的,那么一个简单的 bash 脚本可以很好地为您提供您想要的内容(这是一个未正确登录的用户列表 - 这并不是您所要求的):

#!/bin/bash
# first, find all the "correct" IP addresses that did the login "right", and sort by IP address:
grep -F "AUTH TLS" $1 | awk '{print $1}' | sort > goodLogins

# now find all the lines in the log file with USER and sort by IP address
grep USER $1 | awk '{print $1}' | sort > userLogins

# now see if there were user logins that didn't correspond to a "good" login:
echo The following lines in the log file did not have a corresponding AUTH statement:
echo
sdiff goodLogins userLogins | grep "[<>]" | awk '{print $2 ".*USER"}' > badUsers
grep -f badUsers $1
echo -----

请注意,这会留下您可能想要删除的三个临时文件(goodLogins、userLogins、badUsers)。我假设您知道如何使用上述代码创建一个文本文件,将其设置为可执行文件 ( chmod u+x scrubLog),并使用日志文件的名称作为参数 ( ./scrubLog proftpd.log.2) 运行它。

享受!

PS - 我不确定您所说的“正确登录”是什么意思,但还有其他方法可以强制执行良好的行为。例如,您可以阻止端口 21,因此只有 sftp(端口 22)请求通过,您可以阻止匿名 ftp,......但这不是您要问的。

于 2013-01-24T23:50:03.590 回答