Linux安全应用指导_V1_1.docx

上传人:牧羊曲112 文档编号:1937905 上传时间:2022-12-27 格式:DOCX 页数:48 大小:3.99MB
返回 下载 相关 举报
Linux安全应用指导_V1_1.docx_第1页
第1页 / 共48页
Linux安全应用指导_V1_1.docx_第2页
第2页 / 共48页
Linux安全应用指导_V1_1.docx_第3页
第3页 / 共48页
Linux安全应用指导_V1_1.docx_第4页
第4页 / 共48页
Linux安全应用指导_V1_1.docx_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《Linux安全应用指导_V1_1.docx》由会员分享,可在线阅读,更多相关《Linux安全应用指导_V1_1.docx(48页珍藏版)》请在三一办公上搜索。

1、华为技术有限公司内部技术指导DKBA 8328-2015.11Linux安全应用指导 华为技术有限公司Huawei Technologies Co., Ltd.版权所有 侵权必究All rights reserved修订声明Revision declaration本指导拟制与解释部门:网络安全能力中心本指导的相关系列规范或文件:相关国际规范或文件一致性:替代或作废的其它规范或文件:无相关规范或文件的相互关系: 无目录简介6使用对象6适用范围6指导解释6用词约定6术语解释71权限管理81.1权限最小化81.1.1 禁止直接使用root账号登录Linux系统81.1.2 除有明确特权需求,应用程序

2、应以非root账号运行91.1.3 采用不同权限的帐号运行不同的应用并对帐号进行权限分离91.1.4 在运行时有特权需求的程序,在特权操作完后如后续无特权需求,必须使用setuid放弃特权101.1.5 使用sudo机制代替以root帐号登录运行特权程序的方式。111.1.6 应对允许使用su到root帐号的用户进行明确授权,非授权用户不能切换到root111.1.7 使用POSIX Capabilities功能避免直接使用root权限121.2文件和目录权限141.2.1系统中禁止有无主文件存在141.2.2 除有明确需求,应删除文件不必要的setuid和setgid位141.2.3应为系统

3、用户设置缺省的umask值151.2.4 使用特殊属性位Sticky位对共享目录权限进行控制161.2.5 利用特殊文件属性Append-only位保护系统命令行历史日志文件,防止内容被篡改162访问控制182.1自主访问控制182.1.1 使用POSIX ACL进行更细粒度的访问控制182.2强制访问控制202.2.1 Linux系统上应安装强制访问控制系统作为应急的安全访问控制手段203记录和审计223.1监测、记录和审计223.1.1启用inotify监控机制,以文件系统事件进行安全监控223.1.2使用Auditd组件对系统中的重要目录或文件进行审计244认证264.1口令和账号264

4、.1.1 使用shadow套件对系统账号口令进行分离保护264.1.2Linux系统必须使用shadow套件对当前暂时不使用的账号进行锁定或登录限制274.1.3使用shadow套件对系统口令的时效进行限制294.2可插拔认证模块(PAM)294.2.1使用PAM模块增强认证管理295文件系统保护315.1日志文件保护315.1.1 应将操作系统日志发送至外部服务器单独存储,确保日志不被篡改315.2文件系统加密315.2.1对含有重要信息的文件目录或分区进行加密处理315.3分区和挂载325.3.1对于系统中的重要目录必须根据存储目的不同进行分区隔离325.3.2使用fstab对外接、日志存

5、储分区进行访问控制。325.3.3禁用自动工具对移动存储设备进行挂载336网络防护346.1网络防护能力346.1.1 使用sysctl工具增强系统网络防护能力346.1.2 使用iptables对系统中不使用的端口进行限制356.2限制网络服务356.2.1 远程访问需使用SSH取代telnet356.2.2 系统中不应安装不安全的传统网络服务357漏洞攻击防护377.1地址随机化377.1.1 使用Linux自带的ASLR功能(地址空间布局随机化)增强漏洞攻击防护能力377.2数据执行防护377.2.1 系统必须使用DEP防护手段提升漏洞攻击防护能力377.2.2 使用栈保护机制387.3

