selinux 的介绍
selinux 是linux上最杰出的新安全子系统。它是一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在它的任务中所需要的文件。
selinux 通过增强访问控制来限制用户程序访问的最低权限。在Linux里面所有文件和进程都有一个security context的,而selinux就是通过security context 的作用来控制文件和进程的控制;
security context 安全上下文,安全背景的意思;
1. 查看selinux的状态
改变selinux的状态:
2. 在/etc/selinux目录下编辑selinux的配置文件config, 也可以改变状态:
3. selinux 状态有三种:enforcing 强制状态; permissive 警告状态; disabled 禁止状态;在这三种状态切换间,强制状态和警告状态不用重新启动系统,而禁止状态与任意一种状态切换都需要重新启动系统;
查看security context ( 安全上下文)的值: ls -Z 文件名
selinux_config_t 这个就是我们contest 的值;context 值会随着文件的位置不同发生变化;
context的值会继承上一级的context值:
如何恢复文件的context值:
关于selinux 的boolean值:
如何查看bool值:
查看关于http服务的selinux 的bool值;如果我们需要开启特定的服务端口使用下面命令:
同样我们不在使用的时候关闭端口就可以了;
5. 在linux系统中,如果我们的SELinux是处于强制状态的,一旦用户触犯了selinux的规则,那么SELinux将会阻挡用户的访问。但是linux也提供给用户提供了一个解决方案,当用户触犯了SELinux的规则后,系统会跳出一个黄色五角星,并给出解决的方案。如果这个黄色五角星没有跳出来,如果这个软件包没有安装,那么就需要安装下 setroubleshoot;
6. selinux 的第二层防火墙:tcp_wrappers
tcp_wrappers被设计为一个介于外来服务请求和系统服务回应的中间处理软件。
动作基本过程:当系统接收到一个外来服务请求的时候,先由TCP Wrapper处理这个请求,TCP Wrapper根据这个请求所请求的服务和针对这个服务所定制的存取控制规则来判断对方是否有使用这个服务的权限,如果有,TCP Wrapper将该请求按照配置文件定义的规则转交给相应的守护进程去处理同时记录这个请求动作,然后自己就等待下一个请求的处理。
tcp_wrappers 的访问控制主要是两个文件;
/etc/hosts.allow ###用来定义允许访问的用户
/etc/hosts.deny ###同来定义不允许访问的用户
在这个访问控制程序里面,tcp_wrappers先是访问 /etc/hosts.allow文件里面的用户,如果文件里面没有在访问 /etc/hosts.deny文件的用户;如果文件里面还是没有则默认允许所有访问;
现在我们来测试tcp_wrappers : 我们在服务端设置如下配置
在/etc/hosts.allow 文件编辑:
在/etc/hosts.deny 文件下编辑:
接着我们在客户端进行测试:首先是192.168.88.130的客户端:
访问被拒,在接下来我们在192.168.88.129的客户端:(我们在黑白名单都写该ip,确定优先读取那个文件)