第1章 Linux系统安全概述 1
1.1 什么是安全 2
1.1.1 什么是信息安全 2
1.1.2 信息安全的木桶原理 4
1.1.3 Linux系统安全与信息安全的关系 5
1.2 威胁分析模型 5
1.2.1 STRIDE模型 5
1.2.2 常见的安全威胁来源 6
1.3 安全的原则 8
1.3.1 纵深防御 8
1.3.2 运用PDCA模型 9
1.3.3 最小权限法则 11
1.3.4 白名单机制 12
1.3.5 安全地失败 12
1.3.6 避免通过隐藏来实现安全 13
1.3.7 入侵检测 14
1.3.8 不要信任基础设施 14
1.3.9 不要信任服务 15
1.3.10 交付时保持默认是安全的 15
1.4 组织和管理的因素 16
1.4.1 加强安全意识培训 16
1.4.2 特别注意弱密码问题 17
1.4.3 明令禁止使用破解版软件 18
1.4.4 组建合理的安全组织结构 18
1.5 本章小结 19
第2章 Linux网络防火墙 21
2.1 网络防火墙概述 21
2.2 利用iptables构建网络防火墙 23
2.2.1 理解iptables表和链 23
2.2.2 实际生产中的iptables脚本编写 25
2.2.3 使用iptables进行网络地址转换 27
2.2.4 禁用iptables的连接追踪 29
2.3 利用Cisco防火墙设置访问控制 34
2.4 利用TCP Wrappers构建应用访问控制列表 35
2.5 利用DenyHosts防止暴力破解 36
2.6 在公有云上实施网络安全防护 38
2.6.1 减少公网暴露的云服务器数量 39
2.6.2 使用网络安全组防护 40
2.7 使用堡垒机增加系统访问的安全性 41
2.7.1 开源堡垒机简介 43
2.7.2 商业堡垒机简介 44
2.8 分布式拒绝服务攻击的防护措施 46
2.8.1 直接式分布式拒绝服务攻击 46
2.8.2 反射式分布式拒绝服务攻击 47
2.8.3 防御的思路 48
2.9 局域网中ARP欺骗的防御 48
2.10 本章小结 50
第3章 虚拟专用网络 52
3.1 常见虚拟专用网络构建技术 53
3.1.1 PPTP虚拟专用网络的原理 53
3.1.2 IPSec虚拟专用网络的原理 53
3.1.3 SSL/TLS虚拟专用网络的原理 54
3.2 深入理解OpenVPN的特性 55
3.3 使用OpenVPN创建点到点的虚拟专用网络 55
3.4 使用OpenVPN创建远程访问的虚拟专用网络 61
3.5 使用OpenVPN创建站点到站点虚拟专用网络 69
3.6 回收OpenVPN客户端的证书 70
3.7 使用OpenVPN提供的各种script功能 71
3.8 OpenVPN的排错步骤 73
3.9 本章小结 77
第4章 网络流量分析工具 79
4.1 理解tcpdump工作原理 80
4.1.1 tcpdump的实现机制 80
4.1.2 tcpdump与iptables的关系 82
4.1.3 tcpdump的简要安装步骤 82
4.1.4 学习tcpdump的5个参数和过滤器 83
4.1.5 学习tcpdump的过滤器 83
4.2 使用RawCap抓取回环端口的数据 84
4.3 熟悉Wireshark的最佳配置项 85
4.3.1 Wireshark安装过程的注意事项 85
4.3.2 Wireshark的关键配置项 86
4.3.3 使用追踪数据流功能 89
4.4 使用libpcap进行自动化分析 90
4.5 案例1:定位非正常发包问题 91
4.6 案例2:分析运营商劫持问题 94
4.6.1 中小运营商的网络现状 94
4.6.2 基于下载文件的缓存劫持 95
4.6.3 基于页面的iframe广告嵌入劫持 99
4.6.4 基于伪造DNS响应的劫持 100
4.6.5 网卡混杂模式与raw socket技术 100
4.7 本章小结 103
第5章 Linux用户管理 105
5.1 Linux用户管理的重要性 105
5.2 Linux用户管理的基本操作 107
5.2.1 增加用户 108
5.2.2 为用户设置密码 108
5.2.3 删除用户 109
5.2.4 修改用户属性 109
5.3 存储Linux用户信息的关键文件详解 110
5.3.1 passwd文件说明 110
5.3.2 shadow文件说明 111
5.4 Linux用户密码管理 112
5.4.1 密码复杂度设置 112
5.4.2 生成复杂密码的方法 113
5.4.3 弱密码检查方法 116
5.5 用户特权管理 118
5.5.1 限定可以使用su的用户 118
5.5.2 安全地配置sudo 118
5.6 关键环境变量和日志管理 119
5.6.1 关键环境变量设置只读 119
5.6.2 记录日志执行时间戳 119
5.7 本章小结 120
第6章 Linux软件包管理 122
6.1 RPM概述 122
6.2 使用RPM安装和移除软件 123
6.2.1 使用RPM安装和升级软件 123
6.2.2 使用RPM移除软件 124
6.3 获取软件包的信息 125
6.3.1 列出系统中已安装的所有RPM包 125
6.3.2 软件包的详细信息查询 125
6.3.3 查询哪个软件包含有指定文件 126
6.3.4 列出软件包中的所有文件 126
6.3.5 列出软件包中的配置文件 127
6.3.6 解压软件包内容 127
6.3.7 检查文件完整性 127
6.4 Yum及Yum源的安全管理 129
6.4.1 Yum简介 129
6.4.2 Yum源的安全管理 130
6.5 自启动服务管理 130
6.6 本章小结 131
第7章 Linux文件系统管理 133
7.1 Linux文件系统概述 133
7.1.1 Inode 134
7.1.2 文件的权限 135
7.2 SUID和SGID可执行文件 136
7.2.1 SUID和SGID可执行文件概述 136
7.2.2 使用sXid监控SUID和SGID文件变化 137
7.3 Linux文件系统管理的常用工具 137
7.3.1 使用chattr对关键文件加锁 137
7.3.2 使用extundelete恢复已删除文件 138
7.3.3 使用srm和dd安全擦除敏感文件的方法 141
7.4 案例:使用Python编写敏感文件扫描程序 141
7.5 本章小结 143
第8章 Linux应用安全 145
8.1 简化的网站架构和数据流向 145
8.2 主要网站漏洞解析 146
8.2.1 注入漏洞 147
8.2.2 跨站脚本漏洞 148
8.2.3 信息泄露 149
8.2.4 文件解析漏洞 150
8.3 Apache安全 152
8.3.1 使用HTTPS加密网站 153
8.3.2 使用ModSecurity加固Web 154
8.3.3 关注Apache漏洞情报 158
8.4 Nginx安全 158
8.4.1 使用HTTPS加密网站 158
8.4.2 使用NAXSI加固Web 159
8.4.3 关注Nginx漏洞情报 160
8.5 PHP安全 160
8.5.1 PHP配置的安全选项 160
8.5.2 PHP开发框架的安全 162
8.6 Tomcat安全 163
8.7 Memcached安全 165
8.8 Redis安全 165
8.9 MySQL安全 166
8.10 使用公有云上的WAF服务 167
8.11 本章小结 168
第9章 Linux数据备份与恢复 170
9.1 数据备份和恢复中的关键指标 171
9.2 Linux下的定时任务 172
9.2.1 本地定时任务 172
9.2.2 分布式定时任务系统 174
9.3 备份存储位置的选择 175
9.3.1 本地备份存储 175
9.3.2 远程备份存储 176
9.3.3 离线备份 177
9.4 数据备份 178
9.4.1 文件备份 178
9.4.2 数据库备份 179
9.5 备份加密 181
9.6 数据库恢复 182
9.7 生产环境中的大规模备份系统案例 182
9.8 本章小结 184
第10章 Linux安全扫描工具 186
10.1 需要重点关注的敏感端口列表 186
10.2 扫描工具nmap 188
10.2.1 使用源码安装nmap 188
10.2.2 使用nmap进行主机发现 189
10.2.3 使用nmap进行TCP端口扫描 190
10.2.4 使用nmap进行UDP端口扫描 192
10.2.5 使用nmap识别应用 192
10.3 扫描工具masscan 193
10.3.1 安装masscan 193
10.3.2 masscan用法示例 193
10.3.3 联合使用masscan和nmap 194
10.4 开源Web漏洞扫描工具 195
10.4.1 Nikto2 195
10.4.2 OpenVAS 196
10.4.3 SQLMap 198
10.5 商业Web漏洞扫描工具 199
10.5.1 Nessus 199
10.5.2 Acunetix Web Vulnerability Scanner 201
10.6 本章小结 202
第11章 入侵检测系统 204
11.1 IDS与IPS 204
11.2 开源HIDS OSSEC部署实践 205
11.3 商业主机入侵检测系统 214
11.3.1 青藤云 215
11.3.2 安全狗 215
11.3.3 安骑士 215
11.4 Linux Prelink对文件完整性检查的影响 217
11.5 利用Kippo搭建SSH蜜罐 218
11.5.1 Kippo简介 218
11.5.2 Kippo安装 219
11.5.3 Kippo捕获入侵案例分析 220
11.6 本章小结 221
第12章 Linux Rootkit与病毒木马检查 223
12.1 Rootkit分类和原理 223
12.2 可加载内核模块 225
12.3 利用Chkrootkit检查Rootkit 226
12.3.1 Chkrootkit安装 227
12.3.2 执行Chkrootkit 227
12.4 利用Rkhunter检查Rootkit 228
12.4.1 Rkhunter安装 228
12.4.2 执行Rkhunter 228
12.5 利用ClamAV扫描病毒木马 229
12.6 可疑文件的在线病毒木马检查 230
12.6.1 VirusTotal 231
12.6.2 VirSCAN 231
12.6.3 Jotti 232
12.7 Webshell检测 232
12.7.1 D盾 233
12.7.2 LMD检查Webshell 234
12.8 本章小结 235
第13章 日志与审计 237
13.1 搭建远程日志收集系统 237
13.1.1 Syslog-ng server搭建 238
13.1.2 Rsyslog/Syslog client配置 239
13.2 利用Audit审计系统行为 239
13.2.1 审计目标 239
13.2.2 组件 240
13.2.3 安装 241
13.2.4 配置 241
13.2.5 转换系统调用 242
13.2.6 审计Linux的进程 243
13.2.7 按照用户来审计文件访问 244
13.3 利用unhide审计隐藏进程 244
13.4 利用lsof审计进程打开文件 245
13.5 利用netstat审计网络连接 246
13.6 本章小结 246
第14章 威胁情报 248
14.1 威胁情报的概况 248
14.2 主流威胁情报介绍 249
14.2.1 微步在线威胁情报社区 249
14.2.2 360威胁情报中心 252
14.2.3 IBM威胁情报中心 253
14.3 利用威胁情报提高攻击检测与防御能力 254
14.4 本章小结 255
附录A网站安全开发的原则 257
附录B Linux系统被入侵后的排查过程 273