查看原文
其他

网络安全之操作系统安全

计算机与网络安全 计算机与网络安全 2022-06-01

一次性进群,长期免费索取教程,没有付费教程。

教程列表见微信公众号底部菜单

进微信群回复公众号:微信群;QQ群:16004488


微信公众号:计算机与网络安全

ID:Computer-network

系统安全是指在系统生命周期内应用系统安全工程和系统安全管理方法,辨识系统中的隐患,并采取有效的控制措施使其危险性最小,从而使系统在规定的性能、时间和成本范围内达到最佳的安全程度。


一、操作系统安全概述


操作系统是信息系统的重要组成部分。首先,操作系统位于软件系统的底层,需要为其上运行的各类应用服务提供支持;其次,操作系统是系统资源的管理者,对所有系统软、硬件资源实施统一管理;此外,作为软硬件的接口,操作系统起到承上启下的作用,应用软件对系统资源的使用与改变都是通过操作系统来实施。因此,操作系统的安全在整个信息系统的安全性中起到至关重要的作用,没有操作系统的安全,信息系统的安全性将犹如建在沙丘上的城堡一样没有牢固的根基。


当前云计算、大数据、移动互联网、物联网等技术快速发展,互联网使世界范围内的信息共享和业务协同成为可能。随着人们对计算机网络的依赖性增强,计算机安全问题也突出出来。作为计算机网络建设的核心基石之一,操作系统安全建设早已被提上日程。


(一)操作系统安全


操作系统是控制和管理计算机系统内各种硬件和软件资源、有效地组织多道程序运行的系统软件(或程序集合),是用户与计算机之间的接口。操作系统是最基本的系统软件,是计算机用户和计算机硬件之间的接口程序模块,是计算机系统的核心控制软件,负责控制和管理计算机系统内部各种资源,有效组织各种程序高效运行,从而为用户提供良好的、可扩展的系统操作环境,达到使用方便、资源分配合理、安全可靠的目的。


作为信息系统的基石,日益完善的操作系统为用户提供强大而灵活的交互功能,为人们的生活带来便捷,但这种优势是以系统安全为代价的。在不断激增的各种网络安全问题中,如果没有合理设置和防护,操作系统会成为计算机系统的薄弱点,让人们在遭遇信息威胁时变得更加脆弱。


为了实现上述安全目标,操作系统需要从用户管理、资源访问行为管理以及数据安全、网络访问安全等各个方面对系统行为进行控制,保证破坏系统安全的行为难以发生。同时,还需要对系统的所有行为进行记录,使攻击等恶意行为一旦发生就会留下痕迹,使安全管理人员有据可查。


用户对系统的不当使用是威胁操作系统安全的最主要因素之一,这里既包括合法用户因为误操作而对系统资源造成的破坏,也包含恶意攻击者冒用合法用户身份对系统的攻击破坏。因此,操作系统安全的首要问题是对系统用户进行管理,确保正常情况下登录用户的合法性,然后才能以此为基础构建整个操作系统安全体系。


1、用户身份标识与鉴别


在操作系统中,对用户身份的标识与鉴别是系统安全的基础,因为只有真实地认定行为主体的身份后,对主体的访问控制以及安全审计等才有意义。身份标识要求凡是进入操作系统的用户,系统都能够产生一个内部标识来标识该用户的身份;而身份鉴别则是指在用户登录系统时,系统能够通过不同的认证手段,对用户身份的真实性进行认定。一旦用户通过了认定,该用户的进程都将与该用户绑定,可以通过进程的行为追溯到进程的所有者用户。


可以说,身份鉴别是操作系统安全的第一道门槛,不同的鉴别手段带来的安全强度也有所不同:口令认证是最简单也是使用最为广泛的认证方式,但存在易向外部泄露、易于猜测等弱点;智能卡认证则将数字签名认证与芯片硬件加解密相结合,一次一密地验证身份真实性,并且智能卡的双因子认证模式不但要求用户要知道什么(智能卡的PIN值),而且还要拥有什么(智能卡),有效提高了安全性;此外,还可以利用指纹、虹膜或语音等用户的生理或行为特征来进行生物特征认证,通过唯一性的生物特征来防止认证信息的仿冒。


2、用户分组管理


当前主流的通用操作系统都是多用户、多任务的操作系统,系统上可以建立多个用户,而多个用户可以在同一时间内登录同一个系统,并且在执行各自不同的任务时互不影响。不同用户具有不同的权限,每个用户是在权限允许的范围内完成不同的任务。


