网络操作系统—— Linux配置与管理.

Slides:



Advertisements
Similar presentations
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
Advertisements

面向侧面的程序设计 方林博士 本文下载地址:
高级服务器设计和实现 1 —— 基础与进阶 余锋
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Oracle数据库 Oracle 子程序.
在PHP和MYSQL中实现完美的中文显示
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
SVN的基本概念 柳峰
第二讲 搭建Java Web开发环境 主讲人:孙娜
学习目标 1、Linux(这里用的是Centos)下mysql5.7的基本安装 2、课后习题.
中国科学技术大学 肖 明 军 《网络信息安全》 中国科学技术大学 肖 明 军
大学计算机基础 典型案例之一 构建FPT服务器.
Ebooking 突发问题解决方案.
SVN服务器的搭建(Windows) 柳峰
管理信息结构SMI.
走进编程 程序的顺序结构(二).
网络常用常用命令 课件制作人:谢希仁.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
PostgreSQL 8.3 安装要点 四川大学计算机学院 段 磊
Windows网络操作系统管理 ——Windows Server 2008 R2.
Windows网络操作系统管理 ——Windows Server 2008 R2.
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
以ISI平台为例,为您演示一下如何在Endnote文献中查看该文献的References
第17章 网站发布.
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
ENS 10.1安装配置指南 王俊涛 | SE.
供应商登录CJLR SRM系统入口 CJLR供应商仅可以在互联网上访问SRM系统,无法在CJLR内网登录SRM系统.
Windows 7 的系统设置.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Unit 11.Operating System 11.1 What’s OS 11.2 Related Courses
SOA – Experiment 2: Query Classification Web Service
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第二章 登录UNIX操作系统.
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
Web安全基础教程
续签协议&修改密码操作手册 GDP项目组 2019/01/30.
第二章 安全管理.
第四章 团队音乐会序幕: 团队协作平台的快速创建
主要内容: 无线局域网的定义 无线传输介质 无线传输的技术 WLAN的架构 无线网络搭建与配置 无线网络加密配置
VB与Access数据库的连接.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
第4章 Excel电子表格制作软件 4.4 函数(一).
IT 安全 第 9节 通信和网络控制.
iSIGHT 基本培训 使用 Excel的栅栏问题
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Chapter 18 使用GRASP的对象设计示例.
系统权限管理概要 用 户 访问权限 对 象 用户和组 全局权限 类别 每个用户可以属于多个用户组 用户组可以与AD安全组同步 系统预置用户组
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
Touch Github = Touch the World
VRP教程 2011.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
Python 环境搭建 基于Anaconda和VSCode.
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
Google的云计算 分布式锁服务Chubby.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
使用说明书 网址: 贵阳学院智慧实验室管理平台 用户中心 使用说明书 网址:
第四章 UNIX文件系统.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
入侵检测技术 大连理工大学软件学院 毕玲.
实验六、COM类型病毒分析实验 实验开发教师: 刘乃琦 谌黔燕.
JUDDI安装手册.
Presentation transcript:

网络操作系统—— Linux配置与管理

第12章 Linux安全管理 学 习 要 点 Linux访问控制机制 Linux安全模型 用户身份验证 加固Linux系统 SELinux强制访问控制

12.1 Linux安全概述 访问控制机制 自主访问控制(Discretionary Access Control,DAC) 基于请求者的身份和访问规则来控制访问。 每一个对象都会记录一个所有者(拥有者)的信息,只要是对象的所有者,就可以获得完整控制该对象的能力。 DAC允许对象所有者完整访问该对象,但其他人需要访问该对象时,就必须授予适当的权限。但是每一个对象都仅有一组所有者信息,如果需要更复杂的访问控制的能力就需要访问控制列表(Access Control List,ACL)来为不同的用户设置不同的权限。 DAC与ACL都只是针对使用者与对象的关系进行访问控制,无法满足对安全性的复杂性要求。 强制访问控制(Mandatory Access Control,MAC) 通过比较具有安全许可的安全标记来控制访问。 MAC机制不允许对象的所有者随意修改或授予该对象相应的权限,而是通过强制方式为每个对象统一授予权限。用户或进程除了需要具备传统的权限外,还必须获得系统的MAC授权,方能访问指定的对象,这样管理者就可以获得更多的访问控制能力,从而进行更精密细致的访问控制配置,MAC的安全性比授予用户完全控制能力的DAC高得多。 在配置与维护方面MAC要比DAC复杂得多,这也是提高安全性所要付出的代价。 MAC的实现机制主要包括RBAC和MLS。RBAC全称Role-based Access Control,可以译为基于角色的访问控制,其实现机制是以用户所属的角色进行访问权限判断。MLS全称Mufti-Level Security,可以译为多层安全,其实现机制是以数据内容的敏感性或机密性定义若干不同的等级,以对象的机密等级来决定进程对该对象的访问能力。

