Linux 安全保护模式

DAC,自主访问控制

MAC,强制访问控制

SELinux 

一套强化Linux安全的MAC扩展模块

美国国家安全局主导开发

SELinux的运作机制

集成Linux内核(2.6及以上)

操作系统提供可定制的策略,管理工具

[root@test ~]# cat /etc/redhat-release

Red Hat Enterprise Linux Server release 7.2 (Maipo)

[root@test ~]# uname -r

3.10.0-327.el7.x86_64

[root@test ~]# rpm -qa | grep -i selinux

selinux-policy-3.13.1-60.el7.noarch

libselinux-2.2.2-6.el7.x86_64

selinux-policy-targeted-3.13.1-60.el7.noarch

libselinux-utils-2.2.2-6.el7.x86_64

libselinux-python-2.2.2-6.el7.x86_64

查看当前SELinux的状态

[root@test ~]# sestatus

SELinux status:                 enabled

SELinuxfs mount:                /sys/fs/selinux

SELinux root directory:         /etc/selinux

Loaded policy name:             targeted

Current mode:                   permissive

Mode from config file:          enforcing

Policy MLS status:              enabled

Policy deny_unknown status:     allowed

Max kernel policy version:      28

[root@test ~]# ls /etc/selinux/

[root@test ~]# ls /sys/fs/selinux/

[root@test ~]# setenforce 0|1  #0:permissive 1:enforcing

[root@test ~]# getenforce  #查看当前SELinux状态

[root@test ~]# vim /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 three two values:

#     targeted - Targeted processes are protected,

#     minimum - Modification of targeted policy. Only selected processes are protected.

#     mls - Multi Level Security protection.  #提供多层次,全面的安全防护策略

SELINUXTYPE=targeted#推荐,仅保护最常见/关键的网络服务,其他不限制

SELinux策略设置

一,安全上下文

进程  ps aux -Z

目录  ls -dZ 目录名

文件  ls -lZ 文件名

[root@test ~]# ls -lZ /etc/passwd

-rw-r--r--. root root system_u:object_r:passwd_file_t:s0 /etc/passwd

[root@test ~]# ls -dZ /var/www/html/

drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/

[root@test ~]# ls -dZ /var/lib/mysql/

drwxr-x--x. mysql mysql system_u:object_r:mysqld_db_t:s0 /var/lib/mysql/

[root@test ~]# ps aux -Z | grep httpd

system_u:system_r:httpd_t:s0    root      5965  0.1  0.4 226128  5052 ?        Ss   22:33   0:00 /usr/sbin/httpd -DFOREGROUND

system_u:system_r:httpd_t:s0    apache    5966  0.0  0.3 228212  3144 ?        S    22:33   0:00 /usr/sbin/httpd -DFOREGROUND

安全上下文的组成

用户:角色:访问类型:选项

常见访问类型

bin_t #二进制执行文件

etc_t#系统配置文件

fsadm_exec_t#文件系统管理

admin_home_t#管理员账户的宿主目录

user_home_t#普通用户的宿主目录

httpd_sys_content_t#httpd网站内容

SELinux启用后一般的操作规律

新建文件或新建目录 会继承父目录的安全上下文

[root@test ~]# touch /root/1.txt

[root@test ~]# ls -dZ /root/

dr-xr-x---. root root system_u:object_r:admin_home_t:s0 /root/

[root@test ~]# ls -lZ /root/1.txt

-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 /root/1.txt

拷贝时继承目标目录的安全上下文

[root@test ~]# cp /root/1.txt  /var/www/html/

[root@test ~]# ls -lZ /var/www/html/1.txt

-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/1.txt

移动时保留源文件的安全上下文

[root@test ~]# rm -rf /var/www/html/1.txt

[root@test ~]# mv /root/1.txt  /var/www/html/

[root@test ~]# ls -lZ /var/www/html/1.txt

-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 /var/www/html/1.txt

修改安全上下文

chcon  修改安全上下文

选项:-t:指定访问类型

-u,-r:分别用来指定用户,角色

-R:递归修改

[root@test ~]# ls -lZ /var/www/html/1.txt

-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 /var/www/html/1.txt

[root@test ~]# chcon -t httpd_sys_content_t /var/www/html/1.txt

[root@test ~]# ls -lZ /var/www/html/1.txt

-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/1.txt

restorecon  重置安全上下文

— 恢复为所在位置的默认上下文属性

-R:递归恢复

[root@test ~]# touch /root/2.txt

[root@test ~]# mv /root/2.txt  /var/www/html/

[root@test ~]# ls -lZ /var/www/html/2.txt

-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 /var/www/html/2.txt