在多用户的操作系统尤其是应用规模较大的操作系统中,过多的系统用户将给安全管理带来难度。因此,当系统用户较多时,通常将具有相同身份和属性的用户划分到一个逻辑集合(即一个用户组)中,然后通过一次性赋予该集合访问资源的权限而不再单独给用户赋予权限来简化管理程序,提高管理效率。除了用户可以创建本地组,操作系统一般还会根据系统访问与管理权限的不同实现内置分组。


操作系统安全,在《信息安全技术操作系统安全技术要求》中定义为:操作系统所存储、传输和处理的信息的保密性、完整性和可用性的表征。操作系统安全在计算机信息系统的整体安全性中具有至关重要的作用,没有操作系统提供的安全性,计算机信息系统的安全是没有基础可言的。


从操作系统自身角度来看,目前的操作系统安全主要包括系统自身的安全、物理安全、逻辑安全、应用安全以及管理安全等。操作系统自身安全主要是指系统设计时无人为或逻辑问题导致的错误;物理安全主要是指系统设备及相关设施受到物理保护,使之免受破坏或丢失;逻辑安全主要指系统中信息资源的安全;应用安全主要指基于系统建立的应用级别的安全,包括应用的配置、管理等;管理安全主要包括各种管理的政策和机制。

(二)数据安全


操作系统的数据安全主要指通过安全机制来保护操作系统运行时产生的数据以及系统用户数据的安全。数据安全主要包括数据完整性与数据机密性2个方面。


数据完整性主要指数据不受未经授权的修改,可以分为数据完整性保护和数据完整性监测2个方面。数据完整性保护是对数据完整性的主动保护,通过访问控制等安全机制,控制只有满足完整性条件时才能修改数据。Windows系统的MIC机制、Linux系统的SELinux等机制都可以为数据完整性保护提供支持。数据完整性检测是通过完整性检测机制对指定文件生成验证信息,然后在系统使用过程中检测和报告系统中受保护文件被改动、增加、删除、属性改动的详细情况,属于事后追查技术。典型的数据完整性检测工具有UNIX系统的Tripwire等。


数据保密性则是指数据信息只能被数据拥有者授权的用户获取,其他用户以及服务的提供者都无权获取数据信息。当前主要基于密码学对数据进行加密存储来实现对数据机密性的保护,由于数据在文件系统中以密文存储,因此,即使文件丢失,也很难造成信息的泄露。在商用操作系统中,Windows系统的Bit Locker驱动器加密实现对操作系统卷上存储的所有数据进行加密保护,EFS(Encrypting File System)则在NTFS文件系统上实现对文件或目录的加密;Linux内核也提供了企业级加密文件系统e Cryptfs,通过叠加在Ext2、Ext3等其他文件系统上实现对文件的加密存储,为上层应用提供透明、动态、高效和安全的加密功能。除了加密存储之外,在操作系统中通过访问控制机制控制用户对数据的读操作也在一定程度上保护信息不被泄露。


(三)网络安全支持


防火墙为信息系统安全构建了网络屏障,操作系统也提供了对防火墙技术的支持。在Linux操作系统中提供了Netfilter/IPtables信息分组过滤系统,Netfilter是Linux内核协议栈中实现的防火墙系统,为应用提供抽象、通用化的框架,在内核中构建信息分组过滤表,并遵循表中的规则对分组进行过滤检查;以Netfilter框架为基础,IPTables构建了应用层防火墙工具,为用户提供数据分组选择功能。


此外,在网络数据传输方面,IPSec(Internet Protocol Securiy)簇通过对IP的分组进行加密和认证对IP的保护,主要功能包括数据加密、对网络单元的访问控制、数据源地址验证、数据完整性检查和防止重放攻击等。目前,Windows、Linux等主流操作系统都对IPSec进行了实现。


(四)内存管理安全增强


传统的操作系统用户进程空间管理将进程的代码与数据进行统一存放,因此,恶意攻击者可以利用程序中的缓冲区溢出漏洞,在数据中注入恶意代码,通过恶意代码的执行获取对系统的访问权限。针对缓冲区溢出攻击,很多技术在经典内存管理的基础上进行安全增强,通过对进程空间堆栈的保护来打破缓冲区溢出攻击成功的条件,起到防范攻击的作用。


