跳转到内容

Grsecurity/附加实用程序

来自维基教科书,开放世界中的开放书籍
Grsecurity
管理实用程序 附加实用程序 运行时配置


本页将介绍一些附加实用程序。使用启用了 grsecurity 的系统不需要这些程序,但它们非常有用,因此建议使用。

控制 PaX 标志 (paxctl)

[编辑 | 编辑源代码]

Paxctl是一个用户空间实用程序,用于控制可执行文件的 PaX 标志(有关这些标志的列表,请参见 附录/PaX 标志)。

从 PaX 网站 http://pax.grsecurity.net/ 下载最新版本。在本例中,我们下载了 paxctl-0.7.tar.bz2Paxctl软件包没有签名。进入下载软件包的目录并运行以下命令。

$ tar xjf paxctl-0.7.tar.bz2
$ cd paxctl-0.7
$ make
$ su
# make install

安装过程执行以下操作

  • 安装paxctl程序到 /sbin
  • 安装paxctl的帮助页面到 /usr/share/man/man1

如果需要更改这两个位置中的任何一个,请修改 Makefile

要显示所有可用的命令行开关,请运行paxctl --help。阅读帮助页面以获取更多详细信息。

# paxctl --help
PaX control v0.7
Copyright 2004,2005,2006,2007,2009,2010,2011,2012 PaX Team <[email protected]>

usage: paxctl <options> <files>

options:
        -p: disable PAGEEXEC            -P: enable PAGEEXEC
        -e: disable EMUTRAMP            -E: enable EMUTRAMP
        -m: disable MPROTECT            -M: enable MPROTECT
        -r: disable RANDMMAP            -R: enable RANDMMAP
        -x: disable RANDEXEC            -X: enable RANDEXEC
        -s: disable SEGMEXEC            -S: enable SEGMEXEC

        -v: view flags                  -z: restore default flags
        -q: suppress error messages     -Q: report flags in short format
        -c: convert PT_GNU_STACK into PT_PAX_FLAGS (see manpage!)
        -C: create PT_PAX_FLAGS (see manpage!)

让我们查询已为/usr/bin/vi:

# paxctl -v /usr/bin/vi
PaX control v0.7
Copyright 2004,2005,2006,2007,2009,2010,2011,2012 PaX Team <[email protected]>

file /usr/bin/vi does not have a PT_PAX_FLAGS program header, try conversion

启用了哪些 PaX 标志(如果有)。paxctl如您所见,无法显示标志,因为vi

Warning 没有相应的程序头。我们需要转换头并再次查询标志。paxctl请注意,
# paxctl -c /usr/bin/vi
file /usr/bin/vi had a PT_GNU_STACK program header, converted

# paxctl -v /usr/bin/vi
PaX control v0.7
Copyright 2004,2005,2006,2007,2009,2010,2011,2012 PaX Team <[email protected]>

- PaX flags: -------x-e-- [/usr/bin/vi]
        RANDEXEC is disabled
        EMUTRAMP is disabled

不会创建它修改的文件的备份副本。建议您备份要修改的二进制文件。无法显示标志,因为.

有了适当的程序头,我们可以查询和修改

显示程序功能 (pspax)

[编辑 | 编辑源代码]pspax程序显示您有权限的所有程序的运行时功能。它是pax-utils软件包的一部分。Pax-utilspaxctl可以在 http://dev.gentoo.org/~vapier/dist/ 找到。它包含许多对 PaX 有用的工具,但不像程序显示您有权限的所有程序的运行时功能。它是那样重要。该

软件包由 Hardened Gentoo 项目 维护。

  • pax-utils 软件包提供的程序
  • - 显示您有权限的所有程序的运行时功能。scanelf
  • - 打印出关于二进制文件 ELF 结构的特定信息。dumpelf

- 将 ELF 文件转换为可读的 C 代码,该代码定义一个与原始 ELF 文件具有相同映像的结构。

安装

有关更多信息,请参见 Gentoo Linux 对 pax-utils 的指南

[编辑 | 编辑源代码]程序显示您有权限的所有程序的运行时功能。它是Gentoo Linux 和 Debian GNU/Linux 用户(以及可能的其他用户)可以通过与在系统中安装任何其他应用程序相同的方式安装

软件包。以下是有关如何从源代码编译和安装它的说明。

$ tar xJf pax-utils-0.4.tar.xz
$ cd pax-utils-0.4
$ make
$ su
# make install

