对于客户端与服务器
之间的通讯用SSL进行加密是一个很好的选择,但是很多情况下需要建立一种企业级的通讯通道。在两个网关之间的 Internet上点到点的传递极其私密的数据,出于这种加密和认证的需要,IPSEC 应运而生。
IPSEC 是 Intenet 协议安全
,它使用
很强的密码系统提供认证和加密服务。IPSEC 在 IP 层进行加密,所以它对链路层的依赖型不大。它可以工作在各种底层网络
上。IPSEC 可以为 IP 层以上的协议提供保护。对于用户来说,这种保护看起来是透明的。
IPSEC
可以提供在两个网关之间的不安全的互联网上的安全通道的这种能力。在这种通道中传送的数据都是要求保密性非常高的数据,数据在发送者的网关处加密,在接收
者的网关处解密。这就是 VPN(Virtual Private Network)。Freeswan 就是在 Linux
下实现 IPSEC 的工具。
您可以到下面的站点下载 freeswan:
http://www.freeswan.org/
由于 freeswan 是以内核补丁形式提供的,所以您必须先下载 Linux 内核,再下载对应于内核的
freeswan。我们先要根据自己的系统情况修改 freeswan 的 Makefile 文件,然后用下面的命令进行编译,并且把
freeswan 加入到 Linux 内核的源代码中:
[root@sound freeswan-1.3]# make insert
[root@sound freeswan-1.3]# make programs
[root@sound freeswan-1.3]# make install
然后我们就需要编译内核,这里不想再介绍如何编译内核,只提示要改变的内核选项,下面这些选项您都要确定选"Y":
IPSec options (FreeS/WAN)
IP Security Protocol (FreeS/WAN IPSEC) (CONFIG_IPSEC) [Y/n/?]
IPSEC: IP-in-IP encapsulation (CONFIG_IPSEC_IPIP) [Y/n/?]
IPSEC: PF_KEYv2 kernel/user interface (CONFIG_IPSEC_PFKEYv2) [Y/n/?]
IPSEC: Enable ICMP PMTU messages (CONFIG_IPSEC_ICMP) [Y/n/?]
IPSEC: Authentication Header (CONFIG_IPSEC_AH) [Y/n/?]
HMAC-MD5 authentication algorithm (CONFIG_IPSEC_AUTH_HMAC_MD5) [Y/n/?]
HMAC-SHA1 authentication algorithm (CONFIG_IPSEC_AUTH_HMAC_SHA1) [Y/n/?]
IPSEC: Encapsulating Security Payload (CONFIG_IPSEC_ESP) [Y/n/?]
3DES encryption algorithm (CONFIG_IPSEC_ENC_3DES) [Y/n/?]
IPSEC Debugging Option (DEBUG_IPSEC) [Y/n/?]
一些内核选项会被 freeswan 自动打开,即使这些选项原来是关闭的。尽管这样还是建议您不要关闭下面的选项:
Kernel/User netlink socket (CONFIG_NETLINK) [Y/n/?]
Netlink device emulation (CONFIG_NETLINK_DEV) [Y/n/?]
Freeswan 的配置文件 "/etc/ipsec.conf" 许可您设定您的 IPSEC 设置,连接类型以及控制信息等。IPSEC
目前支持两种类型的连接:手工连接和自动连接。手工连接需要的密钥保存在 "/etc/ipsec.conf"
文件中,这种连接没有自动连接安全。对于一个商业应用
来
说,使用手工(固定)密钥是不安全和不可靠的。在自动密钥连接模式下产生一个 256
位共享密钥,将其复制到连接通道的各个节点上后,那些企图截取数据包的网络攻击者将很难攻破这种安全连接。在自动密钥连接模式下,一个密钥的有效期是
8 个小时,这种配置有效地阻止了那些企图用暴力法猜出密钥的攻击者。自动连接的密钥由一个叫 Pluto 的密钥协商守候进程产生,缺省使用叫
IKE 的密钥协商协议。这个协议根据 "/etc/ipsec.secrets" 文件中的信息确定不同的系统。
我们下面举一个例子论述配置和使用的整个过程。假如我们有下面的 VPN 通道:
SubnetDeep===Deep------Deepgate..………....Mailgate-------Mail===SubnetMail
Untrusted net
左边子网= SubnetDeep (192.168.1.0/24)
左边的主机 = Deep (deep.openna.com)(202.164.186.1)
左边的网关 = Deepgate (205.151.222.250)
Internet = Untrusted net
右边的网关 = Mailgate (205.151.222.251)
右边的主机 = Mail (mail.openna.com)( 208.164.186.2)
右边的子网= SubnetMail (192.168.1.0/24)
我们要编辑 ipsec.conf 文件来来满足我们的需要。在这个文件中有两大个段落。第一个 "config" 是关于 IPSEC 的一些普通配置信息的,后一个 "conn" 指定特定的 IPSEC 连接通道。具体的配置信息可以参看 man 帮助页。
"ipsec.secrets" 包含 pluto 守候进程认证网关之间通讯的密钥。有两种类型的密钥,一种是共享的密钥,一种是RSA的私人密钥。下面的命令产生 256 位的共享密钥:
[root@deep /]# ipsec ranbits 256 > temp
现在这个共享密钥在 temp 文件中,我们要把它复制到 "ipsec.secrets" 文件中。"ipsec.conf" 和
"ipsec.secrets" 都要拷贝到 VPN 通道另一端的网关上。"ipsec.conf" 文件中的 "config setup"
字段可能要根据接口的不同有所改变。
接下来我们要创建 RSA 的密钥对了:
我们在两个网关上都建立密钥对:
[root@deep /]# ipsec rsasigkey --verbose 1024 > deep-keys
[root@mail /]# ipsec rsasigkey --verbose 1024 > mail-keys
然后我们将前面产生的 temp 文件中的共享密钥放在每个网关的 "ipsec.conf" 文件中,在文件中的 "conn" 字段加入下面几行:
authby=rsasig
leftrsasigkey=
rightrsasigkey=
然后在两个网关上处理 deep-keys 和 mail-keys 这两个 RSA 公钥,我们把这个个文件中的 "#pubkey=" 部分拷贝到各自的 "ipsec.conf"中去,如下:
authby=rsasig
leftrsasigkey=0x010395daee1be05f3038ae529ef2668afd79f5ff1b16203c9ceaef801cea
9cb74bcfb51a6ecc08890d3
eb4b5470c0fc35465c8ba2ce9d1145ff07b5427e04cf4a38ef98a7f29edcb4d7689f2da7a691
99e4318b4c8d0ea25d33e4f
084186a2a54f4b4cec12cca1a5deac3b19d561c16a76bab772888f1fd71aa08f08502a141b61
1f rightrsasigkey=0x01037631b81f00d5e6f888c542d44dbb784cd3646f084ed96f942d341c7
c4686cbd405b805dc728f86
97475f11e8b1dd797550153a3f0d4ff0f2b274b70a2ebc88f073748d1c1c8821dc6be6a2f006
4f3be7f8e4549f8ab9af649
44f829b014788dd202cf7d2e320cab666f5e7a197e64efe0bfee94e92ce4dad82d5230c57b89
edf
最后把deep-keys和mail-keys这两个文件中的剩余部分包括(包括私钥)放进"ipsec.secrets"中去。
然后重新启动带有IPSec支持的内核的系统。系统重启时会出现几个错误,这主要是IPSec在缺省情况下使用了实际并不存在的eth999接口。建议你将ipsec程序的路径加入到用户环境变量中。
IPSec的网络设置首先,需要允许网关服务器的TCP-IP转发。在Red Hat Linux系统中的实现方法
:
将 FORWARD_IPV4="false" 改为 FORWARD_IPV4="yes" 即可。
另一个方法是直接修改/proc文件系统,执行以下命令即可:
cat 1 > /proc/sys/net/ipv4/ip_forward
然后我们要重新启动网络:
[root@deep /]# /etc/rc.d/init.d/network restart
这时pluto守候进程要启动,它尝试去连接另一边的网关上的pluto守候进程,这样一个连接就可以建立了。所以我们要在ipchains的配置文件中加入一些包过滤规则许可以下的协议通过网关通往另一边的网关:
UDP port 500 for IKE implemented by the Pluto daemon
Protocol 50 for ESP encryption and/or authentication
Protocol 51 for AH packet-level authentication
必须保证IP欺骗选项没有被打开,可以将下面的命令添加到/etc/rc.d/rc.local文件中:
[root@deep /]# echo 0 > /proc/sys/net/ipv4/conf/ipsec0/rp_filter
[root@deep /]# echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
最后要注意的是, 任何使用了 IPSec 的内部网络的所有伪装(masquerade),规则都必须在允许 IPSec
的规则之后进行,否则主机将试图伪装 (masquerade) 数据包,而不是将它们传递给 IPSec。所以我们还要在两边网关的
ipchains 配置文件中加入下面的设定来保证能够正常的转发 IPSEC 的数据包:
# Masquerade internal traffic.
# All internal traffic is masqueraded externally.
ipchains -A forward -i $EXTERNAL_INTERFACE -s $LOCALNET_1 -j MASQ
Where EXTERNAL_INTERFACE="eth0" # You external interface to the Internet.
Where LOCALNET_1=" 192.168.1.0/24" # whatever private range you use.
现在可以重启机器了,我们所要做的设置都完成了,一个 VPN 已经构建好了。
详细的信息请参阅 man 帮助和工具自带的帮助文件。
小结
我们所讨论的以上内容都是为了更好的固化我们的 linux 系统,我们讨论了 linux 服务器的安装和安全设置中要注意的问题
,我们还谈到了 linux 的日志系统,概要的举出了一些安全工具。由于篇幅所限不可能讲的非常详细彻底,也有很多其他好的安全工具并没有给大家列出。下面给出一个安全工具的列表供大家参考,详细的说明可详见说明文档和 man文档和 man 文档。安全工具介绍
希望您能经常关心最新的安全漏洞和安全新闻,没有任何系统是完全安全的。这篇文章的目的不过是使大家对安全有一个明确的认识,使安全真正能够得到您的重视,做到深入人心。
分享到:
相关推荐
·FreeS/WAN,Linux下的第一个IPsec执行者,不过,FreeS/WAN不再开发了,它交叉进了Openswan和StrongSwan。 ·Openswan是由FreeS/WAN团队成员开发,它由Novell/SuSE和Astaro发起。 ·strongSwan也是FreeS/WAN的...
Frees_wan在Linux下的安装.pdf
它支持多种路由协议,采用Frees/WAN实现VLAN功能,利用iptables建立防火墙,软件组件包括GNU工具、Apache HTTP服务、OpenSSH服务、iproute2等,展现了Linux在网络安全和网络管理上的强大能力。 Debian认证的笔记本...
在Linux内核2.4版本中,IPsec的实现相对较为原始,其处理模块并未完全集成到内核主线中,而是作为独立的模块存在,例如FreeS/WAN方案。尽管2.2版本的Linux内核包含了IPv6的基本特征,但并未包含IPv6的IPsec支持。...
这样不仅提高了系统的性能,还降低了如FreeS/WAN等实现方案中的额外开销,因为数据包不再需要频繁拷贝。 IPSec的核心组件包括安全关联(SA)和安全策略(SP)。SA定义了两个通信端之间的安全参数,如加密算法、密钥...
字节池 灵活的字节池。 | 例子 use byte_pool :: BytePool; // Create a pool let pool = BytePool :: < Vec>> :: new (); // Allocate a buffer ...// Frees all memory in the pool. drop (pool);
FreeS/WAN 是一款基于Linux的IPsec实现,提供了强大的网络加密和安全隧道功能,广泛应用于企业级的网络环境中。 **Perl脚本技术** Janus Watcher 的实现依赖于Perl编程语言,这是一种通用、解释型的脚本语言,特别...
LR101项目的目的是开发一种真正Linux硬件路由器,该路由器支持所有主要协议/路由协议,并具有VPN(FreeS / WAN)和VPN / ISP故障转移支持。
在REDHAT 9.0环境下重新编译内核2.4.20-8,主要目的在于启用Frees/wan的IPsec功能。此过程涉及多个步骤,包括清理源代码、配置内核参数、生成内核文件及模块、更新引导加载器设置等。下面将详细阐述整个编译流程,并...
12. Linux环境下的VPNTechnology:FreeS/WAN是基于IPsec的开源虚拟私有网络软件。 13. 网络攻击类型:流量分析是一种被动攻击,通过分析网络流量来获取信息,而其他选项属于主动攻击。 14. FTP访问控制:在Windows...
### Linux Kernel 2.4 Internals #### Booting **Booting** is the initial process by which the Linux kernel starts and initializes the system. The Linux Kernel 2.4 boot process involves several key ...
Frees instructors from the painstaking task of developing step-by-step examples to present Maya’s complex interface and basic capabilities. Boasts an easy-to-follow, tutorial-based learning style ...
#### 工具介绍:Visual Leak Detector (VLD) Visual Leak Detector(简称 VLD)是一款专为 Visual C++ 设计的内存泄露检测工具。该工具能够在开发阶段帮助开发者发现并定位内存泄露问题,从而有效地提高代码质量和...
unix工具记录真实的MATLAB / octave内存和CPU使用率与时间的关系 亚历克斯·巴奈特(Alex Barnett) 1/30 / 18-3 / 14/18; 版本10/15/18。 随着Joakim Anden,Jeremy Magland的改进。 该工具的一个重点是能够通过...
本文将详细解读“山外调试工具”,这款专为飞思卡尔(Freescale)、飞思(Frees)以及恩智浦(NXP)等芯片平台设计的调试器,它在调试过程中提供了强大的支持,尤其是对于蓝牙传输和摄像头图片传输等应用场景。...
Frees是Linux的GUI工具,它显示所有已安装驱动器上的空间使用情况。
其前身是openswan,并且它们都源自于FreeS / WAN的发展。在libreswan中,klips是实现IPSec功能的核心组件之一,主要负责数据包的安全传输以及加密解密等任务。本文将从代码层面出发,详细介绍libreswan(版本3.29)...