SELinux 学习

selinux:当前运行状态
$ /usr/sbin/sestatus  //selinux运行状态
SELinux status:                 enabled 状态
SELinuxfs mount:                /selinux
Current mode:                   enforcing 模式
Mode from config file:          enforcing
Policy version:                 24

Policy from config file:        targeted  策略

运行时改变selinux状态: setenforce 0|1


1.查看文件的selinux安全上下文
$ ls -Z file1
-rw-rw-r--. user1 group1 unconfined_u:object_r:user_home_t:s0 file1
用户user:角色role:类型type:级别level
user: system_u;系统用户
role: system_r;系统进程,如守护进程。
object_r;文件上的通用角色。
type: init_t; (域)
kernel_t
进程名_t

2.查看linux 用户与selinux用户映射关系
# /usr/sbin/semanage login -l
Login Name                SELinux User              MLS/MCS Range
__default__               unconfined_u              s0-s0:c0.c1023
root                      unconfined_u              s0-s0:c0.c1023
system_u                  system_u                  s0-s0:c0.c1023
添加新映射:semanage login -a -s user_u(selinux用户) newuser(linux 用户)
更改映射:semanage login -m -S targeted -s "user_u" -r s0 __default__
 semanage login -m -S targeted -s "unconfined_u" -r s0-s0:c0.c1023 __default__

3.域转换:(触发域->控制相应的类型)
域中可以访问的类型:如 查看httpd_t 域中类型,man httpd_selinux
例:当用户运行passwd 时,用户shell进程 会进入 passwd_t 域。

passwd_exec_t 为passwd_t域的entrypoint。


3.1.用户要更改他们的密码。要做到这一点,他们运行passwd的应用程序。
在/usr/bin/passwd文件的可执行文件被标记为与passwd_exec_t类型:(进入passwd_t域(运行时可以查看),此域内可以读写shadow_t类型)
$ ls -Z /usr/bin/passwd
-rwsr-xr-x  root root system_u:object_r:passwd_exec_t:s0 /usr/bin/passwd

passwd应用程序的访问/etc/shadow文件,这是读写shadow_t类型:
$ ls -Z /etc/shadow
----------. root root system_u:object_r:shadow_t:s0    /etc/shadow
3.2.SELinux策略规则运行的进程在passwd_t域允许读取和写入的文件打成与shadow_t类型。仅适用于shadow_t类型所需要的文件更改密码。这包括的/etc/gshadow中, /etc/ hadow文件及其备份文件。

3.3. SELinux策略规则指出的passwd_t域的入口点的passwd_exec_t类型的权限。

3.4.当用户运行在/usr/bin/passwd文件的应用程序,用户的shell的过程转换的passwd_t域。
与SELinux ,因为默认操作是拒绝和规则的存在允许运行的应用程序在passwd_t域访问标有shadow_t类型的文件(除其他外) , passwd应用程序允许访问/ etc / shadow中,更新用户的密码。

4.确定进程的安全上下文:
运行程序:passwd
 ps -eZ | grep passwd
 unconfined_u:unconfined_r:passwd_t:s0-s0:c0.c1023 13212 pts/1 00:00:00 passwd
 在这个例子中,当在/usr /bin/passwd文件的的应用(标有passwd_exec_t类型)被执行,用户的shell的进程转换到passwd_t域。
 请记住:类型定义了一个进程域和文件的类型。
 
5.确定当前用户的安全上下文
id -Z 
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
fedora默认,用户为unconfined_u,角色为unconfined_r,域为unconfined_t,MLS范围为s0,有权访问类别为c0-c1023.
 
6. selinux 问题跟踪解决:
setroubleshoot,setroubleshoot-server, dbus audit(auditd)
 6.1.启动auditd,  ->/etc/log/audit/audit.log
 setroubleshootd,rsyslogd
 提示日志;
/var/log/audit/audit.log --》setroubleshootd:(sedispatch,seapplet)会转发到messages
/var/log/messages
/var/log/htttpd/error_log

auditd on:--> /var/log/audit/audit.log
auditd off; rsyslogd on ;-->  /var/log/messages
setroubleshootd, rsyslogd, and auditd on; --> /var/log/audit/audit.log. Easier-to-read denial messages also sent to /var/log/messages

