FreeBSD认证与加密
当将计算机连接到Internet上的时候,那么计算机就对整个网络开放连接许可。这在通过网络为用户提供网络服务的同时,也带来了计算机系统会遭受非法使用或破坏的危险。然而既然要对外提供服务,就只能通过维护和管理来增加安全性,而不能因为害怕风险就不提供网络服务。因此安全问题是连接到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的应用程序。
加密算法的选择是一个非常关键的问题,由于加密算法涉及非常高深的数学问题,因此不是任何人都能发明一个加密算法。有的人以为使用一个不公开算法本身的专有加密算易做图增加安全性,其实不然,未经验证的加密算法很可能存在漏洞,在专业密码学家那里有很多种方法可以进行破解,在密码学领域内有很多失败的例子,即使是非常专业的密码学专家,发明一种加密方法也不是一个简单的事情,未经验证的算法在其他专业密码学家的破解下,很容易面临失败的危险。因此,应该尽量选择已被证明是成熟的加密方法。