IPSec打造FreeBSD下信息安全传输 |
作者:冰盾防火墙 网站:www.bingdun.com 日期:2015-01-06 |
|
IPSec打造FreeBSD下信息安全传输 作者:dahubaobao 主页:http://www.ringz.org 邮件:[email protected] QQ:382690 工具及图片都在压缩包中,解压密码:www.ringz.org http://dahubaobao.go.nease.net/IPSec.rar 欢迎进入环形区,一群技术狂热者的社区,www.ringz.org欢迎你的加入! 注:转载请著名出处(包括这里的声明),谢谢! ===================================================================== IPSec在FreeBSD下应用实例 概述 在当今的网络安全中,由于很多服务都是明文通讯,安全性非常底,所以,采用通讯加密是非常有必要的,否则很可能会被嗅探工具简听。IPSec作为加密通讯中的佼佼者,我们没理由不利用。关于IPSec,我想大家或多或少的都有一些了解,黑客防线也刊登过多篇IPSec的相关文章。不过,这些文章都是基于Windows下的,并且都是在讲如何过滤数据包,其实,过滤数据包的任务完全可以交给防火墙来处理,而IPSec真正的强大地方是它的通讯加密。鉴于此,我觉得有必要说说如果使用IPSec进行通讯加密。所以,我通过一段时间的学习,写下了此文,并且以FreeBSD为例,讲解如何使用IPSec与Windows/Unix进行加密通讯,希望能对安全爱好者以及BSD爱好者一些帮助。
先介绍一下我测试的环境: 本地:FreeBSD 4.9 STABLE IP:192.168.0.20 目标:Wdinwos 2000 Advanced Server IP:192.168.0.1 目的:使用IPSec加密所有IP报文,除广播、多播协议外。 注意:这里不介绍如何使用IPSec过滤数据包,因为这些足可以交给IPFW来完成。
一,什么是IPSec IPSec,即网际安全协议,它通过对IP报文进行加密,并将其封装在IP头中通过企业专用网或者公共网络发送。IPSec在网络层上保护TCP/IP 协议栈中所有 IP 和更高层的协议(例如 TCP、UDP、ICMP),应用程序可以享用经过IPSec处理的网络层的安全服务,而不必关心自身的安全机制。IPSec可在路由器、防火墙、主机上配置,实现端到端的安全通讯。IPSec工作在网络层,它可以使用隧道模式封装数据包或是直接加密整个数据包。之后就可以将加密后的数据包封装在新的IP包头中,最后传输到目的地。在目标收到数据包后,去除IP头部分,然后对其进行解密(这时已经完成了客户端到服务器密钥交换、认证工作),最后得到原始数据包。如图1就是IPSec的工作流程图。关于IPSec就简单说到这里,如果想深入了解,Windows系统上的IPSec帮助就是很好的资料。
二,更新FreeBSD FreeBSD默认并不支持IPSec,这是因为默认内核GENERIC中并没有相关选项,所以需要自己添加,并重新编译内核。 #cd /usr/src/sys/i386/conf #cp GENERIC DAHUKERNEL #vi DAHUKERNEL //添加IPSec相关选项,可参见图2 options IPSEC options IPSEC_ESP options IPSEC_DEBUG //保存退出,下面更新系统源代码以及Ports #mkdir /root/ports_src_update #cd /usr/share/examples/cvsup #cp ports-supfile stable-supfile /root/ports_src_update/ #cd /;cd /root/ports_src_update #vi ports-supfile //修改“default host=”为你想使用的服务器,比如我是:cvsup.freebsdchina.org #vi stable-supfile //同样是修改“default host=” 为你想使用的服务器 #cvsup –g –L 2 ports-supfile //更新Ports,大概10-20分钟之间,视网络速度而定 #cvsup –g –L 2 stable-supfile //更新系统源代码,同步到Stable。大概10-20分钟之间,视网络速度而定。在源代码更新完毕之后,就需要用新代码替换系统原有代码以及合并/etc下的配置文件,并且用新内核替换掉旧内核。当然,这步不是必须的,如果你不久之前更新过源代码(或者已经同步到Stable),就可以略过。但,你还是必须更新Ports和重新编译内核。 #cd /;cd /usr/src #make buildworld //同步系统,这需要很长的时间,最少也要1个小时,也可以运行多 个进程加快该过程:make –j4 buildworld #make buildkernel GENERIC=DAHUKERNEL #make installkernel GENERIC=DAHUKERNEL //编译内核,并用新内核(DAHUKERNEL)替换掉旧内核(GENERIC)。编译完成之后重新启动即可。提示:如果你以前编译过内核,应该先删除/usr/obj下的内核组件文件,这样即可以加快make的速度,又可以避免系统在遇到不能覆盖的文件时发生冲突。/usr/obj目录下的文件比较特殊,它使用了schg(system immutable)标志,这是一个安全措施,为防止意外操作提供的一个保护方法,即使是root用户,也不能删除该文件。如果需要绕过这个限制,可以使用如下方法: #cd /usr/obj #chflags –R noschg * #rm –rf * 如果这个时候系统的安全级别为1或者更高(根据rc.conf文件中的定义),那么将无法使用上边的命令删除schg标志。需要重新启动系统到单用户模式下方能完成该操作。
#cp –Rp /etc /etc.old #cd /etc #mergemaster –cv //同步配置文件,-v表示限制详细过程,-c表示将配置文件进行比较(diff)而不是合并,如果打算合并配置文件,可以使用-i参数。最后使用uname –a查看结果。
现在,你的系统已经是最新的了,如果你是新安装的系统,请务必按照上边的方法更新系统,这样即可以补上一些安全漏洞,又可以为系统带来更好的性能,和乐而不为呢?!
三,应用IPSec 1,FreeBSD 经过上边的设置,系统已经是最新的,但现在还不能使用IPSec,还需要安装一个为IKE (ISAKMP/Oakley) Key Management Daemon的软件,好在FreeBSD已经将其收录在Ports中,这样就不用在下载了。 #cd /usr/ports/security/racoon #make install clean 完成之后,我们需要对其进行相应的配置。它被安装到了/usr/local/etc/racoon/目录中,我们需要对psk.txt和racoon.conf进行编辑,以符合我们的需要。提示:在FreeBSD的世界里,凡是安装的软件(不管是通过Package还是Ports),都将安装到/usr/local目录下,配置文件放到/usr/local/etc下,库文件放到/usr/local/lib、/usr/local/libexec、/usr/local/libdata目录中,二进制文件放到/usr/local/bin、/usr/local/sbin目录中。这样做的好处是显而易见的,因为可以在不修改系统的情况下,将/usr/local目录下的子目录和所有文件直接复制到另一个新系统,而安装过的软件大部分都可以运行。 #cd ../../../local/etc/racoon #cp psk.txt.dist psk.txt #chmod 0600 psk.txt //psk.txt权限必须修改为0600,并且为root所有,否则racoon无法运行 #vi psk.txt //见图3,删除所有内容,只添加: 目标IP 预共享密钥 192.168.0.1 dahubaobao #cp racoon.conf.dist racoon.conf #chmod 0600 racoon.conf //两次chmod后,权限和文件所属应如图4所示。 #vi racoon..conf //编辑配置文件,注释掉一些不需要的内容。这里需要分开来说,一个是使用CA认证,一个是不使用。如果不使用CA认证,我们就需要把关于CA认证的部分注释掉;如果需要使用,就使用OpenSSL创建CA证书,并在配置文件中填写相关信息(后面会说到)。具体如下。 path certificate "/usr/local/etc/cert" ; //如果需要CA认证,这里不做任何改动;如果不需要,注释掉就可以了。这里就是放CA证书的目录。默认没有注释。
log debug; //去掉注释,如果你需要日志的话。
isakmp 192.168.0.20 [500]; //去掉注释,添加本地IP。
#my_identifier address; #my_identifier user_fqdn "[email protected]"; #peers_identifier user_fqdn "[email protected]"; #certificate_type x509 "mycert" "mypriv"; //这里是关于CA认证的地方,如果使用了CA认证,就需要根据使用OpenSSL创建CA证书时所填写的信息来修改这里;如果不使用,注释掉即可。
#my_identifier user_fqdn "[email protected]"; #peers_identifier user_fqdn "[email protected]"; #certificate_type x509 "mycert" "mypriv"; //同上
下面来看看如何使用OpenSSL来创建证书。 #openssl genrsa -des3 -out ca.key 1024 #openssl req -new -x509 -days 365 -key ca.key -out ca.crt
#openssl genrsa -out win2000.key 1024 #openssl req -new -key win2000.key -out win2000.csr #openssl x509 -req -days 166 -in win2000.csr -CA ca.crt -CAkey ca.key -CAcreateserial –out win2000.crt #openssl pkcs12 -export -inkey win2000.key -certfile ca.crt -in win2000.crt -out win2000.p12 //以上是为Windows 2000(目标)创建的证书,由于Windows 2000证书需要Pkcs12格式,所以使用上边这条命令进行转换。下面来创建FreeBSD(本地)系统上的证书。 #openssl genrsa -out freebsd.key 1024 #openssl req -new -key freebsd.key -out freebsd.csr #openssl x509 -req -days 166 -in freebsd.csr -CA ca.crt -CAkey ca.key -CAcreateserial –out freebsd.crt //这样就创建了需要的证书文件,所有的相关文件都会在当前目录下。创建证书的过程可以参见图5、6、7。
现在把win2000.p12复制到Windows 2000,然后运行mmc,“控制台---添加删除管理单元---添加---证书---添加---服务账户---下一步---本地计算机---下一步---IPSEC Policy Agent---完成”。最后如图8将证书导入即可。 #mkdir /usr/local/etc/racoon/cert #cp * /usr/local/etc/racoon/cert/ #chmod 0600 /usr/local/etc/racoon/cert/* //把证书文件复制到/usr/local/etc/r |
|
|
|
|