日志查看:
ausearch -m avc  [-ts [today|recent]]
ausearch -m avc -c httpd (指定服务名)
aureport -a
sealert -l \* //查看所有消息


grep "SELinux is preventing" /var/log/messages
grep "denied" /var/log/audit/audit.log

  chcon ;重新标记文件,更改
 chcon -t samba_share_t /var/www/html/testfile
 (httpd 能访问 httpd_sys_content_t 文件)
 restorecon ; 恢复原始安全上下文
 restorecon -v /usr/sbin/httpd

 
 unconfined域,几乎可以访问所有文件,当进程运行在unconfined域,访问其他域文件时,使用DAC;rwx
 chcon -t unconfined_exec_t /usr/sbin/httpd
 
 6.2.图形化查看selinux问题;
 sealert -b //开启sealert gui
  sealert -a /var/log/audit/audit.log -H > audit.html
  sealert  
//图形化查看(有解决的命令提示)

 6.3解决方法:
权限:chmod ,chown
 a,改变安全上下文

 临时更改: chcon -R -t...
 持久更改: semanage  fcontext -a -t httpd_sys_content_t /var/www/html 
 恢复: restorecon -R -v /var/www/html
 检查是否已更改:matchpathcon -V 
 b,改变boolean参数值
 查看:getsebool -a | grep httpd
 设置:setsebool -P httpd_can_network_connect_db on

 Boolean值;
semanage boolean -l  //列出所有boolean值(有解释)
getsebool -a //列出所有boolean值
setsebool boolean-name  on/off//设置boolean值(临时, -P持久)


 c,端口号;
semanage port -l //查询服务关联的端口。

semanage port -a -t http_port_t -p tcp 9876//添加一条新记录到 /etc/selinux/targeted/modules/active/ports.local


d,创见策略

audit2allow -w -a      //查看拒绝原因

audit2allow -a  // 查看 添加的规则

audit2allow -a -M myxxxx//针对所有AVC产生规则(生成myxxxx.pp和myxxxx.te)。
grep httpd /var/log/audit/audit.log | audit2allow -M myhttpd   (针对某个进程产生规则)
semodule -i myhttpd.pp   
安装规则

关闭对某一域的enforce; semanage permissive -a httpd_t
删除对某一域的permissive;semanage permissive -d httpd_t

错误日志格式:
例如:audit.log
type=AVC msg=audit(1226874073.147:96): avc:  denied  { getattr } for  pid=2465 comm="httpd" path="/var/www/html/file1" dev=dm-0 ino=284133 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:samba_share_t:s0 tclass=file

type=SYSCALL msg=audit(1226874073.147:96): arch=40000003 syscall=196 success=no exit=-13 a0=b98df198 a1=bfec85dc a2=54dff4 a3=2008171 items=0 ppid=2463 pid=2465 auid=502 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=6 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)

格式:
{ getattr } ;括号中表示拒绝的动作。
comm="httpd";进程名
path="/var/www/html/file1" ;访问对象的完整路径
scontext="unconfined_u:system_r:httpd_t:s0";进程的安全上下文
tcontext="unconfined_u: object_r:samba_share_t:s0"; 访问对象的安全上下文
system call (SYSCALL) message:
success=no: 系统调用是否成功。
exe="/usr/sbin/httpd":可执行程序的完整路径。

scontext与tcontext不匹配:查看某一个哉中的类型 ;如 manhttpd_selinux

文件系统安装是设置安全上下文;
mount -o context="system_u:object_r:httpd_sys_content_t:s0"

# mount /dev/sda2 /test/ -o defcontext="system_u:object_r:samba_share_t:s0"


注:相关工具所在包:

policycoreutils-python: semanage, audit2allow, audit2why and chcat
policycoreutils:  restorecon, secon, setfiles, semodule, load_policy, setsebool
policycoreutils-gui: system-config-selinux
libselinux-utils: avcstat, getenforce, getsebool, matchpathcon, selinuxconlist, selinuxdefcon, selinuxenabled, setenforce, togglesebool 
setroubleshoot-server: sealert

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值