12.1 Linux安全概述 Linux安全模型 传统的Linux安全模型 基于MAC的Linux安全模型 每个对象都有3个权限集,分别定义所有者权限、所属组权限和其他用户权限,这些权限由系统内核负责实现。用户根据对象的权限访问和操作这些对象。 一个进程或程序运行时实际上会表现为一个复制到可执行内存区域的文件,所以权限要对进程产生两次影响。 对象的任何所有者都可以设置或者改变对象的权限,超级用户root既对系统中的所有对象拥有所有权,又能够改变系统中所有对象的权限。 具有root权限的用户或者进程可以在Linux系统中任意行事,也就是root决定一切。 基于MAC的Linux安全模型 在一个基于MAC的系统上,超级用户仅用于维护全局安全策略。日常的系统管理员则使用无权改变全局安全策略的账户。 基于MAC模型的操作系统在配置和维护上比DAC复杂得多。要创建一个有效的全局安全策略,需要知道系统上每个应用的预期行为的细节。目前Linux的MAC解决方案SELinux(Security-Enhanced Linux)与AppArmor都简化了MAC复杂性,部分实现MAC。 SELinux是NSA(美国国家安全局)对Linux强制访问控制的有效实现。为便于实现,SELinux仅用于限制关键的网络守护进程,而其他都需要Linux DAC进行保护。 AppArmor是Novell对SuSE Linux的MAC实现,具有强大的安全控制能力而且配置维护比SELinux容易。 在多用户环境下运行Linux,或者对Linux较高安全性要求,首选具有全面访问控制能力的SELinux。

12.1 Linux安全概述 Linux安全威胁 缓冲区溢出 设置root权限的程序 Web应用漏洞 rootkit攻击 缓冲区溢出(buffer overflow)是指利用程序的漏洞,用某些恶意代码覆盖程序代码,从而攻击系统。 缓冲区溢出是所有安全问题中最重要也最危险的,几乎所有“致命的”安全漏洞都与它相关。 设置root权限的程序 设置root权限的程序是被设置了setuid位的程序,任何人都可以以root权限运行,而不是实际执行它的进程或用户的权限。 如果一个设置root权限的程序能以某种方式被发现或滥用,其他非特权用户就能顺利地利用该程序掌握root权限,非法地打开一个root终端。 Web应用漏洞 安装带有已知漏洞的Web应用程序,或者编写容易暴露缺陷的自定义Web应用程序,成为目前Web应用漏洞的主要来源。 rootkit攻击 rootkit是攻击者用来隐藏自己的踪迹和保留root访问权限的工具,而不是用于获得系统root访问权限的工具。通过rootkit的嗅探器获得其他系统的用户和密码之后,攻击者再利用这些信息侵入其他系统。 拒绝服务攻击(DoS) 任何阻止正常使用系统和网络资源的行为都认为是一种拒绝服务行为。管理员可以降低拒绝服务攻击的影响,但是无法完全阻止拒绝服务攻击的发生。 网络窃听

