※黑客攻防指南※==>网管天地==>Webmaster培训讲座:第九讲 审计结果
Webmaster培训讲座:第九讲 审计结果

作者:webmaster网络技术学院
    我们已经学习使用了一些实施有效安全审计的工具。现在还剩下最后一步:提交细致的书面建议。建议应从三个角度来提出:

    · 为了能够确定安全策略和实施情况的差距,建议采用特定方法继续进行有效的审计。

    · 抵御和清除病毒,蠕虫和木马,修补系统漏洞。

    · 建议改善和增强如下内容:

        Ø  重新配置路由器

        Ø  添加和重新配置防火墙规则

        Ø  升级操作系统补丁类型

        Ø  升级旧有的和不安全的服务和TCP/IP堆栈

        Ø  加强网络审核

        Ø  自动实施和集中管理网络内部和边界安全

        Ø  增加入侵检测产品

        Ø  增强物理安全

        Ø  加强反病毒扫描

        Ø  加强用户级别的加密

        Ø  删除不必要的用户账户,程序和服务

下表列出了对上图中每一个类别的改善建议

 

分类

改善

防火墙

  • 保证包过滤和防火墙规则的正确设置和有效
  • 扫描DMZ区域内的有问题的主机

入侵监测

  • 升级入侵监测系统规则
  • 识别需要监测的新内容

主机和个人安全

  • 实施用户级别的加密
  • 在单个客户端上安装“个人防火墙”来锁定端口和减小风险

强制实施策略

  • 安装监视软件,如Axent的企业级安全管理器
  • 对物理安全进行有规律的审计

建立审计报告

    在本书的附录中A提供了一份审计报告样例,你的报告自然应该与它不同,但这份样例对报告的格式及结构提出了建议。文档中将报告问题和提出建议。

    在安全审计报告中应包含以下元素:

    · 总体评价现在的安全等级:你应该给出低、中或高的结论,包括你监视的网络设备的简要评价(例如,大型机,路由器,NT系统,UNIX系统等等)

    · 对偶然的、有经验的和专家级的黑客入侵系统做出时间上的估计。

    · 简要总结出你的最重要的建议。

    · 详细列举你在审计过程中的步骤:此时可以提及一些在侦查、渗透和控制阶段你发现的有趣问题。

    · 对各种网络元素提出建议,包括路由器,端口,服务,登录账户,物理安全等等。

    · 讨论物理安全:许多网络对重要设备的摆放都不注意。例如,有的公司把文件服务器置于接待台的桌子后,一旦接待人员离开,则服务器便暴露在网络攻击之下。有一次,安全审计人员抱着机器离开,安全守卫还帮了忙。

    · 安全审计领域内使用的术语。

    最后,记着递交你的审计报告。因为安全审计涉及了商业和技术行为,所以应该把你的报告递交给两方面的负责人。如果你采用电子邮件的方式递交报告,最好对报告进行数字签名和加密。

增强一致性

    你不仅需要指出问题所在,还要排除问题。下面列出作为审计人员你应提出哪些建议。这些步骤总结了你在本课程中学到的安全规则。

持续审计和加强安全的步骤

    下列是你对所有希望继续进行有效审计的公司建议采取的步骤。

        Ø 定义安全策略。

        Ø 建立对特定任务负责的内部组织。

        Ø 对网络资源进行分类。

        Ø 为雇员建立安全指导。

        Ø 确保个人和网络系统的物理安全。

        Ø 保障网络主机的服务和操作系统安全。

        Ø 加强访问控制机制。

        Ø 建立和维护系统。

        Ø 确保网络满足商业目标。

        Ø 保持安全策略的一致性。

        Ø 重复的过程。

    以上都是保证安全的基本步骤。许多国际性的公司要求符合这些需求。无论你提出了哪些方面的建议,你至少应该遵循某一种国际性的安全标准。

安全审计和安全标准

 

    至少有三个国际安全标准可以供你在书写报告时进行参考。每种标准都可以帮助你使用正确的语言进行表达,更重要的是使你关注客户的商业需求。许多网络工作者认为这些标准没有必要,在处理更多的实际问题时很难将这些抽象的概念铭记在心。最后,将概念转变为实践是困难的。

    然而,因为许多公司要求遵循这些标准,所以它们也变得越来越重要。例如,许多政府在同公司进行商业合作时要求符合BS7799标准。

