Linux实战
作者: 张凯龙,王路阳,李鹏译 (美国)戴维德 克林顿
出版时间: 2019年版
内容简介
第1章是概述性的内容,帮助读者熟悉或回顾Linux的基本知识。第2章阐述Linux虚拟化技术以及Linux工作环境的基本构建方法,这也是后续章节的基础性技术知识。第3章关注如何用密钥保护远程连接,实现对联网计算机的安全访问。第4章讨论文件归档管理的目的和典型方法。有效保护数据也是安全性的重要方面之一。第5章是前一章的递进,主要关注如何配置并实现自动的异地备份。自动化管理可以大大提高备份的效率和可靠性。第6章关注如何从损坏的Linux系统中进行有效的恢复,这种技能对于每一位Linux管理员而言都是必需的。第7章展示如何用Apache、SQL及MediaWiki等软件包搭建一个支持知识管理及自由协作的MediaWiki服务器。第8章列举建立一个Nextcloud文件共享服务器的步骤,并给出基于云的存储部署方法。第9章将保护Web服务器作为实践项目,循序渐进地阐述如何使用访问控制、加密传输、强化认证等方式系统地达成增强安全性的目标。第10章着重讨论如何通过创建VPN或DMZ来保护网络,这对于全球化部署的大型企业尤为重要。第11章围绕对系统运行进行监视的需求,讨论如何使用、管理和处理系统日志,以及如何使用工具建立入侵检测系统。第12章阐述如何在私有网络上通过网络文件系统进行数据共享,以及如何保证其安全性。第13章聚焦于系统性能的优化,阐述测量和解决CPU、内存、存储、网络等不同方面性能问题的方案,以及可用的工具。第14章列举与网络连通性相关的各种故障,并给出解决方案及工具的使用方法。第15章以具体的实例说明如何通过对Linux内核模块、引导参数、驱动程序等的管理来解决遇到的设备故障。第16章讨论如何使用DevOps工具构建和部署一个脚本化的服务器环境,从而实现自动化的资源及安全性管理等。总结部分对本书的内容进行梳理和重新组织,并为读者给出下一步学习的建议。附录部分对每章的命令行进行了集中回顾,这些内容也存在于每章的末尾,如此安排是为了便于读者快速查阅。
目录
前言
第1章 欢迎使用Linux1
1.1 是什么让Linux与其他操作系统不同2
1.2 基本的实践技能3
1.2.1 Linux文件系统4
1.2.2 探索:Linux导航工具5
1.2.3 完成任务:Linux文件管理工具9
1.2.4 键盘技巧13
1.2.5 伪文件系统13
1.2.6 向他们展示谁才是老大:sudo14
1.3 获取帮助15
1.3.1 man文件15
1.3.2 info命令16
1.3.3 互联网17
1.4 小结18
第2章 Linux虚拟化:构建Linux工作环境21
2.1 什么是虚拟化22
2.2 使用VirtualBox25
2.2.1 使用Linux包管理器25
2.2.2 定义虚拟机32
2.2.3 安装操作系统35
2.2.4 克隆和共享VirtualBox虚拟机38
2.3 使用Linux容器40
2.3.1 LXC入门40
2.3.2 创建个容器41
2.4 小结44
第3章 远程连接:安全访问联网的计算机48
3.1 加密的重要性48
3.2 OpenSSH入门49
3.3 使用SSH登录一台远程服务器52
3.4 免密码SSH访问53
3.4.1 生成新的密钥对54
3.4.2 在网络上复制公钥55
3.4.3 使用多个加密密钥57
3.5 使用SCP安全地拷贝文件57
3.6 使用SSH连接上的远程图形程序58
3.7 Linux进程管理59
3.7.1 用ps命令查看进程60
3.7.2 使用systemd62
3.8 小结63
第4章 归档管理:备份或拷贝整个文件系统66
4.1 为什么要归档66
4.1.1 压缩67
4.1.2 归档文件:一些重要注意事项68
4.2 将什么归档69
4.3 备份到何处71
4.4 使用tar命令归档文件和文件系统71
4.4.1 几个简单的归档和压缩示例72
4.4.2 流式传输文件系统的归档文件73
4.4.3 使用find命令聚合文件75
4.4.4 保护权限与所有权并展开归档文件76
4.5 使用dd命令归档分区80
4.5.1 dd操作80
4.5.2 使用dd擦除硬盘81
4.6 使用rsync命令同步归档文件81
4.7 规划注意事项83
4.8 小结84
第5章 自动化管理:自动异地备份的配置87
5.1 用Bash编写脚本88
5.1.1 备份系统文件的脚本示例88
5.1.2 用于更改文件名的示例脚本92
5.2 将数据备份至AWS S393
5.2.1 安装AWS命令行接口94
5.2.2 配置你的AWS账户94
5.2.3 建立你的个bucket96
5.3 使用cron调度定期备份96
5.4 使用anacron预定非正常备份99
5.5 利用系统计时器设定常规备份100
5.6 小结102
第6章 应急工具:构建一个系统恢复设备105
6.1 在恢复/救援模式下工作106
6.1.1 GRUB引导加载程序107
6.1.2 在Ubuntu环境下使用恢复模式108
6.1.3 在CentOS下使用救援模式108
6.1.4 找到命令行救援工具109
6.2 创建一个原生系统引导恢复设备110
6.2.1 系统救援映像110
6.2.2 将原生系统引导映像写入USB驱动112
6.3 让你的原生系统引导设备运行115
6.3.1 检测系统存储区115
6.3.2 受损的分区117
6.3.3 从损坏的文件系统中恢复文件119
6.4 密码恢复:使用chroot安装文件系统120
6.5 小结122
第7章 Web服务器:建立MediaWiki服务器125
7.1 建立LAMP服务器126
7.2 手动设置Apache Web服务器127
7.2.1 在Ubuntu上安装Apache Web服务器127
7.2.2 填充你的网站文档root128
7.3 安装SQL数据库129
7.3.1 强化SQL131
7.3.2 SQL管理131
7.4 安装PHP134
7.4.1 在Ubuntu中安装PHP134
7.4.2 测试你的PHP安装134
7.5 安装和配置MediaWiki135
7.5.1 缺少扩展的故障排除136
7.5.2 将MediaWiki连接到数据库138
7.6 在CentOS上安装Apache Web服务器140
7.6.1 了解网络端口141
7.6.2 网络流量控制142
7.6.3 在CentOS上安装MariaDB142
7.6.4 在CentOS上安装PHP143
7.7 小结145
第8章 网络文件共享:构建Nextcloud文件共享服务器148
8.1 企业文件共享和Nextcloud149
8.2 使用snaps安装Nextcloud149
8.3 手动安装Nextcloud152
8.3.1 硬件预备知识152
8.3.2 建立LAMP服务器153
8.3.3 配置Apache154
8.3.4 下载和解压缩Nextcloud156
8.4 Nextcloud管理158
8.5 将AWS S3作为Nextcloud的主存储介质161
8.6 小结163
第9章 保护Web服务器166
9.1 显而易见的事情167
9.2 控制网络访问168
9.2.1 配置防火墙168
9.2.2 使用非标准端口175
9.3 加密传输中的数据177
9.3.1 准备你的网站域178
9.3.2 用Let抯 Encrypt生成证书179
9.4 强化认证过程180
9.4.1 使用SELinux控制文件系统对象181
9.4.2 安装并激活SELinux182
9.4.3 应用SELinux策略184
9.4.4 系统组与少特权原则185
9.4.5 隔离容器中的进程187
9.4.6 扫描危险的用户ID值187
9.5 审计系统资源188
9.5.1 扫描打开的端口188
9.5.2 扫描激活的服务189
9.5.3 搜索已安装的软件190
9.6 小结190
第10章 保护网络连接:创建VPN或DMZ194
10.1 构建OpenVPN隧道195
10.1.1 配置OpenVPN服务器196
10.1.2 配置OpenVPN客户端202
10.1.3 测试你的VPN203
10.2 构建抗入侵网络205
10.2.1 非军事区205
10.2.2 使用iptables207
10.2.3 使用iptables创建DMZ208
10.2.4 使用shorewall创建DMZ210
10.3 为基础设施测试构建虚拟网络213
10.4 小结215
第11章 系统监控:使用日志文件218
11.1 使用系统日志219
11.1.1 使用journald记录日志220
11.1.2 使用syslogd记录日志222
11.2 管理日志文件224
11.2.1 journald 方法224
11.2.2 syslogd方法224
11.3 处理大文件226
11.3.1 使用grep226
11.3.2 使用awk227
11.3.3 使用sed228
11.4 使用入侵检测进行监控229
11.4.1 搭建邮件服务器229
11.4.2 安装Tripwire230
11.4.3 配置Tripwire232
11.4.4 生成Tripwire测试报告235
11.5 小结235
第12章 在私有网络上共享数据239
12.1 通过网络文件系统共享文件240
12.1.1 设置NFS服务器241
12.1.2 建立客户端242
12.1.3 在引导时挂载NFS共享243
12.1.4 NFS安全性245
12.2 使用Samba与Windows用户共享文件247
12.2.1 测试你的Samba配置248
12.2.2 从Windows访问Samba服务器249
12.3 使用符号链接与自己共享文件250
12.4 小结251
第13章 解决系统性能问题255
13.1 CPU负载问题256
13.1.1 测量CPU负载256
13.1.2 管理CPU负载257
13.1.3 制造麻烦(模拟CPU负载)260
13.2 内存问题260
13.2.1 评估内存状态260
13.2.2 评估交换状态261
13.3 存储可用性问题261
13.3.1 索引节点的限制262
13.3.2 解决方案264
13.4 网络负载问题265
13.4.1 测量带宽265
13.4.2 解决方案266
13.4.3 与tc形成网络流量267
13.5 监控工具268
13.5.1 收集监测数据268
13.5.2 将数据进行可视化269
13.6 小结270
第14章 排除网络故障274
14.1 理解TCP/IP寻址275
14.1.1 什么是NAT寻址275
14.1.2 使用NAT寻址275
14.2 建立网络连接278
14.3 排除传出连通性故障278
14.3.1 跟踪网络状态280
14.3.2 分配IP地址281
14.3.3 配置DNS服务284
14.3.4 管道286
14.4 排除传入连通性故障286
14.4.1 内部连通性扫描:netstat 287
14.4.2 外部连通性扫描:netcat287
14.5 小结288
第15章 排除外围设备故障292
15.1 识别连接的设备292
15.2 用Linux内核模块管理外设294
15.2.1 查找内核模块295
15.2.2 手动加载内核模块297
15.3 引导时手动管理内核参数298
15.3.1 引导时传递参数298
15.3.2 通过文件系统传递参数299
15.4 管理打印机300
15.4.1 lp基础301
15.4.2 使用CUPS管理打印机301
15.5 小结303
第16章 DevOps工具:使用Ansible部署一个脚本化的服务器环境305
16.1 部署协调器可以为你做什么306
16.2 Ansible:安装和设置308
16.2.1 设置对宿主机的无密码访问309
16.2.2 组织Ansible的宿主机309
16.2.3 测试连接性310
16.3 认证311
16.4 Ansible playbook312
16.4.1 编写一个简单的playbook313
16.4.2 创建多层、角色驱动的playbook314
16.4.3 用Ansible管理密码316
16.5 小结317
总结320
附录 每章命令行回顾324