linuxSElinux命令详解setsebool命令Word文件下载.docx
- 文档编号:17544992
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:7
- 大小:21.04KB
linuxSElinux命令详解setsebool命令Word文件下载.docx
《linuxSElinux命令详解setsebool命令Word文件下载.docx》由会员分享,可在线阅读,更多相关《linuxSElinux命令详解setsebool命令Word文件下载.docx(7页珍藏版)》请在冰豆网上搜索。
//Ifyouwanttosetupadirectorywhereyoucanuploadfiles
chcon-tpublic_content_rw_t/var/ftp/incoming
Youmustalsoturnonthebooleanallow_ftpd_anon_write
setsebool-Pallow_ftpd_anon_write=1
//Ifyouaresettingupthismachineasaftpdserverandwishtoallowuserstoaccesstheirhomedirectorories
setsebool-Pftp_home_dir1
//Ifyouwanttorunftpdasadaemon
setsebool-Pftpd_is_daemon1
//YoucandisableSELinuxprotectionfortheftpddaemon
setsebool-Pftpd_disable_trans1
===httpd===
//Ifyouwantaparticulardomaintowritetothepublic_content_rw_tdomain
setsebool-Pallow_httpd_anon_write=1
or
setsebool-Pallow_httpd_sys__anon_write=1
//httpdcanbesetuptoallowcgistobeexecuted
setsebool-Phttpd_enable_cgi1
//Ifyouwanttoallowaccesstousershomedirectories
setsebool-Phttpd_enable_homedirs1
chcon-R-thttpd_sys_content_t~user/public_html
//httpdisallowedaccesstothecontrolingterminal
setsebool-Phttpd_tty_comm1
//suchthatonehttpdservicecannotinterferewithanother
setsebool-Phttpd_unified0
//loadablemodulesrununderthesamecontextashttpd
setsebool-Phttpd_builtin_ing0
//httpdsareallowedtoconnectouttothenetwork
setsebool-Phttpd_can_network_connect1
//Youcandisablesuexectransition
setsebool-Phttpd_suexec_disable_trans1
//YoucandisableSELinuxprotectionforthehttpddaemonbyexecuting
setsebool-Phttpd_disable_trans1
servicehttpdrestart
===named===
//Ifyouwanttohavenamedupdatethemasterzonefiles
setsebool-Pnamed_write_master_zones1
//YoucandisableSELinuxprotectionforthenameddaemonbyexecuting
setsebool-Pnamed_disable_trans1
servicenamedrestart
===nfs===
//Ifyouwanttosetupthismachinetosharenfspartitionsreadonly
setsebool-Pnfs_export_all_ro1
//Ifyouwanttosharefilesread/write
setsebool-Pnfs_export_all_rw1
//IfyouwanttousearemoteNFSserverforthehomedirectoriesonthismachine
setsebool-Puse_nfs_home_dirs1
===samba===
//Ifyouwanttosharefilesotherthanhomedirectorie
chcon-tsamba_share_t/directory
//Ifyouwanttosharefileswithmultipledomains
setsebool-Pallow_smbd_anon_write=1
//IfyouaresettingupthismachineasaSambaserverandwishtosharethehomedirectories
setsebool-Psamba_enable_home_dirs1
//IfyouwanttousearemoteSambaserverforthehomedirectoriesonthismachine
setsebool-Puse_samba_home_dirs1
//YoucandisableSELinuxprotectionforthesambadaemonbyexecuting
setsebool-Psmbd_disable_trans1
servicesmbrestart
===rsync===
//Ifyouwanttosharefilesusingthersyncdaemon
chcon-tpublic_content_t/directories
setsebool-Pallow_rsync_anon_write=1
//YoucandisableSELinuxprotectionforthersyncdaemonbyexecuting
setsebool-Prsync_disable_trans1
===kerberos===
//allowyoursystemtoworkproperlyinaKerberosenvironment
setsebool-Pallow_kerberos1
//IfyouarerunningKerberosdaemonskadmindorkrb5kdc
setsebool-Pkrb5kdc_disable_trans1
servicekrb5kdcrestart
setsebool-Pkadmind_disable_trans1
servicekadmindrestart
===nis===
AllowyoursystemtoworkproperlyinaNISenvironment
setsebool-Pallow_ypbind1
SELinux入门
2011-05-31黑日白月PostedinFeatured,Security,TutorialsRSS
几乎可以肯定每个人都听说过SELinux(更准确的说,尝试关闭过),甚至某些过往的经验让您对SELinux产生了偏见。
不过随着日益增长的0-day安全漏洞,或许现在是时候去了解下这个在Linux内核中已经有8年历史的强制性访问控制系统(MAC)了。
SELinux与强制访问控制系统
SELinux全称SecurityEnhancedLinux(安全强化Linux),是MAC(MandatoryAccessControl,强制访问控制系统)的一个实现,目的在于明确的指明某个进程可以访问哪些资源(文件、网络端口等)。
强制访问控制系统的用途在于增强系统抵御0-Day攻击(利用尚未公开的漏洞实现的攻击行为)的能力。
所以它不是网络防火墙或ACL的替代品,在用途上也不重复。
举例来说,系统上的Apache被发现存在一个漏洞,使得某远程用户可以访问系统上的敏感文件(比如/etc/passwd来获得系统已存在用户),而修复该安全漏洞的Apache更新补丁尚未释出。
此时SELinux可以起到弥补该漏洞的缓和方案。
因为/etc/passwd不具有Apache的访问标签,所以Apache对于/etc/passwd的访问会被SELinux阻止。
相比其他强制性访问控制系统,SELinux有如下优势:
控制策略是可查询而非程序不可见的。
可以热更改策略而无需重启或者停止服务。
可以从进程初始化、继承和程序执行三个方面通过策略进行控制。
控制范围覆盖文件系统、目录、文件、文件启动描述符、端口、消息接口和网络接口。
那么SELinux对于系统性能有什么样的影响呢?
根据Phoronix在2009年使用Fedora11所做的横向比较来看,开启SELinux仅在少数情况下导致系统性能约5%的降低。
SELinux是不是会十分影响一般桌面应用及程序开发呢?
原先是,因为SELinux的策略主要针对服务器环境。
但随着SELinux8年来的广泛应用,目前SELinux策略在一般桌面及程序开发环境下依然可以同时满足安全性及便利性的要求。
以刚刚发布的Fedora15为例,笔者在搭建完整的娱乐(包含多款第三方原生Linux游戏及Wine游戏)及开发环境(AndroidSDK+Eclipse)过程中,只有Wine程序的首次运行时受到SELinux默认策略的阻拦,在图形化的“SELinux故障排除程序”帮助下,点击一下按钮就解决了。
了解和配置SELinux
1.获取当前SELinux运行状态
getenforce
可能返回结果有三种:
Enforcing、Permissive和Disabled。
Disabled代表SELinux被禁用,Permissive代表仅记录安全警告但不阻止可疑行为,Enforcing代表记录警告且阻止可疑行为。
目前常见发行版中,RHEL和Fedora默认设置为Enforcing,其余的如openSUSE等为Permissive。
2.改变SELinux运行状态
setenforce[Enforcing|Permissive|1|0]
该命令可以立刻改变SELinux运行状态,在Enforcing和Permissive之间切换,结果保持至关机。
一个典型的用途是看看到底是不是SELinux导致某个服务或者程序无法运行。
若是在setenforce0之后服务或者程序依然无法运行,那么就可以肯定不是SELinux导致的。
若是想要永久变更系统SELinux运行环境,可以通过更改配置文件/etc/sysconfig/selinux实现。
注意当从Disabled切换到Permissive或者Enforcing模式后需要重启计算机并为整个文件系统重新创建安全标签(touch/.autorelabel&
&
reboot)。
3.SELinux运行策略
配置文件/etc/sysconfig/selinux还包含了SELinux运行策略的信息,通过改变变量SELINUXTYPE的值实现,该值有两种可能:
targeted代表仅针对预制的几种网络服务和访问请求使用SELinux保护,strict代表所有网络服务和访问请求都要经过SELinux。
RHEL和Fedora默认设置为targeted,包含了对几乎所有常见网络服务的SELinux策略配置,已经默认安装并且可以无需修改直接使用。
若是想自己编辑SELinux策略,也提供了命令行下的策略编辑器seedit以及Eclipse下的编辑插件eclipse-slide。
4.coreutils工具的SELinux模式
常见的属于coreutils的工具如ps、ls等等,可以通过增加Z选项的方式获知SELinux方面的信息。
如psauxZ|greplldpad
system_u:
system_r:
initrc_t:
s0root10008.90.03040668?
Ss21:
016:
08/usr/sbin/lldpad-d
如ls-Z/usr/lib/xulrunner-2/libmozjs.so
-rwxr-xr-x.rootrootsystem_u:
object_r:
lib_t:
s0/usr/lib/xulrunner-2/libmozjs.so
以此类推,Z选项可以应用在几乎全部coreutils工具里。
ApacheSELinux配置实例
1.让Apache可以访问位于非默认目录下的网站文件
首先,用semanagefcontext-l|grep'
/var/www'
获知默认/var/www目录的SELinux上下文:
/var/www(/.*)?
allfilessystem_u:
httpd_sys_content_t:
s0
从中可以看到Apache只能访问包含httpd_sys_content_t标签的文件。
假设希望Apache使用/srv/www作为网站文件目录,那么就需要给这个目录下的文件增加httpd_sys_content_t标签,分两步实现。
首先为/srv/www这个目录下的文件添加默认标签类型:
semanagefcontext-a-thttpd_sys_content_t'
/srv/www(/.*)?
'
然后用新的标签类型标注已有文件:
restorecon-Rv/srv/www之后Apache就可以使用该目录下的文件构建网站了。
其中restorecon在SELinux管理中很常见,起到恢复文件默认标签的作用。
比如当从用户主目录下将某个文件复制到Apache网站目录下时,Apache默认是无法访问,因为用户主目录的下的文件标签是user_home_t。
此时就需要restorecon将其恢复为可被Apache访问的httpd_sys_content_t类型:
restoreconreset/srv/contextunconfined_u:
user_home_t:
s0->
2.让Apache侦听非标准端口
默认情况下Apache只侦听80和443两个端口,若是直接指定其侦听888端口的话,会在servicehttpdrestart的时候报错:
Startinghttpd:
(13)Permissiondenied:
make_sock:
couldnotbindtoaddress[:
:
]:
888
(13)Permissiondenied:
couldnotbindtoaddress0.0.0.0:
nolisteningsocketsavailable,shuttingdown
Unabletoopenlogs
这个时候,若是在桌面环境下SELinux故障排除工具应该已经弹出来报错了。
若是在终端下,可以通过查看/var/log/messages日志然后用sealert-l加编号的方式查看,或者直接使用sealert-b浏览。
无论哪种方式,内容和以下会比较类似:
SELinuxispreventing/usr/sbin/httpdfromname_bindaccessonthetcp_socketport888.
*****Pluginbind_ports(92.2confidence)suggests*************************
Ifyouwanttoallow/usr/sbin/httpdtobindtonetworkport888
Thenyouneedtomodifytheporttype.
Do
#semanageport-a-tPORT_TYPE-ptcp888
`wherePORT_TYPEisoneofthefollowing:
ntop_port_t,http_cache_port_t,http_port_t.`
*****Plugincatchall_boolean(7.83confidence)suggests*******************
IfyouwanttoallowsystemtorunwithNIS
ThenyoumusttellSELinuxaboutthisbyenablingthe'
allow_ypbind'
boolean.
*****Plugincatchall(1.41confidence)suggests***************************
Ifyoubelievethathttpdshouldbeallowedname_bindaccessontheport888tcp_socketbydefault.
Thenyoushouldreportthisasabug.
Youcangeneratealocalpolicymoduletoallowthisaccess.
allowthisaccessfornowbyexecuting:
#grephttpd/var/log/audit/audit.log|audit2allow-Mmypol
#semodule-imypol.pp
可以看出SELinux根据三种不同情况分别给出了对应的解决方法。
在这里,第一种情况是我们想要的,于是按照其建议输入:
semanageport-a-thttp_port_t-ptcp888
之后再次启动Apache服务就不会有问题了。
这里又可以见到semanage这个SELinux管理配置工具。
它第一个选项代表要更改的类型,然后紧跟所要进行操作。
详细内容参考Man手册
3.允许Apache访问创建私人网站
若是希望用户可以通过在~/public_html/放置文件的方式创建自己的个人网站的话,那么需要在Apache策略中允许该操作执行。
使用:
setseboolhttpd_enable_homedirs1
setsebool是用来切换由布尔值控制的SELinux策略的,当前布尔值策略的状态可以通过getsebool来获知。
默认情况下setsebool的设置只保留到下一次重启之前,若是想永久生效的话,需要添加-P参数,比如:
总结
希望通过这一个简短的教程,扫除您对SELinux的误解甚至恐惧,个人感觉它并不比iptables策略复杂。
如果希望您的服务器能有效抵挡0-day攻击时,那么SELinux或许就是一个值得考虑的缓和方案。
致谢
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linuxSElinux 命令 详解 setsebool