【问题标题】:pipe tcpdump grep into perl管道 tcpdump grep 到 perl
【发布时间】:2012-02-02 19:21:49
【问题描述】:

为了阻止顽固的黑客,我开发了一个 tcpdump 命令,它将失败的身份验证和前面的 4 行打印到控制台。由于有时我必须睡觉,所以我想编写一个程序,在打印失败登录时自动将 IP 添加到防火墙。

简化示例:

tcpdump [options] | grep [username] | perl -en [
    isolate username using regex;
    if username is the target username,
        examine previous lines looping until IP is detected;
    append properly formatted firewall command to firewall file;
    run firewall file]

我已经让 tcpdump 和 grep 工作了。我对 Perl 有足够的了解,可以在脚本文件中对此进行编程,但是 Perl 的命令行让我很难过。

【问题讨论】:

  • 向我们展示您尝试匹配的传入字符串的示例、您尝试提取的内容以及您尝试过的任何当前解决方案,我们将能够更好地帮助您.
  • 如果您知道如何编写脚本,为什么不将您的 tcpdump 通过管道传输到脚本?命令行上的多行 Perl 非常难看。
  • “命令行 Perl”与 Perl 脚本没有什么不同。你只需要引用你的 Perl 代码来保护它不受 shell 的影响。但是真的没有理由必须在perl -e之后;写个脚本就好了。
  • 好主意...我将其发送到脚本
  • 好的,我创建了脚本,但无法将输入输入其中。尾 -f 消息 | grep --line-buffered "身份验证失败:" | awk '{打印 $1,$2,$3,$10}' | test3.pl ... test3.pl 永远看不到输入 ... 我尝试了 ARGV 和 STDIN 方法...但是如果我离开最后一个管道和 test3.pl 我看到 test3.pl 应该看到什么:2 16 年 2 月 3 日:09:36 [user=someusername]

标签: linux perl grep pipe


【解决方案1】:

对于您正在尝试做的事情,我会建议另一条路线,并安装诸如denyhosts 之类的服务,该服务可以检测重复的失败登录尝试,记录它们并自动阻止它们。

denyhosts 可从 http://denyhosts.sourceforge.net 获得 - 或者可能在适合您的 Linux 风格的存储库中获得。

【讨论】:

  • 好吧,我查看了denyhosts 和fail2ban,似乎它们使用日志。我从来没有在日志中看到 IP,所以我不得不使用 tcpdump 从原始数据中提取 IP。我错过了拒绝主机的内容吗?
  • 如果我没记错的话,denyhosts 检查失败的 SSH 登录尝试,然后在达到某个阈值后将源 IP/主机名添加到 /etc/hosts.deny 文件中,从而阻止该源连接再次,并让您查看它。
  • 这之后你有什么运气吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 1970-01-01
  • 2016-08-22
  • 1970-01-01
  • 1970-01-01
  • 2011-01-20
  • 1970-01-01
相关资源
最近更新 更多