SE Linux

合集下载

SELinux与MySQL数据库的定制安装

SELinux与MySQL数据库的定制安装

SELinux与MySQL数据库的定制安装作者:于述春来源:《无线互联科技》2024年第07期摘要:随着服务器操作系统Linux的推广,在Linux上安装数据库的情形也越来越普遍。

考虑到存储空间等因素,数据库安装多采用定制安装,即不是安装在默认路径下,而是安装在某个指定路径。

SELinux(Security-Enhanced Linux)模块既是Linux的自带安全防护网,但同时也对如Web服务和数据库服务的安装目录规定了访问权限,即只开放默认安装目录的访问权限,而限制数据库等服务对其他目录的访问。

当然,最简单的解决方案是关闭SELinux模块,但这会影响系统安全。

因此,人们需要既运行SELinux又开放数据库服务对定制目录的访问。

文章通过对SELinux的分析,可以修改定制目录的SELinux访问权限。

关键词:SElinux;MySQL;安全性中图分类号:TP391 文献标志码:A0 引言Linux操作系统作为一种开源操作系统,具有高度的灵活性和可定制性。

MySQL作为一个流行的关系型数据库管理系统,被广泛应用于各种应用程序和网站。

然而,在Linux下安装和配置MySQL时,存在一些安全性方面的考虑。

其中之一是SELinux,即安全增强型Linux,它提供了强制访问控制机制,可以限制进程的访问权限,从而增强系统的安全性。

李贺[1]研究了使用非标准端口登录SSH时SELinux的相关安全配置问题。

王斌[2]研究了部署Web服务时修改SELinux的有关安全策略。

本文旨在研究在Linux下定制安装MySQL的方法,并结合SELinux进行安全配置,以满足用户对数据库安全性的需求。

同时,本文还将研究设置定制目录的方法,使得MySQL的安装更加灵活和可定制化。

这些关键问题的研究可以为Linux下MySQL的定制安装与SELinux 配置提供一种有效的解决方案,提高数据库的运行效率和安全性。

1 Linux下MySQL的定制安装1.1 MySQL的基本安装在Linux下定制安装MySQL与SELinux的过程需要注意一些关键步骤。

Android系统添加SELinux权限

Android系统添加SELinux权限

Android系统添加SELinux权限CPU:RK3288系统:Android 5.1SELinux 主要由美国国家安全局开发。

2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。

通过虚拟⽂件系统 proc 来读写 gpio 的⽅法⾮常受欢迎,不仅因为其省去了 hal 层、 jni 层的代码,⽽且可以直接通过 adb shell 来读写 gpio。

在 user 版本,虽然驱动代码中已经将节点权限设置为 777 或者 666,但是在 adb shell 中写 gpio 时会报出权限不⾜的问题。

最快的解决办法是将系统编译成 userdebug 版本或者 eng 版本,也可以对系统 root。

下⾯是编译成 user 版本的解决⽅法,前提是驱动已经OK。

