vlambda博客
学习文章列表

面向网工的Linux网络01

如果您想知道如何降低支持您主机网络部署的服务成本,那么来对地方了。或者,如果您正在考虑如何保护DNS、DHCP或RADIUS等网络服务,也会为您提供帮助。我会一定程度解释为什么选择Linux来提供各种网络功能或服务。在此过程,帮助您选择Linux发行版,向您展示如何使用Linux进行故障排除,并介绍一些您可能不知道自己需要的服务。

本系列重点是Linux,探讨Linux平台和各种基于Linux的操作系统——特别是Linux如何很好地提供网络服务。在查看操作系统的基本配置和故障排除之前,将首先讨论操作系统的一些历史。我们将在Linux上构建各种网络相关的服务,这些服务在大多数企业中很常见。然后,我们将在真实的主机上构建真实的服务,并在此过程中重点关注每个服务的安全性和故障排除。当完成这些实验时,您应该对这些服务中的每一个都非常熟悉,以便开始在自己的网络中实现其中一些或全部。

为什么Linux非常适合网络团队

为什么要将Linux用于这些目的?首先,Linux的体系结构、历史和文化引导管理员编写脚本和自动化流程。尽管将这一点发挥到极致可能会让人陷入有趣的境地,但编写例行任务的脚本可以真正节省时间。事实上,编写非常规任务的脚本,例如每年需要执行一次的任务,也可以起到救命的作用——这意味管理员不需要重新学习如何执行12个月前做过的事情。

编写常规任务脚本是一个更大的优势。多年来,Windows管理员已经认识到,在图形用户界面(GUI)中执行一个任务数百次,就会导致我们至少几次的错误点击。另一方面,像这样的脚本任务可以保证一致的结果。不仅如此,在网络上,管理员经常为成百上千个站点执行操作,脚本通常是在更大范围内完成任务的唯一方法。

网络管理员更喜欢Linux平台的另一个原因是,Linux(在此之前还有Unix)自网络出现以来就已经存在。在服务器端,Linux或Unix服务定义了这些服务,其中匹配的Windows服务是副本,随着时间推移,这些副本大多已发展为具有奇偶性。

在工作站端,如果您需要一个工具来管理或诊断网络上的某些东西,它可能已经安装好了。如果您要的工具没有安装,则只需一行命令即可安装并运行该工具,以及所需的任何其它工具、库或依赖项。添加该工具不需要lisence——Linux和安装在Linux上的任何工具都是免费开源的。

最后,从历史上看,在服务器端和桌面端,Linux都是免费的。即使是现在,当盈利性公司对一些主要的支持发行版(例如Red Hat和SUSE)收取许可费用时,这些公司也会提供这些发行版的免费版本。Red Hat提供了Fedora Linux和CentOS,它们都是免费的,并在某种程度上可以作为Red Hat Enterprise Linux新特性的试验台版本。openSUSE(免费)和SUSE Linux(收费)也非常相似,SUSE发行版的测试更加严格,版本升级的节奏也更加规律。企业版通常是长期许可的,该许可允许客户访问技术支持,在许多情况下,还可以访问操作系统更新。

许多公司确实选择了授权的企业级版本的操作系统,但其它许多公司选择在OpenSUSE、CentOS或Ubuntu的免费版本上构建他们的基础设施。Linux免费版本的可用性意味着许多组织可以以更低的IT成本运营,这极大地影响了我们这行业的发展方向。

为什么Linux很重要?

多年来,业界的一个笑话是,明年将永远是Linux桌面年——我们都将停止为桌面和商业应用程序支付许可费,一切都将是免费的开源。

但事实是,Linux已经在许多环境的服务器和基础设施方面取得了巨大进展。

Linux已成为大多数据中心的中流砥柱,即使这些用户认为它们是仅限Windows的环境。许多基础设施组件都在后台运行Linux,并带有一个很好的Web前端,可以将其变成厂商解决方案。如果您有一个存储区域网络 (SAN),它可能运行Linux,您的负载均衡器、接入点和无线控制器也是如此。许多路由器和交换机都运行Linux,几乎所有新的软件定义网络解决方案也是如此。

