本文结构:SELinux介绍、安全上下文-->模式、策略设置和使用-->bool值作用、查询修改-->semanager工具安全上下文的使用
Security Enhanced Linux 安全强化linux
是一个嵌到内核中的模块,用于针对进程对系统资源的访问加强安全防护,以网络服务来说,服务的主体是进程,SELinx便可以控制网络服务是否能访问系统资源
为什么需要SELinux
传统的访问文件系统的方式是自主访问控制 (Discretionary Access Control,DAC)通过所有者和文件资源的rwx权限决定可否访问
缺点 :进程所有者只要拥有rwx权限,就可以对文件资源进行随意修改(例:若是管理者不小心将对外的服务目录如/var/www/html 权限改为777,则任何人都可以进行随意访问和修改)
SELinux,委托访问控制 (Mandatory Access Contral,MAC)控制主体变成进程而不是用户,利用策略 和安全上下文 的匹配控制进程对文件资源的访问
策略(policy)
targeted :针对网络服务的限制较多,针对本机限制较少,是默认策略
strict :严格限制,完整的SELinux限制
安全上下文(security context)
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
Identify:role:type
身份标识:root、system_u、user_u
角色:object_r、system_r
类型(type):
主体和目标安全上下文type字段一致才可访问
安全上下文是放置到文件inode内 的 和rwx一样
进程和 SElinux type字段的关系 :以httpd为例
首先运行程序 usr/sbin/httpd ,type类型为 httpd_exec_t
该类型会让文件触发的主体进程 (subject)具有httpd这个域 (domain)
这个域已被制定了许多规则 ,包括域可以读取的目标资源类型type
httpd domain被设置为可以读取 httpd_sys_content_t这个类型的Object
/var/www/html的type类型为 httpd_sys_content_t
所以网页放到/var/www/html下就能被httpd进程读取了
最后再根据rwx的权限
SELinux使用
查看模式
Enforcing // 强制模式
permissive:宽容模式(只提醒不禁止) disabled 关闭SELinux
改变模式
查看策略
sestatus 列出当前策略和状态 [-v 列出/etc/sestatus.conf下的安全上下文内容] [-b 以布尔值的方式列出策略规则]
配置文件 :可修改模式和策略
/etc/selinux/config
[iyunv@boxin ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted // 还有strict
启动与关闭
查看内核有无关闭 SElinux
[iyunv@boxin ~]# cat /boot/grub/menu.lst
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=7f7fc25f-c295-4b8a-8d2c-48ae97b01d41 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-431.el6.x86_64.img
若内核参数加上selinux=0则表示关闭功能
selinux是写到内核中的所以:改变模式或改变策略都要重启系统
修改安全上下文
chcon [-t 类型] [-R 递归] 目录/文件
[iyunv@boxin ~]# chcon -R -t httpd_sys_content_t /var/www/html restorecon [-R 递归 ] [-v 显示过程] 目录/文件
// 通过默认安全上下文还原类型 [iyunv@boxin ~]# restorecon -Rv /var/www/html
SElinux日志记录
setroubleshoot:错误信息写入 /var/log/messages
auditd:详细日志信息包括错误信息写入/var/log/audit/audit.log
策略规则
查询状态规则 (setools-console 使用seinfo的rpm包)
seinfo [-b 列出所有的(booleans)规则] [-u user] [-r role] [-t type] 列出当前状态下的统计状态
[iyunv@boxin ~]# seinfo // 当前策略下的统计状态
Statistics for policy file: /etc/selinux/targeted/policy/policy.24
Policy Version & Type: v.24 (binary, mls)
Classes: 81 Permissions: 235
Sensitivities: 1 Categories: 1024
Types: 3637 Attributes: 280
Users: 9 Roles: 12
Booleans: 217 Cond. Expr.: 257 // 针对网络的规则boolens217条
Allow: 291033 Neverallow: 0
Auditallow: 123 Dontaudit: 226650
Type_trans: 33142 Type_change: 38
Type_member: 48 Role allow: 19
Role_trans: 308 Range_trans: 4521
Constraints: 90 Validatetrans: 0
Initial SIDs: 27 Fs_use: 23
Genfscon: 83 Portcon: 446
Netifcon: 0 Nodecon: 0
Permissives: 75 Polcap: 2
[iyunv@boxin ~]# seinfo -b | grep httpd // httpd的bool值
httpd_manage_ipa
httpd_run_stickshift
httpd_use_fusefs
httpd_use_openstack
allow_httpd_mod_auth_pam
httpd_setrlimit
httpd_enable_ftp_server
httpd_use_nfs
布尔值查询修改(sesearch查看详细信息)
[iyunv@boxin ~]# getsebool -a //查询
abrt_anon_write --> off
abrt_handle_event --> off
allow_console_login --> on
allow_cvs_read_shadow --> off
[iyunv@boxin ~]# getsebool allow_console_login // 查询某一个
allow_console_login --> on
[iyunv@boxin ~]# setsebool -P allow_console_login=1 //(1表示on, 0表示off),-P写入配置文件
文件默认安全上下文设置
[iyunv@boxin ~]# semanage fcontext [-l 查询] [-a 增加] [-m 修改] [-d 删除] // fcontext用于安全上下文
例:
[iyunv@boxin ~]# ls -Zd /srv/samba
drwxr-xr-x. root root unconfined_u:object_r:var_t:s0 /srv/samba
[iyunv@boxin ~]# semanage fcontext -l | grep /srv/
/srv/([^/]*/)?ftp(/.*)? all files system_u:object_r:public_content_t:s0
/srv/([^/]*/)?rsync(/.*)? all files system_u:object_r:public_content_t:s0
/srv/([^/]*/)?www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
/srv/.* all files system_u:object_r:var_t:s0
/srv/gallery2(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
/srv/git(/.*)? all files system_u:object_r:git_sys_content_t:s0
[iyunv@boxin ~]# semanage fcontext -a -t public_content_t "/srv/samba(/.*)?"
[iyunv@boxin ~]# semanage fcontext -l | grep /srv/samba
/srv/samba(/.*)? all files system_u:object_r:public_content_t:s0
[iyunv@boxin ~]# restorecon -Rv /srv/samba
restorecon reset /srv/samba context unconfined_u:object_r:var_t:s0->unconfined_u:object_r:public_content_t:s0
[iyunv@boxin ~]# ls -dZ /srv/samba/
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 /srv/samba/
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com