Stack Guard技术通过编译器对返回地址进行保护,能够及时发现返回地址被篡改,从而避免恶意代码的执行;NX(No-e Xecute)通过从硬件机制上将数据页标记为不可执行来防止恶意代码执行,通过禁止数据段的执行来有效防止缓冲区溢出类的攻击;ASLR(Address Space Layout Randomization)技术通过对进程地址空间的随机化布局使攻击者难以猜测进程中的执行地址,从而防范恶意程序对已知地址进行攻击;Safe SEH与SEHOP技术则对异常处理函数进行保护,防止攻击者通过篡改异常处理函数来执行恶意代码。


内存管理安全增强技术主要研究如何通过对内存管理破坏缓冲区溢出的条件来进行攻击防御。如果说这类技术是与攻击者的正面对抗,增加攻击成功的难度,那么强制访问控制技术则是研究在恶意攻击者成功攻破系统后,如何将损失降到最低。在操作系统安全防护体系中,这两类技术都起到了不可或缺的重要作用。


(五)操作系统安全等级


我国参考国外的TCSEC(美国橘皮书)、红皮书(NCSC)、CC、ITSEC等标准,制定了GB 17859−1999《计算机信息系统安全保护等级划分准则》,同TCSEC一样,将安全功能与安全保证合在一起,共同对安全产品进行要求和评价。GB/T 18336《信息技术安全技术信息技术安全性评估准则》则等同采用了国际标准 CC,将安全功能与安全保证独立开来,分别要求。也可以说,GB 17859主要对安全功能进行了要求,GB/T 18336则把安全保证作为独立的一部分进行要求和评测。


GB/T 17859中对操作系统安全的分级进行定义:第1级,用户自主保护级;第2级,系统审计保护级;第3级,安全标记保护级;第4级,结构化保护级;第5级,访问验证保护级。GB/T 20272−2006等标准从身份鉴别、自主访问控制、标记和强制访问控制、数据流控制、审计、数据完整性、数据保密性、可信路径等方面对操作系统的安全功能要求进行更加具体的描述。


二、操作系统面临安全问题


操作系统的安全性问题是网络攻防的焦点所在。造成计算机安全问题的根本原因在于计算机系统,尤其是操作系统本身存在的脆弱性。操作系统的脆弱性是一切可导致威胁、破坏操作系统安全性(可靠性、可用性、保密性、完整性、可控性、不可抵赖性)的来源。正是由于脆弱性的存在,才形成了对计算机正常、安全使用的威胁。结合GB/T 20984−2007《信息安全技术信息安全风险评估规范》在“条款4.2 风险分析原理”中对“脆弱性”等相关概念所进行的描述,将威胁、脆弱性以及安全事件进行了关联分析。如图1所示,主要通过对操作系统安全问题产生的原因(操作系统脆弱性)、威胁、事件以及安全技术机制进行分析,以便从根本上减少安全问题的产生。

图1  脆弱性、威胁与事件的关联关系

(一)操作系统脆弱性


由于操作系统的差异性,不同操作系统的脆弱性偏重点是不同的,结合操作系统安全的划分,共同的脆弱性主要表现在以下几个方面。


1、操作系统自身脆弱性


操作系统自身脆弱性主要指系统设计中本身所存在的问题,如技术错误、人为设计等。技术错误体现在代码编写时出现错误,导致无法弥补的缺陷;人为设计体现在操作系统设计过程中,在实现及时修补操作系统缺陷的前提下,设计能够绕过安全性控制而获取对操作系统访问权的方法。同时,底层协议安全问题也是共性问题。


2、物理脆弱性


物理脆弱性主要体现在硬件问题,即由于硬件原因,使编程人员无法弥补硬件的漏洞,使硬件的问题通过上层操作系统进行体现。


3、逻辑脆弱性


技术缺陷为其主要成因,指操作系统或应用软件在逻辑设计上存在缺陷。可以通过相应手段如打补丁、版本升级等进行修复。


4、应用脆弱性


应用脆弱性,主要因上层应用漏洞致使操作系统遭受如权限丢失、文件破坏、数据泄露等问题。


5、管理脆弱性


据Gartner统计,65%是安全配置不当。管理脆弱性是指操作系统在配置时,为了提高用户的体验,有意或无意间忽略操作系统的安全设置,导致安全性降低。其中,安全管理配置问题是指操作系统管理员在进行系统配置时,对系统安全措施设置不懂/不重视(如操作系统口令复杂度较低),人员权限管理设置不严格,第三方维护人员管理、监控失责等,导致操作系统权限易丢失;安全审计问题是指操作系统自身审计易被篡改,且无法实现对攻击途径、手段的识别,导致安全审计部分成为操作系统安全建设的薄弱环节。


