首页>参考读物>计算机科学与技术>安全

从实践中学习Web防火墙构建
作者 : 张博 编著
出版日期 : 2020-06-05
ISBN : 978-7-111-65704-0
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 270
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书是一本全面介绍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攻击示范。

图书特色

从理论、应用和实践三个维度介绍Web防火墙构建的相关知识
由浅入深地剖析OSI模型中不同层级的攻击原理和防御方法
涵盖环境搭建、攻击类型、攻击示例、攻击过程分析、防御方法……

图书前言

  Nginx是一种Web服务。它也可以被用作反向代理、负载平衡、邮件代理和HTTP缓存。该软件由Igor Sysoev创建,并于2004年首次公开发布。2011年成立了与Nginx软件同名的公司,提供相关技术支持和Nginx付费版软件。根据Netcraft在2016年11月的Web服务调查可知,Nginx是所有活跃站点和百万最繁忙站点中使用次数最多的Web服务。
  随着Nginx用户量的不断增长及使用场景的不断丰富,用户对于它的需求也越来越多,而相应的层出不穷的网络攻击也是“水涨船高”。于是出现了很多优秀的第三方模块来满足用户的需求,其中Modsecurity(黑名单)和Naxsi(白名单)就是比较有代表性的模块。它们都是开源的Web防火墙。虽然已经有了这些解决方案,但市面上详细讲解如何结合Nginx、Naxsi、ngx_dynamic_limit_req_ module和RedisPushIptables进行应用层与网络层协同防御的图书却少之又少。
  ngx_dynamic_limit_req_module和RedisPushIptables模块都已在GitHub上开源。书中对其核心概念及应用做了详细讲解,并针对不同应用场景给出了多种基于Nginx的防护模式,为读者快速掌握Web防火墙构建提供了系统的实践指南。相信通过对本书内容的学习,读者能够掌握Nginx模块、Redis模块及Linux内核模块的开发技巧,从而拥有安防领域的应对能力。
本书特色
* 独特:本书是一部系统地介绍如何构建Web防火墙的技术专著,内容新颖而独特。
* 系统:全面讲解从网络层到应用层的安全与防御知识。
* 广泛:涉及TCP、iptables、Nginx、Redis及逆向分析等众多知识。
* 深入:结合作者多年的实战经验,带领读者深度探索Web防火墙及与网络安全相关的知识。
* 实用:讲解图文并茂,并提供源代码,书中所讲的防御工具都已开源,可作为Web防火墙框架使用。
本书内容
  第1章介绍了iptables的基本知识,包括iptables的安装、配置及使用示例。
  第2章介绍了网络层的安全与防御,包括IP标头和TCP段结构,以及网络层的攻击与防御。
  第3章介绍了传输层的安全与防御,包括记录传输层标头信息、传输层攻击定义、传输层攻击类型和传输层防御手段等。
  第4章介绍了应用层的安全与防御,包括iptables字符串匹配模块、应用层攻击的定义、应用层攻击类型和应用层防御手段等。
  第5章介绍了Web防火墙的类型,包括Web防火墙的历史、Web防火墙与常规防火墙的区别、Web防火墙的部署方式、Web防火墙的类型,以及各种防火墙的优缺点等。
  第6章介绍了Naxsi Web防火墙,包括Naxsi简介、Naxsi安装、Naxsi配置指令、Naxsi基础使用、Naxsi格式解析和Naxsi深入探索等。
  第7章介绍了ngx_dynamic_limit_req_module动态限流模块,包括其实现原理、功能、配置指令、扩展功能及应用场景等。
  第8章介绍了RedisPushIptables模块,包括其实现原理、安装、指令、API调用方法及应用场景等。
  第9章结合前8章所介绍的知识,详细介绍了如何构建自己定制的Web防火墙,包括软件安装、参数配置、白名单生成、白名单自动化生成、整合Fail2ban、定制开发Naxsi、Naxsi已知漏洞修复、多层防御整合后的对比等。
  第10章介绍了Nginx开发的相关知识,包括基本概念、数据类型、内存管理及相关函数等。
  第11章介绍了Nginx模块中config文件的编写及调试等高级主题,包括模块转换、模块编译、新旧config文件格式的区别及Nginx调试等。
  第12章介绍了Redis模块的编写,包括模块简介、模块开发及RedisPushIptables代码拆解等。
  第13章介绍了逆向分析的思路及Rootkit攻击示例,包括溯源步骤、修补漏洞及监测主机异常等。
配套代码获取方式
 本书涉及的所有代码均可在https://github.com/limithit上下载。另外,读者也可以登录机工新阅读网站(www.cmpreading.com),在该网站上搜索到本书,然后单击“资料下载”按钮,即可在本书页面上找到下载链接。
本书读者对象
* 网络安全从业人员;
* Web安全从业人员;
* 信息安全研究人员;
* Web防火墙技术爱好者;
* SRE工程师;
* 运维工程师;
* 架构师及软件开发人员;
* Linux爱好者;
* 高校及专业培训机构的学生。
作者与售后
  本书作者张博,拥有超过7年的运维经验,是Nginx模块和Redis模块的资深开发者。读者在阅读本书时若发现错漏和不足之处,请及时反馈,以便及时改正。联系邮箱:hzbook2017@163.com。

专家评论

  市面上介绍网络安全技术的图书很多,有些过于基础,有些又过于理论化,实操价值不高。本书理论结合实践,从Nginx生态的整体视角阐述和解决问题,很实用,也非常有价值,填补了国内构建WAF类图书市场的空白。贤弟长期在一线参与实际项目,其作品是他多年实战经验的总结,强烈推荐网络安全行业的从业者阅读。
  ——昆明天问科技CEO 杨家宝
  
  本书是一部由浅入深地讲述如何构建Web防火墙的佳作。书中循序渐进地介绍了TCP/IP和OSI模型中的网络层、传输层和应用层的安全和防御知识。书中讲解的关于Nginx的实战案例,符合大多数安全人员的需要,非常值得阅读。
  ——同盾科技高级数据开发工程师 程万胜
  
  本书由资深运维安全专家打造,系统地介绍了网络安全的相关知识。本书特别注重对读者的动手能力和学习能力的培养,讲解时不但剖析了相关的理论知识,而且还给出了多个实践案例,真正做到了“授人以渔”,非常值得安全技术爱好者阅读。
  ——杭州九狮科技CEO 周宗章
  
  本书结合作者多年的网络安全和系统安全从业经验,深入浅出地讲述了WAF的理论基础与实践流程,相信会对读者在Web防火墙构建方面有所启发和帮助。
  ——阿里前开发工程师/昆明雷脉科技CEO 雷加洪
  
  互联网时代,数据安全是所有企业都要面临的一个巨大挑战。如果企业不能适应这个挑战,不能保障企业用户数据的安全,那么用户又如何相信企业呢?本书从Web防火墙构建的角度,全方位地解决企业的网络安全问题,值得每一位网络安全从业者阅读。
  ——全球时刻CTO/IBM前Java资深专家 喻立久

上架指导

计算机\安全

封底文字

n

图书目录

赞誉
前言
第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

教学资源推荐
作者: [美]菲利普 N. 克莱因(Philip N. Klein)著
作者: 周学广 刘艺
作者: 主编:王瑞民副主编:史国华 李娜参编(按姓氏笔画顺序):杨姣 宋伟 高淼 龚玉猛
参考读物推荐
作者: Marcus Goncalves
作者: 子芽 著
作者: [美]布兰德·佩里( Brandon Perry )著