zoukankan      html  css  js  c++  java
  • linux中的内核级防火墙(SELINUX)

    SElinux是基于内核开发出来的一种安全机制,被称之为内核级加强型防火墙,有力的提升了系统的安全性。

    SElinux的作用分为两方面:1.在服务上面加上标签; 2.在功能上面限制功能

    在linux系统中使用 getenforce 命令可以查看selinux的状态:

      disabled     为关闭状态,对服务和功能都没有限制

      enforcing    为强制状态,对服务和功能都进行限制

      permissive  为警告状态,服务和功能可以使用,但会收到警告信息,可视为对安全的提示

    在selinux开启状态时,可使用setenforce 0|1 来调整selinux的状态,0为警告状态,1为强制状态,如下图所示:
      

    selinux的状态在配置文件 /etc/selinux/config 中也可以设置:

      路径:vim /etc/selinux/config  或 vim /etc/sysconfig/selinux (链接文件,指向/etc/selinux/config)

      

      

      注:由于selinux是基于内核开发的,所以改变状态以后,需要重启内核,也就是关机以后才能够生效

    在selinux开启的状态下,可以看到文件的安全上下文的标签,输入ls -Z 可以看到目录下的文件和目录的安全上下文标签:

       

    Linux内核防火墙的工作原理

      Linux的内核提供的防火墙功能通过netfiter框架实现,并提供iptables工具配置和修改防火墙的规则 

      netfilter的通用框架不依赖于具体的协议,而是为每种网络协议定义一套钩子函数。这些钩子函数在数据包经过协议栈的几个关键点时被调用,

      在这几个点中,协议栈将数据包及钩子函数作为参数,传递

      netfilter框架

        对于每种网络协议定义的钩子函数,任何内核模块可以对每种协议的一个或多个钩子函数进行注册,实现挂接。这样当某个数据包被传递给

      netfilter框架时,内核能检测到是否有有关模块对该协议和钩子函数进行了注册,如发现注册信息则调用该模块在注册时使用的回调函数,然后对

      应模块去检查、修改、丢弃该数据包及指示netfilter将该数据包传入用户空间的队列。

      钩子函数提供了一种方便的机制,以便在数据包通过Linux内核的不同位置上截获和操作处理数据包

    如下图所示;

       

       

    钩子函数说明:

      NF_IP_PRE_ROUTING:网络数据包进入系统,经过简单的检测后,数据包转交给该函数进行处理, 然后根据系统设置的规则对数据包进行处理,

                 如果数据包不被丢弃则交给路由函数进行处理,在该函数中可替换IP包的目的地址,即DNAT;

      NF_IP_LOCAL_IN:所有发送给系统的数据包都要能过该函数的处理,该函数根据系统设置的规则对数据包进行处理,如果数据包不被丢弃则交给

               本地的应用程序;

      NF_IP_FORWARD:所有不是发送给本机的数据包都要能过该函数进行处理,该函数会根据系统设置的规则对数据包进行处理,如数据包不被丢弃

               则转 NF_IP_POST_ROUTING 进行处理。

      NF_IP_LOCAL_OUT:所有从本地应用程序出来的数据包必须通过该函数的处理,该函数根据系统设置的规则对数据包进行处理,如果数据包不被

                丢弃则交给路由函数进行处理。

      NF_IP_POST_ROUTING:所有数据包在发给其他主机之前需要通过该函数的处理,该函数根据系统设置的规则对数据包进行处理,如果数据包

                  不被丢弃,将数据包发给数据链路层,在该函数中可以替换IP包的源地址,即SNAT.

  • 相关阅读:
    20172332 2018-2019-2 《程序设计与数据结构》实验一报告
    20172332 2017-2018-2 《程序设计与数据结构》第三周学习总结
    20172332 2017-2018-2 《程序设计与数据结构》第二周学习总结
    20172332 2017-2018-2 《程序设计与数据结构》第一周学习总结
    20172332 2017-2018-2《程序设计与数据结构》课程总结
    20172332 2017-2018-2 《程序设计与数据结构》实验五报告
    20172332 2017-2018-2 《程序设计与数据结构》实验四报告
    20172332 2017-2018-2 《程序设计与数据结构》第十一周学习总结
    20172332 2017-2018-2 《程序设计与数据结构》实验三报告
    20172332 2017-2018-2 《程序设计与数据结构》第十周学习总结
  • 原文地址:https://www.cnblogs.com/qiuyu666/p/11799194.html
Copyright © 2011-2022 走看看