Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
linux:grsec [2006/07/26 14:23] a |
linux:grsec [2009/05/25 00:35] (current) |
||
---|---|---|---|
Line 41: | Line 41: | ||
==== kernel 2.4.x tips ==== | ==== kernel 2.4.x tips ==== | ||
+ | |||
+ | |||
==== kernel 2.6.x tips ==== | ==== kernel 2.6.x tips ==== | ||
+ | |||
+ | |||
+ | === What to include in 2.6 with GRSecurity (Safeway) === | ||
+ | **taken from: [[http:// | ||
+ | ** | ||
+ | |||
+ | There are some problems with some applications with parts of the patch. For | ||
+ | example, turning on the non-executeable stack will break anything that uses | ||
+ | an executeable stack. ie: X, java, or wine, now you can use chpax and give | ||
+ | each of these a non executable stack. There are also some problems with the | ||
+ | way grsecurity gets a little to restrictive with things like restericting | ||
+ | filesystems ect. All of these can be overcome, however, you need to do some | ||
+ | magic to get some of these things to work, and frankly, some of it really | ||
+ | isnt worth it. | ||
+ | |||
+ | There are several options inside the grsecurity patch that you can choose. | ||
+ | |||
+ | What you can safely turn on in GRsecurity without breaking anything is: | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | * **'' | ||
+ | |||
+ | * **Filesystem Protections** | ||
+ | * // | ||
+ | |||
+ | * **'' | ||
+ | * // | ||
+ | |||
+ | * **'' | ||
+ | * // | ||
+ | |||
+ | * **'' | ||
+ | * // | ||
+ | |||
+ | * **'' | ||
+ | // | ||
+ | |||
+ | Compile everything staticly and you shold be fine. | ||
+ | |||
+ | I have tested this on production servers, and desktop boxes in mass and its | ||
+ | come out fine for x86 and sparc. I havent tried it on ppc but for the most | ||
+ | part it is safe, and it is also safe for production envoirnments. | ||
+ | |||
+ | === Using Pax and Grsecurity features === | ||
+ | |||
+ | First get a grsecurity patch kernel ready go in your **'' | ||
+ | |||
+ | < | ||
+ | Enable various PaX features | ||
+ | |||
+ | [*] Support soft mode | ||
+ | [*] Use legacy ELF header marking | ||
+ | [*] Use ELF program header marking | ||
+ | MAC system integration (direct) | ||
+ | |||
+ | Non-executable pages | ||
+ | |||
+ | [*] Enforce non-executable pages | ||
+ | [*] | ||
+ | [*] | ||
+ | [*] Emulate trampolines | ||
+ | [*] Restrict mprotect() | ||
+ | [ ] | ||
+ | [*] Enforce non-executable kernel pages | ||
+ | |||
+ | [*] Address Space Layout Randomization | ||
+ | [*] | ||
+ | [*] | ||
+ | [*] | ||
+ | </ | ||
+ | And for Miscellaneous hardening features I advise not to select any. | ||
+ | |||
+ | <note important> | ||
===== Configuration ===== | ===== Configuration ===== | ||
Line 86: | Line 163: | ||
kernel.pax.softmode = 1 | kernel.pax.softmode = 1 | ||
kernel.grsecurity.grsec_lock = 0 | kernel.grsecurity.grsec_lock = 0 | ||
+ | |||
==== PaX ==== | ==== PaX ==== | ||
Line 129: | Line 207: | ||
Executable shared library data : Vulnerable | Executable shared library data : Vulnerable | ||
Writable text segments | Writable text segments | ||
+ | |||
+ | ==== Hardening Webservers ==== | ||
+ | |||
+ | For example | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | You can even use wildcards like'' | ||
+ | |||
+ | Also make sure you do the** '' | ||
==== gdadm ==== | ==== gdadm ==== | ||
Line 159: | Line 249: | ||
gradm -D | gradm -D | ||
+ | |||
==== grsec iptables patch ==== | ==== grsec iptables patch ==== | ||
FIXME TODO | FIXME TODO | ||
+ | |||
+ | ===== Tips / troubleshooting ===== | ||
+ | |||
+ | ==== complaints of grsecurity-kernel about RLIMIT_CORE being 0 ==== | ||
+ | |||
+ | If, while running program x, a segmentation fault occurs in program x and syslog outputs the following string: | ||
+ | Apr 17 11:55:06 yyy kernel: grsec: attempted resource overstep by requesting 4096 for RLIMIT_CORE against limit 0 by (x:z) UID(y) EUID(y), parent (y:y) UID(y) EUID(y) | ||
+ | then kernel tried to write a core-file for the program x to disk, BUT the max size of the core file is set to 0. | ||
+ | Growing the maximum size of a core file: | ||
+ | |||
+ | # ulimit -S -c 8192 | ||
+ | |||
+ |