6、增强性安全防护397.3.1 使用Grsecurity增强Linux系统的安全防护能力397.3.2 使用PaX提升系统攻击防护能力408完整性保护438.1文件完整性检查438.1.1 使用IMA工具对系统文件的完整性进行检查439安全隔离和容器449.1安全隔离449.1.1 对于开放给第三方的shell环境,应使用隔离技术对其可访问的系统资源进行隔离449.1.2 对于系统中运行的第三方应用,需使用控制组或容器等技术手段将其于系统关键资源进行隔离。4610其他4710.1额外系统功能限制4710.1.1 对core dump功能的使用进行限制4710.1.2 关闭SysRq键的使用471

7、0.1.3 应对bootloader开启引导装载密码4810.1.4 使用ulimit工具限制用户可以打开文件个数4811设计样例50简介随着公司业务发展,越来越多的产品被公众所熟知,并成为安全研究组织的研究对象、黑客的漏洞挖掘目标,产品的安全问题不可小视。公司内许多产品使用Linux系统作为软件开发和安装的基础,由于对Linux系统中编译器、软件服务、系统自身防护等方面缺乏足够的了解,使产品存在许多安全漏洞,产品也因此遭受黑客的攻击。Linux安全应用指导结合Linux系统中常用的安全机制安全特性同时结合业界最佳实践,针对业内普遍的Linux系统漏洞和软件漏洞给出指导方法,帮助产品开发团队减

8、少由于设计过程中未引入安全机制或软件加固方法而引入安全风险。本指导的制订目的是希望能指导读者选择正确的安全机制和软件加固方法,以减少安全漏洞的产生。指导涵盖Linux系统中的:权限管理、访问控制、认证、审计、文件系统保护、漏洞攻击防护等内容。使用对象本指导的读者及使用对象主要是产品涉及Linux系统的需求分析人员、设计人员、开发人员、测试人员等。适用范围本指导适合于公司涉及使用Linux操作系统的产品(嵌入式产品除外),如使用欧拉server OS、suse 等产品。指导解释Linux安全应用指导目的在于通过结合业内的最佳实践,对在Linux系统下合理的使用安全机制和安全特性来解决产品安全问题

9、和增强系统安全能力提出要求。其目的在于以下几点:1. 充分发挥Linux已有的安全能力。2. 将Linux社区中普遍使用的安全组件及解决方案吸纳进来,合理的应用到系统中,增强系统的安全能力。3. 为产品线安全人员解决Linux安全问题赋能。用词约定规则:编程时必须遵守的约定。建议:编程时必须加以考虑的约定。说明:对此规则/建议进行必要的解释。示例:对此规则/建议从正面给出例子。术语解释名词解释MAC强制访问控制(Mandatory Access ControlMAC),用于将系统中的信息分密级和类进行管理,以保证每个用户只能访问到那些被标明可以由他访问的信息的一种访问约束机制。DAC自主访问控

10、制(Discretionary Access Control,DAC)是这样的一种控制方式,由客体的属主对自己的客体进行管理,由属主自己决定是否将自己的客体访问权或部分访问权授予其他主体,这种控制方式是自主的。容器容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。PAMPAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统提供的服务 和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无

11、需更改服务程序,同时也便于向系 统中添加新的认证手段。ASLRASLR(Address space layout randomization)是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的。DEPDEP (Data Execution Prevention) 是一套软硬件技术,能够在内存上执行额外检查以帮助防止在系统上运行恶意代码。ACL访问控制列表(Access Control List,ACL)。1 权限管理1.1 权限最小化1.1.1 禁止直接使用root账号登录L

12、inux系统说明:root是Linux系统中的超级特权用户,具有所有Linux系统资源的访问权限。如果允许直接使用root账号登录Linux系统对系统进行操作,会带来很多潜在的安全风险,为了规避由此带来的风险,应禁止直接使用root帐号登录操作系统,仅在必要的情况通过其他技术手段(如:su)间接的使用root账号。禁止直接使用root账号登录可以规避很多潜在的安全风险,提高系统安全性。此条目需满足以下要求: 禁止直接通过root账号远程登录系统(ssh远程登录) 禁止直接使用root账号本地标准终端登录(本地tty登录,如:tty1、tty2等)此条目对以下情况不做强制要求: 对于设备维护用串