ISO 7498-2

    国际标准组织(ISO)建立了7498系列标准来帮助网络实施标准化。其中第二个文件7498-2描述了如何确保站点安全和实施有效的审计计划。文件的标题是《Information Processing Systems,Open System Interconnection,Basic Reference Model,Part 2:security Architecture》,它是第一篇论述如何系统地达到网络安全的文章。你可以从www.iso.ch获得更多的ISO标准的信息。

英国标准7799(BS 7799)

    BS 7799文档的标题是《A Code of Practice For Information Security Management》,论述了如何确保网络系统安全。1999年的版本有两个部分。BS 7799-1讨论了确保网络安全所采取的步骤。BS 7799-2讨论了在实施信息安全管理系统(ISMS)时应采取的步骤。虽然BS 7799是英国的标准,但由于它可以帮助网络专家设计实施计划并提交结果,所以很多非英国的公司也接受这一标准。BS 7799系列与ISO 9000系列的文档有关。这些标准保证了公司之间安全的协作。

    实施信息安全管理系统(ISMS)的目的是确保公司使用的信息尽可能的安全。因此,需要考虑能够帮助在你的公司中建立、管理和传送信息的每个要素。这些要素包括电话联系,文件系统(文本和电子格式),网络传输等。所以,定义ISMS的任务变得很艰巨,你需要记录和分类建立信息的任何组成部分,包括铅笔、邮票、邮件等等。所幸的是,你可以定义一个范围,它可以使你只关注哪些对你的网络影响最大的内容。

    在完善ISMS是,应遵循以下步骤:

    Ø 定义安全策略。

    Ø 为你的信息安全管理系统(ISMS)定义范围。

    Ø 风险评估。

    Ø 对已知的风险进行排序和管理。

    你已经在本课中学习了每个步骤,当然,你需要将学到的技能与BS 7799和ISO 7498-2标准结合起来。这些标准会使你作为一名审计人员更具有可信度。

    在BS 7799和ISO 7498-2文档中讨论的许多步骤可以帮助你实施在前面提到的目标。这些标准建议你采取如下步骤:

    Ø 发布安全策略。

    Ø 公布负责人名单。

    Ø 培训公司人员的信息安全意识。

    Ø 定义汇报事件的程序。

    Ø 建立有效的反病毒保护措施。

    Ø 确保实施的策略与公司商业目标的一致性。

    Ø 制定规范以确保雇员不会为了完成任务而破坏软件许可规则。

    Ø 物理上确保对网络操作记录的安全。

    Ø 建立系统来保护公司数据的安全。

    Ø 实施能够衡量规定的安全策略与实际遵守情况的等级的机制和过程。

Common Criteria(CC)

    Common Criteria提供了有助于你选择和发展网络安全解决方案的全球统一标准。ISO为了统一区域和国家间的安全标准指定了Common Criteria,因此,CC与ISO9000系列相似都是用来提供可以证明的过程。虽然CC的目的是统一ITSEC和TCSEC,但它们还是用来取代“Orange Book”标准。在编写本书时,Common Criteria被称为ISO国际标准15408(IS 15408)。Common Criteria 2.1等同于IS 15408。

    该文件由三个部分组成:

    · 第一部分:定义了如何创建安全目标和需求,还提供了一个术语的概述。

    · 第二部分:定义了如何建立能够使商业通信更安全的需求列表。列举了如何将这些需求组织成classes(抽象的需求,例如验证和加密),families(更特别的需求,例如用户和过程验证),和components(使用Kerberos进行验证,和一次性口令)。

    · 第三部分:提出了如何建立能够达到公司安全需求的“保险内容”的过程。还讨论了七个日益广泛使用的严格的Evaluation Assurance Levels(EAL)。

    这三部分的内容描述得很细致和复杂。然而,作为审计人员你只需要理解这些条款的基本内容。许多IT专家使用它们来:

      Ø 第一公司需要的特殊设置。

      Ø 提供了审计人员和IT专家在商业和技术交流中常用的术语。

      Ø 定义了为更新网络或特殊产品而建立特殊过程的需求。

      Ø 需要由软件和硬件厂商声明的证明能力。

    下表描述了与安全审计人员有关的概念和术语。

 

术 语

描 述

Protection ProfilePP

需要的网络服务和元素的详细列表,报括安全目标。

Security Objectives

列出如何提出特别的弱点的书面叙述。这是一种总体的陈述。安全需求比目标陈述更具体。

Security TargetST

由生产厂商提供的描述安全工具的用处的一组声明。与安全目标和安全需求不同。安全需求是由厂商实施在软硬件上的,而安全目标只是由IT部门和网络审计人员定义的目标。

Target of Evaluation (TOE)