cust_gpios 是驱动中通过 proc_mkdir 创建的⽬录,relay 是通过 proc_create 创建的节点,对应⼀个⽅向为输出 gpio1、在 adb 中读,没有问题,但是写 gpio 会报出权限不⾜shell@rk3288:/proc/cust_gpios $ cat relaycat relay1shell@rk3288:/proc/cust_gpios $ echo0 > relayecho0 > relay/system/bin/sh: can't create relay: Permission deniedkenel 中打印出的错误信息如下type=1400 audit(1358758415.820:7): avc: denied { write} for pid=1229 comm="sh" name="relay" dev="proc" ino=4026533065 scontext=u:r:shell:s0 tcontext=u:object_r:proc:s0 tclass=file permissive=0解释:write:表⽰没有 write 权限shell:shell 中缺少权限,⽂件名与此相同,xxx.teproc:proc ⽂件系统缺少权限file:file 类型的⽂件2、添加 shell 权限,scontext 对应的是 shell ,所以需要在 shell.te 最后⾯中添加path:\device\rockchip\common\sepolicy\shell.teallow shell proc:file write;3、添加后编译会报错如下,这是因为添加了不允许的规则libsepol.report_failure: neverallow on line 344 of external/sepolicy/app.te (or line 4313 of policy.conf) violated by allow shell proc:file { write };需要在 app.te 中的 344 ⾏中不允许的规则中删除添加的权限,⽤⼤括号括起来path:\external\sepolicy\app.teneverallow {appdomain -shell}proc:dir_file_class_set write;此时可以在 adb 来通过 proc 虚拟⽂件系统正常读写 gpio4、操作 gpio 最终要由上层 apk 来读写,同样写 gpio 时,kernel 和 logcat 都会报出权限不⾜,解决⽅法与上⾯类似type=1400 audit(1358758857.090:8): avc: denied { write } for pid=1208 comm="ron.gpiocontorl" name="relay" dev="proc" ino=4026533065 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:proc:s0 tclass=file permissive=0添加权限path:device\rockchip\common\sepolicy\untrusted_app.teallow untrusted_app proc:file write;添加后编译报错libsepol.report_failure: neverallow on line 344 of external/sepolicy/app.te (or line 4313 of policy.conf) violated by allow untrusted_app proc:file { write };删除不允许的权限path:\external\sepolicy\app.teneverallow {appdomain -shell -untrusted_app}proc:dir_file_class_set write;此时 adb 和 apk 中都能正常读写 gpio。

如何解决SELinux阻止虚拟机访问文件

如何解决SELinux阻止虚拟机访问文件

如何解决SELinux阻止虚拟机访问文件?我用的是Fedora 17和KVM,虚拟机运行得很好。

我就尝试访问主机系统上的一个文件,但SELinux阻止虚拟化访问除了/var/lib/libvirt/images里的其他文件。

遇到这种问题时,该怎么解决?我用的是Fedora 17和KVM,虚拟机运行得很好。

我就尝试访问主机系统上的一个文件,但SELinux阻止虚拟化访问除了/var/lib/libvirt/images里的其他文件。

当在共享路径上宿主的虚拟机运行时,主机给出以下信息:SELinux is preventing /usr/bin/qemu-kvm from read access on the directory share。

专题推荐:SELinux:linux内核的安全保镖这时我该怎么办?我虚拟机的目的是在多个Linux版本上测试二进制,所以共享路径是最简单的。

有办法让/tmp/共享让每个人都可用吗?Sander van Vugt:除了/var/lib/libvirt/images,你无法在路径中共享虚拟机的原因在于SELinux。

SELinux 为系统添加了额外保护。

通过在目录上使用标签,将目录设置为专有用途。

存储镜像文件的最佳方式是通过在目录上设置合适的类型标签。

你这样的情形,运行下面两个命令即可(请确保在根shell下执行):semanage --t --a virt_image_t /tmp/share(/.*) ?restorecon --R --v /tmp/share如果还不行,可完全禁用SELinux。

可通过将下面这行添加都文件/etc/sysconfig/selinux中:SELINUX=disabled如果没时间重启计算机,可使用setenforce 0暂时禁用SELinux,当不要忘记更改上面的配置文件,否则在你重启时又会自动开启SELinux。

接下来,你说想要每个人都能访问/tmp/share的内容。

几个常用的SeLinux维护工具和命令

几个常用的SeLinux维护工具和命令

查看当前模式:getenforce更改当前模式:setenforce[Enforcing|Permissive|1|0]更改布尔值:setsebool[-P]booleanvalue|bool1=val1bool2=val2恢复默认SeLinux安全上下文:restorecon-R-vPathrestorecon-R-v/var/www/##恢复httpd默认根目录SeLinux安全上下文日志文件:/var/log/audit/audit.log日志分析工具:yuminstallsetroubleshoot图形化:sealert-b非图形化:sealert-a/var/log/audit/audit.log>seReport.txt通过上面一句命令生成分析报告,报告中列出了问题点,解决办法,部分报告如下:SELinuxispreventing/usr/sbin/httpdfromname_connectaccessonthetcp_socket.*****插件catchall_boolean(47.5置信度)建议************************************If您要allowHTTPDscriptsandmodulestoconnecttothenetworkusingTCP.Then您必须告知SELinux这个情况,方法是启用'httpd_can_network_connect'布尔。

