第1章 Linux安全基础 1
1.1 信息安全的重要性 1
1.1 网络信息安全的基本概念 3
1.1.2 网络威胁的基本表现 3
1.1.3 网络信息安全领域的研究重点 4
1.1.4 网络信息安全的五要素 5
1.1.5 经典的P2DR模型 6
1.2 黑客攻击的常见手段和步骤 6
1.2.1 黑客攻击的常见方法 6
1.2.2 黑客攻击的一般步骤 7
1.3 Linux操作系统的安全性 10
1.3.1 Linux操作系统的安全级别 10
1.3.2 现行Linux操作系统的安全机制 12
1.4 Linux网络安全基础 13
1.4.1 网络基本原理 13
1.4.2 TCP/IP网络 15
1.4.3 IP协议 17
1.4.4 TCP协议 19
1.4.5 UDP协议 22
1.4.6 ARP和RARP协议 23
1.4.7 ICMP协议 24
1.4.8 IPv4和IPv6 25
1.5 国内外相关安全标准概述 27
第2章 Linux概述 30
2.1 Linux的历史 30
2.2 与Linux相关的基本概念 31
2.2.1 开源软件 31
2.2.2 GNU 31
2.2.3 GPL 32
2.2.4 POSIX 33
2.3 Linux的主要特点 33
2.4 Linux的应用领域 34
2.5 Linux的内核及发行版本 35
2.6 常见的Linux发行版本 35
2.6.1 Red Hat Linux 35
2.6.2 Fedora Core/Fedora 36
2.6.3 Debian 37
2.6.4 Ubuntu 37
2.6.5 SuSE Linux 38
2.6.6 Mandriva 38
2.7 Linux的主要组成部分 39
2.7.1 内核 39
2.7.2 Shell 39
2.7.3 文件结构 40
2.7.4 实用工具 40
2.8 Fedora Linux的发展历史 41
2.9 Fedora 10的主要特征 42
第3章 Fedora 10的安全安装与启动 44
3.1 Fedora 10的安装 44
3.1.1 硬件需求 44
3.1.2 安装方式 44
3.1.3 安装过程 45
3.2 Fedora 10的启动与登录 56
3.2.1 安全登录Linux 57
3.2.2 退出Linux 57
3.3 Linux的启动安全 58
3.3.1 Linux的启动过程 58
3.3.2 Linux的运行级别 59
3.3.3 GRUB密码设定 60
第4章 用户和组安全 62
4.1 用户和组管理的基本概念 62
4.2 安全使用用户和组文件 62
4.2.1 用户账号文件——passwd 63
4.2.2 用户影子文件——shadow 64
4.2.3 组账号文件——group 66
4.2.4 组账号文件——gshadow 67
4.2.5 /etc/skel目录 68
4.2.6 /etc/login.defs配置文件 68
4.2.7 /etc/default/useradd文件 68
4.3 安全管理用户和组工具 70
4.3.1 useradd:添加用户工具 70
4.3.2 usermod:修改用户信息工具 72
4.3.3 userdel:删除用户工具 73
4.3.4 groupadd:创建组工具 74
4.3.5 groupmod:修改组属性工具 75
4.3.6 groupdel:删除组工具 76
4.3.7 其他工具 77
4.4 使用Fedora用户管理器管理用户和组 77
4.4.1 启动Fedora用户管理器 77
4.4.2 创建用户 78
4.4.4 创建用户组 82
4.4.5 修改用户组属性 83
4.5 与用户和组管理安全相关的其他安全机制 85
4.5.1 验证用户和组文件 85
4.5.2 用户密码的安全设定方法 87
第5章 保证Linux文件系统安全 89
5.1 Linux文件系统原理 89
5.1.1 Linux中的文件系统类型 89
5.1.2 Linux文件的类型 92
5.1.3 Linux中的目录结构设定 93
5.2 安全设定文件/目录访问权限 95
5.2.1 文件/目录访问权限基本概念 95
5.2.2 改变文件/目录的访问权限 96
5.2.3 更改文件/目录的所有权 98
5.2.4 改变文件的执行权限 99
5.3 使用额外属性保护Ext3文件系统安全 100
5.3.1 Ext3中的额外属性 100
5.3.2 使用Ext3文件系统的属性 102
5.3.3 Ext3属性和文件权限的区别 102
5.3.4 使用chattr 104
5.4 使用加密文件系统 104
5.4.1 内核准备 105
5.4.2 创建加密设备 106
5.4.3 卸载加密设备 109
5.4.4 重新装载加密设备 109
5.4.5 在Linux系统安装时使用EFS 109
第6章 Linux系统安全增强技术 111
6.1 Linux安全增强的经典模型 111
6.1.1 BLP安全模型 111
6.1.2 基于角色的访问控制模型 112
6.1.3 多级别安全机制 113
6.1.4 操作系统安全加固方法 114
6.2 SELinux:Linux安全增强机制 115
6.2.1 SELinux的历史 116
6.2.2 SELinux基本原理 116
6.2.3 SELinux相对于传统机制的优势 117
6.2.4 SELinux中的上下文 117
6.2.5 SELinux中的目标策略 123
6.2.6 使用SELinux配置文件和策略目录 134
6.2.7 使用SELinux的先决条件 136
6.2.8 SELinux中的布尔变量 140
第7章 Linux进程安全 143
7.1 Linux进程的基本原理 143
7.1.1 进程类型 143
7.1.2 进程的状态 143
7.1.3 进程的工作模式 144
7.1.4 进程与线程的区别 145
7.2 Linux下的守护进程 145
7.2.1 守护进程基本原理 145
7.2.2 Linux下的重要守护进程 146
7.3 安全管理Linux进程 147
7.3.1 手工启动Linux进程 147
7.3.2 自动执行进程 148
7.3.3 资源空闲时执行进程 150
7.3.4 周期性执行进程 150
7.3.5 操作cron后台进程 151
7.3.6 挂起及恢复进程 153
7.4 查看及终止进程 154
7.4.1 使用ps命令查看进程状态 154
7.4.2 使用top命令查看进程状态 156
7.4.3 使用kill命令终止进程 157
7.4.4 使用sleep命令暂停进程 158
7.5 安全管理每个进程的系统资源 158
7.5.1 限制进程创建大型文件 158
7.5.2 限制单个用户调用的最大子进程个数 160
7.6 进程文件系统PROC 161
第8章 Linux日志管理安全 164
8.1 Linux日志管理简介 164
8.2 Linux下重要日志文件介绍 165
8.2.1 /var/log/boot.log 165
8.2.2 /var/log/cron 166
8.2.3 /var/log/maillog 166
8.2.4 /var/log/syslog 166
8.2.5 /var/log/wtmp 168
8.2.6 /var/run/utmp 168
8.2.7 /var/log/xferlog 168
8.3 Linux下基本日志管理机制 169
8.3.1 who命令 169
8.3.2 users命令 170
8.3.3 last命令 171
8.3.4 ac命令 172
8.3.5 lastlog命令 173
8.4 使用syslog设备 173
8.4.1 syslog简介 173
8.4.2 syslog配置文件 173
8.4.3 syslog进程 175
8.5 Linux日志使用的重要原则 176
8.6 Linux日志输出查看方式 176
8.6.1 dmesg 176
8.6.2 tail 177
8.6.3 more和less 178
8.6.4 其他方式 179
第9章 xinetd安全管理Linux网络服务 180
9.1 xinetd原理 180
9.2 xinetd服务配置文件 181
9.3 通过文件配置使用xinetd 183
9.4 通过图形用户界面进行配置使用xinetd 184
第10章 DHCP服务安全 185
10.1 DHCP原理 185
10.1.1 DHCP简介 185
10.1.2 DHCP的工作流程 185
10.2 安装和启动DHCP服务器 186
10.2.1 安装DHCP服务器 186
10.2.2 启动和关闭DHCP服务器 187
10.3 安全配置DHCP服务 188
10.3.1 DHCP服务器配置文件 188
10.3.2 DHCP服务器配置实例 190
10.3.3 指定DHCP为指定网卡服务 191
10.4 安全配置DHCP客户端 192
10.4.1 图形界面配置Linux客户端 192
10.4.2 配置文件配置Linux客户端 192
10.5 使用chroot保证DHCP运行安全 193
10.5.1 下载和安装Jail软件 194
10.5.2 使用Jail创建chroot牢笼 195
第11章 DNS服务安全 198
11.1 DNS域名服务原理简介 198
11.1.1 DNS简介 198
11.1.2 DNS系统组成及基本概念 199
11.1.3 DNS服务器的类型 200
11.1.4 DNS的工作原理 200
11.2 安装和启动DNS服务器 201
11.2.1 安装DNS服务器 201
11.2.2 启动和关闭DNS服务器 202
11.3 安全配置DNS服务器 202
11.3.1 DNS服务器配置文件类型 202
11.3.2 named.conf主配置文件 203
11.3.3 区文件 204
11.3.4 DNS服务器配置实例 205
11.3.5 安全配置DNS客户端 207
11.4 安全使用DNS服务器的高级技巧 208
11.4.1 配置辅助域名服务器做到冗余备份 208
11.4.2 配置高速缓存服务器提高DNS服务器性能 210
11.4.3 配置DNS负载均衡防止服务器宕机 211
11.4.4 配置智能DNS高速解析 212
11.4.5 合理配置DNS的查询方式提高效率 215
11.4.6 使用dnstop监控DNS流量 216
11.4.7 使用DNSSEC技术保护DNS安全 217
第12章 邮件服务安全 220
12.1 邮件系统简介 220
12.1.1 邮件传递代理(MTA) 220
12.1.2 邮件存储和获取代理(MSA) 220
12.1.3 邮件客户代理(MUA) 221
12.2 SMTP介绍 221
12.2.1 SMTP的模型 221
12.2.2 SMTP的基本命令 222
12.3 安装与启动Sendmail 223
12.4 安全配置sendmail.cf 224
12.5 安全配置sendmail.mc文件 227
12.6 防治垃圾邮件 228
12.6.1 常用技术 228
12.6.2 配置Sendmail防范垃圾邮件 229
12.6.3 使用SpamAssasin防治垃圾邮件 230
第13章 FTP服务安全 234
13.1 FTP简介 234
13.1.1 FTP协议介绍 234
13.1.2 FTP文件类型 235
13.1.3 FTP文件结构 236
13.1.4 FTP传输模式 236
13.1.5 FTP常用命令 236
13.1.6 FTP典型消息 237
13.2 安装和启动vsftpd服务器 238
13.2.1 安装vsftpd 238
13.2.2 启动和关闭vsftpd 238
13.2.3 安全配置ftpusers文件 241
13.2.4 安全配置user_list文件 241
13.2.5 安全配置vsftpd.conf文件 242
13.2.6 配置其他一些安全选项 245
13.3 安全使用vsftpd服务器 246
13.3.1 匿名用户使用vsftpd服务器 246
13.3.2 本地用户使用vsftpd服务器 247
13.3.3 虚拟用户使用vsftpd服务器 249
13.3.4 配置vsftpd服务器中chroot 252
13.3.5 配置vsftpd服务器在非标准端口工作 252
13.3.6 配置虚拟FTP服务器 253
13.3.7 使用主机访问控制 255
第14章 Web服务安全 257
14.1 Web服务器简介 257
14.1.1 HTTP基本原理 257
14.1.2 Apache服务器简介 258
14.2 安装Apache的最新版本 260
14.3 配置Apache服务器主文件 260
14.4 使用特定的用户运行Apache服务器 265
14.5 配置隐藏Apache服务器的版本号 266
14.6 实现访问控制 268
14.6.1 访问控制常用配置指令 268
14.6.2 使用.htaccess文件进行访问控制 269
14.7 使用认证和授权保护Apache 272
14.7.1 认证和授权指令 272
14.7.2 管理认证口令文件和认证组文件 273
14.7.3 认证和授权使用实例 274
14.8 设置虚拟目录和目录权限 275
14.9 使用Apache中的安全模块 277
14.9.1 Apache服务器中安全相关模块 277
14.9.2 开启安全模块 278
14.10 使用SSL保证安全 278
14.10.1 SSL简介 278
14.10.2 Apache中运用SSL的基本原理 279
14.10.3 安装和启动SSL 284
14.11 Apache日志管理 287
14.11.1 日志管理概述 287
14.11.2 日志相关的配置指令 287
14.11.3 日志记录等级和分类 288
14.11.4 几个重要的日志文件 289
第15章 代理服务安全 293
15.1 代理服务器简介 293
15.2 Squid简介 294
15.3 安装和启动Squid Server 295
15.3.1 安装Squid Server 295
15.3.2 启动和关闭Squid Server 295
15.4 在客户端使用Squid Server 296
15.4.1 在IE浏览器设置 296
15.4.2 在Linux浏览器中设置 297
15.5 安全配置Squid Server 299
15.5.1 配置Squid Server的基本参数 299
15.5.2 配置Squid Server的安全访问控制 301
15.5.3 配置Squid Server的简单实例 306
15.6 安全配置基于Squid的透明代理 306
15.6.1 Linux内核的相关配置 306
15.6.2 Squid的相关配置选项 308
15.6.3 iptables的相关配置 308
15.7 安全配置多级缓存改善Proxy服务器的性能 308
15.7.1 多级缓存简介 308
15.7.2 配置多级缓存 309
15.8 Squid日志管理 311
15.8.1 配置文件中有关日志的选项 311
15.8.2 日志管理主文件——accesss.conf 312
第16章 防火墙技术 315
16.1 防火墙技术原理 315
16.1.1 防火墙简介 315
16.1.2 防火墙的分类 317
16.1.3 传统防火墙技术 318
16.1.4 新一代防火墙 319
16.1.5 防火墙技术的发展趋势 321
16.1.6 防火墙的配置方式 323
16.2 Netfilter/iptables防火墙框架 323
16.2.1 简介 323
16.2.2 安装和启动Netfilter/iptables系统 324
16.2.3 iptables基本原理 326
16.3 iptables简单应用 327
16.4 使用IPtables完成NAT功能 331
16.4.1 NAT简介 331
16.4.2 NAT的原理 332
16.4.3 NAT具体使用 333
16.5 防火墙与DMZ 336
16.5.1 DMZ原理 336
16.5.2 构建DMZ 337
第17章 入侵检测技术 341
17.1 入侵检测系统简介 341
17.2 入侵检测技术的发展 342
17.3 入侵检测的分类 343
17.3.1 入侵检测技术分类 343
17.3.2 入侵检测系统分类 345
17.4 Snort简介 347
17.5 安装Snort 348
17.6 Snort的工作模式 349
17.6.1 嗅探器模式 349
17.6.2 数据包记录器 349
17.6.3 网络入侵检测模式 350
17.7 Snort的使用方式 350
17.7.1 命令简介 350
17.7.2 查看ICMP数据报文 351
17.7.3 配置Snort的输出方式 353
17.7.4 配置Snort规则 353
17.8 自己动手编写Snort规则 355
17.8.1 规则动作 355
17.8.2 协议 356
17.8.3 IP地址 356
17.8.4 端口号 356
17.8.5 方向操作符 357
17.8.6 activate/dynamic规则 357
17.8.7 一些重要的指令 357
17.8.8 一些重要的规则选项 358
17.8.9 使用Snort检测攻击 364
17.9 使用Snortcenter构建分布式入侵检测系统 366
17.9.1 分布式入侵检测系统的构成 366
17.9.2 系统安装及部署 367
第18章 Linux集群技术 369
18.1 集群技术 369
18.1.1 集群简介 369
18.1.2 集群系统的分类 370
18.1.3 高可用集群 370
18.1.4 高性能计算集群 371
18.2 Linux中的集群 372
18.2.1 Linux集群分类 372
18.2.2 科学集群 372
18.2.3 负载均衡集群 374
18.2.4 高可用性集群 376
18.3 LVS 377
18.3.1 LVS原理 377
18.3.2 安装LVS 381
18.3.3 配置和使用LVS 382
第19章 VPN技术 385
19.1 VPN技术原理 385
19.1.1 VPN简介 385
19.1.2 VPN的分类 386
19.2 Linux下的VPN 388
19.2.1 IPSec VPN 388
19.2.2 PPP Over SSH 389
19.2.3 CIPE:Crypto IP Encapsulation 389
19.2.4 SSL VPN 390
19.2.5 PPTP 390
19.3 使用OpenVPN 391
19.3.1 OpenVPN简介 391
19.3.2 安装OpenVPN 391
19.3.3 制作证书 392
19.3.4 配置服务端 396
19.3.5 配置客户端 398
19.3.6 配置实例 398
第20章 Samba共享服务安全 400
20.1 Samba服务简介 400
20.1.1 Samba工作原理 400
20.1.2 Samba服务器的功能 401
20.1.3 SMB协议 401
20.1.4 Samba服务的工作流程 401
20.2 安装和启动Samba 402
20.3 安全配置Samba服务器的用户信息 404
20.3.1 创建服务器待认证用户 404
20.3.2 将用户信息转换为Samba用户信息 405
20.3.3 用户转换 405
20.3.4 Samba服务器和主浏览器 405
20.4 smb.conf文件配置详解 406
20.4.1 设置工作组 407
20.4.2 设置共享Linux账户主目录 407
20.4.3 设置公用共享目录 408
20.4.4 设置一般共享目录 409
20.4.5 设置共享打印机 410
20.4.6 具体设置实例 412
20.5 smb.conf中的选项和特定约定 421
20.6 使用testparm命令测试Samba服务器的配置安全 425
20.7 使用Samba日志 426
20.8 Linux和Windows文件互访 426
20.8.1 Windows客户使用Linux系统共享文件 426
20.8.2 用smbclient工具访问局域网上的Windows系统 427
20.8.3 用smbclient工具访问局域网上的其他系统 428
第21章 网络文件系统安全 429
21.1 NFS服务概述 429
21.1.1 NFS基本原理 429
21.1.2 NFS服务中的进程 431
21.2 安装和启动NFS 432
21.2.1 安装NFS 432
21.2.2 启动NFS 432
21.3 NFS安全配置和使用 433
21.3.1 配置NFS服务器 433
21.3.2 配置NFS客户机 433
21.3.3 安全使用NFS服务 435
21.4 图形界面安全配置NFS服务器 436
21.5 保证NFS安全的使用原则 439
第22章 PGP安全加密技术 441
22.1 PGP技术原理 441
22.1.1 PGP简介 441
22.1.2 PGP原理 442
22.2 使用GnuPG 447
22.2.1 GnuPG简介 447
22.2.2 安装GnuPG 449
22.2.3 GnuPG的基本命令 449
22.2.4 详细使用方法 451
22.2.5 GnuPG使用实例 459
22.2.6 相关注意事项 465
第23章 PAM安全认证技术 466
23.1 PAM认证机制简介 466
23.2 Linux-PAM的分层体系结构 467
23.2.1 分层体系结构概述 467
23.2.2 模块层 468
23.2.3 应用接口层 468
23.3 Linux-PAM的配置 469
23.3.1 Linux-PAM单一配置文件的语法 469
23.3.2 口令映射机制 471
23.3.3 基于目录的配置形式 472
23.4 Linux中常用的PAM安全模块 473
23.5 Linux-PAM使用举例 481
23.5.1 使用Linux-PAM控制用户安全登录 481
23.5.2 使用Linux-PAM控制Samba用户的共享登录 482
23.5.3 使用Linux-PAM控制FTP用户的登录 482
第24章 Linux面临的网络威胁及策略 485
24.1 扫描攻击 485
24.2 木马 488
24.3 拒绝服务攻击和分布式拒绝服务攻击 491
24.3.1 DoS攻击 491
24.3.2 DDoS攻击 494
24.4 病毒 496
24.4.1 Linux病毒的起源和历程 496
24.4.2 病毒的主要类型 497
24.5 IP Spoofing 498
24.6 ARP Spoofing 498
24.7 Phishing 499
24.8 Botnet 501
24.9 跨站脚本攻击 502
24.10 零日攻击 502
24.11 “社会工程学”攻击 503
24.12 使用备份应对网络威胁 505
24.12.1 一些简单实用的备份命令 505
24.12.2 备份机制和备份策略 506
第25章 Linux下优秀的开源安全工具 518
25.1 Tripwire:系统完整性检查工具 518
25.1.1 文件完整性检查的必要性 518
25.1.2 Tripwire简介 518
25.1.3 Tripwire的基本工作原理 519
25.1.4 安装Tripwire 521
25.1.5 配置Tripwire 522
25.1.6 使用Tripwire进行文件监控 527
25.1.7 使用Tripwire的原则和注意事项 529
25.2 John the Ripper:密码分析及检验工具 529
25.2.1 John the Ripper简介 529
25.2.2 安装John the Ripper 530
25.2.3 基本命令和实用工具 530
25.2.4 密码分析及检验 532
25.3 dmidecode:硬件状态监控工具 533
25.3.1 dmidecode简介 533
25.3.2 安装dmidecode工具 533
25.3.3 监控硬件状态 533
25.4 NMAP:端口扫描工具 535
25.4.1 NMAP简介 535
25.4.2 安装NMAP 536
25.4.3 使用NMAP进行多种扫描 537
25.5 Wireshark:网络流量捕获工具 541
25.5.1 Wireshark简介 541
25.5.2 使用Wireshark 541
25.6 NTOP:网络流量分析工具 545
25.6.1 NTOP简介 545
25.6.2 使用NTOP 546
25.7 其他工具 549
25.7.1 安全备份工具 549
25.7.2 Nessus:网络风险评估工具 552
25.7.3 Sudo:系统管理工具 552
25.7.4 NetCat:网络安全界的瑞士军刀 553
25.7.5 LSOF:隐蔽文件发现工具 554
25.7.6 Traceroute:路由追踪工具 554
25.7.7 XProbe:操作系统识别工具 555
25.7.8 SATAN:系统弱点发现工具 555
附录A Fedora 10命令参考 556
附录B VMWare虚拟机安装指南 617