你将要审计的某个操作系统,网络,分布式的程序或软件。使用安全目标和安全对象,你可以确定系统是否满足了目标以及对象是否达到了声明的功能。

Packages

任何允许IT专家达到安全目标和要求的可以重复使用的内容。例如七个EAL。你可以合并这些Package来确保额外的安全。

Evaluation Assurance Level (EAL)

七个事先定义好的packages,用来帮助IT专家评价规划的和已经存在的网络和系统。

Evaluation Assurance Level

    Evaluation assurance levels(EAL)提供了描述和预测特别的操作系统和网络的安全行为的通用的方法。等级数越高,则要求得越严格。EAL 1需要由TOE厂商做出声明的证明,EAL 7需要你核实和记录下实施过程的每一个步骤。你应该注意到当EAL的等级升高时,两项要求也会变得更严格。

    · 设计的证明:EAL 1只要求检查产品的文件,而EAL 7要求对系统进行完全的记录完整的独立的分析。

    · 抵御攻击的能力:EAL 1需要产品至少声明能够提供对攻击的有效防范;而EAL 7需要操作系统能够抵御复杂的破坏数据机密性和拒绝服务式的攻击。

    下表描述了七个EAL类别。

 

EAL 类别

描述

EAL 1

功能上的测试:分析产品的声明,和实施TOE的基本测试。

EAL 2

结构上的测试:需要选择TOE的重要元素来经受具有权威资格的测试,例如程序开发者。

EAL 3

系统的测试和检查:进行测试的要求非常严格,在有限的基础上,操作系统的所有元素都必须独立地检验。

EAL 4

系统地设计,测试和回顾:这一级别的保证是允许已经完成的程序和以前实施的系统进行更改的最高保证。这一级别还需要操作系统通过抵御低级别的攻击的测试。

EAL 5

半正式的设计和测试:操作系统必须可以经受适度的,比较复杂的攻击。

EAL 6

半正式地验证设计和测试:与EAL 5相同,但是需要第三方的TOE设计核实。

EAL 7

操作系统必须经完整地回顾和被证明能够抵御灵活的攻击。正式地设计和测试:确保发展的过程有组织,由第三方记录所有的过程。例如,所有通信都必须被记录下来。



    你可以从http://csrc.nist.gov/c/index.html了解Common Criteria

增强路由器安全

    简单地增强路由器安全的方法包括:

    · 严格控制路由器的物理访问。

    · 获得最新的操作系统升级(包括NT系统做路由,和专门的路由器操作系统,例如Cisco IOS)

    · 确保路由器不受拒绝服务攻击的影响。

    · 确保路由器不成为拒绝服务攻击的不知情的帮凶。

    下表提供了一些建议来确保第三、四项的要求。

 

过程

描述

入口和出口过滤

配置你的路由器只路由那些具有合法的内部IP地址的数据包离开。你的路由器应当丢弃任何不具有合法的内部IP地址的包。这个设置有助于网络不成为发送虚假IP包的源头。

然后,配置路由器丢弃所有源于表75日的IP地址包

  • 要获得更多的信息请查看Internet Draft ierf-grip-isp-07ISP的安全展望)

禁止广播过滤