12.2 用户身份验证 Linux系统用户身份验证 Linux系统默认使用本地用户账户(保存在etc/password文件中)进行身份验证,每台主机都有自己的用户名和密码信息库, 对于企业级部署来说,Linux系统可以设置使用网络用户身份验证,即通过网络从服务器上获取用户身份验证信息。Red Hat Enterprise Linux支持以下4种网络用户身份验证: NIS:将系统配置成NIS客户端,通过NIS服务器获得用户信息。 LDAP:将系统配置成LDAP客户端,通过LDAP服务器获得用户信息。 Hesiod:从远程 Hesiod 数据库中检索用户信息。 Winbind:系统连接到Windows Active Directory或者Windows域控制器。 用户登录后系统先去检查本地的用户账户及密码,如果验证成功就可以登录本地,这称为本地用户;如果本地验证未成功,系统将连接远程服务器(如LDAP,前提是系统上必须启用这种方式)验证用户名密码,如果验证成功,这称为网络用户。如果两种方式都未通过验证,必须重新输入用户名及密码以重新登录。

12.2 用户身份验证 password/shadow身份验证体系 12.2 用户身份验证 password/shadow身份验证体系 最基本的身份验证系统由密码验证构成。Linux的密码不是明文进行比较,而是采用以下方式。 (1)系统记录用户的原始密码,并将其加密保存在系统中,然后丢弃原始密码。 (2)用户登录系统时输入密码,系统用同样的加密算法将用户输入的密码转换成密文。 (3)比较保存的密码密文和现在得到的密文,如果相同,允许用户登录系统。 密码加密可以使用一般的对称密钥算法,但Linux普遍使用类似MD5一类的Hash方法。这类算法是不对称的,也就是从密文是不可能知道原文的。如果获得加密结果,仍然可以用穷举的方法来获得密码,尤其对于短密码。 Linux所有用户都要读取用户配置文件/etc/passwd,而密码密文又不适合保存在该文件中。为解决这个问题,Linux系统采用所谓“Shadow”方法,即把密码验证文件分成两个,分别是/etc/passwd和/etc/shadow。/etc/passwd文件包含了公共的信息,也就是一般用户可以访问的内容;而/etc/shadow文件包含了加密的密文,其内容只有超级用户可以访问。 这个方法尽管简单有效,但是却给某些程序的身份验证带来了不必要的麻烦。

12.2 用户身份验证 配置Linux系统使用LDAP认证 概述 12.2 用户身份验证 配置Linux系统使用LDAP认证 概述 Red Hat Enterprise Linux内置OpenLDAP软件,可以按照客户/服务器模型实现LDAP目录服务。 目前绝大部分的服务软件都支持使用LDAP用户身份验证,也可用于Linux系统用户验证。 通过LDAP的目录复制功能,还可以让用户使用一个账户登录网络中使用LDAP服务的所有服务器。 LDAP用来保存用户身份验证条目的对象类主要有posixGroup、posixAccount和shadowAccount,分别用来保存组、用户、密码等信息,这些信息很容易与系统的组和用户账户关联起来。 LDAP服务器存储相应的用户身份验证条目,即可用于系统用户身份验证。

12.2 用户身份验证 配置Linux系统使用LDAP认证 配置LDAP服务器 12.2 用户身份验证 配置Linux系统使用LDAP认证 配置LDAP服务器 (1)在LDAP服务器上安装相应的openldap-servers软件包。 (2)进行适当配置,编辑/etc/openldap/slapd.conf文件,使其与组织机构规格相适应。 通常只需要修改几处即可,主要是定义suffix指令以修改目录树后缀(例如suffix "dc=abc,dc=com"),定义rootdn指令以设置管理员名称(例如rootdn "cn=Manager,dc=abc,dc=com"),定义rootpw指令以设置管理员密码,确认数据库目录定义是否正确(例中directory /var/lib/ldap)等。 (3)执行service ldap start命令启用LDAP服务。 (4)添加用户账户条目。 实际应用中一般采用批量转换的方式来提供账户数据,使用PADL Software Pty Ltd.公司的 MigrationTools迁移工具可从现有名称服务(文件、NIS和网络信息)中将用户、组群、别名、主机、网络组、网络、协议和服务等信息导入到LDAP。 也可手工添加用户条目。使用phpLDAPadmin添加用户。

