一、SELINUX的概述
SELinux(Security-Enhanced Linux) 是美国国家安全局(NAS)对于强制访问控 制的实现,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。大部分使用 SELinux 的人使用的都是SELinux就绪的发行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian 或 Gentoo。它们都是在内核中启用SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 SELinux 的功能。
二、SELINUX的特点
1.MAC
对访问的控制彻底化,对所有的文件、目录、端口的访问都是基于策略设定的,可由管理员时行设定。
2.RBAC
对于用户只赋予最小权限。用户被划分成了一些role(角色),即使是root用户,如果不具有sysadm_r角色的话,也不是执行相关的管理。哪里role可以执行哪些domain,也是可以修改的。
3安全上下文所有的操作系统访问控制都是主体和客体的相关访问控制属性,在SELINUX,访问控制属性称为安全上下文,安全上下文是一个简单的、一致的访问控制属性,所有客体(文件,进程间通信,通信管道,套接字,网络主机等)和主体(进程)有一个和客体和他们相关的单一安全上下文,一个进程的类型通常称为域,域和域类型都一样,即都是安全上下文的'TYPE',一个安全上下文是由角色,用户和类型标识符。
文件的Security Contex规则如下:
• rpm包安装的:会根据rpm包内记录来生成安全上下文;
• 手动创建的文件:会根据policy中规定的来设置安全上下文;
• cp:会重新生成安全上下文;
• mv:安全上下文则不变。
实例1:在ftp目录下建立文件,可以查看到安全登录lftp服务,可以查看到有这个文件;如果在/mnt目录下建立文件,将/mnt下的文件移动到/var/ftp下,则安全上下文的类型为mnt_t,则登录lftp时,不能查看有此文件。
在/mnt下建立一个文件
将/mnt下的westos文件移动到/var/ftp目录下
查看是否将/mnt/westos文件移动到了/var/ftp目录下
在/var/ftp目录下建立一个文件fire
查看文件的安全上下文,由下图可以看出fire文件的类型修改为了public_content_t;而westos文件的类型为mnt_t
登陆lftp,查看fire文件是否存在,由下图可以看出只有fire 文件存在;
chcon:修改对象的安全上下文,包括用户,角色,类型,安全级别,也就是将每个文件的安全环境变更至指定环境
-t:设定指定类型的安全目标环境 -u:修改指定用户的安全目标环境
-r:设定指定角色的安全目标环境
查看ftp目录下所有文件的安全上下文
登陆ftp时也可以查看到安全类型为public_content_t的文件
实例2:临时修改安全上下文
建立westos目录
在westos目录下建立文件
修改vsftpd的配置文件
重启vsftpd服务
关闭防火墙
查看westos目录的安全上下 文
查看/ftp目录的安全上下文
修改/westos目录及其目录下文件的安全上下文
在SELINUX服务重启前查看westos目录和目录下文件的安全上下文是否被修改
重启selinux服务
将selinux状态修改为关闭状态disabled,
重启系统
将selinux状态分为强制状态enforcing
重启系统
在SELINUX服务重启后查看westos目录和目录下文件的安全上下文是否被修改
查看/westos目录本身和目录下的文件的安全上下文
semanage用于查询与修改SELinux默认emanage命令是用来查询与目录的安全上下文
fcontext主要用在安全上下文方面
-a :增加一些目录的安全上下文类型设置
-t:安全上下文的类型
'/westos(/.*)?'='/westos/(/.*)?'
手动同步安全上下文
F:刷新 , 强制重置上下文以匹配可定制文家file_context,以及默认的安全上下文,更改用户、角色、范围部分和类型
v: 两个v都是显示,显示文件标签的更改,并将过程显示到屏幕上;
R:表示递归
查看修改后的安全上下文
查询/westos安全上下文
三、SELINUX 影响服务功能
linux 中的 sebool(布尔值)会影响服务,进程功能会给系统进程加上sebool(布尔值),就像加上开关,禁止系统认为权限过大的操作。使系统更加安全
(1)将SELINUX状态修改为宽容模式
(2)查找本系统内ftp的布尔值设置状况
getsebool命令是用来查询SElinux策略内各项规则的布尔值
getsebool -a 查询本系统内所有的布尔值设置状况
3)将ftp_home_dir布尔值永久打开
(4)查找本系统ftp布尔值得设置是否已经打开
ftp_home_dir:允许认证用户可以读写自己的主目录中的文件
(5)开启服务后,以本地用户student身份登录 ftp 服务,从而对比开启前是否可以对注目录进行行读写
四、添加端口
端口的概念:
- 电脑运行的系统程序,其实就像一个闭合的圆圈,但是电脑是为人服务的,他需要接受一些指令,并且要按照指令调整系统功能来工作,于是系统程序设计者,就把这个圆圈截成好多段,这些线段接口就叫端口(通俗讲是断口,就是中断),系统运行到这些端口时,一看端口是否打开或关闭,如果关闭,就是绳子接通了,系统往下运行,如果端口是打开的,系统就得到命令,有外部数据输入,接受外部数据并执行。
- 系统里,程序默认使用端口 2^0~2^10;
能够开启的端口的个数是 2^32 / 2^64(32位或64位操作系统);
查看系统各服务端口及协议类型:cat /etc/services。
(1)安装httpd服务:yum install httpd
(2)修改SELINUX的状态为宽容模式
(3)开启httpd服务
(4)查询关于http的端口
(6)永久添加端口:semanage port -a -t http_port_t -p tcp 6666
-a :添加端口
-t:类型
-p:永久添加
(7)修改SELINUX的状态为强制状态
(8)编辑配置文件
(9)开启httpd服务
(10)查询关于http的端口
(11)添加tcp端口7777
(12)重启服务
(13)查看端口
五、SELINUX故障查询
若是 SELinux 出错,建立 /.autorelabel 文件重启系统后selinux恢复
touch /.autorelabel 文件是为了让SELINUX重新启动,相当于先该为disabled再该为enforcing