[root@test ~]# restorecon /var/www/html/2.txt

[root@test ~]# ls -lZ /var/www/html/2.txt

-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/2.txt

二.SELinux布尔值:(功能开关)

getsebool 查看

-a 可列出所有布尔值

setsebool 设置

-P 永久更改,重启仍然有效

启用SELinux日志程序

[root@test ~]# rpm -qa | grep shoot

setroubleshoot-plugins-3.0.59-1.el7.noarch

setroubleshoot-3.2.24-1.1.el7.x86_64

setroubleshoot-server-3.2.24-1.1.el7.x86_64

练习:启用SELinux,允许本机的ftp服务,允许匿名用户上传和下在文件

[root@test ~]# yum -y install vsftpd

[root@test ~]# mkdir /var/ftp/sharedir

[root@test ~]# chmod o+w /var/ftp/sharedir/

[root@test ~]# cp /etc/hosts /var/ftp/sharedir/

[root@test ~]# vim /etc/vsftpd/vsftpd.conf

29 anon_upload_enable=YES

[root@test ~]# systemctl restart vsftpd

[root@test ~]# getsebool -a | grep ftp

[root@test ~]# setsebool -P ftpd_full_access=on

[root@test ~]# setsebool -P ftpd_anon_write=on

[root@ftptest ~]# yum -y install ftp.x86_64

[root@ftptest ~]# ftp 192.168.4.12

Connected to 192.168.4.12 (192.168.4.12).

220 (vsFTPd 3.0.2)

Name (192.168.4.12:root): ftp

Password:

ftp> cd sharedir

ftp> lcd /root#设定本地接受目录位置

ftp> put test.txt#上传本地文件

ftp> get hosts#下在文件

练习 启用SELinux,修改本机网站服务监听的端口8090

[root@test ~]# sed -i '42s/80/8090/' /etc/httpd/conf/httpd.conf

[root@test ~]# grep -n 8090 /etc/httpd/conf/httpd.conf

42:Listen 8090

[root@test ~]# systemctl restart httpd

Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.

[root@test ~]# grep -i "setroubleshoot" /var/log/messages | tail -1

Jan  3 01:43:44 test setroubleshoot: SELinux is preventing /usr/sbin/httpd from name_bind access on the tcp_socket port 8090. For complete SELinux messages. run sealert -l b044047d-64e3-425b-aa88-50ffb248f814

[root@test12 ~]# sealert -l b044047d-64e3-425b-aa88-50ffb248f814#运行日志文件提供的解决方案 在其中寻找解决办法

...

If you want to allow /usr/sbin/httpd to bind to network port 8090

Then you need to modify the port type.

Do

# semanage port -a -t PORT_TYPE -p tcp 8090

其中 PORT_TYPE 是以下之一:http_cache_port_t, http_port_t, jboss_management_port_t, jboss_messaging_port_t, ntop_port_t, puppet_port_t。

...

[root@test ~]# semanage port -a -t http_port_t  -p tcp 8090

[root@test ~]# systemctl restart httpd

[root@test ~]# netstat -pantu | grep httpd

tcp6       0      0 :::8090                 :::*                    LISTEN      9668/httpd

RHCE 的考试中有一道题目是:

配置SELinux

    确保您的两个虚拟机的SELinux处于强制启用模式 

    我们需要做的是在两台虚拟机器上执行如下操作:

# setenforce 1                            #配置当前SELinux状态为  enforcing (强制启动)

# getenforce                               #查看当前SELinux状态

Enforcing

# vim /etc/selinux/config         #修改配置文件 配置为 enforcing (强制启动)

# sed -n "7p" /etc/selinux/config

SELINUX=enforcing

RHCE 的考试中还有两道题目是会涉及道SELinux

Samba共享

Samba共享的SELinux开关【getsebool  -a】

# setsebool  -P  samba_export_all_rw=on

Web服务开放非标准端口

# semanage  port  -a  -t  http_port_t  -p tcp 8909

可能遇到的问题:

执行semanage或setsebool时可能失败或死机

原因:内存不足

解决办法:

将虚拟机关机,然后再重新开机,重新设置

或者,添加1G交换空间后再重新设置

具体配置方法 请看 https://blog.51cto.com/13558754/2056761

转载于:https://blog.51cto.com/13558754/2058355

