2024年3月24日发(作者:英飞)
Selinux配置详解
1.背景
2.1传统的Linux OS的不足之处
虽然Linux 比起 Windows 来说,它的可靠性,稳定定要好得多,但是他也是和其他的UNIX 一样,有
以下这些不足之处。
1)存在特权用户root
任何人只要得到root的权限,对于整个系统都可以为所欲为。这一点Windows也一样。
2)对于文件的访问权的划分不够细
在linux系统里,对于文件的操作,只有「所有者」,「所有组」,「其他」这3类的划分。
对于「其他」这一类里的用户再细细的划分的话就没有办法了。
3)SUID程序的权限升级
如果设置了SUID权限的程序有了漏洞的话,很容易被攻击者所利用。
4)DAC(Discretionary Access Control)问题
文件目录的所有者可以对文件进行所有的操作,这给系统整体的管理带来不便。
1
对于以上这些的不足,防火墙,入侵检测系统都是无能为力的。
在这种背景下,对于访问权限大幅强化的OS SELinux来说,它的魅力的无穷的。
2.2 SELinux的优点
SELinux系统比起通常的Linux系统来,安全性能要高的多,它通过对于用户,进程权限的最小化,即使
受到攻击,进程或者用户权限被夺去,也不会对整个系统造成重大影响。
接下来我来介绍SELinux的一些特点。
特点1:MAC(Mandatory Access Control)―――对访问的控制彻底化
对于所有的文件,目录,端口这类的资源的访问,都可以是基于策略设定的,这些策略是由管理员定制的、
一般用户是没有权限更改的。
特点2: TE (Type Enforcement)――― 对于进程只付与最小的权限
Te概念在 SELinux里非常的重要。它的特点是对所有的文件都赋予一个叫type的文件类型标签,对于所
有的进程也赋予各自的一个叫 domain的 标签。Domain标签能够执行的操作也是由access vector在策略里
定好的。
我们熟悉的apache服务器,httpd进程只能在httpd_t 里运行,这个httpd_t 的domain能执行的操作,
比如能读网页内容文件赋予httpd_sys_content_t, 密码文件赋予shadow_t, TCP的80端口赋予 http_port_t
等等。如果在access vector里我们不允许 http_t来对http_port_t进行操作的花,Apache启动都启动不了。
反过来说,我们只允许80端口,只允许读取被标为 httpd_sys_content_t的文件,httpd_t就不能用别的端口,
也不能更改那些被标为httpd_sys_content_t的文件(read only)。
2
2024年3月24日发(作者:英飞)
Selinux配置详解
1.背景
2.1传统的Linux OS的不足之处
虽然Linux 比起 Windows 来说,它的可靠性,稳定定要好得多,但是他也是和其他的UNIX 一样,有
以下这些不足之处。
1)存在特权用户root
任何人只要得到root的权限,对于整个系统都可以为所欲为。这一点Windows也一样。
2)对于文件的访问权的划分不够细
在linux系统里,对于文件的操作,只有「所有者」,「所有组」,「其他」这3类的划分。
对于「其他」这一类里的用户再细细的划分的话就没有办法了。
3)SUID程序的权限升级
如果设置了SUID权限的程序有了漏洞的话,很容易被攻击者所利用。
4)DAC(Discretionary Access Control)问题
文件目录的所有者可以对文件进行所有的操作,这给系统整体的管理带来不便。
1
对于以上这些的不足,防火墙,入侵检测系统都是无能为力的。
在这种背景下,对于访问权限大幅强化的OS SELinux来说,它的魅力的无穷的。
2.2 SELinux的优点
SELinux系统比起通常的Linux系统来,安全性能要高的多,它通过对于用户,进程权限的最小化,即使
受到攻击,进程或者用户权限被夺去,也不会对整个系统造成重大影响。
接下来我来介绍SELinux的一些特点。
特点1:MAC(Mandatory Access Control)―――对访问的控制彻底化
对于所有的文件,目录,端口这类的资源的访问,都可以是基于策略设定的,这些策略是由管理员定制的、
一般用户是没有权限更改的。
特点2: TE (Type Enforcement)――― 对于进程只付与最小的权限
Te概念在 SELinux里非常的重要。它的特点是对所有的文件都赋予一个叫type的文件类型标签,对于所
有的进程也赋予各自的一个叫 domain的 标签。Domain标签能够执行的操作也是由access vector在策略里
定好的。
我们熟悉的apache服务器,httpd进程只能在httpd_t 里运行,这个httpd_t 的domain能执行的操作,
比如能读网页内容文件赋予httpd_sys_content_t, 密码文件赋予shadow_t, TCP的80端口赋予 http_port_t
等等。如果在access vector里我们不允许 http_t来对http_port_t进行操作的花,Apache启动都启动不了。
反过来说,我们只允许80端口,只允许读取被标为 httpd_sys_content_t的文件,httpd_t就不能用别的端口,
也不能更改那些被标为httpd_sys_content_t的文件(read only)。
2