13、口不做强制要求,如console。 系统初始化和调测阶段不在规则范围内。实施指导:l 禁止root账号本地直接登录1) 编辑root登录设备控制文件securettyvi /etc/securetty2) 注释掉或删除所有标准终端设备(形如ttyN,如:tty1、tty2等)#tty1#tty2#ttyN3) 保存文件后root用户本地标准终端登录即被禁止Login: rootPassword:Login incorrectl 禁止root账号远程直接登录例:修改openssh服务配置文件,禁止root账号远程直接登录1) 编辑openssh服务配置文件sshd_configvi /etc/s

14、sh/sshd_config2) 查找PermitRootLogin配置项(若不存在需添加),将其设置为NoPermitRootLogin No3) 保存文件后,重新启动sshd服务/etc/init.d/sshd restart1.1.2 除有明确特权需求,应用程序应以非root账号运行 说明:root权限是Linux系统中的超级特权用户,具有所有Linux资源的访问权限。若自研程序或者第三方程序存在堆栈溢出漏洞,那么攻击者就可以利用漏洞植入任意代码,获取程序执行者的权限,进而控制整个系统。因此,我们应该按照最小权限原则设计Linux系统权限,即使程序中存在堆栈溢出漏洞,由于被植入恶意代码的

15、程序只有普通用户权限,无法对系统造成严重影响,攻击面大大降低。实施指导:比如一个程序在使用普通用户就可以正常运行的情况,就不应用 root帐号运行,按照安全设计的最小权限原则,分析应用程序进程所需要的最小权限,无特权需求的程序禁止使用root运行。实施方法如下:root# useradd huaweisu - user -c programuser代表用户名,program是程序名(这里要注意的是程序名要给决对路径)1.1.3 采用不同权限的帐号运行不同的应用并对帐号进行权限分离说明:在设计实现应用系统时,应根据各个组成部分(子系统或程序)运行所需的操作系统权限的不同以及暴露给用户的访问权限的

16、不同,对其进行划分和授权,采用不同权限的帐号运行不同的程序或组成部分。此条目需满足以下要求: 运行web服务的系统帐号不能和运行数据库的系统帐号是同一个帐号,并且要做访问的权限分离。实施指导:例如典型的WEB应用系统,由WEB系统和数据库系统组成,WEB系统对外提供访问服务,外部用户通过WEB服务获取页面相关的数据,这此页面数据敏感度相对低一些,而数据库系统一般存放业务相关的重要数据,敏感度高,通常会为两个系统建立不同的帐号和权限,并分配不同的目录来存放敏感度不同的数据。对于WEB系统使用Apache服务器情况,会建立apache用户来运行httpd进程,限制httpd进程只能特定WEB文件、

17、配置文件和日志数据,如var/www;同时,对数据库使用mysql的情况,也会为数据库建立专门的帐户mysql和相应的特权目录,让mysqld服务进程只能访问限定的目录,如var/lib/mysql。通过这样的划分和授权,达到用不同的权限帐号运行不同的程序并实现了运行权限的分离。1.1.4 在运行时有特权需求的程序,在特权操作完后如后续无特权需求,必须使用setuid放弃特权说明:程序中有些任务必需使用root权限执行,当特权操作完成后并且后续无特权需求,应调用setuid()函数放弃root用户的权利,使用普通用户权限运行程序。需要注意的是一旦调用setuid()函数放弃root用户的权利,

18、在后续执行中这个进程就只能以普通用户的身份运行。此条目需满足以下要求: 在程序启动时需要特权需求,启动完成后不需要特权需求的程序,需放弃特权。实施指导:#include#include#includeint main() if( !setuid( getuid() ) ) 抛弃root权限,进入普通用户权限 printf(setuid successfully!n); else printf(setuid error!); perror(setuid); return 0;1.1.5 使用sudo机制代替以root帐号登录运行特权程序的方式。说明:sudo可以使普通用户以特定的用户权限执行某些