许多拒绝服务攻击,包括Smurf攻击,都是攻击者利用路由器在配置上允许直接广播的漏洞。最简单的确定路由器是否配置成回应这些地址的方法是ping该网络地址(例如192.168.4.0)或该网络广播地址(例如192.168.4.255



    在入口和出口过滤中应当考虑的IP 地址

 

分类

地址

Historical Low End Broadcast

0.0.0.0/8

Limited broadcast

255.255.255.255/32

RFC 1918 私有网络

10.0.0.0/8

RFC 1918 私有网络

172.16.0.0/12

RFC 1918 私有网络

192.168.0.0/16

本机回环地址

127.0.0.0/8

连接本地网络

169.254.0.0/16

D类地址

224.0.0.0/4

E类保留地址

240.0.0.0/5

未分配地址

248.0.0.0/5

    想获取更多的信息,访问下列网址http://www.sans.org/dosstep/index.hem

提前检测

    提前检测是指你使用黑客的策略和手法来对付他们,而不是简单地停止攻击。一个有效的检测策略通常包括审计,但你必须同时使它能够简单地检测系统问题和自动提供解决方案。

扫描检测和jails

    有些入侵监测程序,例如Network Associates’ Sting,允许你建立虚假账号甚至是虚假的网络来引起攻击者的兴趣。这种目标使攻击者把时间花费在不存在的资源上,另外提醒网络管理员网络中存在可疑的活动。

    反击的系统通常包括建立一台服务器作为目标。它们可以包括下列内容:

    · 混杂模式扫描

    · 虚假的数据库

    · 虚假的账号文件

    · 虚假文件

    · 虚假的管理员账号

    · 自动将攻击者引入虚假网络中的防火墙配置

    · 报警或惩罚黑客行为的Tripwire账号

    · 物理线路追踪(试图确定黑客使用的端口或电话线路)

    · 数据包追踪(试图了解包的起源)

检测工作在混杂模式的网卡

    你可以实施远程扫描来确定一块网卡是否工作在混杂模式。象AntiSniff这样的程序使用三种主要的方法来检测网卡是否工作于混杂模式:

    Ø 检测网卡电子方面的变化来确定网卡的工作模式。

    Ø 发送各种包(ARP请求,ICMP包,DNS请求,TCP SYN floods,等等)。如果从某台主机返回的包等待了一段不正常的时间,而且没有被主机处理过的迹象,则程序便推断出该主机的网卡可能出于混杂模式。

    Ø 将错误的ICMP请求包含在无效的以太网地址头中。所有没有工作在混杂模式的系统将忽略这些请求,而那些回复错误的ICMP请求的主机将有可能出于混杂模式。

    像AntiSniff这样的程序通过推论来判断网卡是否工作在混杂模式。由于这些程序只是根据有限的数据来下结论,所以容易出现误报。通常明智的做法是定时进行混杂模式检测的扫描。例如,L0pht包含其自身的调度。使用WindwosNT Scheduler或UNIX的cron程序,你可以自动实施所有扫描。想获得更多的有关如何检测网卡的混杂模式的信息,请访问L0pht的站点www.l0pht.com/antisniff/。L0pht还提供的UNIX版本的AntiSniff。然而你需要编译它,并且只能运行在FreeBSD和Solaris操作系统下。

在Linux下阻止你的系统响应任何从外部/内部来的ping请求

    既然没有人能ping通你的机器并收到响应,你可以大大增强你的站点的安全性。你可以加下面的一行命令到/etc/rc.d/rc.local,以使每次启动后自动运行。

    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

不要显示出操作系统和版本信息

    如果你希望某个人远程登录到你的服务器时不要显示操作系统和版本信息,你能改变

    /etc/inetd.conf中的一行象下面这样:

    telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h

    加-h标志在最后使得telnet后台不要显示系统信息,而仅仅显示login:

在Linux下对于linux single的保护

    The /etc/lilo.conf file

    a) Add: restricted

    加这一行到每一个引导映像下面,就这表明如果你引导时用(linux single),则需要一个password.

    b) Add: password=some_password

    当与restricted联合用,且正常引导时,需要用户输入密码,你也要确保lilo.conf文件不能被不属于root的用户可读,也免看到密码明文。下面是例子:

    编辑/etc/lilo.conf加:

    boot=/dev/sda

    map=/boot/map

    install=/boot/boot.b

    prompt

    timeout=50

    Default=linux

    restricted ?add this line.

    password=some_password ?add this line.

    image=/boot/vmlinuz-2.2.12-20

    label=linux

    initrd=/boot/initrd-2.2.12-10.img

    root=/dev/sda6

    read-only

    [root@deep]# chmod 600 /etc/lilo.conf (不再能被其他用户可读).

    [root@deep]# /sbin/lilo -v (更新lilo配置).

    [root@deep]# chattr +i /etc/lilo.conf(阻止该文件被修改)

禁止 Control-Alt-Delete 重启动机器命令

    [root@deep]# vi /etc/inittab

    ca::ctrlaltdel:/sbin/shutdown -t3 -r now

    To

    #ca::ctrlaltdel:/sbin/shutdown -t3 -r now

    [root@deep]# /sbin/init q

资源限制

    对你的系统上所有的用户设置资源限制可以防止DoS类型攻击(denial of service attacks)如最大进程数,内存数量等。例如,对所有用户的限制象下面这样:

    编辑/etc/security/limits.con加入:

    * hard core 0

    * hard rss 5000

    * hard nproc 20

    你也必须编辑/etc/pam.d/login文件加/检查这一行的存在。

    session required /lib/security/pam_limits.so

    上面的命令禁止core files“core 0”,限制进程数为“nproc 50“,且限制内存使用为5M“rss 5000”。