12.2 用户身份验证 配置Linux系统使用LDAP认证 配置LDAP客户端 12.2 用户身份验证 配置Linux系统使用LDAP认证 配置LDAP客户端 LDAP系统的用户身份验证涉及两个服务:名称切换服务(NSS)和身份验证服务。NSS用于通过LDAP解析用户和组群账户。身份验证服务向LDAP验证用户身份,通过PAM(插入式认证模块)提供本地Linux身份验证服务。 系统用户身份验证的LDAP客户端的具体配置

12.3 加固Linux系统 安装必要的软件和初始化安全设置 Linux系统安全始于操作系统安装阶段,安装Linux时最好先进行最小化安装,然后再安装必要的软件,最大程度上减少某些程序出现安全隐患的可能。 谨慎选择要在Linux系统上安装的软件。Linux系统要充当的角色不同,所必需的软件也不尽相同,不应安装的程序也不一样。 对于面向Internet的服务器,以下软件往往都是不必要的,容易引起安全问题。 X Window System:图形界面对服务器来说没有必要,而且X的安全漏洞也比较多。 RPC Services:远程过程调用大大方便了开发人员者,但是它很难被防火墙跟踪,而且过分依赖于容易被欺骗的UDP协议。 SMTP守护进程:不需要转发邮件的系统都不需要。如果一个系统仅仅需要发送邮件, sendmail可以在需要时作为命令调用,而不应该作为守护进程运行。 Telnet和其他明文登录服务:通过网络传输未加密的登录信息会被窃听,不适合通过不可信网络远程访问系统,而SSH是一个更好的选择。 操作系统安装之后,初始化设置要考虑安全问题,包括设置强加密的root密码,启用一个简单的基于主机的防火墙策略,启用SELinux。

12.3 加固Linux系统 补丁管理 访问控制机制 操作系统永远都有未打补丁的漏洞,也就是说在厂商发布补丁之前能被攻击者发现的漏洞永远存在。 虽然不可能彻底消除安全漏洞,但是作为Linux管理员,必须保持安全补丁包的更新,定期对系统进行安全检查,发现漏洞立即采取措施,不给攻击者以可乘之机。 现在的Linux版本通常包括能自动下载和安装安全更新的工具,这些安全更新能够缩短系统遭受威胁的时间。 由于安全补丁可能导致系统不稳定,因此在关键的生产系统上不要运行自动更新,必须在测试系统上完成所有补丁测试后,才能将它们移植到生产系统中。

12.3 加固Linux系统 强化密码管理 设置安全有效的密码 调整密码有效期 由于攻击者可以使用自动化的工具软件多次尝试登录系统,简单的密码很容易就会被猜出来。一个有效的密码应该具备以下特点。 不包含个人信息。 不存在键盘顺序规律。 不使用字典中的单词。 最好包含非字母符号。 长度不小于8位。 在保持密码的复杂性的同时,易记性也非常重要。 不要将所有需要密码的地方设置为同一密码。 定期修改密码。 调整密码有效期 密码有效期即用户密码的最长和最短的生存时间,可以直接在文件/etc/login.defs和/etc/default/useradd中设置。 为防止用户频繁地使用旧密码来循环修改密码,密码应该有一个最短生存时间,7天比较可行。最长生存时间比较合理的一般为60天。 当然与其过多依赖密码有效期,不如及时删除失效的用户账户,并且要保管好密码。

12.3 加固Linux系统 控制root账户的使用 尽量不要用root登录 使用su命令 在不是绝对必要的情况下,不要用root登录。 普通账户可以完成的日常工作,就用普通账户登录系统去做。 使用su命令 使用su命令可以临时改变用户身份,用法为: su [选项] [用户名 [参数]...] 当要对系统执行一些普通用户无权执行的操作时,用以下命令临时改变身份为root。 su root su命令既是一个安全解决办法,同时也是一个安全隐患,因为知道root密码就能使用su命令从任何登录账户提升到root。可以通过修改配置文件来限制su的使用。su命令的配置文件是/etc/pam.d/su,这是一个PAM。要限制普通用户切换到root身份,删除su配置文件中下列行开头的“#”注释符。 #auth sufficient pam_wheel.so trust use_uid 这样普通用户只有加如到wheel这个特殊组,才能使用su命令切换到root身份。 如果要完全禁止su命令,可以通过编辑su配置文件,将下面一行内容添加到所有验证设置行之前,这样就可以拒绝所有使用su命令的请求。 auth requisite /lib/security/per_deny.so

