1.开放源码有利于系统安全
2.开源操作系统类别
3.开源系统开源系统风险
4.德若特设计
5.OpenBSD3.6编译内核的码分方法
6.几个使用类似 BSD ports 软件包管理的 Linux 发行版
开放源码有利于系统安全
开放源码是近来人们的一个热点话题。这会对信息安全带来什么影响?开放源码和封闭源码相比,码分哪个更安全?本文作者明确提出:开放源码会改善信息安全。码分
近年来,码分随着Linux和Apache等开放源码软件受到越来越多的码分人的关注和喜爱,开放源码运动在世界范围内引起了一场风暴。码分宜春源码建站但是码分,我们也经常可以看到有人对开放源码软件的码分安全性表示怀疑:"所有的源代码都被黑客们看到了,还有什么安全可言?""开放源代码意味着黑客们可以找出代码中存在的码分所有缺陷。"有人甚至列出等式:"开放源码 = 打开信息系统之门 = 不安全"。码分
开放源码到底安不安全
那些认为开放源码不安全的码分人,一般是码分出于如下的考虑。
一、码分黑客可以找到其中的码分安全漏洞
这种观点成立的前提是:黑客们不会找出封闭源码软件中的安全漏洞。但是码分我们只需要到网上去查找一下与封闭源码软件相关的安全警告和安全建议,就会知道这明显不是事实。例如,年月,Todd Sabin在Bugtraq邮件列表上宣布,他发现了一个Windows NT的SYSKEY缺陷,而这个缺陷就是在没有源码的情况下(众所周知,微软不提供源代码),利用反汇编器发现的。实际上,大多数黑客们在破解程序时并不一定需要有源代码。
二、开放的就是不安全的
因为对大多数人来说,安全指的就是隐藏的、秘密的、不开放的。在加密学中有一句谚语:一个加密算法的安全不应当依赖于它是秘密的。历史证明,秘密的加密算法终究会被破解。现在的加密算法(如AES)大都是公开的,而其安全强度依赖于所用密钥的长度。这句话同样可以应用于一般的安全软件。算法可以被人采用反向工程攻破,协议可以通过分析技术去解析。隐藏的和秘密的东西最终会被发现并公布于众。因此,靠封闭和隐秘达到安全的目的,在很大程度上可以说是不可能的。
三、邮件编辑源码开放代码没人注意
有个例子,在PGP 2.6发布以后,有人就在Bugtraq邮件列表上宣布,在检查代码时发现,其中一个随机数生成器中有一个"臭虫"。这个错误很细小,在进行异或操作的代码中,却使用了赋值运算符号(=)。这表明,"即便代码开放了,也没有人会真正去检查"的想法是站不住脚的,在开放源码模型中,这样细小的错误都能被发现,所以说,严重错误或后门不被发现的可能性极小。
四、开放源码中可放置后门
这在理论上是成立的,但是如何在其中放置后门或陷阱?因为开放源码软件使用代码控制系统来管理代码树,而且有许多人在检查和分析代码,更重要的是,代码本身意味着作者的个人名誉。谁愿意冒险在开放的代码中放置后门而丧失个人名誉和声望呢? 对比而言,封闭源码的软件中更容易放置后门或者陷阱,在Windows操作系统中发现的NSA密钥即是有力的证据。
开放源码可以带来安全
封闭源码软件并不比开放源的软件的安全性好,相反,开放源码软件更有能力和潜力提供更好的安全,有以下例子证明:
● openBSD,目前世界上最安全的操作系统之一,是开放源码的项目。它是BSD Uinx的一个分支,安全是它的主要设计目标,它是在NetBSD的基础上,花了几十个人年的时间审查代码形成的。更为重要的是,它在缺省安装方式下,三年中从未出现过一个远程漏洞。
● Linux,这个信息时代的软件骄子,在年就已经占领了%的服务器市场。已经广泛应用在像Yahoo这样的性能要求较高的站点上,并且已经得到了IBM、HP等大厂商的wpf 教程 源码明确支持。
事实表明,开源软件比之封闭软件更具有稳定性和安全性。而且,开放源代码还会带来如下好处:
一、开放代码有助于快速修改错误
由于开放代码软件会得到世界上成千上万的开发者的审查,所以发现并修正它们的错误的时间很快。国外有人对Linux、Windows NT、Solaris三个操作系统做过统计,从发现其中的错误直到错误得到修正,不同的软件开发商所花的平均时间如下:
软件开发商 red hat microsoft sun
软件名称 linux windows NT solaris
改错平均时间 天 天 天
二、开放代码有助于改善代码质量
在典型的封闭开发项目中,开发者的个人责任和职业名誉是相对有限的,更重要的是,因为源码是封闭的,错误或失误可能会被开发者悄悄掩盖过去;相反,开源软件的开发者写的每一行代码都体现着自己的声望和名誉。混乱糟糕的代码会受到同行们的批评甚至讥笑。发布源码并让同行审查,这在封闭源码开发中是不可能的。
三、开源有助于促进安全代码开发技术
开放源码的编程者经常会就开发中遇到的问题交换想法和解决办法,他们乐于创新并实践有关代码安全的新理论,如果某个技术被发现有缺点,就会出现新的技术替代它,随着旧的安全性较差的代码逐渐被修正,新的代码的安全性逐渐得到改善;而在封闭开发中,软件的安全性可能会让步于商业利益。开发者们可能因为任务时间紧或是编程习惯等因素,而不重视采纳或创造新的安全代码开发技术。
开放源码并非百分百安全
以上这些并不说明开放源码就可以解决安全问题了,开放源码模型也有不足之处。
打补丁 ≠ 安全
有人认为,只要我们开放源代码,并对软件不停地审查代码和修改漏洞,最终这个软件会变成绝对安全的。显然,这种看法有失偏颇,因为它把软件看成是一个静止不变的事物。实际上,软件是tphp公式源码不断进化的,是动态发展的。通过调查Java的安全漏洞情况,我们可以看出,发现的安全漏洞会被修正,但是随着功能的增加,又会引进新的安全漏洞,显然只依赖于对软件打补丁,是达不到安全目的的。
多眼球效应 ≠ 安全
从安全角度来看,开放源码软件的一个主要好处是"多眼球效应",即众多的开发者可以审查代码,从而较快地发现和修改其中的"臭虫"。但是,发布源代码并不意味着就可以去除所有的"臭虫",而且,即使经过广泛审查的开源软件也可能存在重要的未被发现的"臭虫"。例如,被发现存在缓冲区溢出问题 的Wu-ftp(一个文件传输工具),它在公布之前,实际上已经由程序高手审查了它的代码。另外,单纯依赖不相干的外部人士检查安全相关的代码会带来很多问题。例如,在某些情况下,第一个发现错误的人可能不作声张,而把这个错误用于不良甚至是破坏性的目的。
开放的安全模型
安全系统不应当依赖于源码封闭,而且单纯的开放源码也不是万能良方,那么怎样才能达到安全目的呢?我们建议构建如下的开放安全模型:开放安全模型 = 开放的设计 + 安全代码技术 + 开放的源码 + 市场激励机制
开放设计
现在的信息发展趋势是系统体系结构具有高度可扩展能力。如果缺少安全功能设计,与现存的错误所带来的攻击相比,可能会导致更多的攻击。例如Web浏览器支持插件(plug-ins),因为通过开放设计,可以让同行们对设计进行审查,利用形式化理论,错误假设方法,以及阅读设计文档,可以发现设计中存在的错误,这是开发安全系统和软件的一个非常重要环节。
安全代码技术
现在来看,互动大师 源码计算机紧急事故反应小组(CERT)发现的多数错误都是由缓冲溢出问题引起的,因为好多软件是由C语言 + glib C库编写的,而它们提供的一些特性和函数都存在有安全漏洞。事实上,使用具有类型纠正检查特性的编程语言(如C++)即可防止此类错误。使用支持例外处理的现代编程语言也可以去除许多因为竞争条件导致的错误。
市场激励机制
国外曾经有所大学在国际互联网上作过安全评价试验,他们开放软件源码,但是后来并没有得到任何软件安全特性的反馈。这也说明了在开放源码模型中写代码对大多数人来说是很有趣的,但是读别人的代码则相反,枯燥乏味。开源模型中缺乏非开源模型中所具有的经济激励机制,如何吸引人来审查代码呢?这就要让市场激励机制起作用,一个比较好的办法是花钱雇人读代码。
开源操作系统类别
Unix-like类操作系统种类繁多,以Linux为代表。Linux家族拥有成千上万的发行版本,覆盖各种平台,支持所有文件格式和网络协议,开发者群体庞大。此外,FreeBSD、OpenBSD、NetBSD、DragonflyBSD、Darwin/OpenDarwin/PureDarwin、Minix、GNU Mach/GNU Hurd、L4/Fiasco/Pistachio、syllable等系统也属于这一类,它们同样在不同领域展现出强大的功能和适应性。 在Unix类操作系统中,主要包含了Opensolaris、AuroraUX、Plan9以及Inferno - Plan 9。这些系统通常在学术研究和特定领域中应用,提供了Unix系统的基本功能和特性。 Dos类操作系统则以Freedos为代表。Freedos是一款基于DOS内核的开源操作系统,提供了类似传统DOS环境的功能,适合于学习DOS命令集和探索早期操作系统。 Windows-like类操作系统中,ReactOS是一个比较有代表性的例子。ReactOS致力于构建一个兼容Windows操作系统的开源项目,为用户提供一个自由且兼容的环境,以实现对Windows应用的运行。 原创类操作系统包括House、KolibriOS、MenuetOS、HelenOS、Openvms等。这些系统独立于传统主流操作系统框架,提供了创新的操作系统设计理念和技术实现。它们在特定领域如嵌入式系统、小型设备和特殊应用中展现出独特的价值。扩展资料
开源操作系统(open source operating system) ,就是公开源代码的操作系统软件,可以遵循开源协议(GNU)进行使用、编译和再发布。在遵守GNU协议的前提下,任何人都可以免费使用,随意控制软件的运行方式。开源系统开源系统风险
开源系统风险在于其代码的开放性,这种特性既带来便利也为系统带来了风险。代码开放性使得系统更容易受到攻击,因为攻击者可以查看并理解系统的内部工作原理。以下是一些具体的开源系统及其面临的风险: PHP是一种适用于web的脚本语言,其代码的开放性允许开发者在web开发中灵活运用,但也使得其成为攻击者可能利用的目标,通过注入攻击或恶意代码植入来破坏系统的正常运行。 GNU Project和Linux是基于Unix的开源操作系统,它们的开放源代码允许用户和开发者深入系统层面进行修改和优化,但同时也增加了系统被恶意软件攻击的风险。攻击者可以利用这些操作系统中未被修复的漏洞进行攻击。 NetBSD、OpenBSD、FreeBSD和OpenSolaris也是基于Unix的开源操作系统,它们在安全性方面做出了显著改进,但仍存在被攻击的风险。攻击者可能通过利用系统中的漏洞进行入侵。 Symbian是移动手机的实时操作系统,其开源特性使其在移动安全领域面临挑战。攻击者可以利用这些操作系统中的漏洞来攻击移动设备,导致数据泄露或设备被控制。 Android是一个基于Linux的开源手机操作系统,其开放性使得开发者能够进行创新,但也增加了系统的安全风险。攻击者可能通过恶意应用或系统漏洞来攻击设备。 服务器Apache和Tomcatweb server作为web服务器和web容器,它们的开放源代码使其成为攻击者的潜在目标。攻击者可能通过利用这些服务器的漏洞来进行web攻击。 Mediawiki、Alfresco和RenovatioCMS等作为服务器软件和内容管理系统,它们的开放性使得开发者能够构建和定制系统,但也可能引入安全风险。攻击者可能通过利用系统中的漏洞来进行攻击。 WordPress、MongoDB、Eclipse等作为博客软件、数据库和开发工具,它们的开放性使得开发者能够快速开发和部署应用,但也增加了系统被攻击的风险。攻击者可能通过注入攻击、恶意代码植入或利用系统漏洞来进行攻击。 客户端软件如Mozilla Firefox、Mozilla Thunderbird和OpenOffice等,虽然它们是用户界面友好且功能强大的工具,但其开放性也使得它们成为攻击者的潜在目标。攻击者可能通过利用这些软件中的漏洞来进行恶意活动,如数据窃取或系统控制。 总之,开源系统的开放性为开发者和用户提供了解决方案的灵活性,但也带来了安全风险。为了降低风险,开发者和用户需要持续关注和修复系统中的安全漏洞,并采用安全最佳实践,如代码审查、安全编码和定期更新等措施。通过这些方法,可以有效地减少开源系统面临的风险,确保系统的安全性和稳定性。扩展资料
开源,(Open Source)全称为开放源代码。开源就是要用户利用源代码在其基础上修改和学习的,但开源系统同样也有版权,同样也受到法律保护。对开源系统来说,如果今后发现滥用开源产品或在开源产品基础上加以发展任何派生版本、修改版本或第三方版本用于重新分发,都将会受到法律的制裁,支付侵权补偿金。德若特设计
在网络安全问题备受关注的行业中,德若特设计为何能在OpenBSD的安全领域脱颖而出?答案在于他们的严谨态度和扎实的工作方法。他们采取基础且细致的策略,逐行审查源代码,寻找潜在问题。这个由到人组成的团队,耗时长达4年,深入研究了OpenBSD那兆的源代码。一旦发现错误,他们不会草率修改,而是深入探究问题的根源,力求一次解决所有同类错误,他们总计找到了大约个普遍存在的问题。 同时,德若特强调,优化程序结构是提升安全性的关键。他们认为,过于复杂的软件往往难以保证安全,因此OpenBSD的名程序员致力于简化程序设计。尽管OpenBSD的源码只有微软Windows和Office源码的1/4大小,后者是全球最盈利的软件产品,但OpenBSD却凭借精简的代码实现了高效和安全的平衡。 德若特的设计策略不仅关注细节,更注重整体的系统优化,这种对安全的执着和对复杂性问题的深入剖析,使OpenBSD在安全领域赢得了显著的声誉。这表明,即便面对复杂的软件世界,坚持基础工作并追求精简,同样可以取得显著成果。扩展资料
希欧·德若特(Theo De Raadt),著名的程序的设计员、黑客,OpenBSD与OpenSSH的创始人。OpenBSD是当前世界上最安全的系统。OpenBSD3.6编译内核的方法
首先要下载安装所需的包
在官方发布的OpenBSD光盘上可以获取源代码,当然也可以从网上下载src.tar.gz、sys.tar.gz、ports.tar.gz文档
cp /home/jjp/src.tar.gz /usr/src/
tar zxvf src.tar.gz
cp /home/jjp/sys.tar.gz /usr/src/
tar zxvf sys.tar.gz
cp /home/jjp/ports.tar.gz /usr/
tar xzvf ports.tar.gz
可以cvsup到最新的文件,首先要安装cvsup。
pkg_add cvsup-.1g-no_x.tgz
装完以后需要自己手工生成配置文件,不象FreeBSD那样可以拷贝一个example。
cd /usr
mkdir cvsup
cd cvsup
编辑cvsup-supfile
mg cvsup-supfile
#注意需要用mg,不是vi什么的
[code:1:e1bfbc9]
#Defaults that apply to all the collections
*default release=cvs
*default delete use-rel-suffix
*default umask=
*default host=cvsup.uk.openbsd.org
*default base=/usr
*default prefix=/usr/cvsup
#If your network link is T1 or faster, comment out the following line.
*default compress
OpenBSD-all
#OpenBSD-src
#OpenBSD-www
#OpenBSD-ports
#OpenBSD-x
#OpenBSD-xf4
[/code:1:e1bfbc9]
然后执行cvsup
cvsup -g -L 2 cvsup-supfile
OpenBSD的内核配置文件因为支持多平台,所以相应平台的配置
文件就存放在/usr/src/sys/arch/$ARCH/conf/里,这里的$ARCH就是你所用的平台名称。以i为例介绍对内核有优化作用的选项。
cd /usr/src/sys/arch/i/conf
cp GENERIC mine
vi mine
处理器及I/O部分有:
option I_CPU
这个很简单,与FreeBSD一样
#option GPL_MATH_EMULATE
别把它打开除非你的机器老得连FPU都没有
option DUMMY_NOPS
把开机延迟关掉
option UVM
高级虚拟内存系统,在系统进行交换时提高速度所用
#option MFS
这个也与FreeBSD含义一样,用于建立内存盘以提升数据访问速度
网络部分有:
option NMBCLUSTERS=""
与FreeBSD含义一样,提升高流量时的网络操作速度并提高内核稳定性。如流量低可用或
另外,把不需要的网卡设备都注释掉,这样可以减小内核容量提升启动速度。
磁盘设备部分有:
option BUFCACHEPERCENT=
保留%的系统内存作为文件系统的缓存,顾名思义,根据实际系统内存数来取值,推荐取低一些的值
另外,与网络部分一样,把不需要的磁盘设备(scsi、ide)都注释掉。
配完了内核,依次打:
cd /usr/src/sys/arch/i/conf ;
config mine
cd ../compile/mine ;
make depend make
cp /bsd /bsd-old ; cp bsd /bsd
重启后就可以直接用刚才编译好的新内核了,如果它有任何问题,可以重启后在boot的提示符上输入刚才换名的旧内核,命令格式为:
boot boot device:/kernelold
把device换成你存放旧内核的盘设备即可。顺便提一下,你可以在上述命令后加上一个-c选项进入User Kernel Config界面,它提供与FreeBSD下一样的配置功能。
几个使用类似 BSD ports 软件包管理的 Linux 发行版
四大BSD系统均采用port系统管理第三方软件包,此系统将源代码从软件包官网下载,或由系统维护者为方便和避免链接失效而缓存源码包。
FreeBSD首先采用此模式,随后NetBSD参考其方式创建支持不同操作系统的pkgsrc,OpenBSD源自NetBSD,推出了自己的port系统,而DragonflyBSD衍生自FreeBSD,起初使用pkgsrc,后来借鉴FreeBSD的port系统,形成了独特的dports。
port系统管理软件包无需存放二进制文件或源代码,节省空间。构建脚本编写简单,方便定制,通常采用Makefile,简化配置,仅需定义几个变量,即可通过包含port系统通用makefile完成构建。
此系统优点被多个Linux发行版所采纳,包括Spack、MacPorts和Homebrew。尽管Slackware是一个二进制发行版,其SlackBuilds集合类似于port系统,但其使用方式推荐下载文件(可通过sbopkg工具辅助),未提供port系统体验。
总结而言,尽管Gentoo和Arch作为BSD系统中源码包派别和二进制包派别的代表,但CRUX可视为简化版的Gentoo,而Void、NixOS和Guix则代表更稳定、更高级的Arch版本,处在发展初期的Chimera Linux也颇有趣味。
建议Linux发行版选择困难症患者可轮流体验,仅限桌面使用,在虚拟机环境中操作为宜,而服务器领域仍推荐使用Debian和Ubuntu。
参考: