从实践中学习Web防火墙构建

作者
张博
丛书名
信息安全技术大讲堂
出版社
机械工业出版社
ISBN
9787111657040
简要
简介
内容简介书籍计算机书籍 本书是一本全面介绍Nginx及其相关模块的技术书籍,是国内首本深入介绍Web防火墙原理和架构的书籍。本书的编写版本为Nginx 1.11和Naxsi 0.56。本书共13章。第1章介绍了iptables的基本知识;第2章介绍了IP标头和TCP段结构,以及网络层的攻击与防御;第3章介绍了传输层的攻击与防御;第4章介绍了应用层的攻击与防御;第5章介绍了Web防火墙的发展史及WAF种类;第6章介绍了Naxsi模块;第7章介绍了动态限流模块ngx_dynamic_limit_req_module的原理及具体应用;第8章介绍了RedisPushIptables模块;第9章构建自己定制的Web防火墙;第10章介绍了Nginx的开发;第11章介绍了Nginx模块config文件的编写及调试;第12章介绍了Redis模块的开发及RedisPushIptables的代码拆解;第13章介绍了逆向分析的思路及Rootkit攻击示范。
目录
赞誉
前言
第1章 iptables使用简介 1
1.1 iptables防火墙 1
1.2 基本概念 1
1.2.1 iptables包含表 3
1.2.2 iptables包含链 3
1.2.3 连接状态 4
1.2.4 iptables规则 4
1.2.5 具体目标 5
1.2.6 iptables扩展模块 5
1.3 安装iptables 5
1.3.1 内核设置 5
1.3.2 iptables安装方式 6
1.4 配置和使用 8
1.4.1 nftables防火墙 8
1.4.2 iptables的缺点 8
1.4.3 nftables与iptables的主要区别 9
1.4.4 从iptables迁移到nftables 10
1.4.5 iptables语法 11
1.4.6 显示当前规则 16
1.4.7 重置规则 16
1.4.8 编辑规则 16
1.4.9 保存和恢复规则 17
1.4.10 实例应用 17
第2章 网络层的安全与防御 20
2.1 IP标头和TCP段结构 20
2.1.1 IPv4标头结构 20
2.1.2 IPv6标头结构 24
2.1.3 TCP段结构 25
2.1.4 TCP协议操作 27
2.1.5 TCP连接建立 28
2.1.6 TCP连接终止 28
2.1.7 TCP资源使用 29
2.1.8 TCP数据传输 29
2.2 记录IP标头信息 34
2.2.1 使用tshark记录标头信息 34
2.2.2 使用iptables记录标头信息 35
2.3 网络层攻击定义 36
2.4 网络层攻击 37
2.5 网络层防御 41
第3章 传输层的安全与防御 42
3.1 记录传输层标头信息 42
3.1.1 使用iptables记录TCP标头 42
3.1.2 使用tshark记录TCP标头 43
3.1.3 使用iptables记录UDP标头 43
3.1.4 使用tshark记录UDP标头 44
3.1.5 UDP属性 44
3.2 传输层攻击定义 45
3.3 传输层攻击类型 45
3.3.1 TCP攻击 45
3.3.2 UDP攻击 48
3.3.3 信息收集 50
3.4 传输层防御手段 52
第4章 应用层的安全与防御 55
4.1 iptables字符串匹配模块 55
4.2 应用层攻击定义 56
4.3 应用层攻击类型 56
4.3.1 缓冲区溢出攻击 57
4.3.2 钓鱼式攻击 57
4.3.3 后门攻击 57
4.3.4 Web攻击 58
4.3.5 应用层DDoS 61
4.3.6 嗅探攻击 61
4.4 应用层防御手段 62
4.4.1 缓冲区溢出 63
4.4.2 钓鱼式 63
4.4.3 后门 63
4.4.4 Web攻击 64
4.4.5 应用层DDoS 64
4.4.6 网络嗅探 65
第5章 Web防火墙类型 66
5.1 Web防火墙简介 66
5.2 Web防火墙历史 67
5.3 WAF与常规防火墙的区别 68
5.4 部署方式 68
5.5 Web防火墙的类型 71
5.6 各类防火墙的优缺点 72
第6章 Naxsi Web防火墙 73
6.1 Naxsi简介 73
6.2 Naxsi安装 73
6.2.1 编译Naxsi 73
6.2.2 基本配置 74
6.3 Naxsi配置指令 76
6.3.1 白名单 76
6.3.2 规则 77
6.3.3 CheckRule 79
6.3.4 请求拒绝 80
6.3.5 指令索引 80
6.3.6 匹配规则 82
6.4 Naxsi基础使用 84
6.5 Naxsi格式解析 91
6.5.1 Raw_body 91
6.5.2 libinjection 92
6.5.3 JSON格式 93
6.5.4 运行时修饰符 94
6.6 示例 95
6.6.1 白名单示例 95
6.6.2 规则示例 97
6.7 Naxsi深入探索 98
6.7.1 Naxsi日志 98
6.7.2 内部规则 100
6.7.3 与Fail2Ban整合 102
第7章 ngx_dynamic_limit_req_module动态限流 104
7.1 实现原理 104
7.1.1 限流算法 104
7.1.2 应用场景 106
7.1.3 安装 107
7.2 功能 108
7.2.1 CC防卸 108
7.2.2 暴力破解 108
7.2.3 恶意刷接口 108
7.2.4 分布式代理恶意请求 109
7.2.5 动态定时拦截 109
7.2.6 黑名单和白名单 110
7.3 配置指令 110
7.3.1 dynamic_limit_req_zone 设置区域参数 111
7.3.2 dynamic_limit_req设置队列 114
7.3.3 dynamic_limit_req_log_level设置日志级别 114
7.3.4 dynamic_limit_req_status设置响应状态 115
7.3.5 black-and-white-list设置黑名单和白名单 115
7.4 扩展功能 115
7.4.1 API实时计数、PV、UV统计 115
7.4.2 API阈值通知 116
第8章 RedisPushIptables模块 120
8.1 RedisPushIptables简介 120
8.2 RedisPushIptables与Fail2Ban比较 120
8.2.1 Fail2Ban的特征 120
8.2.2 RedisPushIptables的特征 121
8.3 安装RedisPushIptables 122
8.4 动态删除配置 124
8.5 RedisPushIptables指令 125
8.6 客户端API示例 125
8.6.1 C语言编程 125
8.6.2 Python语言编程 126
8.6.3 Bash语言编程 128
8.6.4 Lua语言编程 128
第9章 构建自己的WAF 130
9.1 安装所需软件 130
9.2 参数配置 131
9.3 白名单生成 133
9.4 白名单自动化生成 138
9.5 整合Fail2ban 144
9.6 定制开发Naxsi 146
9.7 Naxsi已知漏洞 151
9.8 多层防御整合后对比 156
9.9 可能存在的瓶颈 157
9.10 恶意IP库 157
第10章 Nginx开发指南 158
10.1 基本概念 158
10.1.1 源码 158
10.1.2 引用头文件 159
10.1.3 整型封装 160
10.1.4 函数返回值 160
10.1.5 错误处理 161
10.2 字符串 161
10.2.1 字符串操作 162
10.2.2 格式化字符串 163
10.2.3 数字转换函数 164
10.2.4 正则表达式 165
10.3 日志时间格式 166
10.4 数据结构 167
10.4.1 数组 167
10.4.2 单向链表 168
10.4.3 双向链表 170
10.4.4 红黑树 171
10.4.5 散列表 171
10.5 内存管理 173
10.5.1 堆 173
10.5.2 池 174
10.5.3 共享内存 175
10.6 日志记录 177
10.7 结构体 178
10.7.1 ngx_cycle_t循环结构体 178
10.7.2 ngx_buf_t缓冲区结构体 179
10.7.3 ngx_connection_t连接结构体 180
10.7.4 ngx_event_t结构体 182
10.8 事件 183
10.8.1 I/O事件 183
10.8.2 定时器事件 184
10.8.3 发布事件 184
10.8.4 事件循环 186
10.9 进程 186
10.10 线程 188
10.11 模块 189
10.11.1 添加模块 189
10.11.2 核心模块 190
10.11.3 配置指令 193
10.12 HTTP框架 195
10.12.1 连接 195
10.12.2 请求 196
10.12.3 配置 200
10.12.4 请求阶段 202
10.13 HTTP框架执行流程 203
10.13.1 请求重定向 203
10.13.2 子请求 204
10.13.3 请求最终确定 206
10.13.4 请求的主体 208
10.13.5 响应 210
10.13.6 响应头 210
10.13.7 响应的主体 211
10.14 变量 212
10.14.1 简单变量 212
10.14.2 复杂变量 215
10.15 负载均衡 216
第11章 Nginx高级主题 220
11.1 模块转换 220
11.1.1 先决条件 220
11.1.2 编译动态模块 220
11.1.3 加载动态模块 221
11.1.4 转换config文件 221
11.2 模块编译 222
11.3 config文件 222
11.3.1 新的config文件 222
11.3.2 旧的config文件 223
11.4 Nginx调试 224
11.4.1 调试日志 224
11.4.2 核心转储 225
11.4.3 套接字泄露 225
11.5 示例 226
第12章 Redis模块编写 231
12.1 模块简介 231
12.1.1 加载模块 231
12.1.2 最简单的模块 232
12.1.3 模块初始化 232
12.2 模块API 233
12.3 RedisPushIptables代码拆解 235
第13章 后门分析与监测 244
13.1 溯源步骤和攻击示例 244
13.1.1 溯源思路 244
13.1.2 后门类型 245
13.1.3 逆向分析 245
13.1.4 网络监测 245
13.1.5 用户空间Rootkit示例 246
13.1.6 内核空间Rootkit示例 249
13.2 修补漏洞 253
13.2.1 虚拟补丁 253
13.2.2 补丁 253
13.3 监测主机异常 253
13.3.1 静态编译检测工具 254
13.3.2 流量异常 254
13.3.3 磁盘I/O异常、CPU异常和MEM异常 255
13.3.4 主动连接监视 256




有问题微信扫码联系

推荐

Understand China
桂ICP备20004708号-4