当将计算机连接到Inte.net上的时候,那么计算机就对整个网络开放连接许可。这在通过网络为用户提供网 络服务的同时,也带来了计算机系统会遭受非法使用或破坏的危险。然而既然要对外提供服务,就只能通过维护和管理来增加 安全性,而不能因为害怕风险就不提供网络服务。因此安全问题是连接到Internet的网络系统需要特别注意的问题之 一。
毫无疑问,FreeBSD是一种具备相当高的安全性的操作系统,提供了各种不同的访问控制、加密和认证等安全 特性。然而,出于使用方便的考虑,FreeBSD并没有将安全问题看作唯一的需求,有些传统Unix提供的服务,虽然 会带来一定的安全问题,但也不能简单的屏蔽。假如需要,可以根据具体情况堵上这些具备轻微危险的漏洞,进一步增强安全 性。
FreeBSD不但能对自己系统提供安全保障,也能用作提供网络安全的工具。它的网络能力非常强大,能用于设 置功能全面的防火墙系统,保障网络内其他计算机系统的安全性。
网络安全的问题随着Internet的发展,也越来越受到人们的关注。这主要原因是由于Internet和Unix 是一个开放的系统,所有的使用者都能对系统进行研究并提出问题,这样就针对安全性提出了很多问题。在Internet 上也发生过相当多的安全问题,使得安全问题进一步为大家所关注。如果基于此就对Internet缺乏信心,也是 不必要的,Internet虽然不是一个安全性很高的网络系统,然而也不是象想象的那样不可信赖的,主要是因为Internet 的开放性,使得很多安装问题比较公开。而只要正确使用它,同样也能保证安全性。
对待安全问题有两种不同的态度,一种为封闭的态度,认为将问题隐藏起来是最好的解决安全问题的办法。隐藏起来 不被发现当然就避免了安全问题,然而人们也没有办法去证明不会有人发现这个问题,或者说保证掌握安全漏洞的人不会出于 各种考虑而利用这个安全问题。很多商业软件都采用这种态度,事实上很多软件本身安全性很低,到了安全专家和攻击者那里 ,其漏洞就很容易被发现。另一种更为积极的态度,认为安全问题不应该隐藏起来,只有通过从不了解到了解并解决安全问题 的不断的、动态过程,才能真正保证系统的安全性。由于这种态度,一方面系统的使用者至少可以了解哪些是安全的,哪些存 在问题,从而避开问题而不必担心被欺骗,同样采用这种方法开发的软件,其安全漏洞能被很快发行并被纠正,如果一个软件 经过了众多Internet使用者的考验,其中不乏专家,使用者就不必担心其中还有十分严重的安全漏洞了。
Unix用户大部分都是持后一种态度的Internet使用者,不断学习是网络安全的一个独立的、而又非常重 要的方面。尽管网络上的攻击者能够从Internet上获得关于网络安全漏洞的技术方法,同样管理员也能获得这些技术 ,并能及时弥补漏洞。事实上很多导致系统漏洞的问题其实是Internet上早以解决的问题,通过参加相关的安全组织 或通过网络定期查阅其报告,就能不受这些系统安全漏洞的影响。
Internet上最著名的一个安全组织是CERT,它提供安全方面的建议,并通过Internet发布报告 ,这些报告内容包括各种操作系统的问题和漏洞,以及相应的解决办法。其主页为http://www.cert.org ,建议所有关心网络安全的使用者都经常查阅他们提供的资源,从中选择与自己使用的系统相关的内容。
很多网络安全问题发生的原因不在于入侵者攻击手段的高明,而是由于系统管理员的不称职造成的,而合格的系统管 理员能跟踪自己操作系统暴露出来的问题,并根据Internet上的建议堵上这些漏洞,国外的很多公司还聘用专业的网 络安全顾问,这些顾问的任务之一就是及时发现系统问题,提示管理员进行系统修正。
为了区分合法用户和非法使用者,就需要对用户进行认证。标准的Unix认证用户的过程是,用户输入口令,口令 传输到系统程序中,由系统程序对口令进行加密,并与系统中的口令密文进行比较来判断口令是否正确。在这种方法中,如果 要通过网络认证,就要将口令以明文形式在网络中传输,因此就存在被窃听的危险。
此外,流行的认证方式还有S/key,Kerberos,Radius等方式,其中S/key是使用一次性的 口令,这样即使口令被窃听也无关紧要,其然而使用起来却比较烦琐,使用S/key的用户可能需要打印出长长的口令来帮 助输入正确的口令。Kerberos和Radius认证方式能保证口令不被窃听,但他们是在服务器和客户机都支持相应 的认证方式的条件下才能使用,因而需要更复杂的设置。
当前Kerberos V认证方式比较流行,Windows 2000中也将采用这种认证方式。但在FreeBSD 中提供的是Kerberos IV认证方式。需要注意的是,Kerberos V和Kerberos IV差异 较大,是两个互不兼容的独立版本。
通常使用的加密算法为DES算法,经实践证明它是一种很有效加密算法,虽然Unix上使用的密钥长度为56位 ,还不足够安全。因为在Internet上,已经有人通过多台计算机合作计算,通过几个月时间破解了使用它加密的内容 。但对于一般的安全性,加上选择得当的口令,56位的DES算法也足够用了。如果要提供更高的安全性,可以使用更长的 密钥,或者使用另外的算法,如IDEA算法、三重DES算法等。
与安全有关的算法还包括一类单向散列算法,如MD2、MD4、MD5等,这些算法的目的是用于从已有数据中生 成与其他数据不同的少量标识数据,从而区分不同的数据,这样就能通过这些标识数据分辨不同数据。由于不同的数据使用上 面的算法生成的标识数据只有极少的可能相同,这些算法一般被用于数字签名,用于保证网络中的文件传输没有发生错误。这 些算法也能用于口令认证,其中MD4用于认证时存在安全性不高的问题,因而用于认证时一般使用MD5算法。
FreeBSD缺省使用MD5算法用作口令认证,这并不影响系统的正常执行。
对于DES等算法来讲,加密和解密是使用同一个密钥,这个密钥必须秘密保存,一旦泄露就不能保证数据的安全, 但要让其他使用者获得加密的信息,就必须告诉他这个密钥,这样就很容易泄露密钥。因此在加密传输中,密钥的传输是一个 与数据安全非常相关的问题。另一种不同的思路是使用多个密钥,例如两个密钥,一个加密过的数据只能由另一个来解密,其 中一个密钥由用户保存,为私有密钥,另一个向所有要进行加密传输信息的使用者公开,称为公开密钥。当他们要向这个用户 发送信息时,能使用该用户的公开密钥加密信息,那么只有这个用户能使用自己的私有密钥能解开信息。同样这个用户用自己 的私有密钥加密信息,那么其他用户只能使用他的公开密钥才能解开,这样就保证了信息是由这个用户发出的,而不是其他人 的伪造信息。最著名的公开密钥加密算法为RSA算法。
使用公开密钥算法进行传输,就能避免数据被窃听的问题,常用的使用公开密钥算法的软件有ssh,pgp,以及 其他使用SSL的应用程序。
加密算法的选择是一个非常关键的问题,由于加密算法涉及非常高深的数学问题,因此不是任何人都能发明一个加密 算法。有的人以为使用一个不公开算法本身的专有加密算法会增加安全性,其实不然,未经验证的加密算法很可能存在漏洞, 在专业密码学家那里有很多种方法可以进行破解,在密码学领域内有很多失败的例子,即使是非常专业的密码学专家,发明一 种加密方法也不是一个简单的事情,未经验证的算法在其他专业密码学家的破解下,很容易面临失败的危险。因此,应该尽量 选择已被证明是成熟的加密方法。
未完,待续。。。