安装过程执行以下操作

  • 安装, - 显示您有权限的所有程序的运行时功能。, - 打印出关于二进制文件 ELF 结构的特定信息。http://dev.gentoo.org/~vapier/dist/ 下载最新版本。在本例中,我们下载了 pax-utils-0.4.tar.xz,这是撰写本文时最新的稳定版本。进入下载软件包的目录并运行以下命令。scanmacho
  • 程序到 /usr/bin
  • 安装 README、BUGS 和 TODO 文件到 /usr/share/doc/pax-utils/, - 显示您有权限的所有程序的运行时功能。http://dev.gentoo.org/~vapier/dist/ 下载最新版本。在本例中,我们下载了 pax-utils-0.4.tar.xz,这是撰写本文时最新的稳定版本。进入下载软件包的目录并运行以下命令。- 打印出关于二进制文件 ELF 结构的特定信息。安装

的帮助页面到 /usr/share/man/man1

用法

如果需要更改任何这些位置,请修改 Makefile

要显示所有可用的命令行开关,请运行[编辑 | 编辑源代码]。阅读帮助页面以获取更多详细信息。

$ pspax --help
* List ELF/PaX information about running processes

Usage: pspax [options]

Options:
  -a, --all         * Show all processes
  -e, --header      * Print GNU_STACK/PT_LOAD markings
  -i, --ipaddr      * Print ipaddr info if supported
  -p, --pid         * Process ID/pid #
  -u, --user        * Process user/uid #
  -g, --group       * Process group/gid #
  -n, --nx          * Only display w^x processes
  -w, --wx          * Only display w|x processes
  -W, --wide        * Wide output display of cmdline
  -v, --verbose     * Be verbose about executable mappings
  -C, --nocolor     * Don't emit color in output
  -B, --nobanner    * Don't display the header
  -h, --help        * Print this help and exit
  -V, --version     * Print version and exit

pspax --helpPspax

将单个程序的 PaX 标志显示为一串字符(例如“peMRS”)。小写字符表示标志已禁用,大写字符表示标志已启用。下表显示了这些字符及其与 grsecurity 使用的 PaX 标志的对应关系。“详细信息”列包含指向每个标志详细说明的链接。 pspax 标志 grsecurity 的 PaX 标志
详细信息 E PAX_EMUTRAMP
emutramp.txt M PAX_MPROTECT
mprotect.txt P PAX_PAGEEXEC
pageexec.txt R PAX_RANDMMAP
randmmap.txt S PAX_SEGMEXEC

示例

segmexec.txt

[编辑 | 编辑源代码]该命令pspax -p <进程 ID>显示有关特定进程的信息,该进程由其 PID 标识。您不太可能知道或记得进程的 PID,因此更容易按名称引用它们。以下示例使用pidof:

# pidof inetd | xargs pspax -p
USER     PID    PAX    MAPS ETYPE      NAME             CAPS_ATTR
root     1741   peMRS  w^x  ET_EXEC    inetd            =ep cap_setpcap-ep

命令查找进程的 PID,然后将其传递给

管理二进制文件的可执行堆栈 (execstack)

[编辑 | 编辑源代码]Execstack是一个工具,用于设置、清除或查询 ELF 二进制文件和共享库的可执行堆栈标志。它是prelink

安装

程序的一部分,但您的 Linux 发行版可能将其作为单独的软件包提供。

[编辑 | 编辑源代码]是一个工具,用于设置、清除或查询 ELF 二进制文件和共享库的可执行堆栈标志。它是您很可能会使用发行版的软件包管理系统找到和/或execstack是一个工具,用于设置、清除或查询 ELF 二进制文件和共享库的可执行堆栈标志。它是您很可能会使用发行版的软件包管理系统找到和/或软件包。至少 Gentoo、Debian、Red Hat 及其衍生发行版提供了一个

用法

软件包。

要显示所有可用的命令行开关,请运行[编辑 | 编辑源代码]execstack --help

# execstack --help
Usage: execstack [OPTION...]
execstack -- program to query or set executable stack flag

  -c, --clear-execstack      Clear executable stack flag bit
  -q, --query                Query executable stack flag bit
  -s, --set-execstack        Set executable stack flag bit
  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Report bugs to <[email protected]>.

示例

。阅读帮助页面以获取更多详细信息。帮助页面的在线版本可在 http://linux.die.net/man/8/execstack 找到。

[编辑 | 编辑源代码]

# execstack -q /usr/lib/libcrypto.so.0.9.8
- /usr/lib/libcrypto.so.0.9.8

要检查库是否启用了可执行堆栈,请运行

连字符表示 libcrypto 不需要可执行堆栈。如果需要,该行将以大写“X”而不是连字符开头。

# find /lib /usr/lib -name '*.so.*.*.*' | xargs execstack
下一页: 运行时配置 | 上一页: 管理实用程序
主页: Grsecurity
华夏公益教科书