猜你喜欢
鸟哥的Linux私房菜:服务器架设篇(第三版修订)

鸟哥的Linux私房菜:服务器架设篇(第三版修订)

书籍作者:鸟哥 ISBN:9787302649229
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:9505
创建日期:2024-05-05 发布日期:2024-05-05
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

你已经具备了Linux基础,想进一步学习服务器架设吗?还想了解如何维护和管理你的服务器吗?《鸟哥的Linux私房菜—服务器架设篇(第三版修订)》是你的选择。

目前有关Linux架设的书籍大多只教读者如何架设服务器,很少涉及服务器的维护、管理以及遇到问题时的应对策略。结果是,一旦服务器遭受攻击,人们就会手忙脚乱。因此,作者首先从系统基础和网络基础开始讲解,然后讨论网络攻击和防火墙保护主机,最后才介绍服务器的架设。

《鸟哥的Linux私房菜:第三版修订. 服务器架设篇》共分为四篇:第一篇是服务器搭建前的进修专区,主要介绍架设服务器之前必须具备的基本知识。阅读完这一篇后,无论你使用何种方式连接Internet,都不会有问题;第二篇是主机的简易安全防护措施,鸟哥会告诉你如何保护你的主机,养成良好的操作习惯,使你的主机免受病毒侵害,安全能经受住各种考验;第三篇是局域网内常见服务器的搭建,介绍内部网络经常使用的远程连接服务(如SSH、XDMCP、VNC、XRDP)、网络参数配置服务(如DHCP、NFS、NTP)、网络磁盘服务(如SAMBA、iSCSI)以及代理服务器等。其中,SSH密钥系统对于异地备份非常有帮助,第四篇是常见的Internet服务器的搭建,介绍DNS、WWW、FTP和邮件服务器等常见的服务。


作者简介

鸟哥,中国台湾成功大学环境工程系博士,就学期间由于研究需要接触到Linux操作系统,又因实验室交接需求而建立“鸟哥的Linux私房菜”网站。因个人喜好“絮叨”,网站文章风格就此成形。曾任中国台湾多家知名Linux教育中心讲师,目前于中国台湾昆山科技大学资讯传播系教授Linux相关课程。专长是Linux操作系统、网站规划与维护、网络安全,兴趣是写作与阅读,研究方向是网络应用整合。

编辑推荐

《鸟哥的Linux私房菜——服务器架设篇(第三版修订)》是一本不可或缺的Linux服务器架设指导书,适合想要深入学习Linux服务器架设和管理的读者。本书不仅教授如何搭建服务器,还重点关注服务器的安全防护和维护,以及解决常见问题的策略。作者以系统基础和网络基础为起点,深入浅出地介绍了各种常见服务器的搭建方法。无论您是初学者还是有经验的用户,本书都将帮助您掌握Linux服务器的核心知识,为您的服务器提供稳定、安全的运行环境。

前言

作 者 序


关于本书

服务器的架设并不容易。除了需要了解每个服务器的工作原理与目的,还需要熟悉网络和系统管理的基础操作等。虽然目前有很多书籍和参考范例教大家如何架设一个可用的服务器,但这些范例却没有详细解释服务器的维护与管理,以及处理问题时的流程。因此,架设服务器虽然容易,但被攻击也是很常见的。因此,这本书从操作系统基础和网络基础开始讲起,然后谈到网络攻击以及防火墙防护主机,最后才切入搭建服务器的相关内容。

这本书以CentOS 6为范例进行介绍。这个Linux版本的服务配置与以前不同,常常让人找不到熟悉的配置文件位置。笔者在服务器配置中使用了SELinux默认启动模式,加入SELinux后,整个服务器的配置变得有些困难。此外,之前没有使用过的NetworkManager服务也增加了一些混乱,因此重复测试之前的版本与当前版本的区别,花费了不少时间。希望这样的测试结果能够帮助大家简化自行探索的过程,早日搭建自己的服务器。

