跳轉到內容

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 <pageexec@freemail.hu>

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 <pageexec@freemail.hu>

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 <pageexec@freemail.hu>

- 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 <jakub@redhat.com>.

示例

。閱讀幫助頁面以獲取更多詳細資訊。幫助頁面的線上版本可在 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
華夏公益教科書