Samba 远程创建文件漏洞

    Samba是一个Unix/Linux下的免费的文件和打印共享服务程序。允许在Unix和Microsoft平台之间使用文件和打印共享。由于smb守护进程没有正确检查NetBIOS名字,一个本地用户可以从远程在Samba服务器上往任意文件中写入数据。如果用户可以在本地建立符号链接,用户可以提升自己的权限。

远程用户也可能发动拒绝服务攻击。

问题发生在smbd在创建SMB会话的日志文件(*.log)时。在受影响的平台上,缺省情况下,每个SMB会话被记录到/var/log/samba/.log文件中。如果攻击者的NetBIOS名字是'FOOBAR',日志文件将会是/var/log/samba/fooboar.log.然而,smbd没有检查NetBIOS名字是否包含"../",因此,如果攻击者将NetBIOS名字设置为"../../../nsfocus",那么将会创建/nsfocus.log文件。

    如果smb.conf文件中存在下列设置:

     log file = /var/log/samba/%m.log

    那么,这个系统就是受影响的。

    在某些平台下(例如FreeBSD)下,配置如下:

     log file = /usr/local/samba/var/log.%m

    这种配置将不受此问题影响。

    smbd在创建log文件时也忘记检查该文件是不是链接文件,因此攻击者可以利用符号链接将任意数据添加到任意文件中。如果将某些数据写到某些敏感文件中(例如/etc/passwd,rc启

动脚本等等),本地用户就可能获取root权限。

测试程序:

--------------------------------------------------------------------------------

$ ln -s /etc/passwd /tmp/x.log

$ smbclient //NIMUE/"`perl -e '{print "\ntoor::0:0::/:/bin/sh\n"}'`" \

-n ../../../tmp/x -N

$ su toor

#

--------------------------------------------------------------------------------

建议:

临时解决方法:

修改smb.conf,将log file行改变成如下配置:

log file = /usr/local/samba/var/log.%m

或者将%m删除。

厂商补丁:

Samba 2.2.0a和Samba 2.0.10 已经解决了这个问题,您可以在下列地址下载:

Samba upgrade Samba 2.2.0a

http://us1.samba.org/samba/ftp/samba-2.2.0a.tar.gz

Samba upgrade Samba 2.0.10

http://us1.samba.org/samba/ftp/samba-2.0.10.tar.gz

很多Linux厂商也提供了升级版本,详细下载地址请参考相应的安全公告。

RedHat 为此发布了一个安全公告(RHSA-2001:086-06):

RHSA-2001:086-06: New Samba packages available for Red Hat Linux 5.2, 6.2, 7 and 7.1

公告链接:http://www.redhat.com/support/errata/RHSA-2001-086.html

SuSE Linux 为此发布了一个安全公告(SuSE-SA:2001:021):

SuSE-SA:2001:021: samba

公告链接:http://www.suse.com/de/support/security/2001_021_samba_txt.txt

Immunix Linux 为此发布了一个安全公告(IMNX-2001-70-027-01):

IMNX-2001-70-027-01: samba update -- Immunix OS 6.2, 7.0-beta, 7.0

公告链接:http://download.immunix.org/ImmunixOS/7.0/updates/IMNX-2001-70-027-01

Debian Linux 为此发布了一个安全公告(DSA-065-1):

DSA-065-1: samba remote file append/creation problem

公告链接:http://www.debian.org/security/2001/dsa-065

Caldera Linux 为此发布了一个安全公告(CSSA-2001-024.0):

CSSA-2001-024.0: OpenLinux: samba remote root problem

公告链接:http://www.caldera.com/support/security/advisories/CSSA-2001-024.0.txt

主机审计解决方案

    在审计主机时,你会发现由于每台主机都是针对不同的商业目的,所以你也需要提供不同的解决方案。你可以建议下列的审计方案。

    · 实施本机审计:虽然你希望能补充象last和时间查看器这样的本机审计工具,但本机审计程序通常是审计过程好的出发点。

    · 安装监视软件,例如Axent’s Enterprise Security Manager(ESM):这种软件通报中央控制系统那些系统低于规定策略的限度之下。例如,这种监视程序可以设置成提醒你哪些系统的密码有效期设置得过低。

    · 清除安装工作中的临时文件:自动安装程序通常在临时文件中留下重要的数据包括密码

    · 修复和清理被损坏的系统:你可以清除非法的服务像NetBus,Tribal Flood和BackOrifice。

    · 替代服务:例如,你可以用SSH服务来替代Telnet,SSH使用公钥加密来保证登录会话的安全。

    · 安装操作系统附件,例如个人防火墙和加密服务。