无一例外,信息安全产品也都是基于Linux。传统防火墙和下一代防火墙、入侵检测和防御系统 (IDS/IPS)、安全信息和事件管理 (SIEM) 系统以及日志服务器-Linux、Linux、Linux!

为什么Linux如此普遍?原因有很多:

  • 它是一个成熟的操作系统。

  • 它有一个完整的补丁和更新系统。

  • 基本特性配置起来很简单。不过,操作系统上更复杂的特性可能比Windows上更难配置。

  • 另一方面,在Windows环境中可能出售的许多特性可以免费安装在Linux上。

  • 由于Linux几乎完全是基于文件的,如果您是一个基于Linux的供应商,那么将它保持在一个已知的基线上是相当容易的。

  • 您可以在Linux上构建任何东西,只要适当地混合使用免费和开源包、一些脚本,也许还有一些自定义编码。

  • 如果你选择了正确的发行版,操作系统本身就是免费的,这对于试图实现利润最大化的供应商或试图降低成本的客户来说是一个很大的动力。

如果新的Infrastructure as Code(基础架构即代码)吸引了您,那么您会发现几乎每种编码语言都在Linux中呈现,并且正在积极发展——从Go和Rust等新语言,一直到Fortran和Cobol。甚至从Windows发展而来的PowerShell和.NET在Linux上也完全受支持。大多数基础架构编排引擎(例如,Ansible、Puppet和Terraform)首先在Linux上启动并支持。

在当今IT基础设施的云计算方面,Linux是免费的这一事实已经见证了云服务提供商几乎从一开始就把他们的客户推向云计算的这一端。如果您订阅了任何被描述为无服务器或服务的云服务,那么在幕后,该解决方案很可能几乎都是Linux。

最后,既然我们已经看到IT的服务器和基础设施转向Linux,我们应该注意到今天的手机正在稳步成为当今计算现实中最大的桌面平台。在当今世界,手机通常要么基于iOS,要么基于Android,两者都是基于Unix/Linux的!因此,通过改变桌面的定义,Linux桌面之年悄然降临。

所有这些都使Linux对当今的网络或IT专业人员来说非常重要。因些,很有必要推一期侧重于将Linux用作网络专业人员的工具箱,以及在Linux平台上安全地配置和交付各种网络服务。

Linux的历史

为了理解Linux起源,我们必须讨论Unix的起源。Unix是在20世纪60年代末和70年代初在贝尔实验室开发出来的。Dennis Ritchie和Ken Thompson是Unix的主要开发者。Unix这个名字实际上是一个双关语,是基于Multics这个名字,Multics是一个早期的操作系统,激发了Unix的许多特性。