19、命令。大部分系统管理命令都需要使用root权限执行,对于系统管理员来说,适当的对其它用户授权可以减轻系统管理员负担,但直接授予其它用户root用户密码会带来安全方面的风险,而使用sudo可以解决这一问题。此条目需满足以下要求: 系统中的需要以root帐号执行的自开发程序,可以使用sudo机制避免使用root帐号登录。实施指导:下面看一个完整的例子:$ cat /etc/sudoers为方便对允许使用sudo命令的用户分类,我们可以用户分组:User_Alias NETWORK_ MAINTAINERS=www,com#定义NETWORK _COMMANDS可以运行网络接口配置命令Cmnd_Al

20、ias NETWORK _COMMANDS = /bin/ifconfig,/bin/ping# NETWORK_ MAINTAINERS用户组可以用 root身份运行NETWORK _COMMANDS中包含的命令NETWORK_ MAINTAINERS localhost = (root) NETWORK _COMMANDS1.1.6 应对允许使用su到root帐号的用户进行明确授权,非授权用户不能切换到root说明:su命令可以使一个一般用户拥有超级用户或其他用户的权限,它经常被用于从普通用户账号切换到系统root账号。su命令为用户变更身份提供了便捷的途径,但如果不加约束的使用su命令,

21、会给系统带来潜在的风险。通过对用户su访问root账户的权力进行限制,仅对部分账号进行su使用授权,可以提高系统账号使用的安全性。此条目需满足以下要求: 需建立su访问组,非组内帐号未无法使用su命令切换到root账号(包括在已知root口令的情况下)实施指导:l 使用pam_limits模块限制su root的访问组例:通过组成员限制能够su为root的用户1) 编辑pam的su配置文件vi /etc/pam.d/su2) 查找auth required pam_wheel.so配置行(若不存在需添加),做如下设置:auth required pam_wheel.so group=wheel

