主要內容 :
安裝和配置Linux,包括Fedora、Ubuntu、CentOS、openSUSE、Debian和RHEL的**發(fā)行版。
設置及管理核心系統(tǒng)服務、守護進程、用戶和組。
從源代碼或二進制包管理軟件應用程序。
定制、構建或修補Linux內核。
理解和管理Linux網(wǎng)絡棧和網(wǎng)絡協(xié)議,包括TCP/IP、ARP、IPv4和IPv6。
小化安全威脅并使用Netfilter(iptables和nftables)和Linux構建可靠的防火墻和路由器。
創(chuàng)建及維護DNS、FTP、Web、電子郵件、打印、LDAP、VoIP、SSH服務器和服務。
使用GlusterFS、NFS和Samba共享資源。
在流行的云環(huán)境(如OpenStack、AWS、Azure、Linode和GCE)中啟動和管理基于Linux的服務器。
使用KVM、Docker、Kubernetes和OCI工具來探索虛擬化和容器技術。
下載專門創(chuàng)建的虛擬機映像和容器,可從中復制本書中的各種練習、軟件、服務器、命令和腳本。
前 言
1991年10月5日,Linus Torvalds 在一個在線新聞組上發(fā)布了一條簡單的消息,向全世界介紹了Linux 操作系統(tǒng)的個版本。他(以及其他任何人)不知道的是,他開發(fā)出的Linux 后來成為世界上受歡迎、顛覆性的操作系統(tǒng)之一。今天,整個行業(yè)和社區(qū)都圍繞Linux 建立起來并蓬勃發(fā)展。而且,你很可能已經(jīng)以某種形式使用過它(或從中受益)!本書是我們延續(xù)開放、探索和學習這種傳統(tǒng)的第8 次嘗試(希望能成功)。當讀者能從本書中學到一些東西,并應用它自信地解決現(xiàn)實問題,對我們來說就成功了。
本書讀者對象本書書名的后一部分是入門經(jīng)典,但假設你已經(jīng)熟悉高級用戶級別或更高級別的Microsoft Windows 服務器(或其他操作系統(tǒng)),假定你熟悉用于中小型計算機網(wǎng)絡的術語和一些概念。任何與更大的網(wǎng)絡或高級Windows 技術相關的經(jīng)驗將令讀者從書中獲得更多,但這不是必需的。
市面上已經(jīng)有足夠多的書僅指出應點擊什么,而沒有說明為什么;本書不應屬于這一類。
除了具備Windows 背景外,我們假設你對本書中主題的更多信息感興趣,而不僅是書中的內容。
畢竟,一些主題只有15~35 頁,而這些主題有時需要用一整本書來專門討論!因此,一些章節(jié)插入了指向其他資源的鏈接。讀者好采納這些建議。
我們相信,經(jīng)驗豐富的Linux 系統(tǒng)管理員也可以從本書中受益,因為它可以作為一本討論各種主題的快速指南。
本書的內容本書由6 部分組成。
第Ⅰ部分:簡介與安裝
第Ⅰ部分包括3章。第1章很好地概述什么是GNU/Linux,以及在幾個關鍵領域比較它與Windows。
第2 章詳細介紹如何安裝服務器級的Fedora 和Ubuntu Linux 發(fā)行版。第3 章概述如何在一些流行的云平臺上啟動Linux 服務器。
理想情況下,第Ⅰ部分的內容應足以讓讀者入門,有助于讀者根據(jù)其他操作系統(tǒng)的現(xiàn)有知識,了解Linux 的工作方式。第Ⅰ部分完成的一些服務器安裝任務和設計選擇可作為本書其他部分的參考和起點。
第Ⅱ部分:單主機管理
第Ⅱ部分介紹管理獨立系統(tǒng)(即不需要或不向網(wǎng)絡上的其他系統(tǒng)提供任何服務的系統(tǒng))的必要內容。盡管服務器不提供任何服務的概念乍一看與直覺不符,但它是構建其他許多概念的基礎,在以后理解基于網(wǎng)絡的服務時,它將派上用場。第Ⅱ部分共8章.
第4 章涵蓋使用Linux 命令行接口(CLI)的基礎知識,以便讀者能在沒有GUI 的情況下工作。盡管可在GUI 桌面中管理Linux 系統(tǒng),但好能同時使用CLI 和GUI對于管理Windows 系統(tǒng)也是如此。不相信嗎?打開命令提示符,運行netsh,并嘗試在GUI 中執(zhí)行netsh 所執(zhí)行的操作。
第5 章涵蓋如何從預先打包的二進制文件和源代碼中安裝軟件,以及如何執(zhí)行標準的軟件管理任務。該章學到和使用的一些軟件安裝技術在本書的大部分內容中都會用到。
第6 章涵蓋Linux 平臺上用戶和組概念的基礎知識,以及日常管理任務,如添加、刪除用戶和組,多用戶操作,Linux 權限模型等。
第7 章記錄整個開機和關機過程。該章詳細介紹如何正確啟動、關閉、添加、啟用和禁用服務。
這些基本技能在書的后面會派上用場。
第8 章繼續(xù)介紹文件系統(tǒng)的基礎知識文件系統(tǒng)的組織、創(chuàng)建以及管理(重要)。
第9 章討論操作基礎知識,介紹基本工具,如xinetd、rsyslog、cron、systemd、journald 等。xinetd是Linux 版的Windows svchost,rsyslog 在統(tǒng)一框架中管理所有應用程序的日志記錄。rsyslog 和journald是更靈活的Windows 事件查看器版本。
第10 章解釋在Linux 中配置、編譯和安裝自定義內核的過程。這個功能為Linux 管理員提供了大量對系統(tǒng)操作方式的細粒度控制。
第11 章涵蓋通過/proc 和/sys 文件系統(tǒng)進行的一些內核級調整。如該章所述,通過/proc 和/sys 查看和修改某些內核級配置和運行時變量的能力,為管理員提供了幾乎無限的系統(tǒng)微調可能性。當這些應用得當時,可以說是一種比Windows 平臺更好、更容易調整內核的方法。
第Ⅲ部分:網(wǎng)絡與安全
第Ⅲ部分開始進入網(wǎng)絡和安全的世界。我們不太清楚為什么要把這兩個主題放在同一部分,但如果非要證明這一點的話,可以說:網(wǎng)絡是邪惡的根源,因此需要保護。然后我們會聳聳肩走開。
隨著Internet 上安全和隱私日趨重要,以及SOX、HIPAA 等合規(guī)要求的發(fā)布,需要在高安全性場景中使用Linux。我們特意決定,在介紹基于網(wǎng)絡的服務(第Ⅳ部分和第Ⅴ部分)之前,先討論安全問題,以便了解一些基本的安全實踐,這些實踐有助于保護基于網(wǎng)絡的服務不受攻擊。
該部分從第12 章開始,概述了系統(tǒng)(和/或網(wǎng)絡)管理員需要了解的TCP/IP 內容。第12 章詳細介紹如何使用故障排除工具(如tcpdump)捕獲數(shù)據(jù)包,并將其讀取回來,逐步分析TCP 連接是如何工作的。
這些工具應該能有效地排除網(wǎng)絡特性的故障。
第13 章關注基本網(wǎng)絡配置(IPv4 和IPv6),回到管理問題。這包括設置IP 地址、路由條目等。
第14 章擴展基礎知識,深入研究先進的網(wǎng)絡概念,展示如何構建基于Linux 的防火墻和路由器。
介紹新的nftables 項目,它將取代現(xiàn)有的、流行的iptables 框架。
第15 章和第16 章詳細討論系統(tǒng)和網(wǎng)絡安全的各個方面,包括特定于Linux 的問題以及一般的安全提示、技巧和常識,以便更好地配置系統(tǒng),保護它免受攻擊。
第Ⅳ部分:Internet 服務
本書有兩個不同的部分:Internet 服務和內部網(wǎng)服務。盡管它們聽起來很相似,但有區(qū)別。
Internet 服務定義為運行在Linux 系統(tǒng)上、直接暴露于Internet 的服務。例如Web 和域名系統(tǒng)(DNS)服務。內部網(wǎng)服務則定義為通常在防火墻后運行、用于內部用戶的服務,這些服務大部分僅供內部使用。
本部分從第17 章開始,它涵蓋了安裝、配置和管理DNS 服務器所需的信息。除了運行DNS 服務器的實際細節(jié)外,還提供了關于DNS 如何工作的詳細背景知識以及故障排除的一些技巧和工具。
在DNS 之后,就進入第18 章,其中涵蓋了FTP 服務器的安裝和維護。該章還介紹了FTP 的背景知識和它的發(fā)展。
第19 章繼續(xù)討論當今Linux 流行的可能用途之一:使用流行的Apache 軟件運行Web 服務器。
該章介紹了Apache Web 服務器的安裝、配置和管理。
第20 章和第21 章通過設置和配置SMTP、POP 和IMAP 服務器深入介紹電子郵件。將介紹配置這三種工具所需的信息,并展示它們如何交互。選擇探討Postfix SMTP 服務器,而不是傳統(tǒng)的Sendmail服務器,因為Postfix 提供了更靈活的服務器和更好的安全記錄。
第22 章在這個版本中做了全新的修訂。我們做了大量工作,花費了大量精力,來醞釀和提煉VoIP這個非常廣泛的主題。在該章末尾,基于Asterisk 軟件構建了一個簡單的基于VolP 的PBX;它很容易擴展,來取代商用PBX 解決方案,或與第三方VoIP 提供商交互,以便與世界其他國家交流。
第Ⅳ部分以第23 章結束,了解如何設置、使用和管理SSH 服務在幾乎任何GNU/Linux 環(huán)境中都是至關重要的。
第Ⅴ部分:內部網(wǎng)服務
再次強調,內部網(wǎng)服務定義為通常在防火墻后運行、供內部用戶使用的服務,而且大多數(shù)僅供內部使用。即使在這種環(huán)境中,Linux 也提供了很多功能。
第24 章介紹NFS。NFS 已經(jīng)存在了近30 年,在過去幾年里不斷發(fā)展、成長和適應。該章介紹NFS 的功能,包括如何設置客戶端和服務器,以及如何排除故障。
第25 章通過對Samba 服務的介紹,繼續(xù)了共享磁盤和資源的思想。使用Samba,管理員可以共享磁盤和打印設施,并為Windows(和Linux)用戶提供身份驗證,而不必安裝任何特殊的客戶機軟件。
因此,Linux 可成為一個有效的服務器,能在UNIX/Linux 系統(tǒng)和Windows 系統(tǒng)之間支持和共享資源。
如果你對這類事情感興趣,甚至可將Samba 配置為成熟的Active Directory Microsoft Windows 服務器的臨時替代品!
第26 章在第Ⅴ部分,而不是第Ⅳ部分,是一個擲硬幣的問題,因為DFS 可以在Internet 和Intranet場景中使用/部署。在當今以云為中心的世界中,DFS 解決方案尤其重要。在許多可用的DFS 實現(xiàn)中,我們選擇討論GlusterFS,因為它易于配置,在不同發(fā)行版中都獲得了支持。
第27 章討論目錄服務,包括LDAP 以及管理員如何使用這個標準服務來提供一個集中的用戶數(shù)據(jù)庫(目錄),以便在異構操作系統(tǒng)之間使用,并管理大量用戶。
第28章介紹Linux打印子系統(tǒng)。打印子系統(tǒng)與Samba結合使用時,允許管理員支持從基于Windows的客戶機進行無縫打印。這樣就可在一臺服務器上集中Linux、Windows 甚至macOS 用戶的打印選項!
第29 章涵蓋了Linux 系統(tǒng)的另一種常見用法:DHCP 服務器。本章討論了如何部署Internet SystemsConsortium (ISC) DHCP 服務器,它提供了一組強大的特性和選項。
接下來是第30 章。幾個月以來,我們一直在為該章的標題而苦惱和斟酌,因為該章涵蓋了虛擬化和容器(容器化)。這一章終命名為虛擬化,因為我們甚至不確定容器化是不是一個詞;據(jù)一位編輯說,這是航運業(yè)的一個詞!虛擬化則無處不在。它允許公司將以前需要幾個專用裸機的服務和硬件整合到更少的裸機中。我們將討論基本的虛擬化概念,并簡要介紹Linux 中一些流行的虛擬化技術。該章還通過示例詳細介紹了基于內核的虛擬機(Kernel-Based Virtual Machine,KVM)的實現(xiàn)。我們討論的KVM 概念將有助于學習附錄B 介紹的新功能。第30.5 節(jié)介紹容器。容器背后的概念是舊的,但又是新的。就像虛擬化一樣,容器也無處不在,而且會一直存在。我們使用流行的Docker 平臺實現(xiàn)容器,并指導如何部署容器樣式的Web 服務器!
后的第31 章討論備份。備份可以說是管理中關鍵的部分之一;贚inux 的系統(tǒng)支持幾種備份方法,這些方法易于使用,也很容易用于磁帶驅動器和其他介質。該章討論一些方法,并解釋如何將它們用作備份計劃的一部分。除了備份機制外,還討論了一般的備份考慮事項、設計和優(yōu)化。
第Ⅵ部分:附錄
在書的后,包括了一些有用的參考資料和現(xiàn)實世界的資源,可以用于日常工作,可在家里、教室或實驗室使用。
附錄A 詳細介紹在非光學介質(如USB 閃存驅動器、SD 卡等)上創(chuàng)建安裝介質的替代和通用方法。
附錄B 是本書的另一個新添加內容。它涵蓋了一個新功能:獲取和使用為本書專門創(chuàng)建的容器和虛擬機映像文件。一旦啟動VM 或容器,你將看到本書中討論的大多數(shù)命令、腳本、軟件包、黑客和服務器/守護進程。
目 錄
第I 部分 簡介與安裝
第1 章 Linux、發(fā)行版和FOSS 簡介. 2
1.1 Linux 操作系統(tǒng) 2
1.2 開源軟件和GNU 概述 3
1.2.1 GNU 公共許可證 4
1.2.2 上游和下游 4
1.3 開源軟件的優(yōu)勢 5
1.4 理解Windows 和Linux 的區(qū)別 6
1.4.1 單用戶、多用戶、網(wǎng)絡用戶 6
1.4.2 單片內核和微內核 6
1.4.3 GUI 與內核的分離 7
1.4.4 My Network Places 7
1.4.5 注冊表與文本文件 8
1.4.6 域和Active Directory 8
1.5 小結 9
第2 章 安裝Linux 服務器 10
2.1 硬件和環(huán)境考慮事項 10
2.2 服務器設計 10
2.3 安裝方法 11
2.4 安裝Fedora 發(fā)行版 12
2.5 安裝 13
2.6 安裝摘要 14
2.6.1 本地化部分 14
2.6.2 軟件部分 . 14
2.6.3 系統(tǒng)部分 . 15
2.6.4 用戶設置部分 20
2.6.5 安裝 21
2.7 安裝Ubuntu 服務器 .22
2.7.1 開始安裝 . 22
2.7.2 配置網(wǎng)絡 . 23
2.7.3 配置代理 . 23
2.7.4 配置Ubuntu 存檔鏡像 23
2.7.5 文件系統(tǒng)設置 23
2.7.6 配置文件的設置 24
2.7.7 SSH 安裝 .24
2.7.8 特色服務器快照 25
2.7.9 安裝完成 .25
2.8 小結 25
第3 章 在云中部署Linux 服務器 26
3.1 在云的背后 26
3.2 獲取、運行新的虛擬Linux服務器 26
3.2.1 免費運行的虛擬Linux 服務器 27
3.2.2 商業(yè)云服務提供商 28
3.3 小結 29
第II 部分 單主機管理
第4 章 命令行 32
4.1 Bash 簡介 32
4.1.1 作業(yè)控制 .33
4.1.2 環(huán)境變量 .34
4.1.3 管道 35
4.1.4 重定向 .35
4.2 命令行快捷鍵 .36
4.2.1 文件名擴展 36
4.2.2 環(huán)境變量作為參數(shù) 36
4.2.3 多個命令 .36
4.2.4 反引號 .37
4.3 文檔工具 37
4.3.1 man 命令 .37
4.3.2 texinfo 系統(tǒng) 38
4.4 文件(類型、所有權和權限) 38
4.4.1 普通文件 .39
4.4.2 目錄 39
4.4.3 硬鏈接 .39
4.4.4 符號鏈接 .39
4.4.5 塊設備 .39
4.4.6 字符設備 .40
4.4.7 列出文件:ls 40
4.4.8 更改所有權:chown 40
4.4.9 更改組設置:chgrp 41
4.4.10 更改模式:chmod 41
4.5 文件的管理和操作 43
4.5.1 復制文件:cp 43
4.5.2 移動文件:mv 43
4.5.3 鏈接文件:ln 44
4.5.4 查找文件:find .44
4.5.5 文件壓縮:gzip 44
4.5.6 文件壓縮:bzip2 45
4.5.7 文件壓縮:xz 45
4.5.8 創(chuàng)建目錄:mkdir 45
4.5.9 刪除文件或目錄:rm 45
4.5.10 顯示當前工作目錄:pwd .46
4.5.11 磁帶歸檔:tar .46
4.5.12 串聯(lián)文件:cat .47
4.5.13 一次一屏地顯示文件:more 或less 48
4.5.14 顯示文件的目錄位置:which 48
4.5.15 定位命令:whereis 48
4.6 編輯器 48
4.6.1 vi .49
4.6.2 emacs 49
4.6.3 pico 49
4.6.4 sed 50
4.7 其他工具 50
4.7.1 磁盤利用率:du 50
4.7.2 盤釋放:df 51
4.7.3 列出進程:ps 51
4.7.4 顯示進程的交互式列表:top ...52
4.7.5 給進程發(fā)信號:kill 53
4.7.6 顯示系統(tǒng)信息:uname 54
4.7.7 誰已登錄:who 54
4.7.8 who 的一個變體:w 54
4.7.9 切換用戶:su 54
4.8 綜合起來(移動用戶和其主目錄) 55
4.9 小結 57
第5 章 管理軟件 58
5.1 Red Hat 軟件包管理器 .58
5.2 使用RPM 管理軟件 60
5.2.1 查詢RPM 的信息 . 60
5.2.2 用RPM 安裝軟件(一起移動) .. 62
5.2.3 用RPM 卸載軟件(結束關系) .. 64
5.2.4 RPM 的其他功能 65
5.3 Yum 67
5.4 DNF 68
5.5 GUI RPM 包管理器 .68
5.5.1 Fedora 或Ubuntu 68
5.5.2 openSUSE 和SLE 69
5.6 Debian 軟件包管理系統(tǒng) 69
5.7 Ubuntu 中的軟件管理 70
5.7.1 查詢信息 . 70
5.7.2 在Ubuntu 中安裝軟件 70
5.7.3 在Ubuntu 中刪除軟件 71
5.8 編譯和安裝GNU 軟件 .72
5.8.1 獲取并解壓源包 72
5.8.2 尋找文檔 . 73
5.8.3 配置包 74
5.8.4 編譯包 74
5.8.5 安裝包 75
5.8.6 測試軟件 . 75
5.8.7 清理 76
5.9 從源代碼中構建時的常見問題 ...76
5.9.1 庫的問題 . 76
5.9.2 缺少配置腳本 77
5.9.3 被破壞的源代碼 77
5.10 小結 .77
第6 章 管理用戶和組 . 78
6.1 用戶的構成 78
6.2 保存用戶信息的位置 78
6.2.1 etc/passwd 文件 79
6.2.2 /etc/shadow 文件 81
6.2.3 /etc/group 文件 82
6.3 用戶管理工具 .82
6.3.1 命令行用戶管理 83
6.3.2 GUI 用戶管理器 85
6.4 用戶和訪問權限 86
6.4.1 理解SetUID 和SetGID 程序 ... 87
6.4.2 粘滯位 87
6.5 可插拔的身份驗證模塊 88
6.5.1 PAM 的工作方式 88
6.5.2 PAM 的文件及其位置 88
6.5.3 配置PAM 89
6.5.4 示例PAM 配置文件 . 90
6.5.5 other 文件 92
6.5.6 我無法登錄! 92
6.5.7 調試PAM 92
6.6 一場盛大的旅行 92
6.6.1 用useradd 創(chuàng)建用戶 92
6.6.2 用groupadd 創(chuàng)建組 93
6.6.3 使用usermod 修改用戶屬性 ... 94
6.6.4 用groupmod 修改組屬性 94
6.6.5 用userdel、groupdel刪除用戶和組 . 95
6.7 小結 95
第7 章 啟動和關閉 96
7.1 引導加載程序 .96
7.1.1 GRUB Legacy 96
7.1.2 GRUB 2 97
7.1.3 引導過程 101
7.2 init 進程 102
7.3 systemd 腳本 102
7.4 啟用和禁用服務 105
7.4.1 啟用服務 105
7.4.2 禁用服務 106
7.5 啟動和關閉細節(jié) 106
7.5.1 fsck 106
7.5.2 啟動到單用戶恢復模式 .107
7.6 小結 107
第8 章 文件系統(tǒng) .108
8.1 文件系統(tǒng)的結構 108
8.1.1 i-node 108
8.1.2 塊 109
8.1.3 超級塊 110
8.1.4 ext4 110
8.1.5 Btrfs 111
8.1.6 XFS 111
8.2 管理文件系統(tǒng) 111
8.2.1 掛載和卸載本地磁盤 111
8.2.2 使用fsck 114
8.3 添加新磁盤 115
8.3.1 分區(qū)概述 115
8.3.2 傳統(tǒng)的磁盤和分區(qū)命名約定 116
8.4 卷的管理 . 116
8.5 創(chuàng)建文件系統(tǒng) 121
8.6 小結 122
第9 章 核心系統(tǒng)服務 123
9.1 systemd 123
9.1.1 systemd 的作用 123
9.1.2 systemd 的優(yōu)勢 124
9.1.3 systemd 的工作原理 124
9.2 xinetd 127
9.2.1 /etc/xinetd.conf 文件 128
9.2.2 示例:簡單的服務條目(echo) ... 130
9.3 日志守護進程 132
9.3.1 rsyslog 132
9.3.2 systemd-journald . 138
9.4 cron 程序 . 139
9.4.1 crontab 文件 139
9.4.2 編輯crontab 文件 140
9.5 小結 141
第10 章 Linux 內核 142
10.1 內核到底是什么? 142
10.2 找到內核源代碼 143
10.2.1 獲得正確的內核版本 143
10.2.2 拆包內核源代碼 . 144
10.3 構建內核 144
10.3.1 準備配置內核 145
10.3.2 內核配置 146
10.3.3 編譯內核 149
10.3.4 安裝內核 150
10.3.5 引導內核 151
10.3.6 它是無效的! 152
10.4 給內核打補丁 . 152
10.4.1 下載和應用補丁 . 153
10.4.2 如果補丁有效 155
10.4.3 如果補丁無效 155
10.5 小結 155
第11 章 API(虛擬)文件系統(tǒng) 156
11.1 /proc 目錄中有什么? 156
11.2 一些有用的/proc 條目 157
11.3 常見的proc 設置和報告 159
11.3.1 SYN 泛洪保護 160
11.3.2 高容量服務器上的問題 160
11.4 SysFS .161
11.5 cgroups 162
11.6 tmpfs 163
11.7 小結 164
第Ⅲ部分 網(wǎng)絡與安全
第12 章 TCP/IP 166
12.1 層 166
12.1.1 數(shù)據(jù)包 166
12.1.2 TCP/IP 模型和OSI 模型 ...167
12.2 報頭 170
12.2.1 以太網(wǎng) 170
12.2.2 IP(IPv4) 171
12.2.3 TCP 173
12.2.4 UDP 176
12.3 完整的TCP 連接 .176
12.3.1 打開連接 176
12.3.2 傳輸數(shù)據(jù) 177
12.3.3 關閉連接 178
12.4 ARP 的工作原理 178
12.5 把IP 網(wǎng)絡合并起來 180
12.5.1 主機和網(wǎng)絡 180
12.5.2 子網(wǎng) 181
12.5.3 子網(wǎng)掩碼 181
12.5.4 靜態(tài)路由 182
12.5.5 動態(tài)路由和RIP 184
12.6 tcpdump 的細節(jié) 188
12.6.1 讀寫轉儲文件 .188
12.6.2 每個數(shù)據(jù)包捕獲或多或少的信息 188
12.6.3 性能影響 189
12.6.4 不要捕獲自己的網(wǎng)絡流量 189
12.6.5 解決慢名稱解析(DNS)的問題....189
12.7 IPv6 190
12.7.1 IPv6 地址格式 190
12.7.2 IPv6 地址類型 191
12.7.3 IPv6 向后兼容性 .191
12.8 小結 192
第13 章 網(wǎng)絡配置 193
13.1 模塊和網(wǎng)絡接口 193
13.1.1 網(wǎng)絡設備配置實用工具(ip、ifconfig 和nmcli) 194
13.1.2 示例用例:ifconfig、ip和nmcli . 194
13.1.3 在啟動時設置NIC 197
13.2 管理路由 202
13.2.1 示例用法:路由配置 203
13.2.2 顯示路由 204
13.3 簡單的Linux 路由器 206
13.4 VPC、子網(wǎng)、IP和路由配置(AWS 云示例) 208
13.4.1 VPC 和子網(wǎng)(AWS) . 208
13.4.2 Internet 網(wǎng)關和路由(AWS) 208
13.4.3 安全組(AWS) . 210
13.4.4 在自己的子網(wǎng)(AWS)中啟動Linux服務器 . 210
13.5 主機名配置 210
13.6 小結 212
第14 章 Linux 防火墻(Netfilter) 213
14.1 Netfilter 的工作原理 213
14.1.1 NAT 基礎知識 214
14.1.2 鏈 . 216
14.2 安裝Netfilter 218
14.3 配置Netfilter 219
14.3.1 保存Netfilter 配置 219
14.3.2 iptables 命令 221
14.3.3 firewalld . 225
14.4 實用的解決方案 227
14.4.1 簡單NAT:iptables 228
14.4.2 簡單NAT:nftables 228
14.4.3 簡單防火墻:iptables 229
14.5 小結 230
第15 章 本地安全 231
15.1 風險的常見來源 231
15.1.1 SetUID 程序 232
15.1.2 不必要的進程 233
15.2 選擇正確的運行級別 234
15.3 非人類用戶賬戶 234
15.4 受限的資源 235
15.5 降低風險 236
15.5.1 chroot .236
15.5.2 SELinux .238
15.5.3 AppArmor 239
15.6 監(jiān)視系統(tǒng) 239
15.6.1 日志記錄 239
15.6.2 使用ps 和netstat .240
15.6.3 監(jiān)視空間(使用df) 240
15.6.4 自動化監(jiān)視 240
15.6.5 保持聯(lián)系(郵件列表) 240
15.7 小結 241
第16 章 網(wǎng)絡安全 242
16.1 TCP/IP 和網(wǎng)絡安全 242
16.2 跟蹤服務 243
16.2.1 使用netstat 命令 .243
16.2.2 netstat 輸出的安全含義 244
16.3 綁定接口 244
16.4 關閉服務 245
16.4.1 關閉xinetd 和inetd 服務 ...245
16.4.2 關閉非xinetd 服務 245
16.5 監(jiān)視系統(tǒng) 246
16.5.1 充分使用syslog 246
16.5.2 使用MRTG 監(jiān)視帶寬 .247
16.6 處理攻擊 247
16.6.1 不要相信任何東西(也不要相信任何人) 247
16.6.2 修改密碼 248
16.6.3 拔掉插頭 248
16.7 網(wǎng)絡安全工具 . 248
16.7.1 nmap 248
16.7.2 Snort 248
16.7.3 Nessus 和OpenVAS .249
16.7.4 Wireshark/tcpdump 249
16.8 小結 249
第Ⅳ部分 Internet 服務
第17 章 域名系統(tǒng)(DNS) 252
17.1 主機文件 252
17.2 DNS 的工作原理 . 253
17.2.1 域名和主機命名約定 253
17.2.2 根域 253
17.2.3 子域 254
17.2.4 in-addr.arpa 域 255
17.2.5 服務器類型 256
17.3 安裝DNS 服務器 257
17.3.1 理解BIND 配置文件 258
17.3.2 具體信息 259
17.4 配置DNS 服務器 260
17.4.1 在named.conf 文件中定義主區(qū)域 261
17.4.2 在named.conf 文件中定義輔助區(qū)域 261
17.4.3 在named.conf 文件中定義緩存區(qū)域 262
17.5 DNS 記錄類型 262
17.5.1 SOA:權威的開始 262
17.5.2 NS:名稱服務器 263
17.5.3 A 和AAAA:地址記錄 ... 264
17.5.4 PTR:指針記錄 264
17.5.5 MX:郵件交換器 264
17.5.6 CNAME:規(guī)范名稱 265
17.5.7 RP 和TXT:文檔條目 265
17.6 設置BIND 數(shù)據(jù)庫文件 266
17.7 DNS 工具箱 270
17.7.1 host 270
17.7.2 dig 271
17.7.3 resolvectl 272
17.7.4 nslookup 272
17.7.5 whois . 273
17.7.6 nsupdate . 273
17.7.7 rndc 工具 273
17.8 配置DNS 客戶端 274
17.8.1 解析器 274
17.8.2 配置客戶端(傳統(tǒng)的) 275
17.9 小結 276
第18 章 文件傳輸協(xié)議(FTP) 277
18.1 FTP 的機制 277
18.2 獲取和安裝vsftpd 278
18.2.1 配置vsftpd . 278
18.2.2 啟動和測試FTP 服務器 ... 279
18.3 定制FTP 服務器 . 282
18.3.1 設置只允許匿名的FTP服務器 282
18.3.2 使用虛擬用戶設置FTP服務器 283
18.4 小結 286
第19 章 Apache Web 服務器 288
19.1 理解HTTP 288
19.1.1 報頭 288
19.1.2 端口 289
19.1.3 進程所有權和安全性 289
19.2 安裝Apache HTTP 服務器 .290
19.3 啟動和關閉Apache 291
19.4 測試安裝 292
19.5 配置Apache 292
19.5.1 創(chuàng)建簡單的根級別頁面 293
19.5.2 Apache 配置文件 293
19.5.3 常見配置選項 .293
19.6 Apache 故障排除 .297
19.7 小結 298
第20 章 簡單郵件傳輸協(xié)議(SMTP) .. 299
20.1 理解SMTP .299
20.1.1 基本的SMTP 細節(jié) 299
20.1.2 安全信息 300
20.1.3 電子郵件組件 .301
20.2 安裝Postfix 服務器 301
20.2.1 通過DNF 在Fedora、CentOS 或RHEL 發(fā)行版上安裝Postfix .301
20.2.2 在Ubuntu 中通過APT安裝Postfix 302
20.3 配置Postfix 服務器 302
20.3.1 main.cf 文件 302
20.3.2 檢查配置 304
20.4 運行服務器 .305
20.4.1 檢查郵件隊列 .305
20.4.2 刷新郵件隊列 .305
20.4.3 newaliases 命令 305
20.4.4 確保一切正常 .305
20.5 小結 306
第21 章 郵局協(xié)議和Internet 郵件訪問協(xié)議(POP 和IMAP) .307
21.1 POP3 和IMAP 基礎 308
21.2 Dovecot (POP3 和IMAP服務器) . 309
21.3 安裝Dovecot 309
21.3.1 Dovecot 配置文件和選項 . 310
21.3.2 配置Dovecot 312
21.3.3 運行Dovecot 314
21.3.4 檢查基本的POP3 功能 314
21.3.5 檢查基本IMAP 功能 315
21.4 郵件服務的其他問題 316
21.4.1 SSL/TLS 安全性 . 316
21.4.2 可用性 318
21.4.3 日志文件 319
21.5 小結 319
第22 章 Internet 語音協(xié)議(VoIP) ..320
22.1 VoIP 概述 320
22.1.1 VoIP 服務器 320
22.1.2 模擬電話適配器(ATA) 321
22.1.3 IP 電話 321
22.1.4 VoIP 協(xié)議 321
22.2 VoIP 實現(xiàn) 322
22.3 Asterisk 323
22.4 Asterisk 的安裝 323
22.5 理解Asterisk 配置文件和結構 324
22.5.1 撥號計劃:extensions.conf 328
22.5.2 模塊:modules.conf 328
22.6 Asterisk 網(wǎng)絡、端口和防火墻需求 329
22.7 配置PBX 330
22.7.1 本地擴展 331
22.7.2 外部連接(VoIP 中繼) 335
22.7.3 使用Twilio Elastic SIP Trunk來中繼 336
22.8 Asterisk 的維護和故障排除 342
22.8.1 Asterisk CLI 命令 342
22.8.2 有用的CLI 命令 342
22.8.3 VoIP 的常見問題 343
22.9 小結 344
第23 章 SSH .345
23.1 理解公鑰加密 . 345
23.2 SSH 基本信息(版本) 347
23.2.1 OpenSSH 和OpenBSD 347
23.2.2 SSH 客戶端的備選供應商 347
23.2.3 在基于RPM的系統(tǒng)上安裝OpenSSH 348
23.2.4 在Ubuntu 中通過APT安裝OpenSSH 348
23.3 服務器的啟動和停止 350
23.4 SSHD 配置文件 351
23.5 使用OpenSSH 351
23.5.1 ssh 客戶端程序 351
23.5.2 安全復制(scp)程序 354
23.5.3 安全FTP(sftp)程序 354
23.6 OpenSSH 客戶端使用的文件 . 355
23.7 小結 355
第Ⅴ部分 內部網(wǎng)服務
第24 章 網(wǎng)絡文件系統(tǒng)(NFS) 358
24.1 NFS 的機制 358
24.1.1 NFS 的版本 358
24.1.2 NFS 的安全考慮 .359
24.1.3 分區(qū)的掛載和訪問 359
24.2 在Fedora、RHEL和CentOS中啟用NFS 360
24.3 在Ubuntu和Debian中啟用NFS 361
24.4 NFS 的組件 361
24.5 配置NFS 服務器 362
24.5.1 配置文件/etc/exports 362
24.5.2 告訴NFS 服務器關于/etc/exports的進程信息 363
24.5.3 showmount 命令 364
24.5.4 服務器端NFS 問題的故障診斷 364
24.6 配置NFS 客戶端 365
24.6.1 mount 命令 .365
24.6.2 軟硬掛載 366
24.6.3 跨掛載磁盤 366
24.6.4 intr 選項的重要性 366
24.6.5 性能調優(yōu) 366
24.7 NFS 客戶端問題的診斷解決 .. 367
24.7.1 過期文件句柄 367
24.7.2 拒絕權限 367
24.8 示例NFS 客戶端和NFS服務器配置 368
24.9 NFS的常見用法 369
24.10 小結 . 370
第25章 Samba 371
25.1 SMB機制 371
25.1.1 用戶名和密碼 371
25.1.2 加密的密碼 372
25.1.3 Samba守護進程 . 372
25.1.4 通過RPM安裝Samba 373
25.1.5 通過APT安裝Samba . 373
25.2 Samba 的管理 . 373
25.3 創(chuàng)建共享 374
25.4 掛載遠程Samba 共享 377
25.5 Samba 用戶 378
25.5.1 創(chuàng)建Samba 用戶 378
25.5.2 允許空密碼 378
25.5.3 使用smbpasswd 修改密碼 379
25.6 使用Samba 對Windows 服務器進行身份驗證 379
25.7 Samba故障診斷 381
25.8 小結 382
第26 章 分布式文件系統(tǒng)(DFS) 383
26.1 DFS 概述 383
26.2 DFS 實現(xiàn) 385
26.3 小結 389
第27 章 輕量級目錄訪問協(xié)議(LDAP) 390
27.1 LDAP 基礎 . 390
27.1.1 LDAP 目錄 390
27.1.2 客戶端/服務器模型 391
27.1.3 LDAP 的使用 391
27.1.4 LDAP 術語 392
27.2 OpenLDAP . 392
27.2.1 服務器端守護進程 392
27.2.2 OpenLDAP 實用程序 392
27.2.3 安裝OpenLDAP 393
27.2.4 配置OpenLDAP 394
27.2.5 配置slapd .394
27.2.6 啟動和停止slapd 397
27.3 配置OpenLDAP 客戶端 398
27.4 搜索、查詢和修改目錄 399
27.5 使用OpenLDAP 進行用戶身份驗證 400
27.5.1 配置服務器 400
27.5.2 配置客戶端 401
27.6 小結 403
第28 章 打印 . 404
28.1 打印術語 404
28.2 CUPS .405
28.2.1 運行CUPS 405
28.2.2 安裝CUPS 405
28.2.3 配置CUPS 406
28.3 添加打印機 .407
28.3.1 本地打印機和遠程打印機 407
28.3.2 使用Web 界面添加打印機 ..408
28.3.3 使用命令行添加打印機 ...409
28.4 常規(guī)CUPS 管理 410
28.4.1 設置默認打印機 410
28.4.2 啟用、禁用和刪除打印機 410
28.4.3 接受和拒絕打印作業(yè) .410
28.4.4 管理打印特權 411
28.4.5 通過Web 界面管理打印機 ..411
28.5 使用客戶端打印工具 411
28.5.1 lpr 411
28.5.2 lpq 412
28.5.3 lprm 412
28.6 小結 413
第29 章 動態(tài)主機配置協(xié)議(DHCP) .. 414
29.1 DHCP 的機制 414
29.2 DHCP 服務器 415
29.2.1 通過RPM 安裝DHCP 軟件 415
29.2.2 在Ubuntu 上通過APT 安裝DHCP軟件 415
29.2.3 配置DHCP 服務器 415
29.2.4 示例dhcpd.conf 文件 418
29.3 DHCP 客戶端守護進程 .420
29.4 小結 421
第30 章 虛擬化 422
30.1 為什么要虛擬化? 422
30.2 虛擬化的實現(xiàn) . 423
30.2.1 Hyper-V 423
30.2.2 基于內核的虛擬機(KVM) ... 423
30.2.3 QEMU . 423
30.2.4 VirtualBox 424
30.2.5 VMware 424
30.2.6 Xen 424
30.3 KVM . 424
30.3.1 KVM 示例 425
30.3.2 管理KVM 426
30.4 在Ubuntu/ Debian 中設立KVM 427
30.5 容器 429
30.5.1 容器與虛擬機 429
30.5.2 Docker 430
30.6 小結 432
第31 章 備份 433
31.1 評估備份需求 . 433
31.1.1 數(shù)據(jù)量 . 433
31.1.2 備份硬件和備份介質 . 434
31.1.3 網(wǎng)絡吞吐量 434
31.1.4 數(shù)據(jù)恢復的速度和容易程度 435
31.1.5 重復數(shù)據(jù)的刪除 435
31.1.6 磁帶的管理 435
31.2 命令行備份工具 437
31.2.1 轉儲和恢復 437
31.2.2 tar 440
31.2.3 rsync 440
31.3 其他備份解決方案 440
31.4 小結 441
第Ⅵ部分 附錄
附錄A 在Flash/USB 設備上創(chuàng)建Linux安裝程序 444
附錄B 演示虛擬機和容器 450