(二)脆弱性所导致的直接威胁分类


安全缺陷导致的最直接的威胁是指攻击者利用此类缺陷可以获得的最直接的非法权限或者攻击效果。据此,大致分类如下表所示。

操作系统脆弱性和威胁关系

事实上,一个系统的安全性缺陷对安全造成的威胁远远不限于它的直接危害性,如攻击者获得了系统的普通用户访问权限,就极有可能利用本地缺陷升级为管理员缺陷。


脆弱性与威胁共同导致了木马、蠕虫、逻辑炸弹、天窗(或后门)、隐蔽通道等对操作系统安全性造成威胁的事件。一个安全可靠的操作系统,要能够免受对系统保密性、完整性和可用性的威胁,需具备消除以上安全威胁并减少以上安全事件发生的能力。


三、操作系统的安全机制


(一)硬件安全机制


绝大多数实现操作系统安全的硬件机制也是传统操作系统所要求的,优秀的硬件保护性能是高效、可靠的操作系统的基础。计算机硬件安全的目标是保证其自身的可靠性和为系统提供基本安全机制。其中,基本安全机制包括存储保护、运行保护、I/O保护等。


1、存储保护:存储保护是一个最基本的要求,指保护用户在存储器中的数据,并保证系统各任务之间互不干扰。


2、运行保护:隔离操作系统程序与用户程序,保证进程在运行时免受同等级运行域内其他进程的破坏。


3、I/O保护:绝大多数情况下,I/O是仅由操作系统完成的一个特权操作,所有操作系统都对读写文件操作提供一个相应的高层系统调用,在这些过程中,用户不需要控制I/O操作的细节。


(二)标识与鉴别技术


标识与鉴别是涉及系统和用户的一个过程。标识是系统标志用户的身份,并为每个用户取一个系统可以识别、唯一且无法伪造的内部名称——用户标识符。将用户标识符与用户联系的过程称为鉴别,鉴别过程主要用于识别用户的真实身份,鉴别操作要求用户具备证明其身份的特殊信息,并且这个信息是秘密的,其他用户无法获得。


在操作系统中,鉴别一般是在用户登录时发生的,系统提示用户输入口令,然后判断用户输入的口令是否与系统中存在的该用户的口令一致。这种口令机制是简便易行的鉴别手段,但比较脆弱,许多计算机用户常常使用弱口令(如自己的姓名、生日等),以致系统很不安全。另外,生物技术是目前发展较快的鉴别用户身份的方法,如利用指纹、视网膜等。


较安全操作系统应采用强化管理的口令鉴别、基于令牌的动态口令鉴别、生物特征鉴别、数字证书鉴别等机制进行身份鉴别,在每次用户登录系统时进行鉴别,并以一定的时间间隔进行改变。


(三)访问控制技术


访问控制为操作系统内的常用防护技术,且仅适用于系统内的主体和客体。在安全操作系统领域中,访问控制一般涉及自主访问控制和强制访问控制2种形式。


1、自主访问控制


自主访问控制(DAC, Discretionary Access Control)是用来决定一个主体是否有权访问一些特定客体的一种访问约束机制。在该机制下,客体的拥有者可以按照自己的意愿精确指定系统中的其他用户对其文件的访问权。同时,自主还指对某客体具有特定访问权限授予权的用户能够自主地将关于该客体的相应访问权或访问权的某个子集授予其他主体。


自主访问控制是基于用户的,所以,具有很高的灵活性,这使这种策略适合于各类操作系统和应用程序,特别是在商业和工业领域。例如,在很多应用环境中,用户需要在没有系统管理员介入的情况下拥有设定其他用户访问其所控制信息资源的能力,因此,控制就具有很大的任意性。在这种环境下,用户对信息的访问控制是动态的,这时,采用自主访问控制是比较合适的。


2、强制访问控制


强制访问控制(MAC, Mandatory Access Control),是一种不允许主体干涉的访问控制类型。在此机制下,系统中的每个进程、文件、IPC客体(消息队列、信号量集合和共享存储区)都被赋予了相应的安全属性,它由管理部门(如安全管理员)或由操作系统自动地按照严格的规定来设置,不能直接或间接地修改。它是基于安全标识和信息分级等信息敏感性的访问控制,通过比较资源的敏感性与主体的级别来确定是否允许访问。系统将所有主体和客体分成不同的安全等级,给予客体的安全等级能反映出客体本身的敏感程度;主体的安全等级标志着用户不会将信息透露给未经授权的用户。通常安全等级可分为4个级别:最高秘密级、秘密级、机密级和无级别级。这些安全级别可以支配同一级别或低一级别的对象。