1983年,Richard Stallman和自由软件基金会启动了GNU(递归首字母缩写词 - GNU's Not Unix)项目,它致力于创建一个免费的类似UNIX的操作系统。这种努力产生了GNU Hurd内核,大多数人认为它是今天Linux版本的前身(SFS更希望我们称它们为GNU/Linux)。

1992年,Linus Torvalds发布了Linux,这是第一个完全实现的GNU内核。需要注意的是,主流Linux通常被认为是一个可以用来创建操作系统的内核,而不是一个单独的操作系统。Linux仍然由Linus Torvalds作为主要开发人员进行维护,但是今天,有一个更大的个人和公司团队作为贡献者。因此,虽然从技术上讲Linux只指内核,但在业界,Linux通常指任何构建在内核之上的操作系统。

自20世纪70年代以来,已经发布了数百种不同版本的Linux。其中每一个通常被称为发行版(简称distro)。它们都基于当时的Linux内核,以及一个用于操作系统和更新的安装基础设施和存储库系统。大多数在某些方面都是独一无二的,无论是在基本软件包的组合中还是在发行版的重点上——有些可能尺寸较小,适合于较小的硬件平台,有些可能侧重于安全性,有些可能打算作为通用企业的主力操作系统,等等。

一些发行版在一段时间内一直是“主流”,而随着时间的推移,一些发行版的受欢迎程度已经下降。一些发行版在一段时间内一直是“主流”,而随着时间的推移,一些发行版的受欢迎程度已经下降。它们共享的东西是Linux内核,每个人都在此基础上创建自己的发行版。许多发行版的操作系统基于另一个发行版,对其进行定制足以证明将其实现称为新发行版是合理的。这种趋势给了我们“Linux家族”的想法——数十个发行版可以从一个共同的“根”发展而来。这在DistroWatch网站上进行了探索,网址为 https://distrowatch.com/dwres.php?resource=family-tree。
Linux的替代品,特别是在Intel/AMD/ARM硬件领域,是Berkeley Software Distribution (BSD) Unix。BSD Unix是最初的贝尔实验室Unix的后代;它不是基于Linux的。但是,BSD及其许多衍生产品仍然是免费的,并且与Linux共享许多特性(以及相当数量的代码)。
直到今天,Linux和BSD Unix的重点是它们都是免费的操作系统。虽然商业版和衍生产品当然是可用的,但几乎所有这些商业版都有相应的免费版本。
主流数据中心Linux

如前所述,Linux并不是一个整体的“东西”,而是一个由不同发行版组成的多样化甚至分裂的生态系统。每个Linux发行版都基于相同的GNU/Linux内核,但是它们被打包到具有不同目标和理念的组中,因此当用户想开始在其服务器和工作站平台上标准化时,可以有各种各样的选择。

我们在现代数据中心最常见的主要发行版是Red Hat、SUSE和Ubuntu,而FreeBSD Unix是另一种选择(现在比过去流行得多)。这并不是说其它发行版不会出现在台式机或数据中心,但这些是您最常看到的发行版。这些都有桌面和服务器版本——服务器版本通常更加“精简”,包括办公、媒体工具以及通常删除了GUI。

Red Hat

Red Hat最近被IBM收购(2019年),但仍然将Fedora作为其主要项目之一。Fedora有服务器和桌面版本,并且仍然是免费的。Fedora的商业版本是Redhat Enterprise Linux (RHEL)。RHEL获得商业许可,并有一个正式的支持渠道。

CentOS最初是一个免费的、社区支持的Linux版本,在功能上与Red Hat Enterprise版本兼容。这使得它在许多用户的服务器中非常流行。2014年1月,红帽公司将CentOS纳入其阵营,成为发行版的正式赞助商。2020年底,宣布CentOS将不再作为与RHEL兼容的发行版进行维护,而是宁愿“适应”在Fedora和RHEL之间的某个位置——不像“前沿”那么新,但也不像RHEL那么稳定。作为这一改变的一部分,CentOS被重新命名为CentOS Stream。

最后,Fedora是一个拥有最新特性和代码的发行版,在这里可以尝试和测试新特性。CentOS Stream发行版更加稳定,但仍然是RHEL的“上游”版本。RHEL是一个稳定的、经过充分测试的操作系统,提供了正式的支持。

Oracle/Scientific Linux

Oracle/Scientific Linux也出现在许多数据中心(以及Oracle的云产品)。Oracle Linux是基于Red Hat的,他们宣传他们的产品是完全兼容RHEL的。Oracle Linux可以免费下载和使用,但Oracle的支持是需要订阅的。

SUSE

OpenSUSE是SUSE Linux基于的社区发行版,类似于RedHat Enterprise Linux基于Fedora的情况。

在Linux的早期,SUSE Linux Enterprise Server(通常称为SLES)是美国Red Hat发行版的主要欧洲竞争对手。然而,那些已成为过去,在印第安纳州和意大利的现代数据中心中,SUSE Linux同样可能被使用。

类似于RedHat和CentOS之间的关系,SUSE维护桌面和服务器版本。此外,他们还维护一个“高性能”版本的操作系统,该系统带有为并行计算预先安装的优化和工具。OpenSUSE占据了SLES的“上游”位置,在SLES中,可以在发行版中引入更改,而发行版对可能并非总是第一次成功的更改更为“宽容”。OpenSUSE Tumbleweed发行版拥有最新的功能和版本,而OpenSUSE Leap在版本控制和稳定性方面更接近SLE版本的操作系统。这种模式与RedHat系列发行版相似,这并非偶然。

Ubuntu

Ubuntu Linux由Canonical维护,可以免费下载,没有单独的商业或“上游”选项。它基于Debian,有一个独特的发布周期。服务器和桌面版本的新版本每6个月发布一次。每2年发布一个长期支持 (LTS) 版本,从发布之日起对服务器和桌面的LTS版本的支持运行5年。与其它较大的参与者一样,支持是基于订阅的,尽管来自社区的免费支持也是一个可行的选择。

正如你所期望的那样,Ubuntu的服务器版本更专注于核心操作系统、网络和数据中心服务。在服务器版本的安装过程中,GUI通常会被取消选择。然而,桌面版本安装了几个用于办公效率、媒体创建和转换的软件包,以及一些简单的游戏。

BSD/FreeBSD/OpenBSD

正如我们之前提到的,该家族的BSD“树”源自Unix而不是Linux内核,但是有很多共享代码,尤其是当您查看不属于内核的软件包时。

FreeBSD和OpenBSD在历史上被视为比早期版本的Linux“更安全”。正因为如此,许多防火墙和网络设备都是基于BSD操作系统构建的,并且至今仍在这个操作系统上。其中一个比较“可见”的BSD变体是苹果的商用操作系统OS X(现在的macOS)。这是以Darwin为基础的,而Darwin又是BSD的分支。

然而,随着时间推移,Linux已经发展到具有与BSD相同的大部分安全功能,直到BSD可能拥有比大多数Linux替代品更安全的默认设置。

Linux现在有了安全模块,大大提高了它的安全性。SELinux和AppArmor是可用的两个主要选项。SELinux从Red Hat发行版发展而来,并在SUSE、Debian和Ubuntu上全面实现。AppArmor通常被视为一个更易于实现的选项,具有许多(但不是全部)相同的功能。AppArmor可以在Ubuntu、SUSE和大多数其它发行版上使用(RHEL除外)。这两个选项都采用基于策略的方法,以显著提高安装它们的操作系统的整体安全性。

随着Linux的发展更加注重安全性,特别是SELinux或AppArmor可用于(并推荐)大多数现代Linux发行版,BSD与Linux的“更安全”论点现在主要是一种历史看法,而不是事实。

专业Linux发行版

大多数商用Network-attached Storage(NAS)和SAN提供商都基于Linux或BSD。目前,开源NAS/SAN服务的领跑者似乎是TrueNAS(以前的FreeNAS)和XigmaNAS(以前的NAS4Free)。两者都有免费和商业服务。

开源的防火墙

网络和安全公司提供了各种各样的防火墙设备,其中大多数是基于Linux或BSD的。许多公司确实提供免费的防 火墙,其中比较流行的是pfSense(免费版本和预构建的硬件解决方案),OPNsense(免费版本,捐赠)和Untangle(也有一个商业版本)。Smoothwall是另一种选择,有免费和商业版本。

Kali Linux

Kali Linux是BackTrack和之前的KNOPPIX的后裔,是一个基于Debian的发行版,专注于信息安全。这个发行版的基本目标是在一个平台上收集尽可能多的有用的渗透测试和道德黑客工具,然后确保它们都可以在不相互干扰的情况下工作。随着操作系统和工具的更新(使用apt工具集),较新版本的发行版专注于维护此工具的互操作性。

SIFT

SIFT是SANS研究所的取证团队编写的一份发行版,专注于数字取证、事件响应工具和调查。与Kali类似,SIFT的目标是在一个领域——数字取证和事件响应(DFIR)——提供免费/开源工具的“一站式商店”。在历史上,这是一个基于Ubuntu的发行版,但是在最近几年,这已经改变了——SIFT现在也作为一个脚本发布,用于在Ubuntu桌面或Linux的Windows服务(基于Ubuntu)上安装工具。

Security Onion

Security Onion也类似于Kali Linux,因为它包含了一些信息安全工具,但它更多的是从防御者的角度出发。该分发集中于威胁搜索、网络安全监控和日志管理。这个发行版中的一些工具包括Suricata、Zeek和Wazuh,这只是其中的一小部分。

虚拟化

虚拟化在采用Linux和同时使用多个发行版的能力方面发挥了重要作用。有了本地虚拟机监控程序,网络专业人员可以在笔记本电脑或台式电脑上运行数十台不同的“机器”。虽然VMware是这一领域(桌面和专用虚拟化)的先驱,但后来Xen、KVM、VirtualBox和QEMU也加入了进来,仅举几例。虽然VMware产品都是商业产品(VMware Player除外),但VMware的旗舰虚拟机监控程序ESXi也作为独立产品免费提供。

Linux和云计算

Linux日益增长的稳定性以及虚拟化已成为事实,在许多方面使我们现代的云生态系统成为可能。再加上部署和维护后端基础设施的自动化能力不断增强,以及web应用程序和应用程序编程接口(API)开发人员所能获得的复杂性,我们所得到的就是今天的云基础设施。它的一些关键特点如下:

  • 多租户基础设施,其中每个客户在云中维护自己的实例(虚拟服务器和虚拟数据中心)。

  • 细粒度成本,可以按月计算,更常见的是,按时间使用的资源计算。

  • 它与许多现代数据中心一样好或更好的可靠性(尽管最近的中断表明当我们在同一个篮子里放太多鸡蛋时会发生什么)。

  • API使您的基础设施自动化相对容易,以至于对于许多公司来说,配置和维护他们的基础设施已经成为一种编码工作(通常称为基础设施即代码)。

  • 这些API可以根据需要扩大或缩小容量,无论是存储、计算、内存、会话数还是全部。

然而,云服务是为了盈利而开展业务的——任何决定将数据中心“叉车”到云服务的公司都可能会发现,所有这些小额费用都会随着时间的推移而增加,最终达到或超过其内部数据中心的成本。从资金方面来看,它仍然很有吸引力,因为这些资金花在运营费用上,比内部资本支出模型(通常被称为资本支出模型和运营支出模型)更容易直接归属。

正如您所看到的,将数据中心迁移到云服务确实给用户带来了很多好处,而这些好处可能是内部部署模型无法提供的。随着更多的纯云特性被使用,这一点变得更加明显。

为您的组织选择一个Linux发行版

在许多方面,为数据中心选择哪个发行版并不重要——主要发行版都具有类似的功能,通常具有相同的组件,并且通常具有类似的供应商或社区支持选项。但是,由于这些发行版之间的差异,重要的是选择一个发行版或一组类似的发行版。

理想的结果是,您的组织将一个发行版标准化,您的团队可以利用这种发行版来发展他们的专业知识。这也意味您可以与同一个升级团队合作以获得更高级的支持和故障排除,无论是咨询组织、付费供应商支持团队还是各种互联网论坛上的一群志同道合的人。许多组织与“三巨头”之一(Red Hat、SUSE 或 Canonical,取决于它们的发行版)购买支持合同。

你不希望看到的情况是,我看到一些客户最终陷入这种境地。在雇佣了一个渴望学习的人之后,一年后,他们发现他们当年构建的每台服务器都使用了不同的Linux发行版,每台服务器的构建都略有不同。这是一条通往你的基础设施的捷径,成为众所周知的“科学实验”,永远不会结束!

与另一个客户相比,他们的第一台服务器是SUSE Linux for SAP,顾名思义,这是一台SUSE Linux服务器,与客户机购买的SAP应用程序(SAP HANA)打包在一起。随着他们的Linux足迹随着更多服务而增长,他们坚持使用SUSE平台,但选择了“真正的”SLES发行版。这让他们在一个操作系统上工作,对他们来说同样重要的是,在SUSE上有一个单一的支持许可证。他们能够将培训和专业知识集中在SUSE上。对他们来说,另一个关键的好处是,随着他们添加更多服务器,他们能够以分阶段的方式应用单一的更新和补丁。在每个补丁周期中,不太关键的服务器首先得到补丁,而核心业务应用程序服务器则在测试完成后的几天内得到补丁。

选择发行版的主要建议是坚持使用较大的发行版之一。如果你的团队成员对其中一项有强烈的感觉,那么一定要考虑到这一点。您可能希望与主流发行版中的一个保持相当的距离,以便在您的组织中使用它,这是一个定期维护的发行版,并且有一个付费订阅模式可供支持——即使您现在不需要付费支持,但情况可能并不总是如此。

技术交流群(仅限行业和技术交流,严禁广告,非诚勿扰):