第一部分 管理Internet安全 1
第1章 理解TCP/IP 1
1.1 TCP/IP的历史 1
1.2 探究地址、子网和主机名 2
1.2.1 地址分类 2
1.2.2 子网 3
1.2.3 主机名 6
1.3 使用网络接口 7
1.4 网络配置文件回顾 9
1.4.1 /etc/hosts文件 9
1.4.2 /etc/ethers文件 10
1.4.3 /etc/networks文件 10
1.4.4 /etc/protocols文件 11
1.4.5 /etc/servicecs文件 11
1.5.1 /etc/hosts.equiv文件 12
1.5 理解网络访问文件 12
1.4.6 /etc/inetd.conf文件 12
1.5.2 .rhosts文件 13
1.5.3 用户和主机的等价性 13
1.6 TCP/IP守护程序 14
1.6.1 slink守护程序 14
1.6.2 ldsocket守护程序 15
1.6.3 cpd守护程序 15
1.6.4 行式打印机守护程序(lpd) 15
1.6.5 SNMP守护程序(snmpd) 15
1.6.6 RARP守护程序(rarpd) 15
1.6.7 BOOTP守护程序(bootpd) 15
1.6.8 ROUTE守护程序(routed) 16
1.6.9 域名服务守护程序(named) 16
1.7.1 网络管理命令 17
1.6.12 RWHO守护程序(rwhod) 17
1.7 使用TCP/IP实用工具 17
1.6.11 超级服务器Inetd 17
1.6.10 系统记录守护程序(syslogd) 17
1.7.2 用户命令 28
第2章 理解、创建守护程序 36
2.1 什么是守护程序 36
2.2 系统守护程序 40
2.2.1 init守护程序 40
2.2.2 swapper守护程序 40
2.2.3 update和bdflush守护程序 40
2.2.4 lpd守护程序 40
2.2.5 lpsched守护程序 41
2.2.6 cpd和sco-cpd(sco)守护程序 41
2.2.7 cron守护程序 41
2.2.8 syslog守护程序 41
2.2.9 sendmail守护程序 42
2.2.12 deliver守护程序 43
2.2.11 rlogind守护程序 43
2.2.10 getty守护程序 43
2.2.13 inetd守护程序 44
2.2.14 routd守护程序 44
2.2.15 nfsd守护程序 44
2.2.16 mountd守护程序 44
2.2.17 pcnfsd守护程序 44
2.2.18 statd和rpc.statd守护程序 44
2.3.1 处理入境和输出 45
2.3 用Bourne Shell创建守护程序 45
2.2.19 lockd和rpc.lockd守护程序 45
2.3.2 处理消息 46
2.3.3 处理信号 46
2.3.4 dfmon程序 47
2.4 用PERL创建守护程序 48
2.4.1 处理入境和输出 49
2.4.2 处理信号 49
2.4.3 procmon程序 50
2.5 Unix运行级别 53
2.6 程序清单 55
2.6.1 程序清单2.1—dfmon程序 55
2.6.2 程序清单2.2—dfmon的配置文件 59
2.6.3 程序清单2.3—procmon命令 64
2.6.4 程序清单2.4—procmon.cfg文件 77
第3章 使用UUCP 78
3.1 UUCP的历史 78
3.2 UUCP网络 80
3.3 为主机命名 81
3.4 系统V基本网络实用工具UUCP 82
3.4.1 UUCP文件布局 82
3.4.2 配置UUCP 83
3.4.3 测试连接 85
3.4.4 Dialers文件 86
3.4.5 系统文件 87
3.5 UUCP交谈脚本 89
3.5.1 使用uucico测试连接 92
3.5.2 权限文件 95
3.5.3 允许匿名UUCP访问 99
3.5.4 UUCP日志文件 100
3.5.5 维护 102
3.6 配置版本2UUCP 103
3.6.1 版本2UUCP是什么 103
3.6.2 文件布局 103
3.6.3 配置UUCP 104
3.6.4 L-devices文件 104
3.6.5 测试连接 104
3.6.6 L.sys文件 105
3.6.7 用uucico测试连接 107
3.6.8 版本2权限 107
3.6.9 日志文件 110
3.7 在TCP/IP之上配置UUCP 111
3.6.10 维护 111
3.8 代码清单 112
3.8.1 代码清单3.1—gtimes.c 112
3.8.2 代码清单3.2—genUSER 114
第4章 审计跟踪 115
4.1 Unix系统的审记跟踪 115
4.1.1 一般的Unix日志 115
4.1.2 进程记帐 121
4.1.3 审计中有用的工具 123
4.1.4 其他可以联机使用的报告工具 125
4.2 Windows NT的审计跟踪 126
4.2.1 使用事件查看器 127
4.2.2 记录ftp服务器的服务 128
4.2.3 记录httpd事务 129
4.2.4 用Windows NT的其他TCP/IP应用程序记录 129
4.3 DOS下的审记跟踪 129
4.4.1 一般入侵提示 130
4.4 使用System Log发现入侵者 130
4.3.1 PC/DACS 130
4.3.3 LOCK 130
4.3.2 Watchdog 130
4.4.2 潜在的问题 131
第二部分 访问并且保护网关 133
第5章 IP欺骗与窥探 133
5.1 窥探 133
5.1.1 窥探:如何实施 134
5.1.2 窥探:如何威胁安全 135
5.1.3 协议窥探:一个案例学习(case study) 136
5.1.4 窥探:如何预防 139
5.1.5 硬件障碍 140
5.1.6 避免传输口令 146
5.2 欺骗 149
5.2.1 硬件地址欺编 149
5.2.2 ARP欺骗 151
5.2.3 防止ARP欺骗 153
5.2.4 窥探案例学习再讨论 155
5.2.5 检测ARP欺骗 156
5.2.6 欺骗IP路由系统 159
5.2.7 基于ICMP的路由欺骗 160
5.2.8 误导IP数据报 162
5.2.9 防止路由欺骗 163
5.2.10 案例学习:涉及外部路由 165
5.2.11 欺骗域名系统的名字 165
5.2.12 欺骗TCP连接 171
第6章 如何构造防火墙 177
6.1 TIS防火墙工具箱 177
6.1.1 理解TIS防火墙工具箱 177
6.1.2 如何获得TIS防火墙工具箱 178
6.1.3 在SunOS4.1.3及4.1.4下编译 178
6.1.4在BSDI下编译 178
6.1.5 安装TIS防火墙工具箱 179
6.2 准备配置 181
6.3 配置TCP/IP 185
6.4 netperm表 186
6.5 配置netacl 187
6.5.1 与netacl连接 188
6.5.2 重新启动inetd 190
6.6 配置Telnet代理 190
6.6.1 通过Telnet代理建立连接 192
6.6.2 主机访问规则 193
6.6.3 检测Telnet代理 194
6.7 配置rlogin网关 194
6.7.1 经rlogin网关建立连接 196
6.7.2 主机访问规则 197
6.7.3 检测rlogin代理 197
6.8 配置FTP网关 197
6.8.2 检测FTP代理 199
6.8.1 主机访问规则 199
6.8.3 通过FTP代理建立连接 200
6.8.4 允许FTP 201
6.9 配置sendmail代理:smap和smapd 201
6.9.1 安装smap客户程序 202
6.9.2 配置smap客户 202
6.9.3 安装smapd应用程序 204
6.9.4 配置smapd应用程序 204
6.9.5 为smap配置DNS 205
6.10 配置HTTP代理 206
6.10.1 非代理意识HTTP客户 207
6.10.2 使用代理意识HTTP客户 208
6.10.3 主机访问规则 208
6.11 配置X窗口代理 210
6.12 理解认证服务器 211
6.12.1 认证数据库 212
6.12.2 添加用户 214
6.12.3 认证Shell—authmgr 216
6.12.4 数据库管理 217
6.12.5 认证如何工作 219
6.13 其他服务使用plug-gw 220
6.13.1 配置plug-gw 220
6.13.2 plug-gw与NNTP 221
6.13.3 plug-gw与POP 223
6.14.1 portscan 224
6.14 管理工具 224
6.14.2 netscan 225
6.14.3 报告工具 226
6.15 何处寻求帮助 234
6.16 netperm-table文件示例 235
6.17 参考手册 239
6.17.1 Authmgr—网络认证客户程序 239
6.17.2 authsrv—第三方网络认证守护程序 239
6.17.3 ftp-gw—FTP代理服务器 245
6.17.4 http-gw—Gopher/HTTP代理 249
6.17.5 login-sh-认证登录shell 254
6.17.6 netacl—TCP网络访问控制 255
6.17.7 plug-gw-通用TCP插接板(plug-board)代理 256
6.17.8 rlogin-gw-rlogin代理服务器 258
6.17.9 smap-sendmail包装(wrapper)客户 260
6.17.10 smapd-sendmail包装守护程序 261
6.17.11 tn-gw-telnet代理服务器 263
6.17.12 x-gw—X网关服务器 265
第7章 如何购买防火墙 267
7.1 防火墙回顾 267
7.1.1 体系结构 267
7.1.2 应了解的三个术语 268
7.2 选择防火墙 269
7.3 防火墙体系结构 269
7.3.1 路由器体系 269
7.3.2 先进防火墙体系 271
7.4 评估防火墙 272
7.4.1 选择状态包过滤器或传输防火墙 273
7.4.2 评估通过防火墙的路径 274
7.4.3 评估管理接口和GUI 275
7.4.4 评估灵活性和特征 277
7.4.5 评估报告和记帐 278
7.5 评估防火墙性能 279
7.5.1 包过滤性能问题 280
7.5.2 传输代理性能问题 281
7.5.3 性能测试规则 282
7.6 评估防火墙的安全 283
7.7 总结 286
第8章 SATAN与Internet 287
8.1网络攻击的本质 288
8.1.1 Internet威胁层(ITL) 289
8.1.2 普通攻击方法 291
8.1.3 安全漏洞概述 293
8.2 像入侵者那样思考 297
8.1.4 学习新的安全漏洞 297
8.2.1 收集系统信息 298
8.2.2 掌握代码 314
8.2.3 尝试所有已知问题 315
8.2.4 漏洞与机会匹配 315
8.2.5 查找弱连接 315
8.2.6 总结远程网络攻击 316
8.2.7 自动搜索 316
8.3 初次遭遇SATAN 316
8.3.1 历史 316
8.3.2 创造者 317
8.3.3 与其他工具的比较 317
8.3.4 厂商反应 317
8.4.1 Courtney 318
8.4.3 TCP Wrappers 318
8.4.2 Gabriel 318
8.3.5 长期影响 318
8.4 检测SATAN 318
8.4.4 netlog/TAMU 319
8.4.5 Argus 319
8.5 使用安全的网络程序 319
8.5.1 Kerberos 319
8.5.2 安全Shell(ssh) 320
8.6 SSL 320
8.7.1 SATAN的信息收集 322
8.7 研究SATAN做什么 322
8.7.2 搜索的脆弱点 323
8.7.3 其他网络脆弱点 331
8.7.4 探讨IP欺骗 334
8.7.5 检验结构型Internet问题 336
8.8 SATAN集结 338
8.8.1 获取SATAN 338
8.8.2 检查SATAN文件 339
8.9 构造SATAN 347
8.9.1 使用SATAN HTML界面 348
8.9.2 运行一个扫描 353
8.9.3 理解SATAN数据库记录格式 354
8.9.4 理解SATAN规则集 357
8.9.5 扩展SATAN 359
8.9.6 使用SATAN的长期利益 360
8.10 引用文献 361
第9章 Kerberos 362
9.1 Kerberos如何工作 362
9.2 Kerberos网络 363
9.2.1 RFC 363
9.2.2 Kerberos的目标 364
9.3 认证如何工作 364
9.4 加密 367
9.4.1 私有、公开、秘密或共享密钥加密 368
9.4.2 私人或私密密钥加密 368
9.4.3 DES及其变体 369
9.4.4 加密出口问题 370
9.4.5 加密和校验和规范 371
9.5 Kerberos版本 375
9.5.1 不同的Kerberos版本4 376
9.5.2 不同的Kerberos版本5 376
9.5.3 Bones 377
9.6 选择销售商 377
9.7 销售商的互操作性问题 377
9.7.1 DEC ULTRIX Kerberos 377
9.7.2 Transarc的Kerberos 378
9.7.3 DCE 378
9.7.4 互操作性要求 379
9.8 命名约束(naming constraints) 380
9.8.1 区域名 380
9.8.2 主体名字 381
9.9 跨区域(Cross-Realm)操作 382
9.10 ticket标志 383
9.10.1 初始及预认证ticket 384
9.10.2 无效ticket 384
9.10.3 可更新的ticket 384
9.10.4 过期ticket 385
9.10.5 可代理的及代理ticket 385
9.10.6 可转发的ticket 386
9.10.7 认证标志 386
9.10.8 其他密钥分配中心选项 386
9.11 消息交换 387
9.11.1 ticket 与认证符 387
9.11.2 认证服务交换 389
9.11.3 Ticket Granting Service(TGS)交换 392
9.11.4 认证服务器与Ticket Granting Service交换规范 396
9.11.5 客户/服务器认证交换 401
9.11.6 客户/服务器(CS)消息规范 403
9.11.7 KRB_SAFE交换 405
9.11.8 KRB_SAFF消息规范 406
9.11.9 KRB_PRIV交换 407
9.11.10 KRB_PRIV消息规范 407
9.11.11 KRB_CRED交换 408
9.11.12 KRB_CRED消息规范 409
9.11.13 名字 410
9.11.14 时间 411
9.11.15 主机地址 411
9.11.16 授权数据 411
9.11.17 最后请求数据 411
9.11.18 错误消息规范 412
9.12 Kerberos工作站认证问题 413
9.12.1 Kerberos的端口号 414
9.12.2 Kerberos的Telnet 414
9.12.3 Kerberos ftpd 414
9.13 其他信息源 415
10.1 加密技术概述 417
第三部分 消息机制:创建安全的通道 417
第10章 加密概述 417
10.2 密码术语 420
10.3 密码技术的应用 421
10.3.1 黑客和窃贼的威胁 421
10.3.2 密码技术的目标 422
10.3.3 数字ID,证明和证明机构(certificate authority) 423
10.3.4 数字签名 425
10.3.5 网络登录和认证的安全性 427
10.3.6 安全通道 428
10.3.7 安全Internet隧道 429
10.3.8 电子商务 429
10.4 对称(私钥)密码技术 430
10.4.1 转置 431
10.4.2 解密 432
10.4.3 置换 433
10.4.5 DES(数据加密标准) 442
10.4.4 块密码和流密码 442
10.4.6 DES的其他替代选择 444
10.4.7 Blowfish 445
10.5 非对称(公钥)密码技术 446
10.6 攻击和密码学分析 446
10.7 有关密码技术的地址 448
10.8 小结 449
第11章 PGP程序 450
11.1 PGP概述 450
11.1.1 PGP的历史 450
11.1.2 为什么要使用PGP 451
11.1.3 加密简短回顾 452
11.2 PGP的使用 452
11.2.1 在使用PGP之前 452
11.2.2 产生一个PGP密钥 454
11.2.3 公钥的发布 455
11.2.4 为一个消息签名 456
11.2.5 添加其他人的密钥 457
11.2.6 加密一个消息 458
11.2.7 解密和验证消息 459
11.3 PGP密钥 460
11.3.1 名字中是什么 460
11.3.2 PGP密钥环 461
11.3.3 Web的受托性 462
11.3.4 信任程度 463
11.4 密钥管理 464
11.4.1 密钥产生 464
11.4.2 向公钥环中添加密钥 467
11.4.3 从公钥环中提取密钥 469
11.4.4 为密钥签名 470
11.4.5 查看密钥环的内容 473
11.4.6 删除密钥和签名 474
11.4.7 密钥指纹和验证密钥 475
11.4.8 取消你的密钥 476
11.5 基本消息操作 477
11.5.1 PGP是程序还是过滤器 478
11.5.2 压缩消息 478
11.5.3 处理文本和二进制文件 478
11.5.4 通过电子邮件发送PGP消息 479
11.5.5 常规加密 479
11.5.6 为一个消息签名 480
11.5.7 用公钥加密消息 481
11.5.8 为一个消息签名和加密 482
11.5.9 消息的解密和验证 483
11.6 高级消息操作 485
11.6.1 净签 485
11.6.2 分离签名 486
11.6.3 For Her Eyes Only 487
11.6.4 清除文件 487
11.7 PGP配置文件 488
11.8 PGP的安全性 491
11.8.1 蛮力攻击 492
11.8.2 私钥和通过短语 492
11.8.3 对公钥环的攻击 493
11.8.4 程序的安全性 493
11.8.5 对PGP的其他攻击 494
11.9 PGP的扩充 494
11.9.1 PGP公钥服务器 494
11.9.2 PGPMenu:PGP for Unix的菜单界面 495
11.9.3 Windows前端 495
11.9.4 Unix邮件程序 496
11.9.5 Mac PGP 496
第四部分 当前关注的问题 497
第12章 Windows NT 的Internet安全 497
12.1 Windows NT概述 497
12.2 Windows NT操作环境 500
12.2.1 域 501
12.2.2 用户帐户、组、权利和权限 503
12.3 Windows NT的登录和认证 505
12.4 Windows NT中与Intranet有关的特性 508
12.4.1 在Intranet中使用DNS服务器 508
12.4.2 在Intranet中使用NetBIOS名字转换 508
12.4.3 在Intranet中使用WINS服务器 508
12.5 连接到Internet上的考虑 509
12.5.1 使用IIS的公共Web服务器连接 510
12.5.2 代理服务器连接 511
12.5.3 在Windows NT中配置服务 512
12.5.4 在Windows NT中配置端口 513
12.6 Microsoft Internet Information Server 513
12.7 Microsoft代理服务器 517
12.8 新的Windows NT目录服务模型 518
12.9 总结 521
第13章 Java的安全性 522
13.1 Java的功能 523
13.1.3 Java是安全的 524
13.1.1 Java是可移植的 524
13.1.2 Java是健壮的 524
13.1.4 Java是面向对象的 525
13.1.5 Java是高性能的 525
13.1.6 Java是容易使用的 526
13.2 Java语言的历史 526
13.3 Java环境的主要功能特性 528
13.3.1 Java语言的特性 529
13.3.2 Java体系结构 531
13.4 从类文件到执行 535
13.4.1 代码的编译 535
13.4.2 运行代码 537
13.5 Java虚拟机 539
13.5.1 要建立一个新的机器代码规范 540
13.5.2 Java虚拟机描述 540
13.6.1 使用Appletviewer 543
13.6 设置Java安全性功能 543
13.6.2 Netscape 3.0 545
13.6.3 使用Java程序的其他方面问题 546
第14章 CGI安全性 548
14.1 CGI接口介绍 548
14.1.1 为什么CGI是危险的 549
14.1.2 CGI如何工作 549
14.1.4 CGI库 550
14.1.3 CGI数据:编码和解码 550
14.2 理解CGI的脆弱性 551
14.2.1 HTTP服务器 551
14.2.2 HTTP协议 551
14.2.3 环境变量 552
14.2.4 GET和POST输入数据 552
14.3 尽量减小CGI的脆弱性 553
14.3.1 限制对CGI的访问 553
14.3.3 在一个改变根文件系统的环境中运行 554
14.3.2 用最小的特权运行CGI 554
14.4 CGIWRAP:另一种模型 555
14.5 越过CGI 555
14.3.4 保护HTTP服务器所在的机器 555
14.6 服务器方包含(SSI) 556
14.6.1 限制对SSI的访问 556
14.6.2 SSI的替代 556
14.7 语言问题 557
14.7.1 PERL 557
14.7.2 C和C++ 559
14.7.3 安全语言 559
14.8 保护敏感数据 560
14.9 日志记录 561
第15章 病毒 562
15.1 用户的角度 562
15.2 什么是计算机病毒 563
15.3.1 关键硬件 564
15.3 最可能的目标 564
15.3.2 关键软件 565
15.3.3 软引导记录(FBR) 566
15.3.4 硬盘主引导记录 567
15.3.5 分区引导记录 568
15.3.6 系统服务 569
15.3.7 程序文件 570
15.3.8 带有宏能力的数据文件 572
15.4 IBM PC计算机的病毒类型 574
15.4.1 引导记录病毒 574
15.4.2 软引导记录病毒 575
15.4.3 分区引导记录病毒 581
15.4.4 主引导记录病毒 583
15.4.5 程序文件病毒 585
15.4.6 伙伴病毒 595
15.4.7 文件感染病毒的潜在破坏 595
15.4.8 宏病毒 597
15.4.9 蠕虫 599
15.5 网络和Internet对病毒的敏感性 599
15.5.1 网络对文件病毒的敏感性 600
15.5.2 引导病毒 601
15.5.3 宏病毒 601
15.6 病毒类型 602
15.6.1 多态病毒 602
15.6.2 Stealth病毒 603
15.6.3 Slow病毒 606
15.6.4 Retro病毒 607
15.6.5 多头病毒(Multipartite Viruses) 607
15.7 反病毒程序如何工作 607
15.7.1 病毒扫描程序 608
15.7.2 内存扫描程序 612
15.7.3 完整性检查器 613
15.7.4 行为阻止者 615
15.8 预防措施的治疗 616
15.7.5 启发式扫描器 616
15.8.1 防止和修复引导记录病毒 617
15.8.2 防止和修复可执行文件病毒 618
15.8.3 修复读取隐藏病毒感染的文件 619
15.8.4 防止和修复宏病毒 620
15.9 Windows NT下病毒行为概况 620
15.9.1 Windows NT下的主引导记录病毒 620
15.9.2 Windows NT下的引导记录病毒 621
15.9.3 Windows NT DOS框内的DOS文件病毒 623
15.9.4 Windows NT下的Windows3.1病毒 625
15.9.5 Windows NT下的宏病毒 625
15.9.6 本机的Windows NT病毒 626
15.10 总结 626
第五部分 附录 627
附录A 安全性信息来源 627
附录B Internet安全性索引 630