欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > Linux进阶——selinux

Linux进阶——selinux

2025/2/23 16:36:29 来源:https://blog.csdn.net/weixin_63033110/article/details/145610028  浏览:    关键词:Linux进阶——selinux

一、selinux的说明:

SELinux意思为安全强化的linux。 

SELinux是为使系统中的程序读取自己的文件。例如:selinux可以限制nginx服务器只能读取/etc/nginx下面的文件,不能读取其他服务的文件。SELinux还会限制nginx服务只能使用80和443端口

以下服务都需要在占用相应的服务器端口上:

端口相当于是服务器的门

例行性工作:crontab        /etc/crontable

时间服务器:/etc/chrony.conf        #端口号为123号

ssh服务器:/ssh/sshd_config        #端口号为22号

web服务器(nginx):/etc/nginx/nginx.conf    /etc/nginx/conf.d/*.conf            网页文件所在目录        #端口号为80号或者443端口

nfs服务器:/etc/exports     autofs客户端自动挂载nfs服务器的nfs目录: /etc/auto.master    

dns服务器:/etc/named.conf        /var/named/       #端口号为53号

在之前的学习过程中,每当我们需要修改服务时都会使用setenforce 0,让selinux处于permissive状态。

二、工作原理:

SELinux 是通过MAC的方式来控制管理进程,他控制的主体时进程,而目标则是该进程能否读取的文件资源。

安全上下文:主题能不能访问目标除了策略指定的外,主体和目标的安全上下文必须一致才能成功访问。

修改安全上下文:

chcon        [-R]        [-t  type]        [-u  user]        [-r  role]        文件

-R:连同该目录下的子目录也同时修改

-t:后面接安全上下文的类型字段

-u:后面接身份识别

-r:后面接角色

chcon        [-R]        --reference=范例文件        文件        #将文件的安全信息按照范例文件修改

访问过程(以httpd为例):

(1)首先,触发具有httpd_exec_t这个类型的/usr/sbin/httpd这个可执行文件。

(2)该文件类型会让这个文件所造成的主体进程具有httpd这个域,我们的策略已经针对这个域所指定的许多规则,其中包括这个域可以读取的目标资源类型;

(3)由于httpd domain 被设置成可读取httpd_sys_content_t这个类型的文件,因此httpd进程就能读取在/var/www/html目录底下的文件。

(4)最终能否读取/var/www/html文件,还是需要看rwx是否符合linux的权限规范。

三、selinux的动、关闭、与查看:

SELinux的三种状态(一般不开启)
(1)enforcing :强制模式,代表selinux正在运行中,开始限制domain/type

(2)permissive :宽容模式,代表selinux正在运行,不过会有警告信息,但是并不会实际的限制domain/type的访问。

(3)disabled:关闭,SELinux实际上没有实际的运行。

想要将selinux关闭,首先进入配置文件:vim       /etc/selinux/config

修改配置:

三、实验selinux对linux服务的影响

基于IP地址的实验:

getenforce        #查看selinux状态

setenforce        1        #将selinux设置成强制模式

开启后尝试使用之前的nginx服务:

curl        192.168.68.100        #测试nginx否可以使用

因为打开了selinux的强制模式,所以无法访问。

解决方法:

修改index.html 的访问权限,与系统默认的403报错界面一致

chcon        -t        httpd_sys_content_t        /www/ip/100/index.conf        #修改文件权限(添加安全上下文,用ls -Z查看)

(chcon        -t        httpd_sys_content_t        /www/        -R        #递归修改文件夹中的所有文件权限,并且以后创建的文件都会继承当前文件夹的格式)

curl        192.168.68.100        #再次测试

成功!

semanage        port        -l        #列出端口的类型值

基于端口的实验:

vim         /etc/nginx/conf.d/test_ip.conf        #添加以下的配置信息

server{listen 192.168.68.110:20000;root /www/port/20000;location / {}
}

mkdir        /www/port/20000        #新建工作目录

echo        this is 20000        >        /www/port/20000/index.html        #新建首页文件

systemctl        restart        nginx      # 因为打开selinux的强制模式,所以无法重启

semanage        port        -a         -t        httpd_port_t        tcp        20000        #添加服务端口

systemctl        restart        nginx        #成功启动

curl        192.168.68.110:20000        #测试

成功!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词