22、3) 保存文件后,根据需要将su授权的账号加入wheel组即可。usermod -a -G wheel testuser这样,只有wheel组的用户可以su到root(执行su的用户仍需要知道root口令,但未被授权的用户即使知道root口令也无法通过su切换为root用户。POSIX 能力(pcap)是一种分散root用户权利的方式,使用POSIX可以对具有特权需求的程序进行授权访问。在需要的时,通过POSIX可以把一项或几项特权赋予需要的程序。因此,POSIX以授予最小的完成工作所需的权限的方式提供一个更安全的选择,坚持了最小权限的安全原则。1.1.7 使用POSIX Capabiliti

23、es功能避免直接使用root权限说明:某个程序运行权限为root,但是可能并不需要 root 权限的全部能力,以ping命令为例,ping命令可能只需要cap_net_raw能力来发送ICMP ping报文,对于root其它能力并不是必需的。因此,只需要将cap_net_raw能力分配ping命令,这样普通用户就可以使用ping命令了。使用setcap分配运行命令所需要的能力替换直接使用root。此功能需要内核版本在2.6.13以上,并且xattr(扩展文件属性)功能在内核设置中被打开。下表为setcap中提供的能力:名称值解释CAP_CHOWN0允许改变文件的所有权CAP_DAC_OVERR

24、IDE1忽略对文件的所有DAC访问限制CAP_DAC_READ_SEARCH2忽略所有对读、搜索操作的限制CAP_FOWNER3以最后操作的UID,覆盖文件的先前的UIDCAP_FSETID4确保在文件被修改后不修改setuid/setgid位CAP_KILL5允许对不属于自己的进程发送信号CAP_SETGID6允许改变组IDCAP_SETUID7允许改变用户IDCAP_SETPCAP8允许向其它进程转移能力以及删除其它进程的任意能力(只限init进程)CAP_LINUX_IMMUTABLE9允许修改文件的不可修改(IMMUTABLE)和只添加(APPEND-ONLY)属性CAP_NET_BI

25、ND_SERVICE10允许绑定到小于1024的端口CAP_NET_BROADCAST11允许网络广播和多播访问CAP_NET_ADMIN12允许执行网络管理任务:接口、防火墙和路由等CAP_NET_RAW13允许使用原始(raw)套接字CAP_IPC_LOCK14允许锁定共享内存片段CAP_IPC_OWNER15忽略IPC所有权检查CAP_SYS_MODULE16插入和删除内核模块CAP_SYS_RAWIO17允许对ioperm/iopl的访问CAP_SYS_CHROOT18允许使用chroot()系统调用CAP_SYS_PTRACE19允许跟踪任何进程CAP_SYS_PACCT20允许配置

26、进程记帐(process accounting)CAP_SYS_ADMIN21允许执行系统管理任务:加载/卸载文件系统、设置磁盘配额、开/关交换设备和文件等CAP_SYS_BOOT22允许重新启动系统CAP_SYS_NICE23允许提升优先级,设置其它进程的优先级CAP_SYS_RESOURCE24忽略资源限制CAP_SYS_TIME25允许改变系统时钟CAP_SYS_TTY_CONFIG26允许配置TTY设备CAP_MKNOD27允许使用mknod()系统调用CAP_LEASE28允许在文件上建立租借锁CAP_SETFCAP31允许在指定的程序上授权能力给其它程序实施指导:参考设计样例中的使

27、用setcap避免直接使用root方案1.2 文件和目录权限1.2.1系统中禁止有无主文件存在说明:无主文件(和目录)是指属于没有匹配到任何用户的用户ID的文件。通常管理员删除一个用户但是该用户在文件系统中尚有文件时会发生这种情况。同样的情况也会发生在用户组上。这些文件叫做未分组文件。如果新用户分配到某个已删除用户的用户ID,新用户将能够访问某些原本无意访问的文件。因此,应根据实际情况对其进行合理处理如删除、添加新的用户或用户组等。实施指导:可使用如下命令检查无主文件和未分组文件root # find / ( -nouser -o -nogroup ) print1.2.2 除有明确需求,应删

28、除文件不必要的setuid和setgid位 说明:非法带有setuid和setgid的可执行文件可能对系统造成威胁。因此,建议对除必须要带SUID位的可执行文件进行检查,删除不必要可执行文件的setuid和setgid位。必须要带SUID位的的可执行文件根据系统版本和配置不同会不同。此条目需满足以下要求: 公司自主开发的软件/程序需遵守本条目(操作系统自带程序不做严格限制)。实施指导:可使用如下命令来显示setuid 和setgid 可执行文件:root # find / -type f ( -perm -4000 -o -perm -2000 ) print显然,命令结果中会列出很多设置了s

29、etuid/setgid 位的文件(例如/usr/bin/passwd 文件):仔细确认文件列表并确认是否有必要设置该权限。如果确定某可执行文件没有必要设置setuid位,使用以下命令将其删除:root # chmod -s FILE1.2.3应为系统用户设置缺省的umask值说明:umask设置了用户创建文件的默认权限。一般在/etc/profile、$ HOME/.bash_profile或$HOME/.profile中设置umask值。因此系统必须设置Umask值,普通用户推荐值为022,超级用户推荐值为027。如果用户希望创建的文件或目录的权限不是umask指定的缺省权限,可以修改缺省

30、的umask值,然后再创建文件或目录。 实施指导:$umask查询默认的umask值020系统默认为020,更改为所希望的022$umask 022$touch testfile创建文件$ls -l testfile查看创建后的权限rxwr-xr-x admin admin 786 Nov 17 10:45 /home/ testfile1.2.4 使用特殊属性位Sticky位对共享目录权限进行控制说明:Sticky位是Linux系统下的一种特殊文件属性位,可用于加强对文件的权限管理,合理的使用Sticky位属性,能够帮助提高文件和目录的安全性。使用Sticky位对共享目录权限进行控制,可以防

31、止共享目录中不属于自己的文件被恶意或无意删除。在Linux系统下,最典型的共享目录为用于临时文件存取的/tmp和/var/tmp目录。此条目需满足以下要求: 对/tmp和/var/tmp目录应设置Sticky位,确保用户(root除外)只能对自己建立的文件或目录进行删除/更名/移动等动作。实施指导:在Linux系统下,有一些特殊文件属性位用于加强对文件的权限管理,合理的使用这些特殊属性,能够帮助提高文件和目录的安全性。使用Sticky位对共享目录权限进行控制,可以防止共享目录中不属于自己的文件被恶意或无意删除。对不希望被修改的文件设置非可变位(Immutable bit),系统不允许对这个文件

32、进行任何的修改。如果对目录设置这个属性,那么任何的进程只能修改目录中已存在的文件,不能建立和删除文件。对不允许修改历史内容的文件设置只追加位(Append-only bit),系统只允许在这个文件之后追加数据,不允许任何进程覆盖或者截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。l 设置sticky位chmod +t /tmp$ ls -ld /tmpdrwxrwxrwt 1 root root 786 Nov 17 10:45 /tmp注意:rwt权限中t代表sticky和execute位。如果显示的是T,那么只有sticky位置位了。1.2

33、.5 利用特殊文件属性Append-only位保护系统命令行历史日志文件,防止内容被篡改 说明:在Linux系统下,有一些特殊文件属性位用于加强对文件的权限管理,合理的使用这些特殊属性,能够帮助提高文件和目录的安全性。对不允许修改历史内容的文件设置只追加位(Append-only bit),系统将只允许在这个文件之后追加数据,不允许任何进程覆盖或者截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。此条目需满足以下要求: 对系统中的用户命令行历史日志文件(典型名称如:.bash_history)设置只追加位(Append-only bit),防止日

34、志被篡改。此条目对以下情况不做强制要求: 对命令行日志文件有定期截断或回滚需求的系统不做追加位(Append-only bit)设置的强制要求。实施指导:l 设置非可变位和只追加位$ sudo chattr +ai test.txt$ lsattr test.txt-ia- test.txt2 访问控制2.1 自主访问控制2.1.1 使用POSIX ACL进行更细粒度的访问控制说明:虽然Linux系统提供了文件控制机制,但是也具有一些局限性。例如,一个目录只允许一个组访问。POSIX ACL提供了一种更加细粒度的访问控制机制,通过运用这种机制,文件系统对象可以为具体用户和组分配访问权限。每一个

35、文件系统对象都有一条对应的访问ACL,用于控制对该对象的访问。此外,目录还可以包括一条缺省的ACL,该缺省ACL决定了本目录中创建的对象的首次访问ACL。此功能需要内核版本2.6以上,并且内核开启POSIX ACL、xattr功能 。此建议适用于提供对文件或目录的细粒度访问控制的情形,比如:同一个用户组中的两个用户,对特定的文件或目录,需要设定一个用户拥有写的权限,而另一个用户只拥有只读权限。此条目需满足以下要求: 对于特定的目录或文件仅允许特定的几个用户组或用户设置使用权限的情形,建议使用ACL进行细粒度的访问控制。POSIX ACL条目名称解释用法ACL_USER_OBJ所有者的访问权限u

36、ser:ACL_USERaccess rights of some specific user, other than the owner除所有者外,一些特定用户的访问权限user:USERNAME:ACL_GROUP_OBJaccess rights of the group that owns the file文件所属组的访问权限group:ACL_GROUPaccess rights of some group that doesnt own the file非文件所属组的访问权限group:GROUPNAME:ACL_OTHERaccess rights of anyone not o

37、therwise covered所有没有覆盖用户的访问根限other:ACL_MASKmaximum possible access rights for everyone, except for the owner and OTHER定义了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大权限。mask:GROUPNAME:实施指导:下面用几个例子来解释这些概念:通过设置umask为027,设置新创建的文件组没有写权限和其他用户的没有任何权限$ umask 027$ mkdir directory$ ls -ld directory/drwxr-x- 1 bob use

38、rs 0 dec 1 15:10 directory/使用getfacl命令查看文件权限$ getfacl directory# file: directory# owner: bob# group: usersuser:rwxgroup:r-xother:-使用setfacl 添加用户alice的rwx权限$ setfacl -modify user:alice:rwx directory$ getfacl -omit-header directoryuser:rwxuser:alice:rwxgroup:r-xmask:rwxother:-$ ls -ld directorydrwxrwx

39、-+ 1 bob users 0 joulu 1 15:10 directory2.2 强制访问控制强制访问控制(MAC)是一个安全系统,在这个安全系统中,主体的访问或者对某个对象的操作根据策略规则严格被操作系统进行了限制。主体通常是进程,而对象可以是文件、目录、共享内存、端口、设备等。主体和对象都分配了安全属性。当一个主体访问一个对象时,内核会对这些属性进行检查,并根据认证规则(策略)决定是否允许访问。MAC系统的策略由安全策略管理员控制。与自主访问控制不同,普通用户不能对其进行设置,不能对所拥有对象的访问规则进行自行设置。MAC系统为整个系统提供了一个全局加强的安全策略。2.2.1 Lin

40、ux系统上应安装强制访问控制系统作为应急的安全访问控制手段说明:Linux系统上应该安装强制控制系统,当应用系统所依赖的组件存在漏洞时,MAC作为应急的安全访问控制手段被打开,以便应用系统的服务在特定情况下可以不被中断,同时保证系统安全。当前强制访问控制系统使用比较广泛的是AppArmor和SELinux两种,Apparmor比SELinux使用更简单,配置较容易,但安全性和灵活度上没有SELinux高,然而SELinux配置较复杂。SELinux与Apparmor最大的区别在于Apparmor使用文件名(路径名)作为安全标签,而SELinux使用文件的inode作为安全标签。下表是Appar

41、mor与SELinux更详细的对比。ApparmorSELinux安全类型l 路径名基于系统不需要标记或重新标记文件系统l 当增量开发配置文件,不用修改其它配置文件,只要引用配置文件路径名。l 路径名很容易理解和审核l 为所有文件、进程打标签l 标签标识沟通的渠道,因此增加新的配置文件可能需要修改现有的配置文件划分沟通渠道,增加策略制定难度l 并非所有应用程序保留的标签影响l 可自动化l 易整合l 难维护易用性l 策略语言易使用、易修改、易审计l 集成GUI/Console工具集l 可用性是首要目标l 复杂的策略语言l 难管理的规则l 缺少集成工具鉴于上述对比,如果对系统安全性要求不严格的情况

42、,推荐优先选用Apparmor。此条目需满足以下要求: 系统中需安装Apparmor或SELinux一种强制访问控制系统,可以不启用。此条目对以下情况不做强制要求: 对系统不内统版本较低不支持安装或安装后对系统应用有影响的可以不强制安装。实施指导:参考设计样例中的SELinux应用指南、SELinux进程隔离方案指导书3 记录和审计13.1 监测、记录和审计3.1.1启用inotify监控机制,以文件系统事件进行安全监控说明:Inotify 是基于inode级别的文件系统监控技术,是一种强大的、细粒度的、异步的机制,它满足各种各样的文件监控需要,可用于对文件系统进行安全监控,提高系统安全性。l

43、 Inotify 不需要对被监视的目标打开文件描述符,而且如果被监视目标在可移动介质上,那么在 umount 该介质上的文件系统后,被监视目标对应的 watch 将被自动删除,并且会产生一个 umount 事件。 l Inotify 既可以监视文件,也可以监视目录。 l Inotify 使用系统调用而非 SIGIO 来通知文件系统事件。 l Inotify 使用文件描述符作为接口,因而可以使用通常的文件 I/O 操作select 和 poll 来监视文件系统的变化。 此条目需满足以下要求: 开启inotify功能,对文件系统事件进行监控。/bin /etc此条目对以下情况不做强制要求: 对系统

44、性能有严格要求,启用相关功能影响产品交付的,不做强制要求。实施指导:l 确定内核是否支持inotify查看/proc/sys/fs/inotify/目录是否存在,从kernel 2.6.13开始,Inotify正式并入内核。 # ls /proc/sys/fs/inotify/max_queued_events max_user_instances max_user_watches其中inotify目录下的三个文件对应inotify 的默认内核参数/proc/sys/fs/inotify/max_queued_events 默认值: 16384 该文件中的值为调用inotify_init时分配

45、给inotify instance中可排队的event的数目的最大值,超出这个值的事件被丢弃,但会触发IN_Q_OVERFLOW事件。/proc/sys/fs/inotify/max_user_instances 默认值: 128 指定了每一个real user ID可创建的inotify instatnces的数量上限。/proc/sys/fs/inotify/max_user_watches 默认值: 8192 指定了每个inotify instance相关联的watches的上限。注意: max_queued_events 是 Inotify 管理的队列的最大长度,文件系统变化越频繁,这个值就应该越大。如果在日志中看到Event Queue Overflow,说明max_queued_events太小需要调整参数后再次使用. l 安装inotify工具在Linux下使用i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号