加强Linux内核的安全性(Debian)
安全是基于三个特点:预防,保护和检测。 Grsecurity是一个用于Linux内核的修补程序,可以让您增加这些要点。
这个howto是在Debian Lenny系统上执行的。 因此一些工具是Debian的具体的。 但是,可以使用其他发行版专用工具,甚至使用通用工具(make)来执行任务。
一切都将使用root权限完成。 但是,您可以通过sudo和fake-kpkg工具,通过有限的帐户执行它们。
初步说明
要编译内核,您需要安装一些特定的软件包:
rom1:/root# aptitude install patch bin86 kernel-package build-essential
如果您希望以图形控制台模式配置内核(make menuconfig),则必须再安装一个包:
rom1:/root# aptitude install libncurses5-dev
检查是否安装了iniramfs-tools(用于生成init ramdisk)(应该是)
rom1:/usr/src# dpkg -l initramfs*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name Version Description
+++-==============-==============-============================================
ii initramfs-tool 0.85i tools for generating an initramfs
rom1:/usr/src#
转到源文件夹:
rom1:/root# cd /usr/src
下载安全补丁和
2.6.24.5
Linux香草核:
rom1:/usr/src# wget grsecurity.net/grsecurity-2.1.11-2.6.24.5-200804211829.patch.gz
rom1:/usr/src# wget eu.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.5.tar.gz
注意:您可能需要配置wget,以防您使用HTTP代理(可能会使用身份验证)。 你需要编辑/root/.wgetrc
,看起来像这样:
http_proxy=192.168.0.1 proxy-user=foo # Put this line if you need to authenticate against your proxy proxy-passwd=bar # Put this line if you need to authenticate against your proxy
解压缩内核的存档:
rom1:/usr/src# tar xzvf linux-2.6.24.5.tar.gz
在新的内核文件夹上创建一个符号链接以简化以下任务:
rom1:/usr/src# ln -s linux-2.6.24.5 linux
现在,环境已经准备好了。 我们去加强
补丁香草核
将grsecurity修补程序移动到新目录:
rom1:/usr/src# mv grsecurity-2.1.11-2.6.24.5-200804211829.patch.gz linux/grsecurity-2.1.11-2.6.24.5-200804211829.patch.gz
解压缩并补丁内核的源码:
rom1:/usr/src# cd linux
rom1:/usr/src/linux# gunzip < grsecurity-2.1.11-2.6.24.5-200804211829.patch.gz | patch -p1
现在补丁被应用并且内核的源被修改。 让我们配置内核来启用Grsecurity。
3.配置硬核
在这个例子中,我们将使用控制台菜单(make menuconfig)配置内核。 这就是为什么我们安装了libncurses5-dev
软件包。 但是,您可以在纯控制台模式(make config)或GUI模式下配置(make xconfig)。
安全级别具有预定义的级别:低,中,高。 它也可以在自定义级别进行配置,您可以选择通过选项启用或不启用选项。 有关每个选项的更多信息,请参阅http://www.grsecurity.net/confighelp.php/ 。 在这个HowTo中,我们将在高级别配置Grsecurity。
rom1:/usr/src/linux# make menuconfig
现在,我们将在菜单中启用Grsecurity。
转到安全选项
> Grsecurity
>勾选Grsecurity
。 然后,您可以进入安全级别
并勾选“ 高”
。
您可以通过配置Grsecurity来优化内核。 例如:在您的服务器上,您可能不需要支持红外线,蓝牙,也可能不包括wifi,ipx,X25,令牌环,ATM,火线,PC卡,操纵杆,鼠标,声音....
4.编译硬核
现在是编译硬核的时候了。 首先,以防万一,清理:
rom1:/usr/src/linux# make-kpkg clean
启动编译本身(这可能需要一段时间,取决于您的CPU电源和RAM可用性!!!):
rom1:/usr/src/linux# make-kpkg --initrd --append-to-version "grsec1.0" kernel_image
如果您没有使用Debian发行版,则可以使用以下方式编译经典方式:
make mrproper
make menuconfig
make clean
make
make modules_install
mkinitramfs
make install
5.安装加固的内核
现在您的新内核已经被编译,并且.deb包文件已经在/ usr / src
文件夹中生成。 你需要安装你的内核任何.deb包:
rom1:/usr/src# dpkg -i linux-image-2.6.24.5-grsec_grsec1.0_i386.deb
在安装过程中,将生成一个initrd映像。 这可能需要一段时间,具体取决于您的CPU电源和RAM可用性! 您还可以检查新的内核映像是否是内核!
rom1:/usr/src# file vmlinuz-2.6.24.5-grsec
vmlinuz-2.6.24.5-grsec: Linux kernel x86 boot executable RO-rootFS, root_dev 0x801, swap_dev 0x1, Normal VGA
现在是用新的硬核重新启动系统的时候了
rom1:/usr/src/linux# shutdown -r now
现在您的系统已重新启动,您可以检查您的新内核是否正在运行:
rom1:~# uname -r
2.6.24.5-grsec
6.测试硬核
除了uname -r
说你的内核是一个grsec之外,你怎么知道你正在运行一个硬核? 这是我们将使用paxtest
,它将模拟对内核的攻击,并显示您是否容易受到攻击。 下载paxtest:
rom1:/tmp# wget http://www.grsecurity.net/~paxguy1/paxtest-0.9.7-pre5.tar.gz
提取它:
rom1:/tmp# tar xzvf paxtest-0.9.7-pre5.tar.gz
rom1:/tmp# cd paxtest-0.9.7-pre5
编译(键入make
具有目标列表):
rom1:/tmp/paxtest-0.9.7-pre5# make generic
运行它(有两种不同的模式:小孩和黑帽):
rom1:/tmp/paxtest-0.9.7-pre5# ./paxtest kiddie
注意:除非您使用高级安全级别或自定义级别,否则将有一个易受攻击的内核。 事实上,您只能在中型模式下获得用户界面的ASLR保护。
7.链接
- 安全网站: http : //www.grsecurity.net
- Linux内核站点: http : //www.kernel.org
- 关于ASLR的维基百科文章: http : //en.wikipedia.org/wiki/Address_space_layout_randomization