我们下面举一个例子论述配置和使用的整个过程。假如我们有下面的 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=<Public key of deep>
rightrsasigkey=<Public key of mail>
然后在两个网关上处理 deep-keys 和 mail-keys 这两个 RSA 公钥,我们把这个个文件中的 "#pubkey=" 部分拷贝到各自的 "ipsec.conf"中去,如下:
authby=rsasig
leftrsasigkey=0x010395daee1be05f3038ae529ef2668afd79f5ff1b16203c9ceaef801cea9cb74bcfb51a6ecc08890d3
eb4b5470c0fc35465c8ba2ce9d1145ff07b5427e04cf4a38ef98a7f29edcb4d7689f2da7a69199e4318b4c8d0ea25d33e4f
084186a2a54f4b4cec12cca1a5deac3b19d561c16a76bab772888f1fd71aa08f08502a141b611f
rightrsasigkey=0x01037631b81f00d5e6f888c542d44dbb784cd3646f084ed96f942d341c7c4686cbd405b805dc728f86
97475f11e8b1dd797550153a3f0d4ff0f2b274b70a2ebc88f073748d1c1c8821dc6be6a2f0064f3be7f8e4549f8ab9af649
44f829b014788dd202cf7d2e320cab666f5e7a197e64efe0bfee94e92ce4dad82d5230c57b89edf
最后把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 文档。
工具名称 | 工具作用 |
Sxid | 检查系统中的 suid,sgid 以及没有主人的文件 |
skey | 一次性口令工具 |
logrotate | 日志循环工具 |
logcheck | 日志管理工具 |
swatch | 日志管理工具,比 logcheck 实时 |
Ssh(openssh) | 提供安全的连接认证 |
openssl | 提供加密的数据传送和认证 |
Portsentry | 反扫描工具,监视自己的udp和tcp端口 |
tripwire | 提供系统完整性检查 |
gnupg | 对单个文件进行加密以及创建数字签名 |
hostsentry | 基于主机的入侵检测,将连接记入日志 |
ipchains | Linux发行版自带的包过滤形防火墙 |
CFS 和 TCFS | 密码文件系统和透明的密码文件系统实现目录下所有文件加密,基于 NFS |
Anti-sniff | 反嗅探工具,检查网络中是否有嗅探器 |
Freeswan | 在 linux 实现 VPN 的工具 |
Syslog-ng | 替代 syslog 的日志文件系统 |
Scandns | 进行 dns 检查追踪的工具 |
Whisker | Cgi 扫描器 |
Snoopy | 通过跟踪 execve 系统调用记录执行的命令 |
Linux kernel patch | 内核的安全补丁,防止缓冲溢出等 |
krnsniff | 一个基于内核的监听模块 |
iptable | 用来替代ipchains的包过滤防火墙 |
Imsafe | 通过跟踪系统调用来检测缓冲溢出等问题 |
Iplog | 对来往的包进行日志记录 |
Solaris designer | 内核补丁,防止缓冲溢出等 |
Stackguard | 作为补丁修补gcc,防止缓冲溢出 |
DTK | Honey port欺骗式防御 |
Antiroute | 阻止和记录基于路由的跟踪 |
安全工具介绍
希望您能经常关心最新的安全漏洞和安全新闻,没有任何系统是完全安全的。这篇文章的目的不过是使大家对安全有一个明确的认识,使安全真正能够得到您的重视,做到深入人心。
http://www.315safe.com/securitytech/config/2249.shtml