迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

如何将 Linux iptables 防火墙丢弃的数据包记录到日志文件中

作者:迹忆客 最近更新:2022/10/23 浏览次数:

本文是我们正在进行的 Linux iptables 系列文章的一部分。 当我们的 iptables 规则没有按预期工作时,我们可能需要记录 iptables 丢弃的数据包来进行故障排除。 本文介绍如何记录传入和传出丢弃的防火墙数据包。

如果我们是 iptables 的新手,请先熟悉 iptables 的基本概念


记录所有丢弃的输入数据包

首先,我们需要了解如何将所有丢弃的 iptables 输入数据包记录到 syslog。

如果我们已经有一大堆 iptables 防火墙规则,请将它们添加到底部,这会将所有丢弃的输入数据包(传入)记录到 /var/log/messages

$ iptables -N LOGGING
$ iptables -A INPUT -j LOGGING
$ iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
$ iptables -A LOGGING -j DROP

在上面的示例中,它执行以下操作:

  • iptables -N LOGGING:创建一个名为LOGGING的新链
  • iptables -A INPUT -j LOGGING:所有剩余的传入数据包都会跳转到LOGGING链
  • 第 3 行:将传入数据包记录到 syslog (/var/log/messages)。下面详细解释这条线。
  • iptables -A LOGGING -j DROP:最后,丢弃所有到达 LOGGING 链的数据包。即现在它真的丢弃了传入的数据包。

在上面的第 3 行中,它具有以下用于记录丢弃数据包的选项:

  • -m limit:这使用限制匹配模块。使用它,您可以使用 –limit 选项限制日志记录。
  • --limit 2/min:这表示日志记录的最大平均匹配率。在此示例中,对于类似的数据包,它将记录限制为每分钟 2 个。我们还可以指定 2/秒、2/分钟、2/小时、2/天。当我们不想将日志消息与相同丢弃数据包的重复消息混淆时,这很有帮助。
  • -j LOG:表示这个包的目标是LOG。即写入日志文件。
  • --log-prefix “IPTables-Dropped:” 我们可以指定任何日志前缀,该前缀将附加到将写入 /var/log/messages 文件的日志消息中
  • --log-level 4 这是标准的系统日志级别。四是警告。我们可以使用 0 到 7 范围内的数字。0 是紧急情况,7 是调试。

记录所有丢弃的传出数据包

这与上面相同,但下面的第二行有 OUTPUT 而不是 INPUT

iptables -N LOGGING
iptables -A OUTPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A LOGGING -j DROP

记录所有丢弃的数据包(传入和传出)

这与之前相同,但我们将从前两个示例中获取第 2 行,并将其添加到此处。 即我们将为 INPUTOUTPUT 设置一个单独的行,它将跳转到 LOGGING 链。

要记录传入和传出丢弃的数据包,请在现有 iptables 防火墙规则的底部添加以下行。

iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A OUTPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A LOGGING -j DROP

此外,正如我们之前解释的,默认情况下,iptables 将使用 /var/log/messages 来记录所有消息。 如果我们想将此更改为自己的自定义日志文件,请将以下行添加到 /etc/syslog.conf

kern.warning   /var/log/custom.log

如何阅读 iptables 日志

以下是丢弃传入和传出数据包时在 /var/log/messages 中记录的行示例。

Aug  4 13:22:40 centos kernel: IPTables-Dropped: IN= OUT=em1 SRC=192.168.1.23 DST=192.168.1.20 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=59228 SEQ=2
Aug  4 13:23:00 centos kernel: IPTables-Dropped: IN=em1 OUT= MAC=a2:be:d2:ab:11:af:e2:f2:00:00 SRC=192.168.2.115 DST=192.168.1.23 LEN=52 TOS=0x00 PREC=0x00 TTL=127 ID=9434 DF PROTO=TCP SPT=58428 DPT=443 WINDOW=8192 RES=0x00 SYN URGP=0

在上面的输出中:

  • IPTables-Dropped:这是我们通过指定 –log-prefix 选项在日志记录中使用的前缀
  • IN=em1 这表示用于此传入数据包的接口。 对于传出的数据包,这将为空
  • OUT=em1 这表示用于传出数据包的接口。 对于传入的数据包,这将为空。
  • SRC= 数据包起源的源 IP 地址
  • DST= 数据包发送到的目标 IP 地址
  • LEN= 数据包长度
  • PROTO= 表示协议(如上图,第一行是传出的ICMP协议,第二行是传入的TCP协议)
  • SPT= 表示源端口
  • DPT= 表示目的端口。 在上面的第 2 行中,目的端口是 443。这表示传入的 HTTPS 数据包被丢弃

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Linux 中安装 MySQL 客户端

发布时间:2023/05/09 浏览次数:72 分类:MySQL

在 Linux 中安装 MySQL 客户端的命令。Linux 和 Unix 等环境作为命令行界面工作,仅在命令的帮助下运行。

在 Linux 中更新 YUM

发布时间:2023/05/04 浏览次数:82 分类:操作系统

本文介绍了 Linux 中的 yum update 命令。本文将教我们如何在 Linux 中更新 YUM,以及如何在 Linux 系统上安装、更新、删除、查找和管理包。

在 Linux 中安装 Deb 文件

发布时间:2023/05/04 浏览次数:130 分类:操作系统

本文介绍如何在 Linux 中安装 deb 文件。在这篇 Linux 文章中,我们将学习如何在 Linux 系统上安装 .deb(Debian 软件包)文件。 我们还将看到如何在安装后删除 .deb 文件。

Linux 中的 lsof 命令

发布时间:2023/05/04 浏览次数:82 分类:操作系统

在这篇 Linux 文章中,我们将了解 Linux 操作系统中的 lsof 命令。 我们将看到如何在 Linux 中将此命令用于不同目的。

Linux 中的 ps aux 命令

发布时间:2023/05/04 浏览次数:69 分类:操作系统

本篇文章将讨论 Linux 中的 ps aux 命令。如果将 aux 快捷方式与 ps 命令一起使用,它将显示用户需要的最多信息,并可以为您提供系统运行进程的当前状态。

Linux 中的 NTP

发布时间:2023/05/04 浏览次数:137 分类:操作系统

本篇文章将讨论 Linux 中的 ntp。NTP 是大多数 IT 基础设施使用的核心协议。 使用它的目的是同步日期和时间信息。

在 Linux 中计算文件中的唯一行

发布时间:2023/05/04 浏览次数:70 分类:操作系统

计算文件中的唯一行是 Linux 中的一项常见任务,可以使用多种不同的工具和方法来执行此操作。使用 sort 和 uniq 命令计算文件中的唯一行数

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便