一般强制访问控制采用以下几种方法。


(1)过程控制。在通常的计算机系统中,只要系统允许用户自己编程,一般就很难杜绝木马。但可以对其过程采取某些措施,这种方法称为过程控制。


(2)限制访问控制。由于自主控制方式允许用户程序来修改其文件的访问控制表,因此,给非法者带来可乘之机。系统可以不提供这一方便,在这类系统中,用户要修改访问控制表的唯一途径是请求一个特权系统调用。


(3)系统限制。最好实施的限制是由系统自动完成。要对系统的功能实施一些限制,比如限制共享文件,但共享文件是计算机系统的优点,是不可能加以完全限制的。再者,就是限制用户编程。


强制访问控制的安全性比自主访问控制的安全性有所提高,但灵活性要差一些。强制访问控制包括规则型(Rule-based)访问控制和管理指定型(Administratively-based)访问控制。MAC模型中比较主要的几个模型:Lattice模型、Bell-LaPadula模型(BLP model)和Biba模型(Biba model)。


(四)最小特权管理


超级用户/进程拥有所有权限,便于系统的维护和配置,却在一定程度上降低了系统的安全性。最小特权的管理思想是系统不应给用户/管理员超过执行任务所需特权以外的特权。例如,在系统中定义多个特权管理职责,任何一个都不能够获取足够的权利对系统造成破坏。


为了保障系统的安全性,可以设置如下管理员,并赋予相应职责。如果有需要,可以进行改变和增加,但必须考虑改变带来的安全性变动。


(1)系统安全管理员:对用户、系统资源和应用等定义或赋予安全级。

(2)审计员:设置审计参数并修改、控制审计内容和参数。

(3)操作员:对系统进行操作,并设置终端参数、改变口令、用户安全级等。

(4)安全操作员:完成操作员的职责,例行备份和恢复,安装和拆卸可安装介质。

(5)网络管理员:负责所有网络通信的管理。


(五)隐蔽通道


隐蔽通道可定义为系统中不受安全策略控制的、违反安全策略的信息泄露路径。隐蔽通道在国内文献中也被称为泄露路径、隐通道或隐蔽信道,公认定义为“允许进程以危害系统安全策略的方式传输信息的通信通道”(GB 17859−1999《计算机信息系统安全保护等级划分准则》)。


按信息传递的方式和方法区分,隐蔽通道可分为存储隐蔽通道和时间隐蔽通道。存储隐蔽通道在系统中通过2个进程利用不受安全策略控制的存储单元传递信息;时间隐蔽通道在系统中通过改变广义存储单元传递信息。对隐蔽通道的处理技术包括消除法、带宽限制法和威慑法。


(六)文件系统加密技术


访问控制机制是实现操作系统安全性的重要机制,但解决不了所有的安全问题。在操作系统正常工作的情况下,操作系统的访问控制机制能够有效地保护在操作系统控制范围之内的信息免遭非法访问,但是,一旦信息离开了某个操作系统的控制范围,该操作系统的访问控制机制对信息的安全性保护就无能为力了。


例如,不管计算机A上的操作系统的访问控制机制功能多么强大,如果恶意用户能拿到计算机A的硬盘等存储信息的存储介质,只需把存储介质连接到计算机B上,就能轻而易举地把信息读取出来,计算机A的访问控制机制对此鞭长莫及。


为了防止因信息载体落入他人手中而导致的信息泄露问题,可以采取对信息进行加密的措施。在操作系统中实现信息加密的方法很多,可以对单个文件进行加密,也可以对整个磁盘进行加密。


(七)安全审计


一个系统的安全审计就是对系统中有关安全的活动进行记录、检查及审核。它的主要目的就是检测和阻止非法用户对计算机系统的入侵,并显示合法用户的误操作。审计作为一种追查手段来保证系统安全,将涉及系统安全的操作做一个完整的记录。审计为系统进行事故原因的查询、定位,事故发生前的预测、报警以及事故发生后的实时处理提供详细、可靠的依据和支持,以备有违反系统安全规则的事件发生时能够有效地追查事件发生的地点、过程以及责任人。


如果将审计和报警功能结合起来,就可以做到每当有违反系统安全的事件发生或者有涉及系统安全的重要操作进行时,能够及时向安全操作员终端发送相应的报警信息。审计过程一般是一个独立的过程,应与系统其他功能相隔离。同时要求操作系统能够生成、维护及保护审计过程,使其免遭修改、非法访问及毁坏,特别要保护审计数据,要严格限制未经授权用户的访问。


