Grsectory 配置、管理

Grsectory  配置

      使用grsecurity修补内核,内核源代码存档名为linux-3.2.50.tar,匹配的grsecurity补丁grsecurity-2.9.1-3.2.50-201308052151.patch。 两个文件都在同一目录中。切换到root用户并在下载文件的目录中运行以下命令。 第一个命令解压缩Linux源包,第二个命令将补丁应用于内核。 您可能需要使用首选的包管理工具安装补丁程序。

# tar -xf linux-3.2.50.tar
# cd linux-3.2.50
# patch -p1 < ../grsecurity-2.9.1-3.2.50-201308052151.patch
内核配置
     内核源代码包有一个通用配置文件,该文件无需任何重大修改即可运行。 发行版可能有自己的流程和工具来配置和构建内核,在这种情况下,应该查阅相关文档。 尽管如此,检查选项并的硬件和当前设置相匹配。
使用默认配置作为基础配置内核,在/usr/src/linux-3.2.50目录下,执行以下命令。
$ make menuconfig
     由于缺少软件包和库 - 按照错误消息进行指导。将启动交互式内核配置菜单。 在3.x和2.6中,grsecurity选项位于安全选项:Grsecurity下。 可以在Grsecurity和PaX配置选项页面上在线查每个选项及其对系统的影响的详细说明,也可以使用内核配置系统的内置帮助功能。 在启用或禁用选项之前,请确保了解选项。 退出配置菜单后,可以重新运行“make menuconfig”再次启动它。

     建议你先“配置方法”选项设置为“自动”,载配置“使用类型”和其他选项以满足环境和需求。 可以在“自定义配置”中微调所有grsecurity和PaX设置。

启用sysctl接口(Grsecurity»自定义配置到Sysctl支持)。 使你可以更改grsecurity运行的选项,而无需重新编译内核。 这是一个非常有用的功能,尤其是当您第一次使用grsecurity时。 “配置方法 - 自动”默认启用此功能。
一些审计选项会产生大量日志消息,最明显的是Exec和Chdir日志记录(分别为GRKERNSEC_EXECLOG和GRKERNSEC_AUDIT_CHDIR)。 如果启用其中任何一个,请确保正确配置日志记录系统以防止日志泛滥。 注意检查Grsecurity»自定义配置»日志选项。

      启用sysctl接口(Grsecurity»自定义配置到Sysctl支持)。 可以更改grsecurity运行的选项,而无需重新编译内核。 这是一个非常有用的功能,尤其是当您第一次使用grsecurity时。 “配置方法 - 自动”默认启用此功能。

      一些审计选项会产生大量日志消息,最明显的是Exec和Chdir日志记录(分别为GRKERNSEC_EXECLOG和GRKERNSEC_AUDIT_CHDIR)。 如果启用其中任何一个,请确保正确配置日志记录系统以防止日志泛滥。 注意检查Grsecurity»自定义配置»日志选项。

编译和安装
在alipine系统下:注意确保你的gcc库符合要求。
make  *.deb  -f
在编译grsecurity修补内核补丁程序时,会看到一些差异。 其中一个差异出现在编译结束时,可能类似于:
WARNING: modpost: Found 2820 section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
这个警告是无害的。 正如grsecurity邮件列表上的PaX团队所描述的那样:
the extra section mismatches are due to my changes, i explicitly
added detection for writeable function pointers which are potential
exploit targets, just to know how many of them there are. we've been
eliminating some of them already but this work will never finish.
as for what they are in general, a mismatch means an unwanted reference
from one section to another. say, accessing init code or data from
normal code/data is not good since init sections are freed up on boot,
so any reference to them must not exist from permanent sections.
从NVIDIA网站下载NVIDIA驱动程序.run文件。
从https://grsecurity.net/~spender/nvidia-drivers-352.09-pax.patch下载适用的NVIDIA驱动程序的PaX补丁
运行sh <NVIDIA .run文件名> -x
cd`basename <NVIDIA .run文件的名称> .run`
patch -p1 <../nvidia-drivers-352.09-pax.patch
通过运行./nvidia-installer安装的驱动程序。

 Grsectory  管理

下载gradm和grsecurity之前的版本。 在本文档中,压缩包的名称为gradm-3.1-201503211320.tar.gz。 解压缩包并通过执行以下命令切换到gradm目录: 

$ tar xzf gradm-3.1-201503211320.tar.gz