12.3 加固Linux系统 控制root账户的使用 使用sudo工具 为了执行某一特权命令,有资格的用户只需在命令行输入sudo与要执行的命令,按照提示输入用户自己的密码(而不是root密码),如果密码正确,立即以sudo工具的配置文件/etc/sudoers文件中指定身份完成命令。 sudo 要执行的命令 配置文件/etc/sudoers包含所有可以访问sudo工具的用户列表并定义了他们的特权,条目格式如下: 用户 主机=(所用用户身份) 命令 例如以下定义表示root账户可以在任何主机上,以任何用户身份运行任何命令。 root ALL=(ALL) ALL 条目格式中用户、主机和命令可以一个范围,如主机列表、命令列表。 sudo功能非常强大,使用非常方便,但还是要谨慎使用它,因为root权限不可忽视。

12.3 加固Linux系统 严格设置访问权限 谨慎设置文件权限 不要滥用加固Linux系统 使用sticky权限防止随意删改文件 首先设置文件默认权限。 其次只把权限分配给必要的用户和组。 最后要注意记录权限的分配情况,以便在出现安全问题后,能够迅速定位出问题的地方并采取应对措施。 不要滥用加固Linux系统 Linux操作系统中的suid(setuid)和sgid(setgid)是权限体系中的主要安全问题。suid、sgid与用户进程的权限有关。正常情况下,用户ID和组ID将会被分配成执行对应命令的用户的UID和GID,从而维持权限体系的正常运转。 有些命令必须能够绕过正常的权限体系才能执行,最典型的是passwd命令可以让用户修改自己的密码。但是用户密码密文存放在/etc/shadow文件,该文件只允许超级用户读写,为解决这类问题,Linux使用了suid机制让普通用户执行passwd命令时自动拥有root的UID身份。 suid很容易带来安全性问题。如果设置有suid的程序被溢出,或者被破解就很可能导致非法用户得到一个具有root身份的进程,当该进程是一个终端Shell时,用户就得到了系统的完全控制权。 尽量少用suid功能,并且定期检查(可以使用专门工具)系统上有没有来源不明的suid程序。 使用sticky权限防止随意删改文件 为防止某个用户任意删除或修改别人的文件,可以设置sticky权限,这样只有文件的所有者才可以删除、移动和修改文件。 sticky权限只对目录有效,对文件没有效果。 要设置sticky权限,可以使用下面的命令: chmod +t 目录名

12.3 加固Linux系统 强化应用程序安全 以非特权用户/组身份运行应用程序 使用chrrot技术修改守护进程的根目录 模块化应用程序 任何以root身份运行的进程都不仅可能带来缓冲区溢出问题,而且可能使攻击者远程获得root权限。因此,守护进程应当能以非特权用户或组的身份运行,而不能以root身份运行。 使用chrrot技术修改守护进程的根目录 采用chroot技术修改网络守护进程的根目录路径,以限制守护进程执行的空间。 chroot是Linux内核提供的一个系统调用,允许系统进程将其根目录切换至指定的目录。 模块化应用程序 将应用程序模块化有助于降低安全威胁,更容易定位和修补源码中的bug,裁剪不必要的功能,减少root身份运行的几率。 Web服务器Apache曾经是整体式的,但目前支持代码模块,可以在启动时根据需要加载,这减小了Apache的内存占用和未用功能的漏洞可能带来的威胁。 加密通道保护密码和数据 使用应用级加密是确保网络传输中端到端加密的最有效方式。 OpenSSL提供的SSL和TLS协议需要使用X.509数字证书,这可以由用户空间的openssl命令产生和签名。 对最理想的安全性来说,应该有一个本地或第三方的认证机构(CA)来签名所有服务器证书,但是自我签名(即未认证的)的证书也可以使用。