'mysqld_selinux'manpage>中有详细资料。

Dosetsebool-Phttpd_can_network_connect1*****插件catchall_boolean(47.5置信度)建议************************************If您要allowHTTPDscriptsandmodulestoconnecttodatabasesoverthenetwork.Then您必须告知SELinux这个情况,方法是启用'httpd_can_network_connect_db'布尔。

SElinux中重要的布尔值

SElinux中重要的布尔值

SElinux中重要的布尔值:为了设置方便,SELinux中内建了许多布尔值参数,我们可以通过setsebool修改这些参数而直接更改一些SElinux的设置,下面列出了常用的服务器boolean设置参数:1 DHCPD关闭SElinux对dhcpd服务器的保护。

setsebool dhcpd_disable_trans 1关闭SElinux对dhcpc服务器的保护。

setsebool dhcpc_disable_trans 12 BIND允许主要domain name的设置被更改。

setsebool named_write_master_zones 1关闭SELinux 对DNS的保护。

setsebool named_disable_tran 13 HTTPD(Apache)允许httpd执行cgi scripts。

setsebool httpd_enable_cgi 1允许使用户存取自己的根目录。

setsebool httpd_enable_homedirs 1最后要记得修改用户根目录的角色。

chcon -R -t httpd_sys_content_t ~user/public_html关闭SElinux对httpd的保护。

setsebool httpd_disable_trans 14 VSFTPD允许用户ftp到自己的根目录。

setsebool ftp_home_dir 1若要vsftpd独立运行,而不挂在XINETD之下,这项数值必须设为1.setsebool ftpd_is_daemon 1关闭SELinux对ftpd的保护。

setsebool ftpd_disable_trans 15 SAMBAN允许samba分享用户的根目录。

setsebool samba_enable_home_dirs 1允许挂接远程的samba服务器用户的根目录。

setsebool use_samba_home_dirs 1关闭selinux对samba的保护setsebool smbd_disable_trans 16 NFS允许NFS分享只读文件。

SELinux概述

SELinux概述

SELinux使用了分级的强制访问控制,是Linux核的重要安全措施。

SELinux的安全策略工具可从oss.tresys./projects下载。

本章分析了SELinux的安全机制,介绍了安全策略配置语言、核策略库的结构,简述了SELinux核模块的实现,还分析了用户空间的客体管理器。

3.1 SELinux概述SELinux是安全增强了的Linux,是Security-enhanced Linux的简写,SELinux改进了对核对象和服务的访问控制,改进了对进程初始化、继承和程序执行的访问控制,改进了对文件系统、目录、文件和打开文件描述的访问控制,还改进了对端口、信息和网络接口的访问控制。

早期的Linux核只提供了经典的UNIX自主访问控制(root用户,用户ID,模式位安全机制),以及部分地支持了POSIX.1e标准草案中的capabilities安全机制,这对于Linux系统的安全性是不够的,NSA(the National Security Agency)和SCC(Secure Computing Corporation)共同开发了强大的基于类型加强(Type Enforcement)的强制访问控制(mandatory access control,简称MAC)机制,提供了动态的安全策略机制。

Linux核增加了一个通用的安全访问控制框架,它通过hook函数来控制程序的执行,这个框架就是Linux安全模块(LSM),在LSM上可使用各种安全控制机制(如:Flask机制)来实现对程序的控制。

SELinux应用了类型加强(Type Enforcement,TE)和基于角色访问控制(role-based access control,RBAC)技术。

TE给每个主体(进程)和系统中的客体定义了一个类型,这些类型定义在SELinux的安全策略文件中,以安全标签形式存放在文件本身的扩展属性(extended attributes,简称xattrs)里。

audit2allow添加SELinux权限

audit2allow添加SELinux权限快速⼊⼿必看:如何确认是否是selinux问题:可以通过运⾏ cat /proc/kmsg 或者 cat /sys/fs/pstore/console-ramoops 来获取上次启动时的事件⽇志。

SELinux ⽇志消息中包含“avc:”字样,因此可使⽤ grep 轻松找到。