清除“感染”

    反病毒软件可以扫描出众所周知的非法服务,木马,病毒和蠕虫。然而,你应当能够排除至今还未检测到的问题。为了检测和清除感染,你可以:

    · 使用TCP/IP排错的工具,例如netstat

    · 使用Telnet连接怀疑的端口

    · 升级和运行反病毒程序

个人防火墙软件

    虽然称为个人防火墙,但这类软件提供了两个主要的功能。

    · 端口阻塞

    · 连接追踪

    你还可以拒绝特定的IP地址。这些程序并不是真的防火墙。而且,大多数的个人防火墙软件并不适合做服务器的安全解决方案。

流行的软件

    流行的防火墙软件包括:

    · Network Ice’s Black Ice和Black Ice Defender(www.networkice.com)

    · McAffee’s ConSeal(www.signal9.com)

    · Zone Labs’ Zone Alarm(www.zonelabs.com)

虽然大多数的个人防火墙产品是针对客户端系统的,但NetworkIce(www.networkice.com)同样也适合对高性能的产品提供支持。它们是ICEcap和BlackIce。后者是主机级的入侵监测软件的代表。

IPSec和加密

    许多公司越来越重视内部的攻击。为了解决这种问题,你可以建议应用IPSec和个人加密。PGP程序是简单地应用IPSec来帮助建立有效的局域网和广域网级别的VPN解决方案的实例,从www.pgp.com上可以获得该软件。

    个人加密产品包括象BestCrypt这样的程序(www.bestcrypt.com)。这些软件有助于公司确保文件,目录甚至是整个硬盘的保密性。这些操作系统的附件可以帮助确保数据的机密。

加密和安全策略的一致性

    其实,有些公司不希望使用个人加密,因为不希望员工加密的文件连管理者和IT人员也解不开。因此,如果你建议了这种解决方案,你需要准备建立Key escrow系统来统一管理加密和解密。

    审计可以建立在多种级别上。例如,如果你在Windows Primary Domain Controller(PDC)实施了审计,则该策略将应用于整个域。审计还可以发生在操作系统级别。例如,你可以象前面课程中所学的审计登录失败和系统关闭。最后,你可以在资源级别实施审计,这些资源包括文件和目录。

修补系统漏洞

    审计人员的工作就是发现系统漏洞并修补它们。操作系统的hot fixes和service packs是修补系统漏洞的主要手段。你可以升级TCP/IP堆栈,或者,甚至应用Ipv6。

NT中的TCP序列

    知道Service Pack5出现之前,windowsNT使用的TCP序列机制是很容易被预测的。虽然序列号可以从随机的数值开始,但是随后接收的包会在序列上加一。攻击者通常会利用这种可以预测的序列数,因为这允许他们进行劫持攻击。虽然由SP5提供的序列机制也没有像Linux和UNIX操作系统中的复杂,但仍然建议安装最新的Service Pack 6a版本。

Ipv6

    虽然Ipv6无法实施在每种场合,但它迅速成为一种选择。IPv6使用了加密和验证机制,现在主流的操作系统如WindowsNT,Linux 6.1和Solaris都支持IPv6。在本书写作的时候,选择IPv6作为唯一的协议会限制访问Internet,但是在某些情况下,对隔离的局域网使用IPv6会达到更高的安全效果。

    IPv6提供了下列的安全特性:

    · 加强的验证机制(通过验证扩展头)减小了被spoofing和hijacking攻击的可能性。

    · 数据加密(通过Encrypted Security Payload扩展头)减小了被嗅探攻击的可能性。

    想获得关于IPv6的更多信息,请访问http://www.ipv6.org。这个站点包含了最新的有关IPv6发展的信息,所有与协议相关的RFC文件,和所有支持IPv6的操作系统和程序。

升级和替代服务

    通常你需要升级和替代已经存在的服务。在进行更改时,请考虑下列的步骤:

    · 研究新的产品。问问自己它是否适合你的网络和商业情况。

    · 确定需要多少时间来实施这些变化。

    · 在把它们应用到产品之前彻底地进行测试。

    · 要考虑到这些升级和替代会影响其它服务。大多数的网络主机之间是相互影响的。这些新的服务会引起这些问题吗?

    · 确定是否需要对最终用户进行培训。

Secure Shell(SSH)

    Telnet,rlogin和rsh非常有用。它们允许你远程操作服务器就象在本地工作一样。Rexec程序允许你不用提供密码就可以从远程在服务器上运行命令。然而,这些服务都是以明文的方式传输信息。Secure Shell(SSH)是最常见的替代这些服务的方法。在本文写作时,SSH2是最新的版本。

