内容简介
《网络信息安全》从网络攻击与防护的角度讨论网络安全原理与技术。在网络防护方面,介绍了密码学、虚拟专用网络、防火墙、入侵检测和操作系统的安全防护;在网络攻击方面,详细讨论了缓冲区溢出攻击、格式化字符串攻击、拒绝服务攻击和恶意代码攻击。本书的大特点是理论结合实践,书中的例子代码只需经过少量修改即可用于设计实践。
目录
前言
第1章 网络安全综述 1
1.1 网络安全概述 1
1.1.1 网络安全概念 1
1.1.2 网络安全体系结构 2
1.1.3 网络安全的攻防体系 3
1.2 计算机网络面临的安全威胁 4
1.2.1 TCP/IP网络体系结构及计算机网络的脆弱性 4
1.2.2 计算机网络面临的主要威胁 5
1.3 计算机网络安全的主要技术与分类 6
1.3.1 网络侦察 6
1.3.2 网络攻击 7
1.3.3 网络防护 8
1.4 网络安全的起源与发展 11
1.4.1 计算机网络的发展 11
1.4.2 网络安全技术的发展 12
1.4.3 黑客与网络安全 12
习题 13
上机实践 13
第2章 基础知识 14
2.1 常用的Windows命令 14
2.2 常用的Linux命令 21
2.3 批命令及脚本文件 25
2.3.1 批处理文件 25
2.3.2 VBS脚本文件 27
2.4 网络端口、服务、进程 27
2.4.1 网络端口 27
2.4.2 服务与进程 29
2.4.3 Windows终端服务 30
2.5 网络编程技术基础知识 31
2.5.1 套接字 31
2.5.2 网络编程库 33
2.5.3 用Windows Sockets编程 33
2.6 网络安全实验环境的配置 33
2.6.1 安装VirtualBox虚拟机 33
2.6.2 配置多个虚拟网卡,模拟多个网络交换机 34
2.6.3 安装和配置新的虚拟机系统 34
2.6.4 导入和导出安装好的虚拟机 37
习题 38
上机实践 38
第3章 密码学基础 39
3.1 密码学概述 39
3.2 对称密码技术 42
3.2.1 DES算法的安全性 42
3.2.2 DES算法的原理 42
3.2.3 DES的各种变种 43
3.3 RSA公开密钥密码技术 43
3.3.1 RSA算法描述 44
3.3.2 RSA算法举例 44
3.3.3 RSA算法的安全性 45
3.3.4 RSA算法的速度 45
3.3.5 RSA算法的程序实现 45
3.4 信息摘要和数字签名 45
3.4.1 信息摘要 45
3.4.2 数字签名 46
3.5 公钥基础设施及数字证书 47
3.5.1 PKI的定义和组成 47
3.5.2 数字证书及其应用 48
3.6 PGP及其应用 50
3.6.1 PGP简介 50
3.6.2 Windows环境下PGP的实现案例Gpg4win 50
3.7 使用OpenSSL中的密码函数 54
3.7.1 在命令行下使用OpenSSL 54
3.7.2 在Windows的C程序中使用OpenSSL 57
3.7.3 在Linux的C程序中使用OpenSSL 58
3.8 Windows系统提供的密码算法 59
3.8.1 密码服务提供者CSP 60
3.8.2 使用CSP提供的密码技术实现保密通信 62
习题 62
上机实践 63
第4章 虚拟专用网络VPN 64
4.1 概述 64
4.1.1 VPN的功能和原理 64
4.1.2 VPN的分类 66
4.2 基于第2层隧道协议的PPTP VPN和L2TP VPN 67
4.2.1 PPTP VPN 67
4.2.2 L2TP VPN 68
4.3 基于第3层隧道协议的IPSec VPN 68
4.3.1 IPSec的组成和工作模式 69
4.3.2 认证协议AH 69
4.3.3 封装安全载荷ESP 70
4.3.4 安全关联与安全策略 71
4.4 Windows环境下的VPN 72
4.4.1 用Windows 2003实现远程访问VPN 73
4.4.2 用Windows 2003实现网关-网关VPN 81
习题 89
上机实践 89
第5章 防火墙技术 90
5.1 防火墙概述 90
5.2 防火墙的功能和分类 91
5.2.1 防火墙的功能 91
5.2.2 防火墙的分类 92
5.3 包过滤防火墙 93
5.3.1 静态包过滤防火墙 93
5.3.2 动态包过滤防火墙 94
5.4 应用级网关防火墙 96
5.5 防火墙的典型部署 97
5.5.1 屏蔽主机模式防火墙 97
5.5.2 双宿/多宿主机模式防火墙 97
5.5.3 屏蔽子网模式防火墙 98
5.6 Linux防火墙的配置 99
习题 99
上机实践 99
第6章 入侵检测技术 100
6.1 入侵检测概述 100
6.1.1 入侵检测的概念及模型 100
6.1.2 IDS的任务 101
6.1.3 IDS提供的主要功能 102
6.1.4 IDS的分类 103
6.2 CIDF模型及入侵检测原理 104
6.2.1 CIDF模型 104
6.2.2 入侵检测原理 105
6.3 基于Snort部署IDS 106
习题 108
上机实践 108
第7章 Windows和Linux系统的安全 109
7.1 计算机系统的安全级别 109
7.2 Windows系统的安全防护 110
7.2.1 使用NTFS 110
7.2.2 防止穷举法猜测口令 110
7.2.3 使用高强度的密码(口令) 112
7.2.4 正确设置防火墙 112
7.2.5 路由和远程访问中的限制 112
7.2.6 系统安全策略 113
7.2.7 重要文件的权限设置 114
7.2.8 安装第三方安全软件,及时打上补丁 115
7.2.9 断开重要的工作主机与外部网络的连接(物理隔离) 116
7.3 入侵Windows系统 116
7.3.1 密码破解 116
7.3.2 利用漏洞入侵Windows系统 116
7.3.3 利用黑客工具进行入侵 119
7.4 Linux(UNIX)的安全机制及防护技术 120
7.4.1 Linux的安全机制 120
7.4.2 Linux的安全防护 123
7.5 入侵Linux系统 125
7.5.1 破解口令 125
7.5.2 通过系统漏洞进行入侵 125
7.5.3 几种典型的数据驱动攻击 125
习题 126
上机实践 126
第8章 Linux系统的缓冲区溢出攻击 127
8.1 缓冲区溢出概述 127
8.2 Linux IA32缓冲区溢出 128
8.2.1 Linux IA32的进程映像 128
8.2.2 缓冲区溢出的原理 130
8.2.3 缓冲区溢出攻击技术 133
8.3 Linux intel64缓冲区溢出 136
8.3.1 Linux x86_64的进程映像 136
8.3.2 Linux x86_64的缓冲区溢出流程 137
8.3.3 Linux x86_64的缓冲区溢出攻击技术 139
习题 142
上机实践 142
第9章 Linux Shellcode技术 143
9.1 Linux IA32中的系统调用 143
9.2 编写Linux IA32的Shellcode 146
9.2.1 编写一个能获得Shell的程序 146
9.2.2 用系统功能调用获得Shell 147
9.2.3 从可执行文件中提取出Shellcode 149
9.3 Linux IA32本地攻击 150
9.3.1 小缓冲区的本地溢出攻击 151
9.3.2 大缓冲区的本地溢出攻击 153
9.4 Linux IA32远程攻击 154
9.5 Linux intel64 Shellcode 156
9.5.1 一个获得Shell的Shellcode 156
9.5.2 本地攻击 159
习题 161
上机实践 161
第10章 Windows系统的缓冲区溢出攻击 162
10.1 Win32的进程映像 162
10.2 Win32缓冲区溢出流程 165
10.3 Win32缓冲区溢出攻击技术 171
10.4 Win32缓冲区溢出攻击实例 172
10.5 Win64平台的缓冲区溢出 174
10.5.1 Win64的进程映像 175
10.5.2 Win64的缓冲区溢出流程 176
10.5.3 Win64的缓冲区溢出攻击技术 178
习题 179
上机实践 180
第11章 Windows Shellcode技术 181
11.1 用LoadLibrary和GetProcAddress调用任何dll中的函数 181
11.2 在Win32进程映像中获取Windows API 183
11.2.1 确定动态连接库的基址 183
11.2.2 获取Windows API的地址 185
11.3 编写Win32 Shellcode 193
11.3.1 编写一个启动新进程的C程序 193
11.3.2 用汇编语言实现同样的功能 193
11.3.3 编写Shellcode并用C程序验证 197
11.3.4 去掉Shellcode中的字符串结束符' ' 198
11.4 攻击Win32 202
11.4.1 本地攻击 202
11.4.2 远程攻击 204
习题 208
上机实践 208
第12章 格式化字符串及SQL注入攻击 209
12.1 格式化字符串漏洞的原理 209
12.2 Linux x86平台格式化字符串漏洞 211
12.2.1 使进程崩溃 212
12.2.2 读取指定内存地址单元的值 212
12.2.3 改写指定内存地址单元的值 213
12.2.4 直接在格式串中指定内存地址 214
12.3 Win32平台格式化字符串漏洞 217
12.3.1 使进程崩溃 217
12.3.2 读取指定内存地址单元的值 217
12.3.3 改写指定内存地址单元的值 218
12.4 SQL注入 219
12.4.1 环境配置 219
12.4.2 利用SELECT语句的SQL注入攻击 219
12.4.3 利用UPDATE语句的SQL注入攻击 222
12.4.4 防范SQL注入攻击的技术 223
习题 224
上机实践 224
第13章 协议和拒绝服务攻击 225
13.1 DoS攻击的基本原理及分类 225
13.1.1 带宽耗用 226
13.1.2 资源衰竭 226
13.1.3 系统或编程缺陷(漏洞) 227
13.1.4 路由和DNS攻击 228
13.2 通用的DoS攻击技术 228
13.2.1 应用层的DoS攻击 228
13.2.2 传输层的DoS攻击 228
13.2.3 网络层的DoS攻击 230
13.2.4 DNS攻击 231
13.2.5 基于重定向的路由欺骗攻击 232
13.3 针对UNIX和Windows的DoS攻击 232
13.3.1 本地DoS攻击 232
13.3.2 远程DoS攻击 233
13.3.3 Dos攻击实例 233
13.4 分布式拒绝服务攻击 236
13.4.1 分布式拒绝服务攻击原理 236
13.4.2 分布式拒绝服务攻击的特点 237
13.4.3 分布式拒绝服务攻击的防御对策 238
习题 238
上机实践 238
第14章 恶意代码攻击 239
14.1 恶意代码概述 239
14.1.1 恶意代码定义 239
14.1.2 恶意代码的分类 240
14.1.3 恶意代码长期存在的原因 241
14.2 计算机病毒概述 242
14.2.1 计算机病毒的起源 242
14.2.2 病毒的分类 242
14.2.3 病毒的特性 243
14.2.4 病毒的结构 244
14.3 几种常见恶意代码的实现机理 244
14.3.1 脚本病毒 244
14.3.2 宏病毒 245
14.3.3 浏览器恶意代码 245
14.3.4 U盘病毒 245
14.3.5 PE病毒 247
14.4 网络蠕虫 248
14.4.1 网络蠕虫实现机理 248
14.4.2 网络蠕虫的传播 249
14.4.3 几种典型蠕虫 250
14.5 木马 252
14.5.1 木马原理及典型结构 252
14.5.2 木马的隐藏和伪装 253
14.5.3 几类常见的木马 254
14.6 恶意活动代码的防御 255
习题 256
上机实践 256
参考文献 257
前言/序言
笔者从2004年起承担“网络安全”研究生课程的主讲工作,最初的课程参考了《黑客大曝光》系列书籍,主要讲解计算机及网络攻击技术,后来逐步增加网络安全防护方面的理论和技术等相关内容;在教学过程中参考了众多计算机与网络安全方面的教材,并将其中最有价值的内容引入课堂教学。
笔者认为,计算机类课程的教学应注重理论与实践相结合。如果只强调理论,难免枯燥无味,很难让读者坚持学习下去,甚至会产生“读书无用”的感觉。如果只强调实践,一味讲解案例,会让读者觉得“网络安全就是黑客攻防大全”。
本书面向高年级本科生和硕士研究生,从网络攻击和防护的角度阐述网络安全原理与实践。在网络防护部分,主要介绍原理和方法,并简要介绍原理与技术的具体应用。在网络攻击部分,主要介绍方法和实践,披露一些所谓的“黑客秘技”,并给出大量的实例代码供读者参考。
本书的网络攻击技术是从公开的出版物或网络资料总结而来的,目的是让读者了解网络攻击技术,更好地进行网络安全防护。读者只能在虚拟的实验环境下验证相关技术,不得在真实环境下使用攻击技术。
本书的最大特点是实用。书中的实例代码均通过验证,略作修改就可用于设计实践。为了便于教学,笔者制作了16次课(每次课3学时)的课件,适合国内高校一个学期每周3学时的教学任务。其中的“网络信息侦察技术”是从《黑客大曝光》系列书籍中总结而来的,仅用于保持教学内容的完整,不是本书的内容;另外,本书对“数字证书”介绍得不多,课件的部分内容扩充自其他教材。读者可登录华章网站下载随书课件及所有的实例代码。书中用到的工具和虚拟机可通过链接获取。
由于笔者水平及精力有限,不足之处在所难免,恳请读者提出宝贵的意见和建议,以便进一步完善教材内容。
网络信息安全 电子书 下载 mobi epub pdf txt