(八)系统可信检查机制


以上的安全机制主要侧重于安全性中的机密性要素,对完整性考虑较少。可通过建立安全操作系统构建可信计算基(TCB),建立动态、完整的安全体系。建立面向系统引导的基本检查机制、基于专用CPU的检查机制、基于TPM/TCM硬件芯片的检查机制和基于文件系统的检查机制等可信检查机制,实现系统的完整性保护,能够很大程度上提升系统的安全性,这种机制的构建基于可信计算技术。


我国从2000年后开始对可信计算进行研究,以期解决操作系统在完整性上出现的安全问题。


四、操作系统的安全配置


操作系统自身的脆弱性以及所处网络环境的复杂性和多变性,使操作系统安全防护的力度需要不断加大。通过前面的分析可以看出,对操作系统采取相应的安全防护措施是非常必要的。安全防护措施缺失、安全防护不当、安全防护等级不够,都可能导致安全防护的效果不佳,让计算机暴露给外部攻击者。因此,只有仔细考虑安全需求,将安全技术与管理手段结合起来,才能实现高效、通用、安全的解决方案。


(一)用户相关


1、用户/用户组管理


Gnome-system-tools是users-admin用户设置软件包,它可对用户/用户组进行管理,如添加、管理、删除用户/用户组。在终端输入users-admin命令,会弹出“用户设置”窗口,单击“添加”“删除”按钮可添加、删除用户,也可对系统已有用户进行设置管理。添加用户过程中要设置用户口令,管理用户时也可对口令进行修改,如图2所示,设定密码可以手动设置也可以随机生成,手动设置就是输入自己想要的密码,而随机生成密码是系统生成的随机数,安全性较高但不易记住。

图2  更改用户口令

单击“管理组”按钮,可对用户组进行管理,如单击“添加”“删除”按钮,可添加、删除用户组,单击“属性”按钮,可对用户组属性进行设置。例如,对group1用户组进行属性设置,如图3所示,系统中存在user1、user2、user3、user4用户,可任意选择group1用户组成员,如上选择的是user1、user3、test用户,那么group1用户组的用户就是user1、user3、test。

图3  用户组管理

2、口令设置


(1)密码强度控制


Pam_cracklib.so模块可对密码复杂度进行检查,如密码长度、密码类型等。它通过一些参数来检查相应的强度,如type参数提示输入密码的文本内容,一般是“新的密码”、“重新输入新的密码”;retry参数是用户最多输入几次密码后报错;difork参数是新密码和旧密码不能有几个字符相同;minlen参数是最小密码长度;minclass是最少密码字符类型。用户可以在/etc/pam.d/common-password文件中设置密码强度,如图4所示,密码输错次数最多为3次,minlen为10,则密码最小长度为6个字符,密码与旧密码不能有3个字符相同,最少字符类别为3种。

图4  密码强度设置

按照上面设置的密码强度,假如现在修改用户user1的密码,如图5所示,修改user1的密码时第一次输入密码少于6个字符,则提示“过于简单”,第二次输入2种类型字符,则提示“没有足够的字符分类”,第三次输入的密码有3个字符与原字符相同,这3个密码都无效,且3次后提示“已经超出服务重试的最多次数”,结束该程序。

图5  密码强度控制


(2)密码认证锁定


Pam_tally2.so模块可对用户的登录失败次数进行限制,当次数达到设置的阈值时,系统就会锁定用户,也是通过相应的参数来控制,如deny参数是用户最多登录失败次数;unlock_time参数是系统锁定用户的时间;even_deny_root参数是表示root登录失败达到阈值也会锁定。可以在/etc/pam.d/login文件中设置pam_tally2.so,如图6所示。当用户输入错误密码次数超过3次后,系统就会锁定用户10s,甚至root用户也会同样锁住。假如现在登录test用户,看是否能进行密码认证锁定,如图7所示,test用户超过3次错误密码后被锁住了,必须要在10s后才能重新登录。

图6  密码认证设置

图7  密码认证锁定

(3)密码周期


为了系统安全考虑,用户最好定期更换密码,因为如果长期不换密码,密码容易被入侵者暴力破解或盗用。用户可以自己执行passwd命令定期修改密码,也可采用chage命令修改指定用户的密码周期,如图8所示,执行passwd命令修改user1密码,执行chage命令修改user1用户的密码期限为2018年6月30日,修改密码的最短周期为5天,最长周期为90天,密码过期前7天会提醒用户,过期后账号会被锁住30天。