SSH提供的安全服务

    SSH提供两项基本的服务:

    · 数据保密:由于服务器首先发送它的公钥给客户端,所以数据通道是加密的。然后客户端使用服务器的公钥对所有信息加密。当服务器收到加密的信息后,使用自己的私钥对信息进行解密。

    · 验证:使用上面谈到的公钥,两个用户交换彼此的公钥然后使用公钥进行验证。这种机制的好处是在网络上不会传输用户名和密码的信息。

    你需要理解SSH首先加密了数据通道,然后运行各种各样的验证方法。缺省情况下,Secure Shell使用22端口,允许你使用公钥进行加密。SSH2使用DSA数字签名算法,这种算法与RSA公钥加密相似,但是没有专利。当然,SSH2可以使用RSA算法。

在SSH中的加密和验证

    加密的过程从服务器自动把公钥发送给客户端开始。然后客户端使用公钥加密信息,服务器用自己的私钥对信息解密。随后系统间的所有传输都要加密。

验证

    缺省情况下,SSH会首先尝试用公钥进行验证。这些公钥存储在每个用户的$HOME/.ssh2目录下。例如,如果在你的Red Hat Linux 6.1操作系统下有一个名叫james的用户。则所有的密钥(包括james的公钥和私钥)都存储在、home/james/.ssh2目录下。请注意这是个隐藏目录。

    如果这些密钥或识别和验证的文件并不存在,则SSH将使用标准的存放在/etc/passwd和/etc/shadow数据库中的用户名和密码。这种方式的缺点是在网络中传输了用户名和密码。虽然密码信息是加密的,但是在公网上传送密码肯定是不安全的。

SSH2内容

    最初SSH是被发展来使UNIX系统之间的连接更安全的。然而,许多Windows的客户端允许你在连接UNIX操作系统时使用SSH。下表提供了UNIX和NT SSH2的有关内容

 

内容

描述

/usr/local/bin/ssh2

Linux SSH2客户端

SSH Secure Shell客户端

许多的Windows SSH客户端之一。F-Secure支持WindowsMacintosh系统

/usr/local/bin/ssh-keygen2

为每个用户生成密钥对

/usr/local/bin/scp2

客户端允许你使用由SSH加密的通道来远程执行命令

/usr/local/sbin/sshd2

SSH2守护进程

/usr/local/bin/ssh-agent2

允许你将公钥存储在内存中。只要你已经建立了信任关系,则登录时不需要密码。

/usr/local/bin/sftp-server2

运行sshd2secure FTP服务器。某些Windows客户端可以使用secure FTP服务器

/usr/local/bin/sftp2

