| 作者 |
| 张博 |
| 丛书名 |
| 信息安全技术大讲堂 |
| 出版社 |
| 机械工业出版社 |
| 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 |