谁适合这本书

这本书深入讨论了服务器搭建的规划、流程、技巧和维护等工作。因此,在这本书中不可能详细讨论基础的Linux操作和相关的Shell语法,毕竟,《鸟哥的Linux私房菜——基础学习篇》已经涵盖了这些内容,没有必要在本书中重复提及。因此,当你尝试阅读本书时,请注意最好已经具备了Linux操作系统的相关知识和BASH Shell的相关技巧。此外,还必须了解一些类Unix的工作流程,例如日志文件的产生和存储位置、服务的启动和关闭方式、计划任务的使用方法以及其他相关事项。换句话说,如果你从未接触过Linux,建议你从《鸟哥的Linux私房菜—基础学习篇》开始学习Linux,否则,对于你来说,本书可能会比较难以理解。

另外,本书经常会提到一些简单的概念而不是僵化的流程,特别是考虑到每个人对站点的要求都不相同,也就是说,每个人的站点实际上都带有个人风格。因此,僵化的流程并没有太大的意义,只要能够根据这些简单的概念来进行站点的架设就可以了。鸟哥认为,你的主机设置应该不会有太大的问题。最担心的是什么呢?最担心的是那些没有接触过Linux,却想直接参考服务器搭建的程序来完成站点架设的朋友,这些朋友最容易忽略后续的维护和管理工作,这也容易导致站点不稳定或者成为网络黑客(Cracker)入侵的主要原因。

本书的主要目的是引导用户进入Linux强大的网络功能世界,书中的范例都是鸟哥自己实际测试过没有问题才写出来的。然而,由于每个人的网络环境和操作习惯不同,因此鸟哥不敢保证书中的范例一定能在你的系统上成功操作。然而,书中会提到一些基本概念,只要你理解这些基本概念并且对Linux的操作熟悉,相信你一定可以利用书中的范例开发出适合你自己的服务器设置。但对于没有接触过Linux的朋友,仍然建议从头学起。至于为什么一定要从头学起,本书在第1章内会详细说明。

章节安排

本书的章节规划主要分为四篇:第一篇是服务器搭建前的进修专区,第二篇是主机的简易安全防护措施,第三篇是局域网内常见服务器的搭建,第四篇是常见Internet服务器的搭建。前两篇的内容都是关于基础的网络概念和实际网络配置,包括重要的网络自我检测和防火墙设置等。这些内容与你的服务器是否能正常工作密切相关,所以在开始服务器的架设之前,请务必先阅读前两篇共计10章的内容。

在第二篇——主机的简易安全防护措施中,我们将介绍在Linux强大的网络功能下可能发生的网络入侵问题。了解这些问题后,当然需要着手解决!因此,我们将说明如何处理TCP/IP、端口、软件漏洞修补和防火墙等问题。那么该如何确保Linux主机的安全呢?“没有绝对安全的主机”是正确的说法,所以,即使你的主机只是一个小站点,也绝不能忽视防火墙的作用。

在第三篇——局域网内常见服务器的搭建中,我们将介绍常用于内部网络的远程连接服务(如SSH、VNC、XRDP)、网络参数配置服务(如DHCP、NTP)、网络驱动器服务(如Samba、NFS、iSCSI)以及代理服务器等。虽然这些章节可以跳着阅读,但我建议花点时间仔细阅读第11章关于连接服务器的内容,特别是SSH的密钥系统对于异地备份非常有帮助!

在第四篇——常见Internet服务器的搭建中,我们将介绍常见的DNS、WWW、FTP和邮件服务器等服务。Internet上需要使用易于记忆的主机名进行连接,因此DNS服务器非常重要!在本版的DNS中,我们加入了简单的视图(View)概念,适用于局域网内的主机联网,你可以参考一下。

本书的章节仍然按照由浅入深的编排顺序,因此希望读者能够从头到尾仔细阅读,不要急于翻到后面抄写一些架设流程。

感谢