Secure FTP客户端



    你可以从各种途径获得SSH,包括www.ssh.org,www.ssh.com,和 rufus.w3.org 。要获得更多有关SSH2的信息,你可以阅读随文档附带的README文件,或者阅读FAQ(http://www.ssh.org/faq.html)你可以从各种RPM站点获得各种版本的SSH(例如rufus.w3.org 和www.datafellows.com)。

    在使用客户端/服务器产品时,你必须首先配置服务器和客户端彼此通信。要做到这一点,需用安装和建立信任关系。在Linux下,安装服务器的同时也安装了客户端。然后,你可以生成和交换公钥。服务器的配置过程包括生成公钥和私钥。这些密钥会自动在SSH握手阶段进行传输。你必须输入下列命令来启动SSH2服务:

     /usr/local/sbin/sshd2

    你可以编辑/etc/rc.local文件使ssh2d每次都自动启动。对于Red Hat Linux操作系统,你只需要在该文件最后加上/usr/local/sbin/sshd2一行即可。

使用SSH登录

    使用SSH登录,你需用使用下列命令格式:

     /usr/local/bin/ssh2 –l username hostname

    例如,使用用户名test登录系统noyas,你需用键入下列命令

     /usr/local/bin/ssh2 –l test noyas

与SSH1兼容

    如果你有已经运行SSH1的系统,则按照文件名是SSH2.QUICKSTART的指导来操作就行了。按照下列步骤进行将保证你的SSH1客户端可以使用SSH2。

SSH和验证:建立用户之间的信任关系

    交换公钥的方法是最安全的SSH验证手段。在SSHfuwuq可以使用公钥加密进行验证之前,每个用户必须正确地建立信任关系。通常,这意味着每个用户必须交换公钥。下列是建立允许验证的密钥对的过程。这个过程假设两个用户希望使用公钥验证的SSH验证方式。请记住,SSH服务器自动加密数据通道。客户端只提供公钥进行验证。每个用户需要按照下面的过程进行设置。

    1、 使用/usr/local/bin/ssh-keygen2程序生成密钥对。象上面谈到的,Ssh-keygen2程序自动在每个用户主目录下的.ssh2目录中生成密钥对。

    2、 改变目录到你的主目录下的.ssh2目录中。然后重命名公钥和私钥文件。如果你使用标准的1024位加密,该文件缺省的名称是id_dsa_1024_a和id_dsa_1024_a.pub。你可以自由地分发结尾是.pub的文件,然而,不是以.pub结尾的文件必须保密。其实,你应当确保该文件只能被你读取。你还应当重命名这些文件并跟踪它们。例如,如果你的用户名是test,并且系统名为noyas的话,你可以将他的公钥和私钥分别重命名为test.noyas和test.noyas.pub

    3、 然后建立名为identification和authorization的两个文件。文件Identification内有你自己的私钥的名称,文件authorization内有你允许进入你的系统的所有用户的公钥的名称。你可以在该文件中输入任何你想输入的公钥名称。

    4、 在文件identification中输入私钥的名称。正确的格式是:Idkey test.noyas

    5、 同伴之间交换公钥。请记住,私钥要自己保管好。

    6、 在你收到其他人的公钥后,请确保把这些文件存放在.ssh2目录下。然后,你必须在文件authorization中输入同伴的公钥名称。语法是:Key keyname.pub。每一项占一行。如果你在文件authorization中输入Sandi和Jacob的公钥,你的文件authorization将如下所示:

    key sandi.pub

    key jacob.pub

    7、 一旦你和至少一个同伴进行完以上的步骤,则用户间便可以使用公钥加密来进行SSH2验证了。

    技术提示:为了使这些步骤能够正常工作,必须运行sshd2的守护进程。请记住,sshd2守护进程通过自动传送公钥到所有申请的客户端来进行加密。每个用户负责建立彼此的信任关系来进行验证。你还应该保证DNS能够正常提供解析工作。

SSH 3.0 远程登录漏洞

    受影响的系统:

    SSH Secure Shell 3.0.0、- Red Hat Linux 6.1、- Red Hat Linux 6.2、- Red Hat Linux 7.0、- Red Hat Linux 7.1、- Sun Solaris 2.6 、- Sun Solaris 2.7、- Sun Solaris 8、- HP-UX 10.20 、- HP-UX 11.00 、- Caldera Linux 2.4 、- Suse Linux 6.4、- Suse Linux 7.0

    不受影响系统:

    SSH Secure Shell 3.0.1、SSH Secure Shell 2.x、SSH Secure Shell 1.2.x

    SSH Secure Shell 3.0.0存在一个远程安全漏洞。如果某个帐号的口令域中只包含两个或者更少的字符,远程攻击者就可以使用任何口令包括空口令登录进入这些帐号。很多Unix系统有一些缺省的锁定帐号。例如Solaris,很多管理帐号"lp","adm","bin"等。在/etc/shadow文件中的口令域为"NP"。在一些Linux系统中,一些锁定帐号的口令域为"!!"。如果这些系统正在使用SSH 3.0.0,那么攻击者就可能远程登录进入系统。潜在地可能获取root权限。

测试程序:

--------------------------------------------------------------------------------

[root@shiva /root]# cat /etc/shadow | grep "postgres"

postgres:!!:11515:0:99999:7:::

[root@shiva /root]# ssh -l postgres localhost

postgres's password:

Authentication successful.

Last login: Sat Jul 21 2001 09:09:21 -0700 from localhost

bash$ logout

Connection to localhost closed.

--------------------------------------------------------------------------------

临时解决方法:

    1. 禁止使用口令认证,使用公钥认证方式

    2. 只允许口令长度超过2个字符的用户登录,这可以通过在/etc/ssh2/sshd2_config中设置

     AllowUsers, AllowGroups, DenyUsers, 和DenyGroups关键字实现

    3. 为每个锁定帐号分配一个足够强度的口令

    4. 换用ssh 2.x

厂商补丁:

    SSH Secure Shell 3.0.1已经修复了这个问题。

    我们建议正在使用ssh 3.0.0的用户尽快升级到最新版本。

    您可以在下列地址下载:

    ftp://ftp.ssh.com/pub/ssh或http://commerce.ssh.com 
 

主目录 分目录

Copyright By「黑白网络工作室」2002 All Rights Reserve