ebtables日志nflog
内核由函数ebt_nflog_init注册nflog目标,即结构ebt_nflog_tg_reg。
static struct xt_target ebt_nflog_tg_reg __read_mostly = {.name = "nflog",.revision = 0,.family = NFPROTO_BRIDGE,.target = ebt_nflog_tg,.checkentry = ebt_nflog_tg_check,.targetsize = sizeof(struct ebt_nflog_info),.me = THIS_MODULE,
};
static int __init ebt_nflog_init(void)
{return xt_register_target(&ebt_nflog_tg_reg);
}
函数ebt_nflog_tg_check对于配置参数进行必要的合法性检查,确保日志前缀字符串的结束符,最长63字节(EBT_NFLOG_PREFIX_SIZE=64)。
static int ebt_nflog_tg_check(const struct xt_tgchk_param *par)
{struct ebt_nflog_info *info = par->targinfo;if (info->flags & ~EBT_NFLOG_MASK)return -EINVAL;info->prefix[EBT_NFLOG_PREFIX_SIZE - 1] = '\0';return 0;
}
对于匹配的报文,由ebt_log_packet函数输出报文信息。
static unsigned int
ebt_nflog_tg(struct sk_buff *skb, const struct xt_action_param *par)
{const struct ebt_nflog_info *info = par->targinfo;struct net *net = xt_net(par);struct nf_loginfo li;li.type = NF_LOG_TYPE_ULOG;li.u.ulog.copy_len = info->len;li.u.ulog.group = info->group;li.u.ulog.qthreshold = info->threshold;li.u.ulog.flags = 0;nf_log_packet(net, PF_BRIDGE, xt_hooknum(par), skb, xt_in(par),xt_out(par), &li, "%s", info->prefix);return EBT_CONTINUE;
日志配置
如下配置网桥,和ebtables规则nflog。
# ip link add br0 type bridge
# ip link set dev br0 up
# ip link set dev ens33 master br0
# ip addr add dev br0 192.168.3.143/24
#
# ebtables -A INPUT --nflog-group 32 --nflog-prefix NFLOG-FW --nflog-threshold 200
#
# ebtables -L
Bridge table: filterBridge chain: INPUT, entries: 1, policy: ACCEPT
--nflog-prefix "NFLOG-FW" --nflog-group 32 --nflog-threshold 200 -j CONTINUE
如下加载了ebt_nflog模块。
# lsmod | grep log
ebt_nflog 16384 1
nfnetlink_log 20480 1
nfnetlink 20480 4 nft_compat,nf_tables,nfnetlink_log
x_tables 49152 4 nft_compat,ip_tables,ebt_nflog
#
# sysctl -a | grep nf_log
net.netfilter.nf_log.0 = NONE
net.netfilter.nf_log.1 = NONE
net.netfilter.nf_log.10 = nfnetlink_log
net.netfilter.nf_log.11 = NONE
net.netfilter.nf_log.12 = NONE
net.netfilter.nf_log.2 = nfnetlink_log
net.netfilter.nf_log.3 = NONE
net.netfilter.nf_log.4 = NONE
net.netfilter.nf_log.5 = NONE
net.netfilter.nf_log.6 = NONE
net.netfilter.nf_log.7 = nfnetlink_log
net.netfilter.nf_log.8 = NONE
net.netfilter.nf_log.9 = NONE
net.netfilter.nf_log_all_netns = 0
配置ulogd,将NFLOG的group修改为32,与以上配置的ebtables规则中的nflog_group相同。
# cat /etc/ulogd.conf # this is a stack for logging packet send by system via LOGEMU
stack=log1:NFLOG,base1:BASE,ifi1:IFINDEX,ip2str1:IP2STR,print1:PRINTPKT,emu1:LOGEMU[log1]
# netlink multicast group (the same as the iptables --nflog-group param)
# Group O is used by the kernel to log connection tracking invalid message
group=32
重启ulogd:
# service ulogd restart
日志显示如下,包括ARP、ICMP、ICMPv6和UDP协议日志:
# tail -f /var/log/ulog/syslogemu.log
Feb 20 02:22:46 localhost NFLOG-FW IN=br0 OUT= MAC=00:0c:29:e6:3f:62:00:0c:29:ea:2e:27:08:06 SRC=54.99.97.56 DST=64.99.97.56 PROTO=ARP REPLY REPLY_MAC=00:0c:29:ea:2e:27 MARK=0
Feb 20 02:22:46 localhost NFLOG-FW IN=br0 OUT= MAC=00:0c:29:e6:3f:62:00:0c:29:ea:2e:27:08:00 SRC=192.168.3.137 DST=192.168.3.139 LEN=84 TOS=00 PREC=0x00 TTL=64 ID=51721 DF PROTO=ICMP TYPE=8 CODE=0 ID=5 SEQ=1394 MARK=0
Feb 20 03:51:15 localhost NFLOG-FW IN=br0 OUT= MAC=33:33:ff:ea:2e:27:fc:87:43:ad:1e:3d:86:dd SRC=fe80::1 DST=ff02::1:ffea:2e27 LEN=72 TC=0 HOPLIMIT=255 FLOWLBL=0 PROTO=ICMPv6 TYPE=135 CODE=0 MARK=0
Feb 20 03:51:15 localhost NFLOG-FW IN=br0 OUT= MAC=ff:ff:ff:ff:ff:ff:54:a7:03:16:55:c2:08:00 SRC=192.168.3.123 DST=192.168.3.255 LEN=147 TOS=00 PREC=0x00 TTL=64 ID=44822 PROTO=UDP SPT=1024 DPT=5001 LEN=127 MARK=0
内核版本 5.10
ebtables日志nflog相关推荐
- Netfilter 网桥日志
定义网桥的日志结构nf_bridge_logger,类型为NF_LOG_TYPE_LOG,处理函数为nf_log_bridge_packet.目前内核支持的另一日志类型为NF_LOG_TYPE_ULO ...
- 利用iptabls的NFLOG记录自己的HTTP HTTPS上网行为
利用iptabls的NFLOG记录自己的HTTP HTTPS上网行为 想要记录上网行为(一天都访问了什么网站)势必要解析TCP数据包,第一种方法是自己写一个内核模块来做这件事,但调内核模块一崩溃系统就 ...
- 转大神的日志 【大杂烩】杂7杂8的东西
2013.8.21 今天是第一天搬到5栋,新的环境,新的面孔.工作上暂时没有安排,可以先看看资料,早上把iptables重新看了一下,整理了一下链和表的关系,并且在MR3080上进行了实验. 2013 ...
- python的日志库logging,真香!!!
学习资源 Python之日志处理(logging模块) python之配置日志的几种方式 logging 官方高级用法 使用方法 LOG_FORMAT = "%(asctime)-15s - ...
- Docker学习(五)-----Docker查看日志
八.Docker查看日志 docker logs 容器名称/ID docker logs -f -t --since="2018-12-1" --tail=10 qfjy_exam ...
- Springboot 利用AOP编程实现切面日志
前言 踏入Springboot这个坑,你就别想再跳出来.这个自动配置确实是非常地舒服,帮助我们减少了很多的工作.使得编写业务代码的时间占比相对更大.那么这里就讲一下面向切面的日志收集.笔者使用lomb ...
- 【Springboot】日志
springBoot日志 1.目前市面上的日志框架: 日志门面 (日志的抽象层): JCL(Jakarta Commons Logging) ...
- log4j屏蔽掉某个包下的log日志打印
在log4j的配置文件下配置 ## Disable other log log4j.logger.com.summaryday.framework.db=OFF log4j定义了8个级别的log(除去 ...
- SpringBoot集成AOP管理日志
写在前面 如何将所有的通过url的请求参数以及返回结果都输出到日志中? 如果在controller的类中每个方法名都写一个log输出肯定是不明智的选择.使用Spring的AOP功能即可完成. AOP ...
- 日志处理logger
20220127 https://mp.weixin.qq.com/s/CgmfVqogqKBzezmIR7ZfsQ https://blog.csdn.net/kyle1314608/article ...
最新文章
- Homebrew 1.9发布,将支持Linux与Windows 10
- Bug思路不清晰严谨
- PostgreSQL表的行数统计
- Loj#6039-「雅礼集训 2017 Day5」珠宝【四边形不等式,dp】
- python打印长方形_利用python打印出菱形、三角形以及矩形的方法实例
- 【转载保存】搜索引擎调研文档
- oracle快速解析,教你用Oracle解析函数快速检查序列间隙
- racecar 尝试记录
- 思科模拟器CiscoPacketTracer下载
- Raspberry pi 3 DSI LCD研究筆記2nd TN92
- 安装服务器系统后鼠标键盘没反应,安装Win7系统以后键盘鼠标不能用/失灵没反应的缘由以及解决方法...
- QQ空间无敌装逼,复制下面的任一代码粘贴即可出现意想不到的图案。
- 括号配对检测python123_括的意思
- 前端根据后端返回数据导出指定样式的表格(xlsx-js-style)
- 似然函数以及最大似然估计
- 浪漫约定的守护者——微软最有价值专家余勇
- C语言-switch-case语句与多分支结构
- STM32之USART:RXD和TXD管脚互换、接收和发送的电平极性反转、支持数据高位与低位反序发送或接收
- ThinkPHP,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的开源轻量级PHP框架。
- 【英文分词】英文分词处理中遇到的问题
热门文章
- 《孙子兵法》的优秀读后感作文2100字
- python编程基础知识点上的问题_python编程入门之二:必备基础知识-Go语言中文社区...
- 平台型时间信号强度曲线_MRI对动态增强时间信号曲线呈平台型乳腺纤维.PDF
- 我们穷极一生,究竟追寻的是什么?
- java 栅栏_Java并发包之闭锁/栅栏/信号量(转)
- 银行柜员绩效考核案例
- 台式计算机网线,台式电脑如何连接宽带_台式电脑如何连接网线
- Vscode文件夹和代码各种颜色(详细汇总)
- Mysql客户端给字段添加中文数据报错SQL错误(1366):Incorrect string value: ‘\xE5\xA4\xA7\xE5\xB9\x85...‘ for column ‘nam
- 永中表格中自定义函数提取网址