引用 ekenchan:
能不能说一下编译过程?在grsecurity的官网上下载不能grsec的补丁
抱歉,一开始以为没人会关心这一部分于是就没有说明。
关于不能grsec官网上不能下载稳定版补丁的问题,由于长期以来发生了令人恶心的事情,因此如今grsec团队放出的稳定版补丁都仅向赞助商开放下载,详情见:
XXXXXXXXXXXXXXXXXXXXXt/XXXXXXXXXXXp (全英文)
在下所得到的补丁是上个月的时候放出的针对Linux-4.6.4版内核的测试版补丁,由于RAP等等强大的防护性能另在下亢奋异常,因此一头扎进测试版补丁里不回头了。根据朋友的描述,grsec能保5年平安,也劝告我不必紧跟Linux内核的最新进展。而许多Linux新版本提供的功能和驱动我又必须使用,因此目前暂停留在4.6.4这个版本上。
至于编译的过程,实际上没什么特殊的,和公开的方法几乎没有区别,我只是在打grsec补丁之前先把CVE-2016-5696的两个主流补丁给打上(令我感到奇怪的是,ubuntu 16.04.1的新内核针对CVE-2016-5696的补丁只打了一个,无法理解)然后再打grsec的补丁。接着使用menuconfig根据自己的需要配置内核配置文件。最后编译打包。具体流程如下:
1.全新安装Linux Mint 18 Mate发行版(由于日常需要,在下直接做EFI引导并且LVM over luks磁盘加密);
2.编译前准备工作:
<code class="lang-">//首先是系统更新:
sudo apt-get update && sudo apt-get upgrade
//接着是安装编译所需的必要的东西:
sudo apt-get install build-essential libncurses5-dev gcc-4.8-plugin-dev libssl-dev</code>
3.下载所需的东西(包括内核本身及其签名、对应的grsec补丁文件及其签名、在内核主流寻找一些必要的补丁,比如在下为了找CVE-2016-5696的补丁深挖了好些天!)
4.编译:
<code class="lang-">//验证内核源代码的签名:
gpg2 --verify linux-4.6.4.tar.sign linux-4.6.4.tar
//验证通过后解压内核源代码tar包
tar xvf linux-4.6.4.tar
//进入内核源代码包文件夹:
cd linux-4.6.4
//打CVE-2016-5696补丁:
patch -p1 < ../CVE-2016-5696-patch
//打grsec补丁:
patch -p1 < ../grsec-4.6.4.patch
//配置内核并生成配置文件:
make menuconfig
//将内核配置文件保存为.config之后,开始编译,多线程编译,并且输出为deb包。为了避免眼花,关键的警告内容用日志工具记录下来:
make -j4 deb-pkg > log 2>../compile-log.txt
</code>
5.后续工作:
编译内核是一个漫长的过程。中间需要打发时间而且安全起见在做编译的准备的时候开始就一直断网了,因此能做的恐怕只有拿出手机连上WiFi看视频教程、电影、电视剧、动画或者逛逛科创论坛、新闻网站等等等等。
5.1. 安装编译好的内核:
苦等很久很久很久,待编译器工作结束之后,打开日志看看有没有严重警告或者错误提示,没有的话将../路径下的deb文件打包并且签名存一边之后在自己的机器上安装内核开始体验:
<code class="lang-">sudo dpkg -i *.deb</code>
5.2. 安装pax相关的工具:
请自行前往
XXXXXXXXXXXXXXXXXXXXXX/~blueness/elfix/ 下载安装最新版本的elfix并编译安装。
由于特殊原因,在我自己的机器上需要自行配制grub2引导,在此略过不讲
5.3.尝试重启机器引导到新安装的内核并开始进行适配试用工作:
使用paxctl-ng配置一些奇怪的软件,如Google Chrome浏览器、Firefox浏览器、JRE等,的PaX flags,而后再安装这些软件。当然也可以先安装后配置PaX flags。一般Google Chrome浏览器等只需要用paxctl-ng设置m flag就好。接着尝试在命令行界面运行这些软件,假如可以成功运行的话证明您和我一样没有遇到奇怪的问题。
5.4.最后安装沙箱工具,好把软件装在套子里:
<code class="lang-">sudo apt-get install firejail</code>
5.4.1.尝试在firejail里运行Firefox和Google chrome等软件:
<code class="lang-">firejail firefox
//firefox正常后退出再试试下一个软件:
firejail chrome</code>
上面的内容说得有点多了,firejail是一个最近频繁上新闻的沙箱,别人的评价是做得不错。在grsec加固的内核里再把每一个应用软件套上firejail的话,一般的奇怪的东西都没那么容易打得进来了。
需要注意的是,不要随便给不明来历、奇怪的软件设置Pax flag,具体情况需要具体分析。假如您遇到了不能在grsec加固的内核里运行的软件,可以使用dmesg并过滤关键字grsec查看发生了什么。
谢谢您的观看,本帖子所发出的内核可放心安装使用,在下期待您的反馈。