感谢自由软件社区志愿者们的软件开发,使我们能够拥有如此出色的操作系统来搭建服务器。也要感谢广大读者的反馈,使鸟哥能够对Linux服务器的原理和配置有更深入的了解。感谢Study Area酷学园的伙伴们的支持,包括netman大大、酷学园版主群、鸟园讨论版主群以及参加实体活动的朋友们。感谢昆山科大的张世熙主任、各位老师和伙伴们在研究方面对我的支持。更要感谢我的学生们,正是因为你们的帮助,鸟哥才有更多的时间来撰写一些关于服务器测试的文章。

最后,亲爱的鸟嫂,感谢你多年来的付出,特别是这两年为家庭添了两个可爱的宝贝:宸宸和轩轩!希望鸟窝一家,以及所有的朋友们都平安、幸福!

鸟哥


目录




第一篇 服务器搭建前的进修专区

第1章 搭建服务器前的准备工作 2

1.1 Linux的功能 3

1.1.1 用 Linux 搭建服务器需要的能力 3

1.1.2 搭建服务器难不难 4

1.2 搭建服务器的基本流程 5

1.2.1 网络服务器成功连接的分析 5

1.2.2 一个常见的服务器设置案例分析 8

1.2.3 系统安全与备份处理 24

1.3 自我评估是否已经具备服务器搭建的能力 25

第2章 网络的基本概念 27

2.1 网络 28

2.1.1 什么是网络 28

2.1.2 计算机网络的组件 30

2.1.3 计算机网络的范围 31

2.1.4 计算机网络协议:OSI七层协议 32

2.1.5 计算机网络协议:TCP/IP 35

2.2 TCP/IP网络接口层的相关协议 36

2.2.1 广域网使用的设备 36

2.2.2 局域网使用的设备——以太网 37

2.2.3 以太网络的传输协议:CSMA/CD 39

2.2.4 MAC的封装格式 41

2.2.5 MTU 42

2.2.6 集线器、交换机与相关机制 43

2.3 TCP/IP网络层的相关数据包与数据 46

2.3.1 IP数据包的封装 46

2.3.2 IP地址的组成与分级 48

2.3.3 IP的种类与获取方式 51

2.3.4 子网掩码、子网与CIDR(无类别域间路由) 53

2.3.5 路由概念 56

2.3.6 观察主机路由:Route 59

2.3.7 IP与MAC:网络接口层的ARP与RARP协议 60

2.3.8 ICMP协议 61

2.4 TCP/IP传输层的相关数据包与数据 62

2.4.1 面向连接的可靠的TCP协议 62

2.4.2 TCP的三次握手 66

2.4.3 无连接的UDP协议 67

2.4.4 网络防火墙与OSI七层协议 68

2.5 连上Internet前的准备事项 69

2.5.1 IP地址、主机名与DNS系统 69

2.5.2 连上Internet的必要网络参数 70

2.6 重点回顾 70

2.7 参考资料与延伸阅读 72

第3章 局域网架构简介 73

3.1 局域网的连接 74

3.1.1 局域网的布线规划 74

3.1.2 网络设备选购建议 78

3.2 本书使用的内部连接网络参数与通信协议 81

3.2.1 网络连接参数与通信协议 81

3.2.2 Windows个人计算机网络配置范例 83

第4章 连接Internet 86

4.1 Linux连接Internet前的注意事项 87

4.1.1 Linux 的网卡 87

4.1.2 编译网卡驱动程序(Option) 89

4.1.3 Linux网络相关配置文件 91

4.2 连接Internet的设置方法 92

4.2.1 手动设置固定IP地址 93

4.2.2 自动获取IP参数(DHCP方法,适用Cable Modem、IP路由器的环境) 97

4.2.3 ADSL拨号上网(适用ADSL拨号以及光纤接入) 98

4.3 无线网络—以笔记本电脑为例 103

4.3.1 无线网络所需要的硬件:AP、无线网卡 103