⼀般如下:[10104.199705] (0)[433:logd.auditd]type=1400 audit(1609222167.878:20645): avc: denied { read } for comm="com.miui.cit" name="panel_info" de v="sysfs" ino=32487 scontext=u:r:system_app:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0可以看到permissive=0 代表访问被拒绝,permissive=1代表拥有访问权限。

如何⽣成selinux rule只需三步,第⼀步,把⼿机⾥⾯的policy⽂件拉到本地。

第⼆步,复现问题。

第三步,把log喂给audit2allow命令来帮助我们⽣成selinux rule。

假如有提⽰本地环境找不到audit2allow,可以⼿动根据提⽰安装或者在Android ⽬录下寻找。

adb pull /sys/fs/selinux/policyadb shell dmesg | audit2allow -p policy这⾥⽐较灵活,我们可以直接把dmesg喂给audit2allow也可以直接把logcat喂给audit2allow(adb logcat -b all -d | audit2allow -p policy) ,甚⾄可以直接cat 或者echo⽂件给它。

RHEL5.4管理SELinux

RHEL5.4管理SELinux关于linux下面SELinux问题的讨论,在linux里面,所有的文件和进程都有一个security context的,而SELinux就是通过security context就用来对文件和进程进行控制的。

如何去查看文件的security context值呢,#ls -Z[root@localhost ~]#[root@localhost ~]# ls -Z-rw------- root root system_u:object_r:user_home_t anaconda-ks.cfgdrwxr-xr-x root root root:object_r:user_home_t Desktop-rw-r--r-- root root root:object_r:user_home_t file-rw-r--r-- root root root:object_r:user_home_t Finished-rw-r--r-- root root root:object_r:user_home_t install.log-rw-r--r-- root root root:object_r:user_home_t install.log.syslog-rw-r--r-- root root root:object_r:user_home_t Package-rw-r--r-- root root root:object_r:user_home_t Running[root@localhost ~]#这个就是我们文件的security context值,root:object_r:user_home_troot 用户的用户名(一般文件是谁创建的,这个用户名就是谁)object_r 文件的角色user_home_t context值的类型context值的类型会随着文件在不同的位置,会跟着发生变化。

最新整理安全防护软件Selinux使用详解

安全防护软件S e l i n u x使用详解网络安全是目前互联网的热门话题之一,作为个人用户的我们同样需要关注,做好防护。

S E L i n u x(S e c u r i t y-E n h a n c e d L i n u x)是美国国家安全局(N S A)对于强制访问控制的实现,是 L i n u x上最杰出的新安全子系统。

今天小编要为大家带来的就是C e n t O S 上的安全防护软件S e l i n u x详解,希望对大家会有帮助,有需要的朋友一起去看看吧具体介绍S E L i n u x(S e c u r i t y-E n h a n c e d L i n u x)是美国国家安全局(N S A)对于强制访问控制的实现,是 L i n u x历史上最杰出的新安全子系统。

N S A是在L i n u x社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。

