我听说基于Linux的系统在安全性方面更好。显然,它们没有病毒,不需要防病毒软件。甚至我的大学都宣称这一点-他们拒绝在服务器上安装Windows,这实在令人遗憾,因为我们想使用.NET框架创建一些网站。
我能看到Linux更加安全的唯一原因是因为它是开源的,因此从理论上讲bug会早日被发现并修复。
我对操作系统的工作方式有些了解,但并没有真正研究Linux和Windows如何实现其操作系统。有人可以解释一下使基于Linux的系统更安全的区别吗?
我听说基于Linux的系统在安全性方面更好。显然,它们没有病毒,不需要防病毒软件。甚至我的大学都宣称这一点-他们拒绝在服务器上安装Windows,这实在令人遗憾,因为我们想使用.NET框架创建一些网站。
我能看到Linux更加安全的唯一原因是因为它是开源的,因此从理论上讲bug会早日被发现并修复。
我对操作系统的工作方式有些了解,但并没有真正研究Linux和Windows如何实现其操作系统。有人可以解释一下使基于Linux的系统更安全的区别吗?
Answers:
我不认为操作系统是“安全的”。操作系统的特定配置对攻击具有特定程度的抵抗力。
我可能会因为在这里成为“ Microsoft辩护律师”而被激怒,但是这个线程非常不赞成关于“ Windows”的概括。
Windows 1.0-3.11、95、98和ME基于DOS。从正式意义上来说,这一系列操作系统没有任何安全性(受保护的地址空间,内核/用户模式分离等)。幸运的是,今天我们在谈论“ Windows”时,并不是在谈论这些操作系统。
自1992年首次发布以来,Windows NT家族的操作系统(Windows NT 3.5、3.51、4.0、2000,XP,2003,Vista,2008和7)已具有非常合理的安全系统“设计为”。设计时考虑了TCSEC的“橙皮书”,虽然并不完美,但我确实认为它的设计和实施合理。
Windows NT从一开始就是“多用户”(尽管直到Windows NT 3.51时代的Citrix WinFrame,多个用户同时从同一服务器接收图形用户界面的功能才出现)。内核/用户模式分离,地址空间保护依赖于MMU和CPU的基础硬件功能。(我会说它非常“ Unix-y”,但实际上它非常“ VMS-y”。)
NTFS中的文件系统权限模型非常“丰富”,尽管相对于“继承性”(或缺乏继承性)有一些缺陷(请参见如何解决NTFS Move / Copy设计缺陷?),但直到最近十年左右,Unix风格的操作系统已经实现了类似的功能。(Novell NetWare在这一点上击败了微软,尽管我认为MULTICS都击败了...>微笑<)
服务控制管理器(包括用于控制对启动/停止/暂停服务程序的访问的许可系统)的设计非常好,并且与各种“ init.d”脚本“体系结构”(更像是“绅士协议”)相比,在设计上更加强大。 “)在许多Linux发行版中。
执行对象管理器(请参阅 http://en.wikipedia.org/wiki/Object_Manager_(Windows)),它与/ proc文件系统和/ dev文件系统相结合,具有ACL模型,该模型与文件系统类似,并且比我在任何Linux发行版上都知道的/ proc或/ dev的任何权限模型。
尽管我们可以讨论注册表的优缺点,但注册表中密钥的权限模型远比对/ etc目录中的文件设置权限的模型更为精细。(我特别喜欢Rob Short的评论re:注册表在他的“ Behind the Code”访谈中:http://channel9.msdn.com/shows/Behind+The+Code/Rob-Short-Operating-System-Evolution Rob最初是Windows注册表背后的主要人物之一,我认为可以肯定地说他不是一定很高兴,结果如何。)
Linux本身只是一个内核,而Windows更类似于Linux发行版。您正在比较苹果和橘子,以进行比较。我同意Windows比某些基于Linux的系统更难以“简化”。另一方面,某些Linux发行版也附带了许多“废话”。随着Windows各种“嵌入式”风格的出现,有可能(尽管不是向公众公开)构建行为与Microsoft默认值不同的Windows“发行版”(不包括各种服务,更改默认权限等) 。
Windows的各种版本都有其选择不当的默认设置,允许未经授权的用户获得特权的漏洞,拒绝服务攻击等。Unix内核(以及许多默认情况下以root身份运行的基于Unix的应用程序)具有同样的问题。自Windows 2000以来,Microsoft做了出色的工作,使应用程序的划分变得更加容易,以最小特权运行程序,以及删除了操作系统不需要的功能。
简而言之,我想我想说的是,就安全性而言,针对您的需求的给定操作系统的特定配置比您所使用的操作系统类型更重要。Windows和Linux发行版在安全功能方面具有非常相似的功能。您可以在任何一个OS中应用可靠的安全技术(最小特权,可选组件的有限安装,加密安全的身份验证机制等)。不管您实际上是否做,这都很重要。
不知道文件权限比较...当我是UNIX / Linux管理员时,NT4的文件ACL比UNIX / Linux传统的“ 777”风格的权限要细得多。当然,权限并不是全部,而且我敢肯定,即使默认情况下未实现,现代Linux发行版也至少可以提供细粒度的ACL。在我看来,sudo和root概念在UNIX中一直存在,尽管Windows一直在稳步添加这些概念,并且现在可能差不多。
我自己的解释是,由于Linux内核代码及其许多驱动程序和实用程序都是开放的-可能会对其进行更广泛的审查,并且更频繁地对其进行修复,以解决可能导致黑客可以利用的远程漏洞的编码错误。无论如何,从理论上讲,既然Linux不是公司所有,它可以比公司更全面地探索安全目标。企业必须赚钱;而开源组织根本就没有这个限制。
进入Linux系统并简单地关闭整个窗口系统,RPC守护程序等都非常容易-您可以将基于Linux或BSD的系统减少到一个或两个开放端口,而最少安装软件包,并且仍然有一个非常有用的系统非常容易。这可能与UNIX作为开发人员的操作系统有关。一切都构建为模块化,而不是过度互连。这将导致可配置性更高的系统,您可以在其中轻松删除不相关的内容。我认为以这种方式强化Windows服务器并不容易。
OpenBSD小组将这一概念发挥到了极致。该程序的主要目标之一是检查每一行代码是否存在安全漏洞。证明就是在布丁上,由于对细节的近乎狂热的关注(我用这个词来形容),多年来,OpenBSD的漏洞数量非常之少。
公司虽然制作了出色的软件(在我的书中,MSSQL,Exchange和Windows Server 2003都很出色),但它们的目标却不同。
我认为,如果配置得当,则基于Windows的系统比Windows系统更安全。一些原因是:
透明和丰富的简单网络工具:例如,Linux管理员通过在shell上键入“ iptables -L -n”很容易查看当前的防火墙配置。您还可以通过从其他Linux机器运行“ nmap”来查看机器上打开了哪些端口。这使生活变得更加轻松,因为您可以非常准确地指定允许访问哪些端口以及可以从哪些地址访问,等等。
一处的文本日志文件:一处“ / var / log”的基于文本的日志文件易于备份和分析。诸如logwatch之类的工具也可以监视这些日志文件并通过电子邮件向您发送重要的信息,这使事情变得非常容易。我们甚至可以编写自己的工具来分析日志文件并查找我们感兴趣的信息。如果我们不希望日志出现在同一服务器上,甚至可以将日志导出到远程syslog服务器。
不用担心病毒:Linux中的病毒较少,是因为基于Linux的系统较少,还是因为所有用户都喜欢Linux,或者是因为Linux更安全。原因无所谓。如果最终Linux的病毒威胁较小,那么对Linux来说是一件好事。我亲眼看到人们在同一台计算机上安装了两个防病毒,反间谍软件和反广告软件。所有这些保护工具都会占用大量CPU和内存。
支持多种编程语言:在Linux中编写代码非常容易。C,C ++,Python,Perl,Java等可以正常工作,而无需安装任何其他软件包。(如果您安装了DVD附带的Fedora这样的大发行版,则它可以提高安全性,因为我们可以通过编码执行重复的任务。因此,如果出错并且存在问题,则所有帐户都将存在问题,并且很容易检测和修复。如果我们必须手动对大量的帐户/目录进行相同的更改,我们可能会犯一两个错误,并且可能需要很长时间才能发现此类错误。我们也可以使用代码纠正错误并查找简单的错误。由于所有配置文件,用户信息文件,日志文件等都是文本形式,因此无论我们想要实现什么,都非常容易编写代码,并且有很多方法可以完成相同的工作。
开源代码:由于可能有很多人看过代码,因此很少有间谍软件/广告软件是Linux附带的应用程序的一部分。如果安全性对于某些服务非常重要,您还可以查看源代码,并查看其工作方式。如果您确切知道它是如何工作的,那么您就会知道它的局限性以及何时打破。实际上,如果存在众所周知的安全限制,这些限制将在手册页,软件包网站以及配置文件中的注释中进行记录。开发人员可以毫不犹豫地告诉您,如果您在这种情况下使用我们的工具,那将是有风险的。对于销售软件的组织来说,说出软件的局限性可能并不有利可图,这会使他们的软件看起来很糟糕,并可能减少销售/利润。
自由和互操作性:尽管这与安全性无关。对于需要考虑成本的大学,基于Linux的系统要比基于Windows的系统经济得多,并且无需购买OS许可证以及安装OS后将安装的其他软件的许可证。就互操作性而言,我们可以从Linux机器连接到其他OS并轻松共享文件。在Linux中,我们可以挂载许多文件系统,包括FAT,NTFS,HFSPLUS。我们可以使用ftp,http,ssh,samba,nfs等共享内容,所有这些内容都可以安装或可以使用一个命令安装。其他OS通常仅提供一种共享内容的选项。
但是如果配置不当,基于Linux的系统可能会引起更多问题,那么您可以想象。许多用户可以同时登录到计算机,几乎可以通过shell进行所有操作。万一防火墙配置不正确,很容易留下后门和木马。攻击者可以删除日志文件,也可以对其进行篡改以隐藏其踪迹。攻击者可以在受到攻击的计算机上进行编码,因为一旦攻击者具有shell访问权限,所有编辑器,编译器,调试器都将立即可用。只能从用户帐户运行所有服务器ftp,http,而不能在安全端口(1-1024)上运行。因此,攻击者可以下载http服务器代码,进行编译,然后在端口6000上运行http服务器,以使其看起来像X Server。
因此,如果管理员知道自己在做什么,或者至少在进行一些新更改之前费心查找手册页和文档中的信息,那么Linux系统将更加安全。
透明性
ps auxf
,您知道在哪个帐户下正在运行哪些服务。netstat -lnp
,您知道哪些程序打开了哪些TCP端口。iptables -L
,您知道防火墙有什么规则。strace
或lsof
检查过程的活动性。ls -lah
或,tree -pug
并且您确切知道完整文件夹具有什么所有权和权限。/var/log
,可以通过简单的“搜索文件”进行检查。/etc
。搜索文本文件,对其进行归档或应用版本控制(subversion / git)非常容易。清除权限系统
ls
彩色模式下)。$HOME
和/tmp
。进阶安全性选项
sudo
,可以授予用户和进程仅运行一些管理命令的权限。单点进入和特权提升
sudo
或联系首先检查PolicyKit的DBus服务。可以使用单个“搜索所有文件”命令找到这些SetUID程序。ssh
。这是带有公共/专用密钥检查的SSL隧道。安全的后台流程
良好的审核工具
nmap
,ncat
进行安全审计容易。良好的安全更新
lsof | grep =
)。此处提到的所有内容或所有主流Linux发行版都已交付,即Red Hat,Debian,openSUSE或Ubuntu。
Linux从一开始就被设计为多用户系统,因此它具有比Windows强得多的权限系统。它还为您设计的,使其不具有管理权限(root用户访问权限)运行,因此所有程序均设计为不需要这些权限。这意味着,如果您的帐户遭到入侵,整个系统就不会受到威胁。
部分原因还可能是由于运行Linux的人(通常来说)技术水平更高,因此犯下导致计算机被黑客入侵的愚蠢错误的可能性较小。
从最近所有软件的安全修复来看,我认为问题不在于软件,而在于运行Windows的台式机数量。这是创建僵尸网络的目标。如果Linux在桌面空间上真正增长,那么它也会受到更多的攻击。我认为Mac OSX已经看到了这一点。
没有比其他操作系统更安全的操作系统了。这完全取决于管理系统的人员的知识。
多年来,我已经与一些非常有才华的* nix管理员见面并一起工作,他们可以配置非常安全的* nix服务器。但是,将它们放在Windows主机之前,他们根本不知道如何锁定计算机。同样的道理,我对保护Windows主机的了解很多,但是把我放在* nix框的前面,我不知道自己在做什么。
两种操作系统都不比其他操作系统更安全。当然,我们可以讨论一下平台的历史,并用它来讨论哪种平台随着时间的推移会更加安全,但是我们不是在谈论10年前的* nix操作系统,而是将Windows NT 4部署到生产环境中就是。我们正在谈论现代操作系统(或者至少应该如此),并且可以更好地保护那些操作系统。
我看到有人回答说关于进入Windows防火墙的数据包比Linux防火墙更多地涉及操作系统的部分。向他提问的是,到底谁信任主机上运行的软件防火墙?这就是端点/前端防火墙的用途。为了保护网络。正在运行服务的主机公开了服务。确保服务不会受到损害是主机的工作。网络设备的工作就在它前面,以防止其他数据包从Internet到达主机的其他服务。
一旦网络得到适当的保护,一切都取决于主机上运行的应用程序的保护程度。该应用程序是否有任何可以利用的缓冲区溢出?公开的应用程序中是否有任何途径可以进入操作系统并以某种方式获得更高级别的权限?如果不是,那是一个安全性很高的应用程序。如果有,那么您就需要解决一个问题。
如果有人不考虑在其数据中心中使用其他操作系统,这就是无知的迹象(适用于所有Linux商店和所有Windows商店)。两种操作系统都有用途,应该照此使用。两者都不比另一个更好或更坏。(是的,在我们的环境中,我们有几台Linux机器来处理生产服务。)
无需诅咒您的大学使用linux服务器,就如AdamB所说,对于您的特定要求,请使用Mono(www.mono-project.com)。通常,对OS感兴趣的教授更喜欢linux,即使是任何OS爱好者也都更喜欢linux,因为人们出于简单的好奇心以实际的方式了解事物的工作原理。
linux现在遵循DAC(自由访问控制),它是一种用于访问控制的更智能的系统。如其他答案所述,是的,Linux是多用户的,因此访问控制系统比其他系统要好。
但是,您所指的安全性看起来像服务器安全性,与其说是操作系统问题,不如说是整个服务器网络问题。我所说的是防火墙访问控制列表,路由器等。更新是免费的,终身的。它的开放性使其经过了很多测试,这非常重要。
除了安全性之外,经济上的可行性使linux成为服务器的最佳选择,因为服务器很少,但是应用程序可以运行或托管服务。这些应用程序很好地移植到了它们上。例如-Apache。
我认为不仅仅是安全性,还有其他因素,使您像大多数其他大学一样,选择在服务器上使用linux。
尽管这里有很多不错的答案,但我还想补充一点,没有安全操作系统之类的东西。
众所周知,如果一个人创建了一个“安全”平台,那么另一个人会随着时间的流逝在该平台上发现漏洞。
我同意Evan的前两句话最能概括OS安全性:
我不认为操作系统是“安全的”。操作系统的特定配置对攻击具有特定程度的抵抗力。
因此,如果我们比较GNU / Linux,BSD系统(免费/开放/网络),Microsoft,Windows,Mac OSX,Symbian,PalmOS,Cisco IOS,AIX,QNX,Solaris,z / OS或任何其他版本,都没有关系。其他运行诸如电视,MP3播放器,微波炉等的“操作系统”。
这些中的每一个都具有整体的一部分,具有被确定的个人利用的能力。
因此,大多数供应商都提供了有关如何设置其系统以使其配置尽可能安全的白皮书。这意味着使用其他技术来最小化表面积。
例如:
关于框架的操作系统安全性的事实不仅仅是内核类型的问题。每个框架确实都有其合规的安全机制。Microsoft Windows中的多用户帐户规范在大规模部署方面确实提供了更大的灵活性,但是使用Linux,您可以控制tee –权限和委派的来龙去脉。
.NET Framework安全级别主要与组策略,powershell和netsh控制台设置有关。原因是内核在低级访问参数下进行遥测,并在内存中具有动态访问请求。Linux框架通常需要类似的关注级别,但是它主要与您在配置语言时指定的标志有关。正确配置的Linux被证明比Microsoft Windows配置的安全性更高。尽管处于“体面”的配置水平;这些工具可以直接通过IIS,并使用特定的GUID直接进入您的服务。总体而言,Linux比
要点:
inodes and NTFS index primers and permissions in Windows (including registry)
are easier to sift through than an EXT hardnened Linux
protocol traversal within Linux for exception handling are easier to find
than a solid configured Windows Firewall.
cache indexes within ASP.NET are easier to violate than cache management
technologies which are well handled within GNU and C++ libraries
they are practically built for parallel systems now.
SQL parse queries, have been proven over and over again; MySQL is faster.
than MSSQL, though Oracle has been pushing the belt. Transactional
security is proven to be more secure on Windows, but for performance
and sheer flexibility shows that MySQL should be used or something
along the lines of a iSQL or NSQL (not SQLAB like Berkeley SQL which
MSSQL is based on)
Gateway permissions, Linux has an amazing ability to fondle packets and tiny
little things that Windows can only put into sorting bins. This being
said, if you are running a Windows network, you have more network auditing
than a Linux network because the packages are easier to apply walls to
than DLL files and protocol requests.
Surface layer GUI, .NET Framework offers strict field definitions; while Linux
allows intense PCRE and other Regular Expressions.
政府职位:
OWASP proves over and over again that it is harder to crack a hardened Linux Server
than it is to crack a hardened Windows Server. Why? Because the firewall and Group
Policy does not allow as far a tuned key for aspects of the closed source framework
within ASP.NET; Linux will let you choose a color for every letter on your command.
NIST Shows over time that SQL management permissions are harder to parse with Windows
while Linux PCRE makes it harder to bypass SQL queries whether it be within a GUI or
a Web Interface.
Carnagie Mellon shows that ASP.NET can hold higher regulations because it is built
in a more module based context which employs the use of MVC frameworks and can potentially
have a higher restriction. Meanwhile PHP and Java show that they are incredibly robust
with their Obfuscation and encapsulation methodologies.
个人意见:
每个操作系统都有可能比现成的其他操作系统更安全。通过对与Linux或Windows具有更高安全性的框架进行原始比较,我不得不说,Web安全的主要部分是使用最不兼容但效率最高的框架。这样,就很难锁定本机硬盘驱动器访问权限和库句柄。这样,您的操作系统顶部便有了一个焊接碗。正如Evan所说,具有NTFS和/ proc或/ dev权限。如果您使用无法与之交谈的东西;很难破解。
我从Web开发中学到的是,永远不要低估您的框架。.NET有权为SQL Server群集创建共享的已安装卷和控制机制;而Apache Source可以在使用Linux的操作系统上执行相同的操作。尽管我不得不说,这是一个相当不错的问题,Linux允许在各个方面的控制以及多语言限制和监视方面提供更高的安全性。Windows具有高级逻辑调试接口,具有强大的审核和日志记录功能。两者都是可比较的,最终缩小为“性能如何-您将其锁定”和“那里有多少铃铛?” 在框架内。Apache具有更多的附加安全性提升;
目前,与Linux或Windows上的PHP相比,很明显,可以在Linux操作系统中使用更多扩展。Windows与PHP具有不同的权限管理级别,这使得管理目录和文件访问更加困难。在Apache之内,例如XAMPP,LAMPP或WAMP,考虑到Windows对防火墙的限制更容易违反,因为与Web浏览器共享相同的隧道规则,因此我认为Windows的安全性要差一些。另一方面,Linux可以使用应用程序池和进一步的数据包级安全机制,这些机制要复杂得多。Windows将要求您使用操作系统的所有方面来使网络更安全。
具有最新SEC_ATL组合的ASP.NET的Windows上的IIS(在Microsoft服务器上,而不是Windows客户端上)也非常安全。
您可能只想单独使用Apache,就可以在Linux上运行它来启用更高和更低级别的驱动程序,SMIME,编解码器和数据包级别的安全性。Windows将要求您安装覆盖安全性机制,否则将使您的通信量比运行数千台服务器时所需的流量多一点。
使用Linux时,内核越纤细,并且对于网络安全性越是最佳,那就越好(例如将Apache与NSLUG融合在一起)。
使用Windows,您更喜欢为ASP.NET框架编程Powershell模块和附加的覆盖安全性,以及将组策略配置为USGS,因为在大多数情况下,它确实确实需要它来阻止Linux将自动拒绝而不考虑的流量关于。
同样,它们可以变得强大。即时可用的Linux发行版将比仅通过向导设置的未配置的Microsoft Windows Server强。
随着时间的流逝,Linux在安全性游戏中将超越Windows。今天,Debian 3服务器仍然比Microsoft Server 2008 R2更强大,并猜测它们可以在不重建内核的情况下支持相同的技术。Debian仍然可以吸烟,而且我亲眼已经看到了。
尽管正如我之前已经说过的那样。它取决于您与之合作的员工以及您对细节的关注。在大型服务器网络中工作时,这始终是最大的不同。
Windows的早期版本具有在相同地址空间中运行的应用程序,因此它们能够相互之间遍历指针。他们还依赖于协作式多任务处理,有时甚至不协作。
即使是非常早的Linux / Unix版本,也可以在应用程序之间以及O / S与应用程序层之间进行分区。任务切片虽然并不总是理想的,但至少是公平的。
因此,Unix(或Linux)的遗产用于需要更高可用性的更健壮的系统。
这一切今天仍然适用吗?那是另一个问题。
现在,NT在许多以前不足的地方都赶上了Unix,文件许可权和内存保护不再是解决问题的重要方法。
但是... 在Unix系统中,对所有设备的所有访问都通过文件进行,因此可以轻松地管理安全性。例如,您知道如何阻止用户X在仍然允许用户Y的同时访问Windows中的声卡吗?在Unix中,这种事情很容易。
b。目录结构更加理智。(例如,用户应用程序只需要对您的主文件夹具有写权限,等等。)但是,在最近几年中,Windows中的这种情况也得到了改善。
d。这是一个大问题:SELinux(以及Trusted Solaris和Mac OS的“ Seatbelt”沙盒功能)。这称为NDAC(非随意访问控制)。如果您正在运行具有这些功能的OS发行版,则本质上将同时进行两层安全保护,这是Unix一直拥有的常规DAC(权限系统),而现代版本的Windows则具有-最重要的是, SELinux和类似系统强加的“应用程序防火墙”。例如,您可以设置一个策略,说允许Apache Web服务器写入/ tmp并从/ var / www和/ etc / apache中读取。无论如何,所有其他磁盘访问都将被拒绝权限。同样,您可以指定它只能接受端口80上的传入连接,而不能建立传出连接。然后,即使存在允许某人做非常不好的事情的错误,并且即使apache是作为root运行的,也没关系-该策略将阻止它。这需要(非常小的)速度损失,如果您使用不寻常的配置,可能会很痛苦,但是在通常情况下,与老式Unix和Windows相比,安全级别可以大大提高。
e。层-Unix系统由许多可以互换的离散层和服务组成。这意味着可以对它们进行正确性和安全性单独分析,换出,等等。对于几乎所有这些,都无需重新启动。这是服务器类型系统的一大优势。而且,禁用(和卸载)Unix系统上不需要的东西会更容易。例如,为什么要在Web服务器上运行GUI?它增加了攻击面并占用了RAM。
F。对于那些说Windows NT是从头开始设计以确保安全性的人……是的,确实是从一开始就设计了具有高级安全性和多用户功能的内核,但是存在两个主要问题:1.微软在安全性方面的不良记录以及2.整个操作系统旨在与旧版Windows应用程序兼容,这意味着许多妥协。Unix一直是多用户的,因此在强制执行安全性时应用程序不会有太大的惊喜-这意味着较少的妥协。
基于Linux的系统通常被认为比Windows系统更安全的原因有很多。
一种是所有者的技能。如果您走进百思买(Best Buy)或沃尔玛(Wal-mart)(在美国),而对计算机的购买并没有考虑太多,它将运行Microsoft Windows。这意味着无知的人运行着大量的Windows系统。由于几乎没有人偶然购买Linux计算机(至少自从Microsoft在上网本上发起反击之后),所以大多数Linux用户要么对计算机有所了解,要么由有此行为的人来安装计算机。这适用于所有让不知道自己在做什么的人的环境。那些不运行Windows的人和那些运行各种不同操作系统的人。
一是攻击者的数量。Microsoft Windows是一个更具吸引力的目标,因为那里存在所有管理不善的计算机。有很多高价值的Linux目标,但是它们通常都得到了很好的管理(以及许多高价值的Windows目标)。大致上来说,没有人将Linux计算机作为攻击目标。
一种是文化。在任何Unix / Linux环境中,根帐户和用户帐户之间都有明显的区别,并且在几乎所有情况下,人们不需要根用户时都在其用户帐户中工作。以我的经验,这种区别在Windows环境中并不那么强,因为每个用户通常都拥有一个具有任何特权的帐户。我现在在我的工作计算机上,那里有一个帐户,一个管理员帐户。我所做的一切都是通过具有高特权的帐户完成的。当我回到自己的Linux机器上时,我将使用受限特权帐户执行几乎所有操作,并在需要时进行升级。我的妻子不得不努力争取在工作中使用她的计算机上的两个帐户,一个是她的普通管理员帐户,另一个是一个有限权限的帐户,以便她可以查看普通用户是否有权运行她编写的内容。
一是向后兼容。尽管Unix最初并不是作为安全的操作系统开始的,但它早就获得了安全性。除非Linux程序实际执行root功能,否则它们不需要以root用户身份运行。另一方面,Windows运行大量需要管理员帐户的程序,因为这是开发人员在其上运行和测试的程序(请参见上段),并且这些开发人员通常不注重安全性,并且过去通常可以正常工作。这是微软试图通过UAC解决的最大问题。我认为这不是一个特别好的解决方案,但是老实说,微软不会在这里找到好的解决方案(我不认为放弃向后兼容性在这里是一个好的解决方案)。
这些事实导致,无论安全模型的优缺点如何,大多数大规模安全问题都将出现在Microsoft系统上,并且人们认为Microsoft遇到了严重的安全问题。通过可用性启发法,人们可以想到更多的Microsoft安全问题这一事实使他们的判断有偏差。
我认为这些是正当的理由。我没有涉及实际的操作系统安全性,因为我不知道在由经验丰富的管理员运行时Windows或Linux发行版比其他发行版更容易受到攻击。Linux具有开放源代码的优势,因为任何人都可以找到并修复错误,而Microsoft已经制定了可能会或可能不会更好的安全实践。(如果我想运行一个真正安全的OS,我会选择OpenBSD,这是一个努力确保安全的开源OS。)这两个OS都有良好的权限系统(我偏爱Unix,但其他有理性的人则不同意)。
当然,有很多不好的理由来考虑操作系统的安全性较低。有些人拥有最喜欢的操作系统,却没有浪费机会糟other其他操作系统。有些人不喜欢Microsoft或Richard Stallman或其他人或组织,并且and毁了相关的OS。有人没有注意到Microsoft多年来发生了变化,因为不久以前Microsoft才真正不在乎安全性,而Windows确实不如Linux安全。
除了惯性,没有其他真正的原因。我已经看到许多Linux倡导者对Windows进行论证(而不仅仅是在安全方面),这在表面上似乎是有效的,但是-当您稍加研究时-仅适用于Windows 3.1或95/98。
我之前已经说过,但是尽管Windows可能有更多补丁/等,但这些都是针对已确定的安全漏洞的修复程序。这不是您要担心的已解决问题,不是吗?我也不认为开源本质上也更安全。推出自己的补丁程序对于家庭用户而言可能很好,但是公司用户或管理员将始终希望获得经过认证的Real Thing,该Real Thing可以在各种应用程序中正常工作(并且已经过全面测试),并且证明不会损坏下一次内核更新。FOSS社区的修复程序也是如此。
因此,在我的书中,它是惯性,偏见的结合,并且被嵌入到UNIX文化中以排除其他选择。
Linux / Unix上的进程在分配用户后无法更改其特权,而Windows上的进程可以更改其用户特权并在过程中进行更改。
这就是为什么Windows不如linux / unix安全的原因所在。