全面分析RHCE7(红帽认证工程师)考试题目之 ----SELinux篇相关推荐

  1. 想考红帽认证工程师常见问题解答

    其实一直以来就想考个RHCE,但是没对考试有系统的了解.通过查找资料,得到这编文章可以解答 1. 红帽认证工程师及红帽认证技师认证考试是开卷考试吗? 不是.红帽认证工程师及红帽认证技师认证考试为闭卷考 ...

  2. 红帽认证工程师常见问题解答(转)

    红帽认证工程师常见问题解答(转)[@more@]红帽企业Linux 3的发布对红帽认证工程师课程和红帽公司提供的其它课程有什么影响? 红帽认证工程师操作考试是开卷考试吗? 0.我听说红帽认证工程师考试 ...

  3. 红帽认证工程师和红帽认证技师应试指南

    这是我在红帽官网上看到的关于红帽人证的介绍,有对红帽认证感兴趣的可一参考下: 红帽认证工程师及红帽认证技师应试指南 概述 --> 在本指南中,主要对红帽认证技师(RHCT)或红帽认证工程师(RH ...

  4. 红帽认证工程师及红帽认证技师应试指南

    红帽认证工程师及红帽认证技师应试指南 概述 --> 在本指南中,主要对红帽认证技师(RHCT)或红帽认证工程师(RHCE)应试过程中可能会用到的信息进行了介绍.对于红帽全球培训服务(Red Ha ...

  5. Red Hat 宣布新的红帽认证工程师计划

    开发四年只会写业务代码,分布式高并发都不会还做程序员? >>>   红帽公司近日在博客公布了关于红帽认证工程师(RHCE)的新计划. 红帽方面表示,随着行业本身的发展和变化,新技术应 ...

  6. 红帽认证工程师(RHCE)的发展前景

    Linux位居操作系统产品增长之首,市场同比增长率达到30.9%,市场价值达到357亿美元.继续保持较快增长态势.在三年时间内, Linux可望在1700万PC中使用,使其安装规模达到4260万,达到 ...

  7. 全面分析RHCE7(红帽认证工程师)考试题目之 ----SSH篇

    管理SSH服务(远程连接服务) 一,ssh服务常用配置参数 /etc/ssh/sshd_config 注意:修改端口时要确保SELinux 不是 Enforcing [root@test13 ~]# ...

  8. 全面分析RHCE7(红帽认证工程师)考试题目之 ---Firewall(防火墙)篇

    防火墙策略管理(firewall) 作用:隔离 局域网和外网之间 阻止入站,允许出站 软件防火墙 系统服务:firewalld 管理工具:firewall-cmd(命令工具. Linux7),fire ...

  9. 全面分析RHCE7(红帽认证工程师)考试题目之 ----邮件篇

    基础邮件服务 电子邮件服务器的基本功能 为用户提供电子邮箱存储空间(用户名@邮件域名) 处理用户发出的邮件-------传递给收件服务器 处理用户收到的邮件-------投递到邮箱 配置前提 虚拟机s ...

最新文章

  1. Python3 基础语法(笔记1)
  2. html5画布画点,在HTML5画布上绘制一个点
  3. kubectl命令自动补全功能
  4. LINUX下配置bashrc文件/ PATH环境变量修改/别名/提示符
  5. c语言二级指针有什么作用,C语言中二级指针的实例详解
  6. vector 删除指定元素_std::vector简介
  7. eZ Publish 的文章
  8. java 常量 类型_Java的常量及数据类型。
  9. python编程入门第3版pdf-Python程序设计 第3版pdf
  10. HashPasswordForStoringInConfigFile 已过时
  11. 【渝粤教育】国家开放大学2018年春季 0550-21T素描(一) 参考试题
  12. 转:Android ViewPager多页面滑动切换以及动画效果
  13. 一加8 pro 刷入 kali Hunter
  14. 获取上周一上周日,和大上周一和大上周日的时间
  15. Medusa(美杜莎)--参数及常见命令
  16. 变态跳台阶问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法?
  17. c# 编写水准测量平差程序
  18. centos 8 的图形操作界面在哪_【行测备考】立体图形截面有哪些实用技法?
  19. Java基于局域网(LAN)的聊天室软件-内附源码
  20. 解读华为云应用平台ROMA,黑科技实现一站式政企上云

热门文章

  1. 戴尔外星人m17R2原厂预装系统win10家庭中文版带F12 SupportAssist OS Recovery恢复功能
  2. 戴尔外星人系列原厂预装系统重建恢复分区重新构建F12|SupportAssist OS Recovery恢复功能恢复出厂设置
  3. html长按自动复制代码,html中如何使用js实现长按功能(代码)
  4. 【算法】广度优先遍历 (BFS)
  5. 音频可视化,生成波形图
  6. Howlerjs 音频播放插件
  7. 学校学生计算机室总帐,总帐管理系统及方法
  8. win10系统更新后,开机蓝屏解决方案
  9. opencv测量物体的长度
  10. 20种最先进的机器人,感觉有点吓人!