S E L i n u x默认安装在 F e d o r a和 R e d H a t E n t e r p r i s eL i n u x上,也可以作为其他发行版上容易安装的包得到,20**以G N U G P L发布,L i n u x内核 2.6版本后集成在内核中D A C:D i s c r e t i o n a r y A c c e s s C o n t r o l自由访问控制 M A C:M a n d a t o r y A c c e s s C o n t r o l强制访问控制D A C环境下进程是无束缚的M A C环境下策略的规则决定控制的严格程度M A C环境下进程可以被限制的策略被用来定义被限制的进程能够使用那些资源(文件和端口)默认情况下,没有被明确允许的行为将被拒绝s e l i n u x的工作类型s e l i n u x一共有四种工作类型s t r i c t:每个进程都受到s e l i n u x的控制t a r g e t e d:用来保护常见的网络服务,仅有限进程受到s e l i n u x控制,系统当中默认设置类型m i n i m u m:这个模式在c e n t o s7上,是t a r g e t e d的修改版,只对选择的网络服务,仅对选中的进程生效m l s:提供m l s机制的安全性,国防级别的s e l i n u x安全上下文传统的l i n u x,一切皆文件,由用户、组、权限来进行访问控制,这当中有很多的缺陷在s e l i n u x中,一切皆对象(进程),有存放在i n o d e 的扩展属性域的安全元素所控制其访问所有文件和端口资源和进程都具备安全标签,这就是安全上下文安全上下文有五个元素组成s y s t e m_u:o b j e c t_r:a d m i n_h o m e_t:s0u s e r:r o l e:t y p e:s e n s i t i v i t y:c a t e g o r yu s e r:指示登录系统的用户类型,如r o o t,u s e r_u,s y s t e m_u,多数本地进程都属于自由进程r o l e:定义文件,进程和用户的用途,文件:o b j e c t_r,进程和用户:s y s t e m_rt y p e:指定数据类型,规则重定义何种进程类型访问何种文件,t a r g e t策略基于t y p e实现,多服务功用,p u b l i c_c o n t e n t_ts e n s i t i v i t y:限制访问的需要,由组织定义的分层安全级别,如u n c l a s s i f i e d,s e c r e t,t o p,一个对象有且只有一个s e n s i t i v i t y,分0-15个级别,s0最低,t a r g e t策略默认使用是s0c a t e g o r y:对于特定组织划分不分层的分类,如F B I s e c r e t,N S A s e c r e t,一个对象可以有多个c a t e g o r y,c0-c1023共1024个分类,t a r g e t策略不适用c a t e g o r y 查看安全上下文l s Z;p s-Z期望(默认)上下文:存放在二进制的s e l i n u x策略库中s e m a n a g e f c o n t e x t l查看系统中的默认安全上下文@f o n t-f a c e{f o n t-f a m i l y:宋体;}@f o n t-f a c e{f o n t-f a m i l y:C a m b r i a M a t h;}@f o n t-f a c e{f o n t-f a m i l y:C a l i b r i;}@f o n t-f a c e{f o n t-f a m i l y:@宋体;}p.M s o N o r m a l,l i.M s o N o r m a l,d i v.M s o N o r m a l{m a r g i n:0c m0c m0.0001p t;t e x t-a l i g n:j u s t i f y;f o n t-s i z e:10.5p t;f o n t-f a m i l y:C a l i b r i,s a n s-s e r i f; }.M s o C h pD e f a u l t { f o n t-f a m i l y: C a l i b r i,s a n s-s e r i f;}d i v.W o r d S e c t i o n1{}s e l i n u x策略对象(o b j e c t):所有可以读取的对象,包括文件、目录和进程,端口等主体:进程称为主题(s u b j e c t)s e l i n u x中对所有的文件都赋予一个t y p e的文件类型标签,对于所有的进程也赋予各自的一个d o m a i n标签。

setsebool命令详解与SELinux管理

setsebool命令详解与SELinux管理setsebool命令是⽤来修改SElinux策略内各项规则的布尔值。

setsebool命令和getsebool命令是SELinux修改和查询布尔值的⼀套⼯具组。

SELinux的策略与规则管理相关命令:seinfo命令、sesearch命令、getsebool命令、setsebool命令、semanage命令。

下⾯让我们详细讲解⼀下setsebool命令的使⽤⽅法。

语法setsebool [-P] 布尔值=[0|1]选项-P:直接将设置值写⼊配置⽂件,该设置数据将来会⽣效的。

