第1部分锁定Linux目标 3
第1章Linux安全问题概述 3
目录 3
1.1 黑客为什么想成为root用户 4
1.2开放源代码运动 5
1.2.1 开源软件和安全性 6
1.3 Linux用户 7
1.3.1 /etc/passwd 9
1.3.2管理用户权限 13
1.4其他安全性控制 21
1.4.1信号 21
1.4.3虚拟内存管理 22
1.4.4系统日志 22
1.4.2特权端口 22
1.4.5 /etc/securetty 23
1.4.6 chrooting 24
1.4.7使用Linux权能来减少root风险 27
1.5 错误代码 27
1.5.1未降低权限 27
1.5.2缓冲区溢出 28
1.5.3格式字符串漏洞 31
1.5.4竞争条件 32
1.5.5审计工具 34
1.6小结 35
第2章预防措施 37
2.1弱点扫描程序 38
2.1.1系统安全扫描程序 38
2.1.2网络安全扫描 44
2.2扫描检测器 46
2.3加固系统 48
2.4日志文件分析 54
2.4.1 syslog消息 54
2.4.2审查日志文件 57
2.4.3日志分析软件 58
2.4.4 与日志有关的常见攻击 63
2.5文件系统完整性检查 71
2.5.1 生成校验和与许可数据库 74
2.5.2现有的文件完整性工具 76
2.6小结 82
第3章对机器和网络踩点 83
3.1 在线搜索 84
3.2 whois数据库 86
3.3 ping扫射 90
3.4 DNS问题 93
3.4.1 DNS查找举例 94
3.4.2 DNS查询的安全问题 95
3.4.3确定名字服务器特征 101
3.4.4 DNSSEC 102
3.5 traceroutes 103
3.6端口扫描 105
3.7操作系统检测 112
3.7.1主动协议栈指纹 114
3.7.2被动协议栈指纹 118
3.8枚举RPC服务 121
3.9通过NFS的文件共享 123
3.10简单网络管理协议(SNMP) 126
3.11网络漏洞扫描程序 129
3.12小结 138
第2部分由外入内 141
第4章社交工程、特洛伊木马和其他黑客伎俩 141
4.1 社交工程(Social Engineering) 142
4.1.1社交工程种类 142
4.1.2怎样避免遭受社交工程攻击 146
4.1.3黑客的家庭作业 147
4.2特洛伊木马 147
4.2.1特洛伊的传播方式 148
4.2.2其他特洛伊木马 160
4.3.1病毒和蠕虫的传播方式 165
4.3.2 病毒和Linux 165
4.3病毒和蠕虫 165
4.3.3蠕虫和Linux 167
4.4小结 171
第5章物理攻击 172
5.1攻击办公室 173
5.2启动权限是root权限 178
5.2.1启动加载程序 182
5.2.2从终端启动 190
5.3加密文件系统 191
5.4 小结 192
第6章网络攻击 193
6.1使用网络 194
6.1.1TCP/IP网络 195
6.1.2公共电话网络 199
6.2.1 网络守护进程中的编程错误 200
6.2 可经由网络攻击的漏洞 200
6.2.2默认或有害的配置 203
6.2.3 X Windows系统 206
6.2.4攻击OpenSSH 210
6.3攻击网络客户端 214
6.4默认口令 218
6.5 嗅探网络信息 219
6.5.1 嗅探器的工作方式 220
6.5.2常见的嗅探器 221
6.6 口令猜测 224
6.7小结 225
第7章高级网络攻击 226
7.1 DNS攻击 227
7.2路由问题 231
7.3 高级嗅探和会话劫持 236
7.3.1 Hunt 236
7.3.2 Dsniff 240
7.3.3中间人攻击 241
7.4滥用信任关系 248
7.5 攻击无线网络 250
7.5.1 用VPN保护无线LAN 256
7.6实施出口过滤 258
7.7小结 260
第3部分本地用户攻击 263
第8章提升用户权限 263
8.1用户和权限 264
8.1.1提升权限 265
8.2系统勘察 266
8.2.1 口令存储和使用 271
8.3可信路径和特洛伊木 274
8.4 SUDO 278
8.5可从本地攻击的程序 282
8.5.1 sXid程序 282
8.5.2竞争条件 287
8.5.3硬链接和符号链接 291
8.5.4输入验证 295
8.6基于内核的攻击 297
8.7小结 302
第9章Linux的用户认证机制 303
9.1 Linux上口令的工作方式 304
9.1.1 key和salt 304
9.1.4其他算法 305
9.1.2 DES算法 305
9.1.3 MD5算法 305
9.2 口令破解程序 306
9.2.1现有的单词表 310
9.3 PAM 310
9.3.1 PAM配置 311
9.4蛮力口令猜测攻击 312
9.5 口令保护 313
9.6 Linux中非shell程序的用户认证机制 318
9.6.1 Apache口令文件 318
9.6.2 Samba 319
9.6.3 MySQL 320
9.7小结 321
第10章邮件安全性 325
第4部分服务器的安全问题 325
10.1 Mai1 Transfer Agent 326
10.1.1 sendmail 326
10.1.2 Qmail 327
10.1.3 Postfix 328
10.1.4 Exim 328
10.2邮件服务器漏洞 329
10.3 小结 345
第11章文件传输协议(FTP)安全性 347
11.1 FTP软件历史 348
11.2 FTP协议 350
11.2.1 FTP会话范例 350
11.2.2主动FTP模式 351
11.2.3被动FTP模式 352
11.2.4通过第三方FTP服务器进行端口扫描 355
11.2.5 启用第三方FTP 363
11.2.6不安全的有状态FTP防火墙规则 366
11.2.7匿名FTP问题 369
11.3小结 370
第12章Web服务器和动态页面 371
12.1 生成HTTP请求 372
12.2 Apache Web服务器 377
12.2.1 Apache配置 378
12.2.2 Apache日志文件 385
12.3 CGI程序问题 388
12.3.1 不安全的CGI程序 389
12.3.2不安全的CGI配置 406
12.4 PHP 408
12.5其他Linux Web服务器 411
12.6小结 411
第13章访问控制和防火墙 412
13.1 inetd和xinetd概述 413
13.1.1 inetc 413
13.1.2 xinetd 414
13.2防火墙:内核级访问控制 424
13.2.1 Linux包过滤 424
13.2.2阻塞特定的网络访问 426
13.2.3防火墙策略 430
13.2.4防火墙产品 431
13.3 小结 431
第14章拒绝服务攻击 432
14.1 内核DoS攻击 433
14.2网络潮涌 435
14.2.1 包倍增(magnification)攻击 438
14.3分布式拒绝服务攻击 441
14.4本地资源耗尽攻击 445
14.5小结 447
第5部分侵入之后 451
第15章隐藏通道 451
15.1 踪迹隐藏 452
15.2木马化的系统程序 454
15.2.1欺骗OS 458
15.2.2隐藏网络访问 463
15.3小结 471
第16章后门 472
16.1 基于主机的认证和用户访问 473
16.2创建和修改账号 477
16.2.1 在现有账号中设置后门 479
16.3使用SSH的无口令登录 487
16.4 从网络访问的root shell 489
16.5木马后门 494
16.6小结 500
第17章攻击系统的高级方法 501
17.1 入侵内核 502
171.1削弱Linux内核 505
17.2 rootkit 508
17.3小结 513
第6部分附录 517
附录A发现攻击并从中恢复 517
A.1 如何知道系统何时被黑 518
A.2被入侵后应采取的措施 519
A.3小结 524
附录B保持程序的最新版本 525
B.1 升级RPM包 526
B.2 升级Debian包 528
B.3升级Slackware包 531
B.4升级内核 532
附录C 关闭不需要的服务 540
C.1 运行级别 541
C.2关闭特定服务 542
C.3 INETD/XINETD网络服务 547
C.4 SVSCAN服务 549
C.5识别网络守护进程 550
附录D案例研究 553