4.3.2 网络安全方面:关于AP的设置 104

4.3.3 利用无线网卡进行连接 106

4.4 常见问题说明 109

4.4.1 内部网络使用某些服务(如FTP、POP3)所遇到的连接延迟问题 109

4.4.2 域名无法解析的问题 111

4.4.3 默认网关的问题 111

4.5 重点回顾 111

第5章 Linux中常用的网络命令 113

5.1 设置网络参数的命令 114

5.1.1 手动/自动配置IP参数与启动/关闭网络接口:ifconfig、ifup、ifdown 114

5.1.2 修改路由:route 117

5.1.3 网络参数综合命令:ip 119

5.1.4 无线网络:iwlist、iwconfig 124

5.1.5 DHCP客户端命令:dhclient 124

5.2 网络故障排除与查看命令 124

5.2.1 两台主机之间最简单的通信方式:ping 125

5.2.2 对两台主机之间的各个节点进行分析:traceroute 127

5.2.3 查看本机的网络连接与后门:netstat 128

5.2.4 检测主机名与IP地址的对应关系:host、nslookup 131

5.3 远程连接命令与即时通信软件 133

5.3.1 终端机与BBS连接:Telnet 133

5.3.2 FTP连接软件:ftp、lftp 134

5.3.3 图形界面的即时通信软件:Pidgin(gaim的延伸) 136

5.4 文本界面的网页浏览 138

5.4.1 文本界面的网页浏览器:links 138

5.4.2 文本界面的下载器:wget 140

5.5 数据包捕获功能 141

5.5.1 文本界面的数据包捕获器:tcpdump 141

5.5.2 图形界面的数据包捕获器:Wireshark 145

5.5.3 任意启动 TCP/UDP 数据包的端口连接:nc、netcat 147

5.6 重点回顾 148

5.7 参考数据与延伸阅读 149

第6章 Linux网络故障排除 150

6.1 无法连接网络的原因分析 151

6.1.1 硬件问题:网线、网络设备、网络布线等 151

6.1.2 软件问题:IP 参数设置、路由设置、服务器与防火墙设置等 152

6.1.3 问题的处理 153

6.2 处理流程 154

6.2.1 步骤1:确认网卡的工作 154

6.2.2 步骤2:局域网内各项连接设备检测 155

6.2.3 步骤3:获取正确的IP参数 156

6.2.4 步骤4:确认路由表的规则 157

6.2.5 步骤5:主机名与IP查询的DNS错误 158

6.2.6 步骤6:Linux的NAT服务器或IP路由器出问题 158

6.2.7 步骤7:Internet的问题 159

6.2.8 步骤8:服务器的问题 159

第二篇 主机的简易安全防护措施

第7章 网络安全与主机基本防护:限制端口、网络升级与SELinux 162

7.1 网络数据包连接进入主机的流程 163

7.1.1 数据包进入主机的流程 163

7.1.2 常见的攻击手法与相关保护 165

7.1.3 主机能执行的保护操作:软件更新、减少网络服务、启动SELinux 169

7.2 网络自动升级软件 171

7.2.1 如何进行软件升级 171

7.2.2 CentOS的yum软件更新、镜像站点使用的原理 173

7.2.3 yum的功能:安装软件组、全系统更新 174

7.2.4 挑选特定的镜像站点:修改yum配置文件与清除yum缓存 179

7.3 限制连接端口 182

7.3.1 什么是端口 182

7.3.2 端口的查看:netstat、nmap 183

7.3.3 端口与服务的启动、关闭及开机时状态的设置 186

7.3.4 安全性考虑——关闭网络服务端口 189

7.4 SELinux管理原则 191

7.4.1 SELinux的工作模式 191

7.4.2 SELinux的启动、关闭与查看 194

7.4.3 SELinux Type的修改 196

7.4.4 SELinux策略内规则布尔值的修订 198

7.4.5 SELinux日志文件记录所需的服务 201