实例setsebool -P allow_ftpd_anon_write=1 #允许ftpd匿名⽤户可写setsebool -P ftp_home_dir 1 #允许⽤户访问⾃⼰的根⽬录setsebool -P ftpd_is_daemon 1 #允许daemon运⾏ftpdsetsebool -P ftpd_disable_trans 1 #关闭SELINUX对ftpd的保护setsebool -P allow_httpd_anon_write=1 #允许httpd匿名⽤户可写setsebool -P allow_httpd_sys__anon_write=1 #同上setsebool -P httpd_enable_cgi 1 #httpd被设置允许cgi被执⾏setsebool -P httpd_enable_homedirs 1 #允许访问⽤户的根⽬录setsebool -P httpd_tty_comm 1 #允许httpd控制终端setsebool -P httpd_unified 0 #httpd之间相互独⽴setsebool -P httpd_builtin_ing 0 #同httpd环境⼀样运⾏setsebool -P httpd_can_network_connect_db 1 #httpd可以连接到数据库(如连接mysql就必须设置)setsebool -P httpd_can_network_connect 1 #httpd可以连接到⽹络(如连接redis就必须设置)setsebool -P httpd_read_user_content 1 #开启⽤户⽂件的访问权限(如⽇志⽂件就必须设置)setsebool -P httpd_suexec_disable_trans 1 #禁⽤suexec过度setsebool -P httpd_disable_trans 1 #允许daemon⽤户启动httpdsetsebool -P httpd_can_sendmail 1 #允许httpd发送emailsetsebool -P named_write_master_zones 1 #允许修改dns的主zone⽂件setsebool -P named_disable_trans 1 #允许daemon启动namedsetsebool -P nfs_export_all_ro 1 #nfs只读setsebool -P nfs_export_all_rw 1 #nfs可读写setsebool -P use_nfs_home_dirs 1 #允许本机访问远程nfs的根⽬录setsebool -P allow_smbd_anon_write=1 #samba允许匿名⽤户可写setsebool -P samba_enable_home_dirs 1 #允许根⽬录访问setsebool -P use_samba_home_dirs 1 #允许本机访问远程samba根⽬录setsebool -P smbd_disable_trans 1 #允许daemon启动sambasetsebool -P allow_rsync_anon_write=1 #允许匿名⽤户可写setsebool -P rsync_disable_trans 1 #允许daemon启动rsync其他命令getsebool -a #列出所有模块getsebool -a | grep ftp #列出所有与ftp相关的模块selinux默认不允许httpd访问“/home/⽤户名”⽬录(但是允许访问"/usr/local/⽤户名"这种⽬录),现在有两种解决⽅案:⽅案⼀:(允许⽤户httpd访问其家⽬录)setsebool -P httpd_read_user_content 1setsebool -P httpd_enable_homedirs 1⽅案⼆:(使⽤semanage命令修改安全上下⽂)semanage fcontext -a -t httpd_sys_content_t '/home/⽤户名(/.*)?'#重新加载,刷新配置restorecon -R -v /home/⽤户名#查看安全上下⽂是否永久⽣效semanage fcontext -l | grep /home/⽤户名#查看安全上下⽂是否永久⽣效ls -Zd /home/⽤户名允许公共⽬录共享,如ftp,samba,web都访问共享⽬录setsebool -P public_content_t 1setsebool -P public_content_rw_t 1允许httpd连接mysql:setsebool -P httpd_can_network_connect_db 1允许httpd连接redis:setsebool -P httpd_can_network_connect=1允许使⽤ftpd,如vsftpd就需要⽤到:setsebool -P ftpd_full_access 1setsebool -P ftp_home_dir 1 #可能会提⽰“Boolean ftp_home_dir is not defined”那就不⽤管了允许httpd发送email:setsebool -P httpd_can_sendmail 1其他命令#查看selinux状态sestatus#查看getenforce状态getenforce#临时关闭selinux,设置SELinux 成为permissive模式setenforce 0#临时打开selinux,设置SELinux 成为enforcing模式setenforce 1#永久关闭SELinuxvi /etc/selinux/config修改并设置SELINUX=disabled,再重启服务器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 1.SELinux的安装与配置 1.1内核支持 2.6以上版本的Linux内核都提供了对SELinux的支持功能,要安装和使用SELinux必须保证内核对它的支持。

2.SELinux的特点 2.1加入了一个/selinux 文件系统 因此有些安装程序需要编辑/etc/fstab 文件。 /selinux文件系统和 /proc 文件系统类似,都是虚拟的文件系统。Selinux的文件类型是selinuxfs,只有在支持selinux的内核且内核支持selinux的功能为开启状态时才能使用(参考1.)。用

