当前位置:首页 > 技术知识 > 正文内容

iptables防火墙如何记录日志_iptables查看防火墙

maynowei8个月前 (08-23)技术知识67

例如:记录所有ssh服务的登录的日志

首先,我们需要了解如何将所有的iptables的INPUT链数据包记录到/var/log/messages中。如果你已经有一些iptables规则了,那么将记录日志的规则放在这些规则的顶部,如果放在规则的后面,将不会记录日志。

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 4/min -j LOG --log-prefix "Iptables-SSH-IN: " --log-level 4
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP


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

  • 第一条规则记录所有访问目的端口为22,将记录日志,限制日志每分钟4条,日志前缀为“Iptables-SSH-IN: ”,日志记录级别为Warning。
  • 第二条规则允许所有源地址的新连接访问目的端口22。
  • 第三条规则允许所有已建立的连接访问本机。
  • 设置INPUT链的默认规则为DROP。

上面第一条规则解释:

  • -m limit:使用limit模块。使用此选项,可以使用--limit选项限制访问速率。
  • --limit 4/min:这表示记录的最大平均访问速率。在此示例中,对于类似的数据包,它将日志记录限制为每分钟4个。还可以设置为2/second, 2/minute, 2/hour, 2/day。
  • -j LOG:这表示此数据包的目标是LOG。即写入日志文件。
  • --log-prefix "Iptables-SSH-IN: ” 可以指定任何日志前缀,这些前缀将写入到/var/log/messages日志文件中。
  • --log-level 4这是标准的系统日志级别。4是警告(warning)。可以使用0到7之间的数字。0是emerg,1是alert,2是crit,3是err,4是warning,5是notice,6是info,7是debug。

修改iptables日志存放位置

默认情况下,iptables将使用/var/log/messages记录所有消息。如果要将其更改为自己的定制日志文件,将下面命令添加到/etc/rsyslog.conf中。前提需要安装rsyslog服务:

# 安装rsyslog服务
[root@localhost ~]# yum -y install rsyslog
# 设置开机启动、并立即启动
[root@localhost ~]# systemctl enable rsyslog --now
# 编辑/etc/rsyslog.conf文件,添加下面内容到文件底部
[root@localhost ~]# vim /etc/rsyslog.conf 
kern.warning /var/log/iptables.log


查看刚才设置的日志文件:

[root@localhost ~]# ll -h /var/log/iptables.log 
-rw-------. 1 root root 2.0K Feb  9 10:46 /var/log/iptables.log
[root@localhost ~]# tail -f /var/log/iptables.log 

如何读取IPTables日志?

[root@localhost ~]# cat /var/log/iptables.log 

Feb  9 10:46:20 localhost kernel: Iptables-SSH-IN: IN=ens160 OUT= MAC=00:0c:29:ae:7d:09:00:50:56:c0:00:08:08:00 SRC=192.168.43.1 DST=192.168.43.137 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=49928 DF PROTO=TCP SPT=16512 DPT=22 WINDOW=64240 RES=0x00 SYN URGP=0
  • Iptables-SSH-IN: 通过指定--log-prefix选项,这是我们在日志记录中使用的前缀
  • IN=ens160 OUT=: 这表示从该接口传入数据包。对于传出数据包将为空。
  • IN= OUT=: 这表示从该接口传出数据包。对于传入的数据包将为空。
  • MAC=: 00:0c:29:ae:7d:09小时目标MAC地址,:00:50:56:c0:00:08为源MAC地址,08:00为上层协议代码,表示IP协议。
  • SRC=: 源IP地址
  • DST=:目的IP地址
  • LEN=: 数据包的长度
  • PROTO=: 使用什么类型协议
  • SPT=: 源端口
  • DPT=: 目标端口

相关文章

机器人需求驱动导航新SOTA,成功率提升15%!浙大&vivo联手打造

CogDDN团队 投稿量子位|公众号QbitAI让机器人像人一样边看边理解,来自浙江大学和vivo人工智能实验室的研究团队带来了新进展。正如视频所展示的,机器人在复杂的室内环境中不仅能自主探索,还具备...

Xamarin.Android使用教程:列表视图和适配器(2)

昨天我们已经一起学习了第1部分,这是探索Xamarin.Android的列表视图和适配器的的第2部分。在今天的文章中我们将探讨列表视图项排列使用BaseAdapter,还有自定义布局。让我们深入到代码...

C# 中的多线程同步机制:lock、Monitor 和 Mutex 用法详解

在多线程编程中,线程同步是确保多个线程安全地访问共享资源的关键技术。C# 提供了几种常用的同步机制,其中 lock、Monitor 和 Mutex 是最常用的同步工具。本文将全面介绍这三种同步机制的用...

python-oracledb——利用python连接Oracle数据库的好用方法

这篇文章最早发布在CSDN了,最近想尝试使用一下头条,重新转移过来了。背景介绍之前使用的数据库一直是MySql,偶尔使用PostgreSQL,都是利用的数据库连接池使用;最近需要在Oracle数据库取...

Oracle高级数据库特性揭秘:存储过程、触发器与权限管理

当谈论Oracle高级数据库特性时,存储过程和函数、触发器、权限管理和安全性以及数据库连接和远程访问是关键概念。下面我将为每个主题提供详细的解释,并附上高质量示例。存储过程和函数: 存储过程和函数是预...

Oracle公布Java9未来进度表(oracle的未来)

作为1995年由Sun公司推出的产品,Java既是指一种程序设计语言,也包含了Java平台。因其平台无关、安全、高性能、自动垃圾回收等特点,Java已经推出便受到广泛应用。Java软件开发工具包(Ja...