Grsecurity/附加實用程式
本頁將介紹一些附加實用程式。使用啟用了 grsecurity 的系統不需要這些程式,但它們非常有用,因此建議使用。
Paxctl是一個使用者空間實用程式,用於控制可執行檔案的 PaX 標誌(有關這些標誌的列表,請參見 附錄/PaX 標誌)。
從 PaX 網站 http://pax.grsecurity.net/ 下載最新版本。在本例中,我們下載了 paxctl-0.7.tar.bz2。Paxctl軟體包沒有簽名。進入下載軟體包的目錄並執行以下命令。
$ 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
| 沒有相應的程式頭。我們需要轉換頭並再次查詢標誌。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