图8  设置密码周期

(二)自主访问控制


1、chmod/chown修改文件权限


chmod可修改用户/用户组/其他对文件是否有r(读)、w(写)、x(执行)访问控制权限, r是4、w是2、x是1,所以,用chmod命令修改权限时可直接加数字,如“764”代表用户/用户组/其他对文件有rwx/rw-/r--权限。chown可修改文件的属组关系,如test文件本来是test用户创建的,但可修改test文件的属组为user1用户/用户组,如图9所示,test文件原始权限为664,原始文件属组为test:test,chmod修改后,权限变为777,修改成功。chown命令则必须要sudo提权操作,修改后,test文件属组已经变为user1用户/user1用户组。

图9  chmod/chown修改文件权限

2、setfacl/getfacl设置/查询文件ACL


setfacl命令可设置文件访问控制列表(ACL),如设置某一指定用户或某一指定用户组对文件的指定访问权限,而chmod只能统一修改全组用户或全部其他用户对文件的权限,所以, setfacl可设置更细粒度的访问权限,getfacl可查询文件ACL。如图10所示,setfacl成功修改user1用户对file文件的权限为rwx,user2用户的权限为r--,而同组的其他用户为rw-权限;group1用户组的权限为rwx,group2用户组的权限为r--,其他用户组为r--。

图10  setfacl修改文件权限

3、App Armor安全配置


App Armor是Linux系统的一个安全应用程序,它允许系统管理员将每个程序与安全配置文件关联,从而限制程序的功能。通俗来说,就是指定程序可以读、写或运行哪些文件,并使用路径名作为安全标记。


可以通过执行“aa-disable /path/profile”来禁用一个应用程序的相关权限,/path/profile是与程序相关联的配置文件路径名。


执行“aa-enforce/complain /path/profile”来启用程序的相关权限,并设置程序的工作模式为enforce和complain。complain模式下,配置文件的限制条件不会执行,只会被记录在系统日志里,然后,根据程序的行为,可以将日志转换为配置文件;enforce模式下则配置文件的限制条件都会执行,而且会记录到日志中。


执行“aa-status”可查看App Armor状态。上述命令的使用如图11所示。

图11  App Armor配置

(三)数据加密


1、主目录加密


用户在安装时如果选择“加密我的主目录”,就可以创建一个私人的受保护的文件夹。在加密用户没有登录时,其他用户登录就不能查看该用户的主目录文件,从而可以保证用户文件安全。如图12所示,安装test用户时选择“加密我的主目录”,系统就会加密/home/test目录。这样,在成功安装系统后创建新的用户,登录的新用户并打开/home目录时,就不能打开test目录,即test用户的主目录。

图12  用户主目录加密

2、文件加密


Ecryptfs 可以加密文件,且在加密状态打开和关闭情况下,加密文件均能正常显示。加密时,首先必须创建 ecryptfs_test 加密文件夹(用于存放加密文件命令和真实数据)和ecryptfs_mount文件夹挂载点,并挂载ecryptfs_test到ecryptfs_mount目录下,并同时选择加密方式。在ecryptfs_mount目录下创建的所有文件都会被加密,而且在文件夹解密后才可以访问,在ecryptfs_test目录下访问的文件都是乱码。关闭加密状态后,重新打开ecryptfs_moumt目录时必须要输入相同的密码(否则就是重新加密),才可以正确访问加密文件。图13为加密状态打开。

图13  加密状态打开

如图13所示,在ecryptfs_test目录加载到ecryptfs_mount目录,加密状态打开情况下,加密文件可以正常显示;而当ecryptfs_mount目录卸载时,加密状态关闭。


如图14所示,成功卸载ecryptfs_mount目录,关闭加密状态后,必须重新加载ecryptfs_test,并输入相同密码,加密文件还是可以正常显示。

图14  加密状态关闭

(四)防火墙管理


gufw是系统内建防火墙ufw的图形化管理工具,它可启动关闭防火墙服务,添加、删除、设置防火墙规则;并监听端口,记录日志报告。在终端输入gufw命令,就可以打开防火墙图形工具。可以选择不同的profile文件,一般有office、public、home文件。office表示电脑连接的是官方正式文件;public表示电脑连接的是公共网络文件;home表示连接的是当前用户主目录文件。还可单击“文件”,导入导出profile文件。


1、添加规则