7.5 被攻击后的主机修复工作 204

7.5.1 网管人员应具备的技能 204

7.5.2 主机受攻击后恢复的工作流程 206

7.6 重点回顾 208

7.7 参考数据与延伸阅读 208

第8章 路由的概念与路由器设置 209

8.1 路由 210

8.1.1 路由表产生的类型 210

8.1.2 一块网卡绑定多个IP地址:IP Alias的测试用途 211

8.1.3 重复路由的问题 213

8.2 路由器配置 214

8.2.1 什么是路由器与IP路由器 214

8.2.2 何时需要路由器 215

8.2.3 静态路由的路由器 216

8.3 动态路由器架设 221

8.4 特殊情况——路由器两边的接口是同一个IP网段:ARP Proxy 227

8.5 重点回顾 230

第9章 防火墙与NAT服务器 231

9.1 认识防火墙 232

9.1.1 关于本章的一些提醒事项 232

9.1.2 为何需要防火墙 232

9.1.3 Linux系统上防火墙的主要类型 233

9.1.4 防火墙的一般网络布局示意 235

9.1.5 防火墙的使用限制 237

9.2 TCP Wrappers 238

9.2.1 哪些服务有支持 239

9.2.2 /etc/hosts.{allow|deny}的设置方式 240

9.3 Linux的数据包过滤软件:iptables 241

9.3.1 不同 Linux 内核版本的防火墙软件 241

9.3.2 数据包进入流程:规则顺序的重要性 242

9.3.3 iptables的表与链 243

9.3.4 本机的iptables语法 246