$ cd gradm

 PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统提供的服务 和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系 统中添加新的认证手段。

Lex 是一种生成扫描器的工具。扫描器是一种识别文本中的词汇模式的程序。 这些词汇模式(或者常规表达式)在一种特殊的句子结构中定义,
Yacc 代表 Yet Another Compiler Compiler。 Yacc 的 GNU 版叫做 Bison。它是一种工具,将任何一种编程语言的所有语法翻译成针对此种语言的 Yacc 语 法解析器。它用巴科斯范式(BNF, Backus Naur Form)来书写。按照惯例,Yacc 文件有 .y 后缀。编译行如下调用 Yacc 编译器:
Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为 Flex 布局。行内元素也可以使用 Flex 布局。
GNU bison是一个自由软件,用于自动生成语法分析器程序,实际上可用于所有常见的操作系统。Bison把LALR形式的上下文无关文法描述转换为可做语法分析的C或C++程序。在新近版本中,Bison增加了对GLR语法分析算法的支持。GNU bison基本兼容Yacc,并做了一些改进。它一般与flex一起使用。
注意:查看make的输出。 确保在末尾附近没有看到“无法检测PAM标头,禁用PAM支持”的行。 如果这样做,请安装PAM头文件并再次运行make命令。
要在没有PAM支持的情况下安装gradm,请运行:
$ make nopam
最后, 用 root, run:
# make install
gradm和grlearn程序安装到/ sbin。
创建目录/ etc / grsec及其中的两个文件(如果它们尚不存在):learn_config和policy。
将gradm的手册页安装到/ usr / share / man / man8。(grlearn没有手册页。它由gradm内部使用。)
注意第一次在系统上安装gradm,则会要求提供RBAC系统的管理密码。 选择一个长密码,从initscript【初始化】开始gradm)。 不要使用与root相同的密码。
修改Makefile,更改任何二进制或手册页位置,
# gradm --help
gradm 3.1
grsecurity RBAC administration and policy analysis utility
Usage: gradm [option] ... 
Examples:
gradm -P
gradm -F -L /etc/grsec/learning.logs -O /etc/grsec/policy
Options:
-E, --enable Enable the grsecurity RBAC system
-D, --disable Disable the grsecurity RBAC system
-C, --check Check RBAC policy for errors
-S, --status Check status of RBAC system
-F, --fulllearn Enable full system learning
-P [rolename], --passwd
Create password for RBAC administration
or a special role
-R, --reload Reload the RBAC system while in admin mode
                        Reloading will happen atomically, preserving
                        special roles and inherited subjects(主题)
-r, --oldreload Reload the RBAC system using the old method that
                        drops existing special roles and inherited subjects(主题)
-L <filename>, --learn
Specify the pathname for learning logs
-O <filename|directory>, --output
Specify where to place policies(策略) generated from
                        learning mode.  Should be a directory only if
                        "split-roles" is specified in learn_config and
                        full-learning(全面学习) is used.
-M <filename|uid>, --modsegv(恶意、恐怖含义)
Remove a ban on a specific file or UID
-a <rolename> , --auth
Authenticates to a special role that requires auth(认证模块)
-u, --unauth    Remove yourself from your current special role
-n <rolename> , --noauth
Transitions to a special role that doesn't
                        require authentication(认证)
-p <rolename> , --pamauth
Authenticates to a special role through PAM
-V, --verbose   Display verbose (详细)policy statistics when enabling system
-h, --help Display this help
-v, --version Display version and GPLv2(开源许可) license information
学习模式

    学习模式与其他安全系统中的任何内容都不同。 Grsecurity的学习模式可以在每个主题或每个角色的基础上使用,也可以在系统范围内使用。在单个进程或角色上使用学习模式时,系统的其余部分将保持受策略定义的保护。学习模式可以学习RBAC系统支持的所有内容:文件,功能,资源,每个角色使用的IP地址以及套接字使用情况。学习系统可以智能地减少文件系统和网络访问,从而减少策略规模,提高可读性,并减少以后需要的手动调整量。此外,学习系统强制实施可配置的安全基础。 / etc / grsec / learn_config文件使管理员能够指定学习系统应被视为受保护资源的文件/目录。学习系统将确保无论是否执行任何规则缩减,只有通过正常使用访问这些受保护资源的进程才会通过生成的策略授予访问权限。此外,它将为访问受保护资源的进程创建新主题,创建授予这些进程额外保护的权限边界。