ls -l /selinux 命令来显示。 total 0 -rw-rw-rw- 1 root root 0 Nov 25 11:27 access -rw-rw-rw- 1 root root 0 Nov 25 11:27 context -rw-rw-rw- 1 root root 0 Nov 25 11:27 create -rw------- 1 root root 0 Nov 25 14:19 enforce -rw------- 1 root root 0 Nov 25 11:27 load -r--r--r-- 1 root root 0 Nov 25 11:27 policyvers -rw-rw-rw- 1 root root 0 Nov 25 11:27 relabel -rw-rw-rw- 1 root root 0 Nov 25 11:27 user 用命令sestatus可查看SELinux的是否已经启动。 运行cat 命令查看 "enforce"文件将会显示一个值,代表SE Linux当前的状态,1 代表 enforcing状态, 0代表permissive 状态,也可以使用getenfoce命令来查看。

2.2使用了文件扩展属性

新的SE Linux使用了文件系统的扩展属性(Extended attributes)来存放安全上下文(security contexts)。必须内核支持这种扩展属性。 扩展属性是一个 名称—数据 元组(name-data tuple),举个例子说, security.selinux 就是一个属性的名称,安全上下文(security context)就是要存的数据。 当SE Linux正在运行时,你可以用 ls --context filename 命令来查看一个文件的安全上下文(我们将在后面进一步解释这个命令),无论SE Linux是否打开,可以用getfattr 命令查看文件系统的扩展属性。不过要先装支持 attr 的软件包并且通过 getfattr命令的manpage学会使用它。这个命令的运行方法是: 2

faye@kaos:~$ getfattr -m . -d /etc/passwd getfattr: Removing leading '/' from absolute path names # file: etc/passwd security.selinux="system_u:object_r:etc_t\000" 你所查看的文件的 security.selinux 属性中储存了此文件的安全上下文, 所以上面例子中的上下文就是 system_u:object_r:etc_t 。所有运行了SE Linux的ext2/3文件系统上都有 security.selinux 这个属性(这个新特性的关键). 如果你引导了一个没有 SE Linux 的内核, 你将仍然看到这个扩展属性. 当你用make relabel 操作设置了文件的安全上下文期间,扩展属性就被setfiles 设置了。

从init加载SE Linux策略 打开了SE Linux的系统在引导时,init进程既要挂载 /selinux 文件系统,并在那之后载入SE Linux的策略。

安全ID(SIDs) 和 父进程安全ID(PSIDs) 不再使用 SIDs (安全ID) 在旧的 SE Linux 是用户进程的内核接口. PSIDs (父进程安全ID SIDs) 是内核映射(设置)磁盘上的文件的上下文的根据(译者注:这里的概念可能不是很清晰,总的来说就是SID和PSID在旧的SE Linux中起着标记安全上下文的作用)。在新的SE Linux中, 扩展属性记录了安全上下文,所以SIDs和PSIDs 也就不必要了。

-Z 参数 -Z 可以替代 --context 命令参数,比如ls -Z 和 ps -Z. 用 chcon 命令替代了chsid命令 chsid 命令在旧的SE Linux中用来设置文件的安全上下文。新的SE Linux 中用chcon 命令来设置。 chcon 在旧的SE Linux 中已经可以使用,但是在新的SE Linux中的设置用户或类型方面得到了进一步改善。可以查看manpage 获得更多的提示。

接下来是有关在什么情况下你该使用SE Linux和它的基本使用的简短介绍。 SE Linux 可以为系统提供较好的安全防护。 使用者能被分配预先定义好的角色,以便他们不能存取文件或者访问他们不拥有的程序。 这不同于 chmod 的操作。 这在角色, 或他所在的安全上下文已经限制接触的文件和其他的资源的使用者定义中是不同于一般的 Unix 许可权限的,除了在一种比较受约束的流行之外。 带一个用户的.rhosts 文件在一个一般的 Unix 系统上申请。 如果他们使它成为任何人可写入 , 那么任何能登录的人都可以作危险的操作。 在 SE Linux 之下,你能控制其它用户是否有能力改变他们的.rhosts文件, 以及阻止其他的人写入 , 就算拥有者已经使它成为任何人可写入。

一个通常的疑问是 SE Linux 的权限设置如何与标准的 Unix 的权限设置共存。 当你做特定的操作的时候, Unix 权限首先被检查。 如果他们允许你的操作 , 那么然后, SE Linux 将会检查并且允许或拒绝使用者的使用。 但是如果 Unix 许可不让你做某事,在那里的运行的操作被禁止和 SE Linux 检查没关系。