12.3 加固Linux系统 网络安全 反病毒软件 日志 网络防火墙用于控制内外网的数据包通信,保护内网安全。 主机防火墙用于保护主机免受外界的攻击,尤其是恶意软件和未授权用户的访问。 入侵检测就是通过对系统数据的分析,发现非授权的网络访问和攻击行为,然后采取报警、切断入侵线路等对抗措施。 Linux还提供TCP Wrappers工具为其增加一个保护层,这个保护层用于控制主机到网络服务的连接 xinetd是一种超级服务器,本身也是一种由TCP Wrappers管控的服务,可以控制对一个网络服务子集的访问,提供额外的访问、日志、绑定、重定向和资源使用控制。 对于Linux来说,可以组合使用iptables防火墙、TCP Wrappers和xinetd,实现网络服务多重访问控制。 反病毒软件 对Linux系统来说,蠕虫的危害比病毒大得多,多数Linux系统管理员通过保持安全补丁的自动更新来防范蠕虫,实践证明这非常有效。 适合Linux平台的反病毒软件主要McAfee、Symantec、ClamAV等。 日志 Linux系统中的日志对于系统安全来说非常重要,它记录了系统每天发生的各种各样的事件,包括那些用户曾经或者正在使用系统。 syslog是Linux最常用的一个日志记录工具,其日志不仅可以保存在本地,还可以通过网络发送到另一台计算机上。大多数应用程序都可以被配置成记录任何详细程度的日志。 日志只是一种审计和监测工具,而不是主动控制手段,即使为了安全而使用自动日志监视器来实时分析日志,日志也只是告诉管理员已经发生的事故。 当然保护系统日志本身的安全,不被内部用户或外部人侵者删改显得尤为重要。

12.4 SELinux强制访问控制 SELinux基础 SELinux与类型强制 安全上下文(Security Contect)2. SELinux实现一种灵活的MAC机制,称为类型强制(Type Enforcement)。 SELinux将进程称为主体(Subjec),将所有可以访问的对象,如文件、目录、进程、设备等都称为对象(Object)。 每一个进程都有一个类型标识,一般称之为域(domain)。 每一个对象也有一个类型标识。 采用类型强制机制,所有主体和对象都有一个类型标识符与它们关联,要访问某个对象,主体的类型必须为对象的类型进行授权。 安全上下文(Security Contect)2. 在SELinux中,访问控制属性称为安全上下文。安全上下文是一个简单的、一致的访问控制属性。SELinux的所有对象和主体(进程)都有与其关联的安全上下文,它是SELinux决定进程是否能访问对象的依据。 安全上下文的格式如下: 用户标识符:角色标识符:类型标识符 用户(User)标识用户身份,即用户登录系统后所属的SELinux身份 角色(Role)用于标识一组用户或对象的集合,通常以_r作为后缀 类型(Type)用于标识对象的类型,通常以_t作为后缀

12.4 SELinux强制访问控制 SELinux基础 安全策略(Security Policy) SELinux访问控制流程 Red Hat Enterprise Linux 5提供以下3种安全策略,每种安全策略的功能与定位都不同。 targeted:保护指定的守护进程(服务)。 strict:对所有守护进程进行完全的SELinux保护,包含网络服务、一般指令及应用程序。 mls:提供符合MLS(多层安全)机制的安全性。 SELinux访问控制流程 (1)内核中的安全策略强制SELinux服务器检查AVC,其中缓存有主体与对象的权限。 (2)如果AVC中没有缓存相应的规则,则将该请求继续送达SELinux安全服务器,该服务器会检查这个应用程序的安全上下文,根据结果静定是否授予访问权限。 (3)如果拒绝授予访问权限,一个avc: denied信息会记录到/var/log/messages文件中。