完整的系统学习
使用以root身份运行gradm:
#gradm -F -L /etc/grsec/learning.logs
将启用基于角色的访问控制(RBAC)系统并启动完整的系统学习。 gradm监视并记录系统所做的事情。 用该日志为系统构建最小权限策略。运行和使用执行的应用程序次数。 因为学习模式使用基于阈值的系统来确定何时应该对文件进行访问,或者是否应该将其提供给目录。 如果在单个目录中进行了四次或更多次类似访问(例如写入/ tmp中的多个文件),则授予该目录而不是单个文件的访问权限。 这样可以减少拥有规则数量,并确保编译完最终ACL后应用程序可以正常工作。
启用完整系统学习时,以管理员角色执行任何管理任务。
在启用完整系统学习的同时执行管理任务,请使用以下命
#gradm -a admin
完成执行管理任务后,请记住退出shell或使用gradm -u从admin角色取消认证。
让系统正常使用它在现实中得到的,用gradm -D禁用RBAC系统。 禁用RBAC是必要的步骤,因为它强制学习守护进程将其缓冲区刷新到磁盘。 使用在RBAC被禁用之前获得的学习日志将产生不完整的结果。 禁用RBAC后,执行:
#gradm -F -L /etc/grsec/learning.logs -O / etc / grsec / policy

这将会给新学习的ACL放在规则集的末尾。 您可以通过启用grsecurity(运行gradm -E)并确保所有应用程序按照预期的方式运行来测试策略。

进程和基于角色的学习
学习模式非常简单。 要做的就是将“l”(小写字母L,而不是数字1)添加到过程的主题模式,启用学习。 了解尚未建立策略,并给定二进制文件的所有必要访问权限,请添加以下主题:
subject /path/of/binary ol
    / h
    -CAP_ALL
    connect disabled
    bind disabled
要了解给定角色,请在角色模式中添加“l”。 对于这两者,要启用学习,请通过执行以下命令启用系统:
#gradm -L /etc/grsec/learning.logs -E
完成后,使用gradm -D禁用ACL系统(或者,使用gradm -a进入管理模式),并使用:
#gradm -L /etc/grsec/learning.logs -O / etc / grsec / policy
这会将新学习的ACL放在规则集的末尾。 只需删除旧ACL,即可开始使用。
/ etc / grsec / learn_config 
此配置文件通过调整特定文件和目录的学习算法来帮助学习过程。它接受以下形式的行:
<command> <pathname>
其中<command>可以是inherit-learn,no-learn,inherit-no-learn,high-reduce-path,dont-reduce-path,protected-path,high-protected-path和always-reduce-path。分别是:继承 - 学习,不学习和继承 - 不学习等,会影响完整的系统学习,而其他学习则适用于所有学习模式。至于含义去查看文档。
inherit-learn将路径名中包含的进程执行的每个二进制文件的所有学习访问权限,抛出给路径名指定的主题中,以便更改指定路径的学过程。这对于完整系统学习的情况下的cron非常有用,因此最终以特权方式执行mv或rm的脚本,而不会导致根策略的所有情况,都将特权授予mv或rm。
no-learn允许路径内的进程执行正常系统使用允许的任何操作而不受限制。如果进程生成大量学习日志,则最好在该进程上使用此命令并手动配置其策略。
inherit-no-learn结合了上述两种情况,使得指定路径中的进程能够无限制地执行任何正常的系统操作,这些进程执行的任何二进制文件也是如此。
high-reduce-path修改了学习过程的启发式,有利于减少对此路径的访问。
dont-reduce-path修改学习过程的启发式,以便永远不会减少对此路径的访问。
always-reduce-path修改学习过程的启发式,以便指定的路径始终将其中的所有文件和目录减少到指定的路径。
protected-path指定系统上被视为重要资源的路径。修改这些路径之一的任何过程在学习过程中都有自己的主题,从而促进了安全策略。
read-protected-path指定系统上包含敏感信息的路径。读取这些路径之一的任何过程在学习过程中都有自己的主题,从而促进了安全策略。
high-protected-path指定应该从所有进程中隐藏的路径,但是直接访问它的路径。建议对此命令使用高度敏感的文件。
请注意,此配置文件中的路径名不支持正则表达式。
posted @ 2019-05-20 00:18  mashaoli  阅读(502)  评论(0编辑  收藏  举报