另外的一个例子是,如果有一个设置了SUID的可执行文件,如/usr/bin/passwd 他可以运行命令chmod 666 /etc/shadow,SE Linux 会阻止任何人非法的这样设置文件。 3

3 术语 3. 1 (身份)identity 在 SE Linux 中,身份的概念不同于传统的Unix uid (user id). 它们可以共存于一个系统, 但却是十分不同的概念。 在SE Linux中的身份是安全上下文的一部分,它会影响哪个域可以进入,也就是本质上的可以被执行。一个SE Linux 的身份(identity)会跟标准的Unix登录名有很相似的文本表示 (大部分情况下它们是这样), 无论如何,了解它们是两个完全不同的概念是很重要的。 运行su 命令不会改变SE Linux中的身份(identity)。(译者注:我在红帽系统中做的实验却不是这样,不过这无所谓,可能红帽系统的策略设置不同,我目前还没来得及研究具体是什么问题,只是猜测。)

举例: 一个无特权用户 faye 运行 id 命令 (在启动SE Linux的情况下) 可以看到用户的安全上下文:

context=faye:user_r:user_t 安全上下文中的身份部分就是 "faye"。 现在, 如果 faye su切换成 root 再运行id, 他将发现安全上下文仍然是: context=faye:user_r:user_t 身份保持相同, 跟没切换到root时一样。, 不管怎样,如果faye 身份被允许进入sysadm_r 角色并转换成了sysadm_r (这里可以使用newrole -r 命令),再运行id 命令,他将看到: context=faye:sysadm_r:sysadm_t 身份字段保持一样但是角色和域(第二和第三字段)的字段已经变了。这样保持身份的方式是用户职责所必需的。身份将影响系统决定哪个角色和域可以被什么身份所使用,这将对系统安全期决定性的作用。

3.2 域 所有进程都在域中运行。域直接决定了进程的访问。 域基本上是一个进程允许做的操作的列表, 或者说它决定了一个进程可以对哪些类型进行操作。 域就好像一个标准UNIX的uid的概念。 假设一个属于root用户的可执行程序被设置了setuid。 在这个系统上的任何用户,只要可以执行这个程序,它就有可能获得root的权限。这是一个很大的安全漏洞。 再有SE Linux的系统上, 如果一个正在执行的进程想要转换进入特权域执行时,如果这个进程的角色被设置成不允许进入特权与的话, 这个进程就不能执行。

常见的例子是sysadm_t是系统管理域, user_t 是无特权用户域。 Init运行在init_t 域, named 运行在 named_t 域。

3.3 类型 4

类型分配给一个对象并决定谁可以访问这个对象。 它的定义和域基本相同, 不同就是域是对进程的应用,而类型是分配给目录,文件,和套接字的。

3.4 角色 角色决定了那些域可以使用。 有关哪些与可以被哪些角色使用可以预先定义在策略的配置文件里。如果一个策略数据库中定义了一个角色不可以使用一个域, 它将被拒绝。例如: 如果允许一个属于 user_t 域 (无特权用户域) 的用户执行passwd 命令, 那么必需在相关的策略配置文件中进行如下设置: role user_r types user_passwd_t 这样设置了一个属于user_r角色的用户允许进入user_passwd_t域。也就是说他可以执行 passwd 命令。

3.5 安全上下文 安全上下文包括了所有事情的属性的描述,包括文件, 目录, 进程, TCP sockets 何以上所有的东西。安全上下文包括了身份,角色和域或者类型。在SE Linux系统上你可以用id 命令来查看你当前用户的安全上下文。

域和类型是有区别的, 雨果不明白这一点的话,将使你产生困惑。 域是为进程设置的。 当你查肯一个进程的安全上下文的时候 (举个例子,你可以查看后面"转换"中的解释), 最后一个字段的设置,例如user_passwd_t 就是这个进程的域(如果你运行了passwd 命令)。

一个像文件,目录,套接字等这样的对象会有一个类型。 当你运行了 ls --context 命令时, 最后一个字段就是类型的设置, 比如 user_home_t 这个类型就是一个有user_r 角色的用户在他的主目录下建立的文件的类型。

相关文档
最新文档