9.3.5 IPv4 的内核管理功能:/proc/sys/net/ipv4/* 256

9.4 设置单机防火墙的一个实例 258

9.4.1 规则草拟 258

9.4.2 实际设置 260

9.5 NAT服务器的设置 263

9.5.1 什么是NAT、SNAT、DNAT 263

9.5.2 最简单的NAT服务器:IP分享功能 266

9.5.3 iptables的额外内核模块功能 268

9.5.4 在防火墙后端的网络服务器上设置DNAT 269

9.6 重点回顾 269

9.7 参考数据与延伸阅读 270

第10章 申请合法的主机名 271

10.1 为何需要主机名 272

10.1.1 主机名的由来 272

10.1.2 重点在合法授权 273

10.1.3 申请静态还是动态DNS主机名 274

10.2 注册一个合法的主机名 275

10.2.1 静态 DNS 主机名注册 275

10.2.2 动态DNS主机名注册(以no-ip为例) 275

10.3 重点回顾 280

第三篇 局域网内常见服务器的搭建

第11章 远程连接服务器 SSH/XDMCP/VNC/XRDP 282

11.1 远程连接服务器 283

11.1.1 什么是远程连接服务器 283

11.1.2 有哪些可供登录的类型 284

11.2 文本界面连接服务器:SSH 服务器 285

11.2.1 连接加密技术简介 286

11.2.2 启动SSH服务 289

11.2.3 SSH客户端连接程序——Linux用户 289

11.2.4 SSH客户端连接程序——Windows用户 295

11.2.5 SSHD服务器详细配置 299

11.2.6 制作不用密码可立即登录的SSH用户 302

11.2.7 简易安全设置 305

11.3 最原始的图形界面:XDMCP服务的启用 307

11.3.1 X Window的Server/Client架构与各组件 307

11.3.2 设置GDM的XDMCP服务 310

11.3.3 用户系统为Linux的登录方式 312

11.3.4 用户系统为Windows的登录方式:Xming 314

11.4 华丽的图形界面:VNC服务器 316

11.4.1 默认的VNC服务器 316

11.4.2 VNC的客户端连接软件 318

11.4.3 VNC搭配本机的XDMCP界面 320

11.4.4 开机就启动VNC服务器的方法 321

11.4.5 同步的VNC:可以通过图示同步教学 321

11.5 仿真的远程桌面系统:XRDP服务器 322

11.6 SSH服务器的高级应用 324

11.6.1 在非标准端口启动SSH(非端口22) 324

11.6.2 以rsync进行同步镜像备份 325

11.6.3 通过SSH通道加密原本无加密的服务 328

11.6.4 以SSH通道配合X Server传送图形界面 329

11.7 重点回顾 332

11.8 参考资料与延伸阅读 333

第12章 网络参数管理者:DHCP服务器 334

12.1 DHCP的工作原理 335

12.1.1 DHCP服务器的用途 335

12.1.2 DHCP协议的工作方式 335

12.1.3 何时需要架设DHCP服务器 339

12.2 DHCP服务器端的配置 340

12.2.1 所需软件与文件结构 340

12.2.2 主要配置文件/etc/dhcp/dhcpd.conf的语法 341

12.2.3 一个局域网的DHCP服务器设置案例 343

12.2.4 DHCP服务器的启动与观察 344

12.2.5 内部主机的IP对应 345

12.3 DHCP客户端的设置 346

12.3.1 客户端是Linux 346

12.3.2 客户端是Windows 348

12.4 DHCP服务器端的高级查看与使用 350

12.4.1 检查租约文件 350

12.4.2 让大量计算机都具有获取静态IP地址的脚本 350

12.4.3 使用ether-wake实现远程自动开机(remote boot) 351

12.4.4 DHCP与DNS的关系 352

12.5 重点回顾 353

12.6 参考资料与延伸阅读 354

第13章 文件服务器之一:NFS服务器 355

13.1 NFS的由来与功能 356

13.1.1 什么是NFS 356

13.1.2 什么是RPC 357

13.1.3 NFS启动的RPC守护进程 358

13.1.4 NFS的文件访问权限 359

13.2 NFS服务器端的配置 360

13.2.1 所需要的软件 360

13.2.2 NFS的软件结构 361

13.2.3 /etc/exports配置文件的语法与参数 362

13.2.4 启动NFS 366

13.2.5 NFS的连接查看 368

13.2.6 NFS的安全性 370

13.3 NFS客户端的设置 372

13.3.1 手动挂载NFS服务器共享的资源 372

13.3.2 客户端可处理的挂载参数与开机挂载 373

13.3.3 无法挂载的原因分析 375

13.3.4 自动挂载autofs的使用 377

13.4 案例演练 379

13.5 重点回顾 381

第14章 账号管理:NIS服务器 382

14.1 NIS的由来与功能 383

14.1.1 NIS的主要功能:管理账号信息 383

14.1.2 NIS的工作流程:通过RPC服务 384

14.2 NIS服务器端的设置 386

14.2.1 所需要的软件 386

14.2.2 NIS服务器相关的配置文件 386

14.2.3 一个实际操作案例 387

14.2.4 NIS服务器的设置与启动 387

14.2.5 防火墙设置 391

14.3 NIS客户端的设置 392

14.3.1 NIS客户端所需的软件与软件结构 392

14.3.2 NIS客户端的设置与启动 393

14.3.3 NIS客户端的验证:yptest、ypwhich和ypcat 395

14.3.4 用户参数修改:yppasswd、ypchfn和ypchsh 396

14.4 NIS搭配NFS的设置在群集计算机上的应用 398

14.5 重点回顾 400

第15章 时间服务器:NTP服务器 402

15.1 关于时区与网络校时的通信协议 403

15.1.1 什么是时区,全球有多少时区,GMT在哪个时区 403

15.1.2 什么是夏令时 405

15.1.3 UTC与系统时间的误差 406

15.1.4 NTP通信协议 406

15.1.5 NTP 服务器的层次概念 407

15.2 NTP服务器的安装与设置 408

15.2.1 所需软件与软件结构 408

15.2.2 主要配置文件 ntp.conf 的处理 409

15.2.3 NTP 的启动与观察 412

15.2.4 安全性设置 413