热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

GrsecurityACL系统(一)

文章标题:GrsecurityACL系统(一)。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  摘要
  ACL(Access Control List,访问控制列表)系统是一种软件,它能够为你的计算机提供更好的访问控制。Grsecurity是众多Linux ACL系统中比较典型和成熟的一种。这个文档是grsecurity工程的一个官方文档,是我最近在研究Linux的ACL系统时,顺便翻译的。和lids之类的系统一样,grsecurity比较复杂,而且文档里面有很多地方也语焉不详,所以出现错误在所难免。
  
  简介
  
  1.什么是ACL系统?
  
  ACL(Access Control List,访问控制列表)系统是一种软件,它能够为你的计算机提供更好的访问控制.
  
  2.为什么需要ACL系统?
  
  访问控制系统的作用是限制包括root用户在内的所有用户对文件、能力、资源或者套接字的访问。这是一种合法性访问控制(Mandatory Access Control)模型。随着对系统安全性的日益关注,出现了很多针对Linux系统的访问控制系统。这些Linux ACL系统多数是以内核补丁的形势出现的,Grsecurity是其中比较典型和成熟的一种。使用grsecurity,系统管理员可以赋予进程尽可能小的权限,从而使攻击者即使获得了root权限也无法控制整个系统。
  
  3.支持的特征
  
  grsecurity具有以下功能:
  
  基于进程的访问控制;
  基于进程的资源限制;
  IP访问控制;
  阻止进程暴力攻击的限制;
  完全智能的学习模型;
  可读的配置文件;
  一个智能化的用户空间管理工具;
  通过include指令,支持附加的ACL配置。参数是一个目录或者一个文件;
  O(1)搜索算法;
  管理员模式;
  能力和ACL的继承。
  
  
  
  安装Grsecurity系统
  
  1.下载grsecurity内核补丁和管理工具gradm
  
  从grsecurity的官方网站http://www.grsecurity.net,我们可以获得最新版本的grsecurity内核补丁和管理工具gradm的源代码。本文将以Redhat 7.3和最新版本的Linux-2.4.19内核为例进行讨论。
  
  2.安装grsecurity内核补丁
  
  下载完成之后,我们开始安装。进入内核源代码所在的目录,给内核源代码打上grsecurity补丁:
  
  [nixe0n@nixe0n nixe0n]$ cd linux-2.4.19
  [nixe0n@nixe0n linux-2.4.19]$ patch -p1 <../grsecurity-1.9.6-2.4.19.patch
  
  
  
  然后在配置菜单中打开grsecurity支持的选项(相关选项的功能稍后将详细介绍),重新编译内核:
  
  [nixe0n@nixe0n linux-2.4.19]$ make menuconfig
  [root@nixe0n linux-2.4.19]# make dep&&make bzImage&&make modules&&make modules_install
  [root@nixe0n linux-2.4.19]# cp arch/i386/boot/bzImage /boot/GRSecKernel
  
  
  
  最后,使用自己喜欢的编辑器在/boot/grub/menu.lst文件中把GRSecKernel加入启动菜单。
  
  安装grsecurity管理工具gradm
  
  Grsecurity系统的管理工具叫做gradm,下载了最新版本的gradm之后,只要使用如下命令就可以完成编译和安装:
  
  tar ?zxf gradm-.tar.gz
  cd gradm
  make
  make install
  
  
  
  执行了make install命令时,需要定义一个管理Grsecurity ACL系统的密码。为了系统的安全性,应该使密码足够长,另外不要使这个密码和root账户的密码相同。
  
  
  Grsecurity的配置
  
  1.Grsecurity ACL的结构
  
  grsecurity ACL规则由主题进程和对象组成。主题进程是被执行的进程;对象是文件、资源、能力(capability)和对IP的访问控制。系统的主要访问控制列表文件位于/etc/grsec/acl,如果没有这个文件,启动grsecurity系统时就会报错。
  
  grsecurity ACL规则的结构如下所示:
  
   {
  
        [+|-]
  
   connect {
   /:-
   }
        bind {
   /:-
   }
  }
  
  
  
  2.grsecurity ACL规则的一些约定
  
  grsecurity的访问控制规则包含一些需要注意的问题。使用时一定要记住这些约定,才能准确地利用其加强系统的安全性。这些约定包括:
  
  所有的路径必须是绝对路径;
  如果要禁止对某个文件的访问,只要忽略模式(mode)参数就可以了;
  使用include关键词,可以在规则中包含已经定义过的规则,例如:
  include
  
  grsecurity访问控制规则支持注释,绝大多数UNIX系统的配置文件以及shell等脚本都是用#作为注释行的开头,grsecurity规则也是;
  主题和对象不必是文件,他们也可以是有效的目录;
  主题的模式包括:h、p、v、k和o(稍候我们将详细介绍);
  对象的模式包括:r、w、x、a、h、i和o(稍候我们将详细介绍);
  能力(capabilities)只有i一种模式;
  不管如何配置,都至少需要一个默认的ACL,它的主题是/。如果没有,在启动grsecurity ACL系统时,gradm会告诉你缺少默认ACL;
  任何主题进程的ACL规则都应该包含一个/对象;
  CAP_ALL不是一个真正的能力,只是为了方便,让它表示所有的能力。例如,如果想要去掉CAP_SETUID之外的所有能力,可以使用-CAP_ALL和+CAP_SETUID实现;
  传统的UNIX中,只有文件系统被赋予了访问权限才能访问文件系统上的文件,grsecurity ACL系统也是如此。
  
  
  3.模式及其含义
  
  3.1.主题进程的模式
  
  在grsecurity ACL系统中,主题有如下模式:
  
  h 这个进程是隐藏的,只能够被具有v模式的进程看到;
  v 具有这个模式的进程拥有察看隐藏进程的能力;
  p 进程是受保护的,这种模式的进程只能被具有k模式的进程杀死;
  k 具有这个模式的进程可以杀死处于保护模式(p)的进程;
  l 为这个进程打开学习模式;
  o 撤销ACL继承
  
  3.2.对象的模式
  
  grsecurity访问控制规则中的对象可以有如下模式:
  
  r 这个对象可以打开阅读;
  w 这个对象可以打开写或者添加;
  o 这个对象可以打开添加;
  h 这个对象是隐藏的;
  i 这个模式只用于二进制可执行文件。当这个对象被执行时,它继承所在主体进程的访问控制列表;
  
  4.继承
  
  在grsecurity ACL系统中,存在一个叫做继承(inheritance)的特征,它和C++种的继承极为类似。继承包括两种方式,第一种和配置文件有关,而第二种和内河对ACL的处理方式有关。除了主题包含o模式的规则以外,所有的ACL规则都可以使用继承。在ACL配置文件中有一些简单的规则来控制继承:
  
  对于当前规则的某个对象,如果父ACL规则中存在对这个对象的访问控制,grsecurity就会比较两个规则所作的限制,尽量使当前规则允许的权限不大于父规则允许的权限,除非当前规则的被定义为o模式。
  如果当前ACL规则中没有对某个对象的限制,grsecurity会自动使用父规则对这个对象的限制。
  
  
  4.1.继承示例
  
  为了便于理解,我们举几个有关继承的例子:
  
  / {
   / rwx
   /etc rx
   /usr/bin rx
   /tmp rw
  }
  
  /usr/bin/mailman {
   /tmp rwxo
  }
  
  
  
  这两个涉及到继承的ACL规则展开后,将是如下形式:
  
  / {
   / rwx
   /etc rx
   /usr/bin rx
   /tmp rw
  }
  
  /usr/bin/mailman {
   / rwx
   /etc rx
   /usr/bin rx
   /tmp rwx
  }
  
  
  
  在/usr/bin/mailman和/两个规则都包含对/tmp对象的访问控制。而在/usr/bin/mailman规则中,/tmp对象具有o模式,因此/规则中对/tmp对象所作的限制将被忽略。
  
  grsecurity系统采用的继承算法不仅仅只计算对父规则的继承(例如:/bin和/bin/su),它会按照整个路径计算当前规则对所有祖先规则的继承。例如,在使用一个以/usr/X11R6/bin/XFree86为主题的访问控制规则时,grsecurity会自动地计算/usr/X11R6/bin、/usr/X11R6、/usr、/等规则设置的访问控制。
  
  针对很多可执行文件的访问控制都有一些共性的设置,为了减少重复设置,grsecurity才引入继承的特征。在某些特殊的规则中,你可以使用o主题模式,在整个规则的范围内,禁止继承父规则的访问控制;也可以使用o对象模式,仅仅取消对某个对象访问控制的继承。
  
  内核对于继承的处理略有不同,在这个例子中,当执行具有i模式的对象时,内核会包含进去一个主题ACL的拷贝。这样,你就可以赋予特定进程派生出的进程以特殊的权限。例如:
  
  / {
   / rwx
   /tmp rw
  }
  
  /usr/bin/mozilla {
   /usr/bin/mozilla-bin rxi
   /tmp rwxo
  }
  
  
  
  在这个例子中,假设/usr/bin/mozilla是一个脚本(事实的确如此),通过它执行真正的mozilla程序/usr/bin/mozilla-bin。当/usr/bin/mo
推荐阅读
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 无线认证设置故障排除方法及注意事项
    本文介绍了解决无线认证设置故障的方法和注意事项,包括检查无线路由器工作状态、关闭手机休眠状态下的网络设置、重启路由器、更改认证类型、恢复出厂设置和手机网络设置等。通过这些方法,可以解决无线认证设置可能出现的问题,确保无线网络正常连接和上网。同时,还提供了一些注意事项,以便用户在进行无线认证设置时能够正确操作。 ... [详细]
  • 本文详细介绍了相机防抖的设置方法和使用技巧,包括索尼防抖设置、VR和Stabilizer档位的选择、机身菜单设置等。同时解释了相机防抖的原理,包括电子防抖和光学防抖的区别,以及它们对画质细节的影响。此外,还提到了一些运动相机的防抖方法,如大疆的Osmo Action的Rock Steady技术。通过本文,你将更好地理解相机防抖的重要性和使用技巧,提高拍摄体验。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
author-avatar
black丶烽火
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有