gufw可添加、删除、设置防火墙规则,例如,添加ssh服务器端口的22端口规则,单击“规则”下的“+”即可。策略可选择“Allow”允许,当然也可选择“Deny”拒绝,“Deny”会回馈拒绝信息,而“Reject” 拒绝则直接丢弃访问数据,访问者不知道访问是被拒绝还是该主机不存在;“Limit”限制则限制链接次数,方向可选择“in”或“out”或“both”,协议可以选TCP或UDP协议,也可都选择。单击“port”栏的箭头会自动进入到高级配置,限制IP地址和端口号,如图15所示。

图15  添加防火墙规则

这里介绍简单ssh端口设置,单击添加,在主界面上就会显示该规则,且监听报告和Log中也会有相应记录,而且左下角也提示“Rules added”操作。


2、设置规则


Gufw也可对已有规则进行设置管理,对端口名、策略、方向、日志、协议等进行修改。例如,把规则1的协议改为“TCP”,日志和监听报告中都会记录设置操作,左下角也提示“Updated rule1”,如图16所示,规则1的协议已成功修改为“TCP”。

图16  设置防火墙规则

3、删除规则


如果不想要某个服务的防火墙规则,可单击规则下面的“−”删除该规则。


(五)安全使用系统的建议操作


1、清除网页cookie


定期清理网页cookie,可防止上网信息,如账号密码等,被网络攻击者盗用。可使用优客助手工具进行清理,在终端输入youker-assistant就可弹出优客助手,如图17所示,优客还可进行缓存清理、分组卸载、cookies清除等。

图17  优客助手

2、禁止特殊用户


(1)禁止root用户登录


由于root用户权限太高,使用会存在很大风险,所以,一般禁止root用户登录。可以通过创建/etc/lightdm/lightdm.conf文件并增加图18中的内容来禁止root登录。如图18所示,如果要启用root用户登录,只要把“false”改为“true”即可,然后重启系统,进入登录界面选择“登录”,输入用户名root和密码,root用户就可登录系统。

图18  禁止root用户

(2)禁止客人会话


默认“客人会话”不需要密码即可登录系统使用资源,这样易带来安全隐患而被禁用。可以通过创建/etc/lightdm/lightdm.conf文件并增加图19中的内容来禁止客人会话,如图19所示,如果要启用客人会话,只要把“false”改为“true”即可,然后重启系统,回到登录界面,单击“客人会话”,直接回车不要输入密码,就可进入系统。

图19  禁止客人会话

(3)禁用其他用户


禁用其他用户,可采用users-admin,单击“高级设置”来选择“禁用”,如图20所示,可以选择“禁用账户”来禁用user1用户。

图20  禁用其他用户

3、关闭不用的服务


关闭不经常使用的服务,可以减少系统资源的使用,防止服务漏洞影响系统安全。Sysv-rc-conf 软件就可以很简单地开启/关闭系统服务,而且它还可以指定不同的运行级和服务。只要在终端输入Sysv-rc-conf就可以打开该软件。


如图21所示,0是系统停机状态,1是单用户或系统维护状态,2~5是多用户状态,6是重新启动。按上下箭头可翻页查找服务,空格键在打开或关闭服务之间切换,+号可以打开服务,−号关闭服务,按q键保存退出,“X”表示开启该服务。桌面系统建议禁用ssh服务,服务器建议不采用telnet和ft。

图21  Sysv-rc-conf关闭服务

(六)审计信息


可用gnome-system-log图形工具来查询审计信息,可查看认证日志、dpkg日志、kernel日志,还可单击设置按钮“打开”来查看系统其他日志。该图形工具还可以过滤、查找日志信息,从而找到想要的日志信息。


如图22所示,在设置按钮的“文件”选项的“管理过滤器”中添加“build”正则表达式来筛选build日志行信息,并突出显示出来,这样可非常明显地就查到build日志信息。

图22  审计图形工具

可用ausearch命令来查看审计信息,它通过auditctl添加文件监视规则,审计任何对文件的操作,然后用ausearch命令查找日志信息。


如图23所示,管理员添加对/tmp/file文件的审计规则,然后test用户对file文件进行读写,查看操作,管理员再调用file文件审计规则,就可查看/tmp/file文件的任何操作审计信息。

图23  ausearch查看审计信息

aureport命令则可查看审计报告,相比于ausearch添加审计规则,查看详细审计信息,aureport可更直观地查看统计信息。图24查看了认证审计报告信息。

图24  aureport查看审计报告

    微信公众号:计算机与网络安全

    ID:Computer-network

    【推荐书籍】

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存