selinux---扩展强制访问控制安全模块

1.什么是selinux?

selinux是强制访问控制系统的实现,且位于Linux Kernel中。它使用一个安全策略来控制这些实体(用户、进程、应用和文件)之间的交互,如,它可以指明某一个进程访问哪些资源。
强制访问控制系统的用途在于增强系统抵御攻击的能力。

2.selinux的特点是什么?

SELinux系统比起通常的Linux系统来,安全性能要高的多,它通过对于用户,进程权限的最小化,即使受到攻击,进程或者用户权限被夺去,也不会对 整个系统造成重大影响。以前的访问控制基于读/写/执行这三 个控制位,文件所有者、文件所有者所属组、其他人各一套。在SELinux中,访问控制属性总是安全上下文三人组形式,所有文件和主体都有一个关联的安全 上下文,标准Linux使用进程用户/组ID,文件的访问模式,文件用户/组ID要么可以访问要么被拒绝,SELinux使用进程和客体的安全上下文,需 要特别指出的是,因为SELinux的主要访问控制特性是类型强制,安全上下文中的类型标识符决定了访问权。若要访问文件,必须同时具有普通访问权限和 SELinux访问权限。因此即使以超级用户身份root运行进程,根据进程以及文件或资源的SELinux安全性上下文可能拒绝访问文件或资源。

3.selinux的状态

SELinux 有三种工作模式,分别是:

1. enforcing:强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中。

2. permissive:警告模式。违反 SELinux 规则的行为只会记录到日志中。一般为调试用。  查看日志信息:cat  /var/log/audit/audit.log

3.disable :   关闭selinux

 注:selinux命令状态查询:getenforce

        文件编辑: /etc/sysconfig/selinux           (修改完之后,reboot 生效

         命令修改:setenforce  0        设置selinux为警告模式     (命令修改为临时修改,重启之后会恢复为之前的状态

                          setenforce   1       设置selinux为强制模式

4.selinux产生的影响是什么?

    1)影响程序的访问文件,通过安全上下文来控制的; 

    2)影响程序的服务程序功能,通过sebool值来控制的;

    3 )selinux开启后会关闭系统认为所有认为不安全的操作, 在某种程度上 , 它可以被看作是与标准权限系统并行的权限系统。

    4 ) 系统上的文件和其他资源都设置了权限标签 ,控制哪些用户对哪些文件具有哪些访问权;一般来说,只有同时具有欧通系统访问权限和selinux访问权限,才能访问文件;               

5.selinux的安全上下文

    1.临时修改安全上下文             chcon    -t     public_content_t      westos

[root@localhost mnt]# getenforce            //查看当前selinux的状态
Permissive

[root@localhost ftp]# touch /mnt/westos       //建立文件

[root@localhost ftp]# cd /mnt 
[root@localhost mnt]# ls -Z    //查看安全上下文
 
-rw-r--r--. root root unconfined_u:object_r:mnt_t:s0 westos

[root@localhost mnt]# chcon -t public_content_t westos //临时安全上下文public_content_t

[root@localhost mnt]# ls -Z     //查看安全上下文

-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0  westos

[root@localhost mnt]# vim /etc/sysconfig/selinux //重启selinux,reboot2次,先修改selinux为disabled,后修改为enforcing 
[root@localhost mnt]# reboot 
[root@localhost mnt]# vim /etc/sysconfig/selinux 
[root@localhost mnt]# reboot 
[root@localhost ~]# cd /mnt 
[root@localhost mnt]# ls -Z //重启后查看安全上下文,会发现之前的改动并未生效
 -rw-r--r--. root root unconfined_u:object_r:default_t:s0 westos

2.永久修改上下文

semanage      fcontext       -l           内核指定的所有文件的安全上下文的列表 ;

man     semanage     fontext           查询semanage用法

 mkdir    /westos         

 vim    /etc/vsftpd/vsftpd.conf

anon_root=/westos         修改ftp服务的默认目录,添加这一行

 systemctl restart vsftpd               重启vsftpd服务

 ls   -Zd     /westos                  查看目录的安全上下文,为default_t

semanage  fcontext   -a  -t   public_content_t   '/westos(/.*)?'   永久修改selinux   其中,-a 添加 ; -t 指定类型 ;(/.*)目录的所有文件                    

semanage    fcontext -l   |  grep   /westos            查看westos的安全上下文是不是public_content_t

restorecon    -FvvR    /westos           刷新

touch       /.autorelabel       建立文件,相当于selinux  初始化

ls   -Zd    /westos     查看目录安全上下文

6.selinux布尔值

selinux布尔值是更改selinux的开关;有时候,selinux的访问权限可选可通过selinux布尔值触发,可以提高系统安全性。

    1. 安装lftp软件

selinux状态为警告/强制,在强制状态下,客户端切换到student用户,是不可以上传文件的

getsebool    -a  |  grep  ftp             查看ftp服务的bool值

设置布尔值(1开启,0关闭)

setsebool   -P  ftp_home_dir   1      开启允许用户lftp到自己的根目录下

测试:

7.监控selinux冲突

1.必须安装 setroubleshoot-server 软件包 , 才能将 SELinux消息发送至 /var/log/messages
2.setroubleshoot-server 侦听 /var/log/audit/audit.log 中的审核信息并将简短摘要发送至 /var/log/messages
3.摘要包括 SELinux 冲突的唯一标识符 ( UUIDs ), 可用于收集更多信息
4.Sealert -l UUID 用于生成特定事件的报告。Sealert-a/var/log/audit/audit.log 用于在该文件中生成所有事件的报告
5.当setroubleshoot-server 软件包存在时,客户端如果访问失败,cat /var/log/messages日志中会有解决方案
6.如果卸载setroubleshoot-server 软件包  日志中没有解决方案。

/var/log/audit/audit.logselinux日志存放处
/var/log/messagesselinux解决方案存放处

yum  install  setroubleshoot-server.x86_64   -y

实验环境:

>  /var/log/audit/audit.log

>  /var/log/audit/audit.log

测试:

ftp://172.25.254.20        没有看见westos

cat        /var/log/messages                 查看解决方案

注意:

提供解决方案的不是系统而是一个软件程序(setroubleshoot-server.x86_64 ),但此工具不安全,只是解决当前不能访问的问题;

如果删除此工具,在日志/var/log/messages下是不会看到解决方案;

方案1:

方案2:

在浏览器中查看   ftp://172.25.254.20   

8.tcp和udp协议

TCP/IP是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基 础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。

用户数据报协议(UDP)是ISO参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP协议基本上是IP协议与上层协议的接口。UDP协议适用端口分辨运行在同一台设备上的多个应用程序。

cat /etc/services     查询每一个服务对应端口

cat /etc/services | grep -E "\<http\>"     查询http服务对应端口端口

修改http服务的端口

1.设置selinux为enforcing

2.yum  install   httpd        安装httpd        (默认端口为80)

修改  80  为  6161

systemctl  restart   httpd        重启服务  ( permissive 下不会报错)

重启时报错,说明不能重启。

semanage   port   -l  |  grep  http  查询并过滤http对应的端口有哪些

semanage   port  -a   -t   http_port_t    -p    tcp   6161       让httpd使用默认列表之外的端口6161

systemctl  restart   httpd     然后重启httpd

重启成功

发现httpd  有默认列表之外的端口6161出现。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值