1.1.1. 简介
何为操作系统?
我们知道计算机由硬件和软件两部分组成;
硬件它是计算机赖以工作的实体,包括显示器、键盘、鼠标、硬盘、CPU、主板、内存等实体物件。
软件它是由操作系统(Operating System,OS)和应用程序(Application)组成,操作系统会按照用户的要求协调整台计算机的工作,常见的操作系统比如 Windows操作系统、Linux分支Redhat,Centos,Ubuntu等、还有苹果的MacOS、手机上的IOS,Android等,应用程序比如 Office、微信、谷歌浏览器等。
操作系统本质也是软件的一部分,它是硬件基础上的第一层软件,是硬件和其它软件沟通的桥梁(或者说接口、中间人、中介等)。
操作系统会控制其他程序运行,管理系统资源,提供最基本的计算功能,如管理及配置内存、决定系统资源供需的优先次序等,同时还提供一些基本的服务程序,例如:
- 文件系统,提供计算机存储信息的结构,信息存储在文件中,文件主要存储在计算机的内部硬盘里,在目录的分层结构中组织文件。文件系统为操作系统提供了组织管理数据的方式。
- 设备驱动程序,提供连接计算机的每个硬件设备的接口,设备驱动器使程序能够写入设备,而不需要了解执行每个硬件的细节。简单来说,就是让你能吃到鸡蛋,但不用养一只鸡。
- 用户接口,操作系统需要为用户提供一种运行程序和访问文件系统的方法。如常用的 Windows 图形界面,可以理解为一种用户与操作系统交互的方式;智能手机的 Android 或 iOS 系统,也是一种操作系统的交互方式。
- 系统服务程序,当计算机启动时,会自启动许多系统服务程序,执行安装文件系统、启动网络服务、运行预定任务等操作。打个比方,操作系统就好像是一个政府,其它软件都会被它管控;操作系统在给其他软件提供各种便利的同时,还会约束其他软件不能为所欲为。
1.1.2. 操作系统如何选择
常见的主机操作系统(WindowsOS和linuxOS),这也是目前主流的两大操作系统。
当我们在选择服务器操作系统时,需要如何抉择?不同应用程序的部署场景又有哪些区别?
操作系统 | 形态 | 说明 |
Windows | 商业产品 | 微软公司1983年开始推出的一套商业操作系统。 |
Linux | 一个内核 | Unix的一个开源版本 |
Mac OS | 专属系统 | 苹果公司基于FreeBSD操作系统的改造。 |
其实Windows和Linux在哲学设计上是有本质区别的。Windows操作系统倾向于将更多的功能集成到操作系统内部,并将程序与内核相结合;而Linux不同于Windows,它的内核空间与用户空间有明显的界限。根据设计架构的不同,两者都可以使操作系统更加安全。而苹果操作系统只不过是UNIX的一个细小分支而已。
1.1.3. Windows操作系统的应用
Windows操作系统是美国微软(Microsoft)公司出的商业操作系统,有针对个人PC推出的XP,win7,win10,win11等,也有针对服务器主机推出的windows server system(WSS)操作系统,如经典的WindowsServer2008R2,WindowsServer2012R2等想必也是耳熟能详,还有目前主流的WindowsServer2016,WindowsServer2019等。
Windows标志性Logo
那什么场景下会用到WSS系统呢?
- AD+Exchange+Skype曾几何时是几乎所有大型公司IT基盘的唯一解决方案,大多大型跨国企业目前还是在使用这套解决方案。
- WSS与PC一样依旧有着友好的UI界面,便于我们可视化操作,门槛较低易上手,不熟悉Linux的开发人员使用更合适。
- Active Directory(也叫AD域)是目前大部分企业用于组织架构管理及员工账户管理的管理方案。
- Windows域体系架构+DNS+域账户管理可以便于运维人员维护服务器、PC账户,并且可以通过域控来下发权限。
- 基于软件来决定:比如软件部署基于ASP,NET,MSSQL,MS ACCESS或Visual Basic开发工具等软件就必须使用WindowsServer操作系统,还有就是SQLServer数据。
WSS系统的弊端:
- 安全问题,WSS本身是自带防火墙的,但是很多开发人员便于操作会直接将防火墙关闭,其实windows系列系统的漏洞比较多,需要经常性的更新补丁。
- 稳定性,windows系统底层代码复杂,稳定性不如linux。
- 资源开销,相比简洁的UNIX系统,资源开销更大,需要更多的资源开销来保障系统运行。
1.1.4. Windows操作系统的管理与维护
WSS服务器安全基线操作:
- 修改默认的rdp端口3389,默认的rdp端口易被黑客扫描攻击,修改端口后并添加白名单登陆,只允许白名单内的IP地址可远程登陆;有条件的一定要通过堡垒机来进行登陆。
- 服务器加域,通过域控管理主机(优点下面会讲到),不创建服务器本地账户或禁用本地administrator。
- 开启windows系统防火墙(一定不能关闭),运维人员为了方便会一刀切将windows防火墙关闭,其实这样服务器等于是处于裸奔状态,非常容易中毒。在部署服务器业务系统时需要拿到业务系统对外提供的端口,开启防火墙后只需通业务端口即可。
- 安装杀毒软件(可选),建议安装一套企业版的EDR防护软件,并实时更新病毒库。
- 高危系统漏洞补丁及时更新(可选),在不影响业务的情况下,高危漏洞补丁需要及时更新。
- 强密码策略,涉及开放登陆的账户密码策略一定要求复杂密码策略。
- windows服务器须关闭不必要的上网策略,只开通明细的上网条目。
完成以上几个步骤后,你的windows主机在内网的安全性会有很大的提升。
1.1.5. Windows操作系统下的域控管理
Microsoft Active Directory (AD) 域控,Active Directory 是一种用于管理组织网络上的计算机和其他硬件的 Microsoft 软件,它使 IT 团队能够将用户组织成逻辑组和子组,并轻松地为每个组分配访问控制。
最大好处之一就是其安全性,所有账号不会在本地计算机认证,而是连接到域控制器寻求认证。
当认证中心化后,公司便可以设定很多的安全策略,如什么时间段可以登录,那些用户的账号被锁定,密码必须有多长等。
对用户端来说好处:
- 统一管理电脑,公司IT人员都会在公司搭建域控,将公司所有电脑都加入到域中,然后进行权限的集中管理。
- 公司员工电脑加入域后,可以控制员工的登录权限,文件访问权限,打印权限,电脑配置修改权限等。
- 阻止一些软件自动升级,用户私自安装软件,电脑的安全得到了一定的防范。
- 对于用户集中权限管理后,IT管理工作效率高,现在很多企业的ERP软件,加密软件都和AD域进行帐户绑定,分配权限。
- 软件安装,可以进行软件的统一下发等等,减少IT管理工作量,等等。
Active Directory的安装部署和操作也非常简单,基本都是图形化界面操作,对于维护人员来说很容易上手。
总而言之windows系统非常合适初入职场的运维人员,不需要太多的学习成本。如果想
深入学习,建议可以学习powershell脚本,这是一款非常强大的windows编程语言。
1.1.6. LinuxOS介绍
首先说说什么是Linux系统?
早在Linux出现之前的二十年(大约在1970 年代),就有一个相当稳定而成熟的操作系统存在,那就是Unix系统。Linux就是基于Unix基础上进行的开发。
Linux的核心是由Linus Torvalds在1991年的时候给他开发出来并且丢到网络上提供大家下载,后来大家觉得Linux Kernel相当的小而精巧, 所以慢慢的就有相当多的人投入这个小东西的研究领域。
Linux标志性Logo
Linux系统目前有多个发行版本,并主要被应用于服务器端、嵌入式开发和PC桌面3大领域,其中服务器端领域是重中之重。例如,我们熟知的大型互联网企业(百度、腾讯、Sina、阿里等)都在使用Linux系统作为其服务器端的程序运行平台,全球及国内排名前1000的90%以上的网站使用的主流系统都是Linux系统。
Linux系统的优点
- 开源且免费,由于是Open Source的操作系统,所以他的程序代码可以被修改成适合在各种机器上面运行,且更适合开源软件的部署,对开发者更加友好。
- 与Unix系统兼容,该系统的构建采用了一些与Unix操作系统相同的技术,具备 Unix 几乎所有的优秀特性(系统的稳定性和安全性尤为突出)。
- 多用户操作系统,它具有非常好的私密性和稳定性,整个团队可以同时从本地或远程登录进行工作。
- 丰富的软件包,可以放心地安装和维护每一个在线资源库中的软件应用。
- 安全高效,Linux是具有可移植性的,软件一般直接copy就能使用,并且Linux相比于Windows复杂的底层代码更为精简,相对精简的底层架构优势就是更为稳定的运行。
- 总之Linux目前还是最主流的服务器操作系统。
整理了下Linux各大发行版本
发行版 | 代表产品 | 特点 | 包管理器 |
SUSE | Open Suse | 企业级的SUSE Linux,华丽的KDE桌面,图形化的包管理 | zypper |
Debian | Ubuntu | 最热门的linux发行版,安装简单,图形化界面华丽,驱动支持较好,社区活跃,版本更新快 | apt |
mint | 基于ubuntu的发行版,与ubuntu的最大区别是操作界面,接近windows os | apt | |
Redhat | RedHatLinux | RedHatLinux是RedHat公司最早发行的个人版本的Linux,自从2013年RedHat9.0版本发布后,Red Hat公司停止了开发 | yum |
RHEL | RHEL(red hat enterprise Linux): RedHat公司发布的面向企业用户的Linux操作系统,主要用在服务器上面,是收费版本,特点是稳定、有专业的技术支持 | yum | |
Centos | Redhat Linux社区版,剔除了Redhat Llinux专有代码,稳定,版本更新紧跟Redhat,大量用于服务器系统 | yum | |
Fedora | Fedora | 技术新,发布快,多种桌面环境 | yum |
Arch | Arch Linux | 轻量、灵活、滚动更新(实时更新) | pacman |
由于发展Linux distributions的社群与公司太多,RedHat, SuSE, Ubuntu, Fedora, Debian等等,很多人都很担心,如此一来每个distribution是否都不相同呢? 这就不需要担心了,因为每个Linux distributions使用的kernel都是http://www.kernel.org 所释出的,而他们所选择的软件,几乎都是目前很知名的软件,重复性相当的高, 例如网页服务器的Apache,电子邮件服务器的Postfix/sendmail,文件服务器的Samba等等。
此外,为了让所有的Linux distributions开发不致于差异太大,且让这些开发商在开发的时候有所依据,还有Linux Standard Base (LSB)等标准来规范开发者,以及目录架构的File system Hierarchy Standard (FHS)标准规范。唯一有可能有差别的,可能就是该开发者自家所开发出来的管理工具,以及套件管理的模式。所以说,基本上每个Linux distributions除了架构的严谨度与选择的套件内容外,其实差异并不太大。
1.1.7. Linux系统下的服务器管理与维护
目前使用最多的linux系统是redhat公司的产品rhel和centos、ubuntu。centos由于是开源的免费产品,大部分企业会选择centos系统,ubuntu对于桌面支持的比较友好,比较多的用于个人服务器,两者都是非常优秀成熟的开源linux系统。rhel是redhat推出的商用版本,是需要收取license费用,好处是有redhat的技术支持。
关于系统补丁,补丁是针对系统的一些安全问题进行的升级,其实升级补丁对于操作系统的稳定来说是有一定风险的,这里不建议频繁的取更新系统补丁。
那么怎么做好系统的安全措施,分几个方面来说:
- 网络层面:在网络层面尽可能的精细化服务器的访问控制,例如,只允许堡垒机登陆端口、如80、443等必要的业务端口;
- iptables:安装iptables服务以便来控制例如ssh远程的登陆IP;
- selinux:启用SELinux服务(安全增强的Linux);
- root:建议禁用root密码登陆,使用ssh key;
- SSH:设置SSH密码复杂度、超时、密码失效时间等强制性配置;
- 日志:配置rsyslog来记录系统日志;
- 监控:配置zabbix用于监视系统的CPU、内存、磁盘性能状况;
- yum:对于内部linux服务器一般不开启上网权限,可以搭建本地的yum服务器,通过本地yum服务器部署一些软件包;
- NTP:搭建内部NTP服务,统一主机日期时间,主机时间不一致可能会导致各种各样异常问题;
- DNS:搭建内部DNS服务,使用主机名代表主机IP,这样在以后的一些服务器迁移或软件搬迁时可以实现平滑升级;
关于系统目录分区的介绍
- /:根目录,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中
- /bin:/usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
- /boot:放置linux系统启动时用到的一些文件。/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小100M即可
- /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt。
- /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d修改配置文件之前记得备份。注:/etc/X11存放与x windows有关的设置。
- /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~test表示用户test的家目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据
- /lib:/usr/lib:/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,比较重要的目录为/lib/modules。
- /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下,通常这个目录会自动出现在装置目录下。如加载硬盘于/disk 中,此目录下就会自动产生目录/disk/lost+found
- /mnt:/media:光盘默认挂载点,通常光盘挂载于/mnt/cdrom下,也不一定,可以选择任意位置进行挂载。
- /opt:给主机额外安装软件所摆放的目录。如:FC4使用的Fedora 社群开发软件,如果想要自行安装新的KDE 桌面软件,可以将该软件安装在该目录下。以前的 Linux 系统中,习惯放置在 /usr/local 目录下
- /proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等
- /root:系统管理员root的家目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。
- /sbin:/usr/sbin:/usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能”查看”而不能设置和使用。
- /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
- /srv:服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内
- /usr:应用程序存放目录,/usr/bin 存放应用程序, /usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local:存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录,使用 man ls时会查询/usr/share/man/man1/ls.1.gz的内容建议单独分区,设置较大的磁盘空间
- /var:放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message: 所有的登录文件存放目录,/var/spool/mail: 邮件存放的目录, /var/run: 程序或服务启动
1.1.8. 小结
Windows系统的哲学理念:
- 讲究的是简单、所有人都能使用;
- 尽可能将操作图形化;
- 微软官方提供重要支持和服务;
- 注册表是Windows核心组件,对整个系统进行配置;
Linux思想的哲学:
- 一切皆文件,Linux配置文件就是由无数个小文件组成的文件系统;
- 由众多单一目的小程序组成,一个程序只实现一个功能,而且要做好;
- 尽量避免跟用户交互,Linux的初衷是面向开发者和服务器,在用户交互方面不是它的长处;
- 用纯文本文件保存配置信息,所有的配置信息都可以用文本打开;
- 软件自由,基本很多软件都是免费开源的;