12.4 SELinux强制访问控制 启用SELinux SELinux的3种运行模式 配置文件/etc/sysconfig/selinux enforcing(强制):强制执行SELinux安全策略。只要违反SELinux安全策略,就被禁止访问。 permissive(允许):SELinux系统给出警告信息,但并不强制执行安全策略,又称警告模式。 disabled(禁用):完全禁止SELinux,SELinux将从内核中脱离。 配置文件/etc/sysconfig/selinux 系统是否启用SELinux 的设置,记录在/etc/selinux/config配置文件中。查看该文件,可得知系统SELinux的当前状态,修改该文件,即可改变SELinux运行模式。配置文件示例: # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - SELinux is fully disabled. SELINUX=disabled # SELINUXTYPE= type of policy in use. Possible values are: # targeted - Only targeted network daemons are protected. # strict - Full SELinux protection. SELINUXTYPE=targeted SELINUX参数值定义运行模式。“强制”和“允许”都属于启用SELinux。在启用状态与禁用状态之间切换,必须重新启动系统。如果处于启用状态,在强制和允许两个模式之间切换,无需重新启动系统。 SELINUXTYPE参数用于指定要执行的SELinux策略,一般使用targeted策略来保护指定的守护进程。

12.4 SELinux强制访问控制 启用SELinux 使用安全级别设置工具设置SELinux运行模式 Red Hat Enterprise Linux 5图形界面提供安全级别设置工具用于设置SELinux。 从“Selinux设置”菜单中选择SELinux模式,如果从禁用模式转换到强制或允许模式,还会提示下次重启系统标注文件系统,需要确认请单击“是”按钮。 从禁用模式转换到强制或允许模式,必须重启系统方能生效。

12.4 SELinux强制访问控制 启用SELinux 使用命令行工具管理SELinux运行模式 通过内核参数切换SELinux运行模式 可以执行命令sestatus来查看SELinux当前状态 还可执行getenforce命令来查看当前SELinux模式 (2)修改SELinux运行模式 执行setenforce命令可以实时修改SELinux运行的模式。例如执行以下命令使SELinux以强制模式运行。 setenforce 1 例如执行以下命令SELinux以允许模式运行。 setenforce 0 通过内核参数切换SELinux运行模式 可以通过设置内核启动参数来实现SELinux运行模式的切换。例如在/etc/grub.conf文件中修改kernet参数定义,在该参数定义最后加上参数selinux=N(N=0表示禁用,非0表示启用)。 在系统引导时将参数selinux=0传递给内核亦可临时禁用SELinux。

12.4 SELinux强制访问控制 使用SELinux控制服务访问 使用SELinux布尔值管理服务 查看SELinux布尔值 Red Hat Enterprise Linux 5启用SELinux之后,targeted策略为每一个服务指定了默认的安全策略,系统依照这些策略来检查这个服务的相关权限,只有符合所要求的权限,系统才会允许执行操作。 默认策略可能并不适合实际部署的需要,可能有的权限空间过大,有的权限空间又太小。 SELinux内置了许多布尔值参数,便于管理员更精细地管理安全策略。通过使用SELinux布尔值开关可以控制某一服务(守护进程)的安全策略的强制执行。 布尔值用数字或常量表示,1或on表示关闭某一服务的SELlinux保护;0或off启用某一服务的SELinux保护。 查看SELinux布尔值 使用命令行工具getsebool来查看SELinux布尔值,用法如下: getsebool [-a] [boolean] 使用选项-a可以列出所有SELinux布尔值。参数boolean指定要查看的SELinux布尔值名称。SELinux布尔值数量较多,可使用grep查找命令与管道操作来获取相关的SELinux布尔值。 设置SELinux布尔值 使用命令行工具setsebool来设置SELinux布尔值,用法如下: setsebool [ -P ] boolean value | bool1=val1 bool2=val2 ... 选项-P表示永久修改,否则只能是临时修改,重启将恢复默认值。有两种赋值形式,一种是使用等号,另一种是将参数和值分开

12.4 SELinux强制访问控制 使用SELinux管理工具 Red Hat Enterprise Linux 5图形界面提供了功能强大的SELinux管理工具,可用来完成主要的SELinux配置管理任务。 最常用的就是查看和修改SELinux状态,查看和设置SELinux布尔值。