网络安全 频道

Linux系统安全工具介绍

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=<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

0
相关文章