为什么基于Linux的操作系统比Windows更安全?

我听说基于Linux的系统对安全性更好。 显然他们没有病毒,也不需要防病毒软件。 即使我的大学声称这一点 – 他们拒绝在他们的服务器上有Windows,这是一个真正的耻辱,因为我们想使用.NET框架来创build一些网站。

我能看到Linux更安全的唯一原因是因为它是开源的,所以理论上错误会很快被修复。

我对操作系统是如何工作了一点了解,但还没有深入研究Linux和Windows如何实现他们的操作系统。 有人可以解释一下基于Linux系统更安全的区别吗?

我不认为操作系统是“安全的”。 操作系统的特定configuration对攻击具有特定的抵抗力。

我可能会在这里成为一名“微软apologist”,但是这个主题对于“Windows”的概括非常恼火,那是不正确的。

Windows 1.0 – 3.11,95,98和ME基于DOS。 这种操作系统在正式意义上没有任何安全性(受保护的地址空间,内核/用户模式分离等)。 幸运的是,当我们今天谈论“Windows”时,我们并没有谈论这些操作系统。

Windows NT系列操作系统(Windows NT 3.5,3.51,4.0,2000,XP,2003,Vista,2008和7)自1992年初始发布以来,具有“devise于”的非常合理的安全系统。以TCSEC“橙皮书”为devise理念,虽然不够完美,但我认为它devise合理,实施得当。

  • Windows NT从一开始就是“多用户”(尽pipe多个用户从同一台服务器同时接收graphics用户界面的function直到Citrix WinFrame在Windows NT 3.51时代才出现)。 有一个内核/用户模式分离,地址空间保护依赖于MMU和CPU的底层硬件function。 (我会说这是非常“Unix-y”,但实际上它是非常“VMS-y”。)

  • NTFS中的文件系统权限模型相当“丰富”,虽然它有一些相对于“inheritance”的缺陷(或者缺乏 – 请参阅如何解决NTFS移动/复制devise缺陷? ),但直到现在, Unix风格的操作系统在过去的10年左右已经实现了类似的function。 (Novell NetWare击败了微软,但是我认为MULTICS让他们俩都击败了…>微笑<)

  • 服务控制pipe理器,包括控制访问启动/停止/暂停服务程序的权限系统,devise得非常好,而且在各种“init.d”脚本“体系结构”(更像是“君子协议“)在许多Linux发行版中。

  • 执行对象pipe理器(参见http://en.wikipedia.org/wiki/Object_Manager_(Windows&#xFF09; )与/ proc文件系统和/ dev文件系统组合在一起非常松散,它有一个类似于文件系统的ACL模型而且比任何Linux发行版中的/ proc或/ dev都知道的权限模型要丰富得多。

  • 虽然我们可以辩论registry的优点和缺点,但是registry中键值的权限模型比在/ etc目录中设置文件权限模型的粒度要细得多。 (我特别喜欢Rob Short的评论:在他的“Behind the Code”采访中registry: http : //channel9.msdn.com/shows/Behind+The+Code/Rob-Short-Operating-System-Evolution Rob是一个最初在Windowsregistry背后的主要人员,我认为可以肯定地说,他不一定很高兴,结果如何。)

Linux本身只是一个内核,而Windows对Linux发行版更为贴切。 你正在比较苹果和橘子来比较它们。 我同意Windows比一些基于Linux的系统更难“剥离”。 另一方面,一些Linux发行版也出现了很多“废话”。 随着Windows各种“embedded式”风格的出现,有可能(虽然不是普通大众)构buildWindows的“发行版”,它们的行为与Microsoft默认行为不同(不包括各种服务,更改默认权限等) 。

各种版本的Windows都有自己的默认select,允许未经授权的用户获得特权,拒绝服务攻击等等的缺陷。Unix内核(以及大量基于Unix的应用程序默认运行)已经拥有同样的问题。 从Windows 2000开始,微软已经做了一件了不起的工作,它使得应用程序划分变得更简单,运行程序的权限最小化,并且移除了操作系统不需要的特性。

简而言之,我想说的是,在安全性方面,给定操作系统的具体configuration对于您的需求来说比您使用的操作系统更重要。 Windows和Linux发行版在安全特性方面具有非常类似的function。 您可以在任一操作系统中应用可靠的安全技术(最less特权,可选组件的有限安装,encryption安全authentication机制等)。 无论你是否在 – 这是最重要的。

另一件没有提到的事情是Windows中的安全性比Linux中的安全性要差得多。

例如,我可以查看几个文本文件,并查看我的Web服务器正在运行的是什么。 IIS? 不是那么多 – 你可以通过GUI工具看到configuration的结果,但是有隐藏的设置。 然后,您必须使用一组不同的工具来查看文件上的ACL等。

这与Windows世界中的大多数程序是一样的 – 很难快速理解registry和ACL之间的运行时环境的影响。

不知道这个文件的权限比较…当我是一个UNIX / Linuxpipe理员时,NT4的文件ACL比UNIX / Linux传统的'777'风格权限更细粒度。 当然,权限并不是一切,我相信现代Linux发行版至less可以提供细粒度的ACL,即使它们没有默认实现。 在我看来,sudo和root的概念在UNIX中一直存在,尽pipeWindows一直在稳步地添加这些概念,现在可能已经达到了标准。

我自己的解释是,由于Linux内核代码及其许多驱动程序和实用程序是开放的,因此可能会对其进行更广泛的审查,并且由于可能导致黑客可以利用的远程漏洞的编码错误而被更频繁地修复。 无论如何,这个理论在我的脑海中,由于Linux不是由一家公司所有,它可以比公司更充分地探索安全目标。 企业必须赚钱; 而开源组织根本就没有这个限制。

进入Linux系统并简单地closures整个窗口系统,RPC守护进程等等 – 你可以将一个基于Linux或者BSD的系统安装到一个或者两个打开的端口上,并且安装的软件包数量最less有一个非常有用的系统很容易。 这可能与作为开发者操作系统的UNIX传统有关。 一切都是build立在模块化之上,而不是过度的相互联系。 这导致一个更可configuration的系统,你可以简单地删除不相关的东西。 我不认为用这种方式很容易加强Windows服务器。

OpenBSD团队已经将这个概念推向了极致。 该scheme的主要目标是审查每一行代码可能存在的安全漏洞。 certificate是在布丁中,由于近乎狂热的(我使用这个词)关注细节,多年来OpenBSD发现的漏洞数量非常less。

公司,虽然他们制作精彩的软件(MSSQL,Exchange,Windows Server 2003在我的书中都是非常棒的),只是有不同的目标。

在我看来,如果configuration足够好,基于Linux的系统比Windows系统更安全。 其中一些原因是:

  1. 透明性和丰富简单的networking工具:例如,Linuxpipe理员通过在shell上键入“iptables -L -n”来查看当前的防火墙configuration非常容易。 您也可以通过运行其他Linux机器上的“nmap”来查看机器上打开的端口。 这使得生活变得如此简单,因为您可以非常准确地指定允许哪些端口可以访问,以及从哪些地址等等。

  2. 在一个位置的文本日志文件:一个位置“/ var / log”中基于文本的日志文件易于备份和分析。 也可以监视这些日志文件和电子邮件给你重要的线路的工具,如logwatch使事情变得非常简单。 我们甚至可以编写我们自己的工具来分析日志文件并查找我们感兴趣的信息。如果我们不希望日志出现在同一台服务器上,甚至可以将日志导出到远程系统日志服务器。

  3. 不要担心病毒:Linux中病毒less,因为基于Linux的系统less,或者因为所有用户都喜欢Linux,或者因为Linux更安全。 原因没有关系。 如果最终Linux对病毒威胁较小,那么这对Linux来说是一件好事。 我亲眼看到,在同一台机器上安装了两个防病毒,反间谍软件和反广告软件。 所有这些保护工具吃了大量的CPU和内存。

  4. 支持许多编程语言:在Linux中编写代码非常简单。 C,C ++,Python,Perl,Java等工作,而不需要安装任何额外的软件包。 (如果你安装了像DVD这样的Fedora这样的大发行版,它可以增加安全性,因为我们可以通过编码来执行重复的任务。 所以,如果出现错误,并且存在问题,那么所有帐户都会出现问题,并且很容易检测并修复。 如果我们不得不手工更改大量的账户/目录,我们可能会犯一两个错误,发现这样的错误可能需要很长时间。 我们也可以纠正错误,并使用代码寻找简单的错误。 由于所有的configuration文件,用户信息文件,日志文件等都在文本中,所以我们想要实现的任何代码都是非常容易的,并且有许多方法可以完成相同的任务。 在手册页中还提供了丰富的真实信息,通常会以不安全的方式警告我们有关configuration服务的安全威胁。

  5. 开源代码:由于可能有很多人看过代码,因此一些间谍软件/广告软件是Linux附带的应用程序的一部分是非常罕见的。 你也可以看到源代码,如果安全性对于一些服务非常重要,并看看它是如何工作的。 如果你确切地知道它是如何工作的,那么你知道它的局限性,什么时候会崩溃。 事实上,如果有众所周知的安全限制已经logging在手册页,打包网站和configuration文件的注释中。 开发人员没有任何宽松的说法,如果您在这种情况下使用我们的工具,那么这是有风险的。 对于那些销售软件的组织来说,软件的局限性可能并不是很有利可图,这会使他们的软件看起来不好,并可能减less销售/利润。

  6. 免费和互操作性:虽然这与安全无关。 对于成本较高的大学而言,基于Linux的系统比基于Windows的系统更经济,不需要购买操作系统的许可证,也不需要安装操作系统后安装的其他软件。 就互操作性而言,我们可以从Linux机器连接到其他操作系统并轻松共享文件。 在Linux中,我们可以挂载许多文件系统,包括FAT,NTFS,HFSPLUS。 我们可以使用ftp,http,ssh,samba,nfs等共享东西,所有这些东西都会安装或者可以用一个命令来安装。 其他操作系统通常只提供一个分享事物的选项。

但是,如果没有正确configuration基于Linux的系统会导致更多的问题,那么可以想象。 许多用户可以同时login到机器,几乎所有的事情都是从shell进行的。 如果防火墙没有正确configuration,离开后门,特洛伊木马非常容易。 攻击者可以删除日志文件或篡改它们来隐藏自己的踪迹。 攻击者可以在攻击机器上编码,因为一旦攻击者拥有shell访问权,所有的编辑器,编译器,debugging器都可以使用。 所有服务器ftp,http都可以从用户帐户运行,而不是在安全端口(1-1024)上运行。 因此,攻击者可以下载http服务器代码,编译它并在端口6000上运行http服务器,使其看起来像X服务器。

所以Linux系统是更安全的,只要pipe理员知道他在做什么,或者至less在做一些新的改变之前,麻烦地查阅手册页和文档中的信息。

服务器安全不仅仅是操作系统。 我认为服务器安全的一个更重要的因素是运行服务器的人,以及他们如何小心locking事物。

也就是说,如果大学是一家Linux商店,他们不会让你使用Windows服务器,不pipe你在Windows服务器安全上find什么数据。 如果你想使用.Net框架,我将使用Mono(www.mono-project.com)进行调查。

Transparancy

  • 运行ps auxf ,你知道哪些服务在哪个帐户下运行。
  • 运行netstat -lnp ,你知道哪个程序有哪个TCP端口打开。
  • 运行iptables -L ,你知道你的防火墙有什么规则。
  • 运行stracelsof来检查进程活动。
  • 运行ls -lah或者tree -pug ,你完全知道完整文件夹拥有什么所有权和权限。
  • 日志在/var/log ,可以通过简单的“通过文件search”来检查。
  • 没有隐藏的设置。 在/etc一切都是可读的。 search文本文件或存档,或应用版本控制(subversion / git)非常简单。

清除许可系统

  • 在基地,只有文件权限。 对正则expression式键没有“权限”,inheritanceACL权限,每个进程的安全上下文或其他隐藏function。
  • 权限位很简单:
    • 写在文件=编辑文件内容
    • 写在文件夹上=创build/重命名/删除文件节点。
    • 粘滞=只编辑自己的文件。
    • 具有执行权限或setuid权限的文件被突出显示(在ls颜色模式下)。
  • 一个简单的“查找所有文件”显示用户拥有什么权限。
  • 另外,ACL只能在需要的地方使用。
  • 用户帐户默认情况下只有两个地方可以写入文件: $HOME/tmp

高级安全选项

  • SELinux / AppArmor可以限制进程只访问一组特定的文件(在文件权限之上)
  • Chroot监狱使pipe理员可以将程序与其他程序完全隔离。 就好像它安装在一个空的硬盘上,只有它真正需要的文件。
  • 使用sudo ,用户和进程可以被赋予只能运行一些pipe理命令的权限。

单点入口和特权提升

  • 一个进程无法获得更多的权限。 唯一的办法是运行另一个“SetUID Root”程序,比如sudo或联系首先检查PolicyKit的DBus服务。 这些SetUID程序可以通过一个“search所有文件”命令find。
  • 进程之间的IPC相当受限,减less了攻击媒介。
  • 访问系统(文本控制台,远程桌面,RPC,删除命令调用等)都是通过ssh 。 这是一个公钥/私钥检查的SSL隧道。

保护后台进程

  • 后台服务尽可能以较低的权限运行。 Apache,Dovecot和Postfix等服务尽快将传入连接切换到低特权进程。
  • locking在默认情况下。 微软现在也在Windows Server 2008中采用了这种方法。

良好的审计工具

  • nmapncat等工具使得安全审计变得简单。
  • 可以从命令行审计后台服务。
  • 日志审计工具很常见。
  • 编码安全的服务更容易,因为可以模块化的方式完成。
  • 有很多免费的入侵检测工具可用。
  • 命令行工具被devise成可脚本化的,所以pipe理员可以自动执行任务。

良好的安全更新

  • 操作系统的每个部分都会收到安全更新。 当Apache,Python或PHP通过包pipe理器安装时,他们也会得到更新。
  • 安全更新修复的内容有很多开放性,所以您可以弄清楚如何影响您。
  • 软件包都共享相同的库。 他们不发运单独的副本,留下可利用的版本。
  • 星期二没有补丁,当黑客已经在利用野外的bug的时候,等待修复。
  • 开发人员很容易testing安全更新并部署它们。
  • 没有重新启动必须安排进行更新。 当现有进程不断访问磁盘上的旧数据时,可以replace文件。 之后,您可以找出哪些服务需要重新启动( lsof | grep = )。
  • 整个操作系统可以升级而无需重新安装!

这里提到的一切都是交付的,或者是所有主stream的Linux发行版,例如Red Hat,Debian,openSUSE或者Ubuntu。

Linux从早期就被devise成一个多用户系统,所以它拥有比Windows更强大的权限系统。 它也是为你devise的,不要使用pipe理权限(根访问权限),所以所有的程序都被devise为不需要权限。 这意味着如果您的帐户被盗用,整个系统不是。

其中部分原因也可能来自运行Linux的人(一般来说),技术性更强,因此不太可能导致导致计算机被黑客攻击的愚蠢错误。

“安全就是控制”

从我的angular度来看,在Windows中你比在Linux中有更less的控制。 硬化Windows是…更难:)。 虽然任何工具取决于持有者的技能,我会考虑以下几点:

  • Windows有更多的高风险漏洞和更多的自动利用(病毒,僵尸networking)
  • Windowspipe理员是(或应该)偏执狂(因为害怕入侵),并已作出某种强化
  • Linux系统pipe理员有时会相信操作系统安全性太高而忘记了强化
  • 一旦被黑客入侵,在Linux系统中,你可以做的不仅仅是在Windows系统中,因为有更强大的commandl ine工具

所以尽pipe我比Linux更喜欢Linux,我认为你不应该相信默认安装。

以前的大多数post都是关于入侵的,关于这一点已经做了很好的工作,你的问题之一就是关于病毒。 Linux发行版的病毒问题较less的最大原因是,有更多的窗口框比Linux和Mac放在一起。 病毒作者想要获得最大的回报,因此他们为Windows编写代码。

所有系统都能够入侵并受到感染。 任何告诉你与众不同的人,无论是你的教官还是其他人,要不就是在犹他州的海滨财产卖给你。

从目前所有软件的安全性修复来看,我认为问题不在于软件,而在于运行Windows的桌面的数量。 这是创build僵尸networking的目标。 如果Linux真的在桌面空间增长,那么它也会受到更多的攻击。 我认为Mac OSX已经看到了这一点。

有一个非常重要的原因,Linux和OpenBSD有可能比Windows更安全。 这就是操作系统防御networking攻击的能力。

在Windows上,在Windows防火墙可以拒绝数据包之前,传入的networking数据包已经暴露给操作系统的重要部分。 在Linux上,使用IPTables或在使用PF的OpenBSD上,可以在操作系统接收新的networking数据包的过程中更早地隔离恶意数据包,从而减less暴露。

但是,一旦你打开了一个端口并运行一个服务 – 也就是使一台联网的计算机有用 – 你就像运行该服务的代码一样安全。

没有比另一个更安全的操作系统。 这一切都取决于pipe理系统的人的知识。

多年来,我遇到了一些非常有才华的* nixpipe理员,他们可以configuration一个非常安全的* nix服务器。 但是将它们粘在Windows主机的前面,他们不知道如何locking机器。 另一种方式也是如此,我知道关于保护Windows主机的一个体面的事情,但把我放在一个* nix盒子前面,我不知道我在做什么。

这两个操作系统都不比其他操作系统更安全。 当然,我们可以谈谈平台的历史,并用它来辩论哪一个更安全一段时间,但我们不是在讨论10年前的nix操作系统,而是将Windows NT 4部署到生产环境中。 我们正在谈论现代操作系统(或至less我们应该),哪些可以更好地保证。

我看到有人在回答有关打包到Windows防火墙的数据包时说了些什么,而这些数据包涉及的是Linux防火墙的更多部分。 通过质疑他成为谁的信任主机上运行的软件防火墙? 这就是terminal/前端防火墙的作用。 保护networking。 正在运行服务的主机有一个暴露的服务。 这是主机的工作,以确保该服务不会受到影响。 它的前面是networking设备的工作,以防止其他数据包从互联网到主机的其他服务。

一旦networking得到适当的保护,这一切都取决于在主机上运行的应用程序的安全程度如何。 该应用程序是否有可以被利用的缓冲区溢出? 在暴露的应用程序中有没有办法到达操作系统,并在某种程度上获得更高级别的权限? 如果不是,这是一个安全的应用程序。 如果有,那么你有一个需要暴露的问题。

如果有人不考虑在他们的数据中心的另一个操作系统是一个无知的迹象(去所有的Linux商店,以及所有的Windows商店)。 两个操作系统都有使用,应该这样使用。 没有比另一个更好或更差的。 (是的,我们在处理生产服务的环境中有几台Linux机器。)

没有必要诅咒你的大学使用Linux服务器,根据你的具体要求,AdamB说,使用Mono(www.mono-project.com)。 通常对操作系统感兴趣的教授,更喜欢linux,甚至任何操作系统爱好者都会更喜欢linux,因为简单的好奇心事情是如何在书本上实际工作的。

  • 关于安全性,

linux现在遵循DAC(自由访问控制),它是一个更智能的访问控制系统。 正如在其他答案中提到的,是的Linux是多用户的方式,因此访问控制系统,比其他人更好。

但是您提到的安全性看起来像服务器安全性,与整个服务器networking问题相比,这不是操作系统问题。 我的意思是防火墙访问控制列表,路由器等…更新是免费的,终身。 它的开放,所以它的testing了很多,这是非常重要的。

除了安全性之外,经济可行性使得linux成为服务器的最佳select,在这种服务器中,很less有应用程序正在运行或托pipe服务。 而这些应用程序已经很好的移植到他们身上了。 例如 – Apache。

我认为这不仅仅是安全问题,还有其他一些因素让你像大多数其他大学一样在服务器上selectLinux。

虽然这里有很多很好的答案,但我还想补充一点,就是没有安全的操作系统。

众所周知,如果一个人创造了一个“安全”的平台,那么另一个人就可以随着时间在这个平台上find漏洞。

我同意Evan的前两句话总结OS安全性最好:

我不认为操作系统是“安全的”。 操作系统的特定configuration对攻击具有特定的抵抗力。

因此,如果我们比较GNU / Linux,BSD系统(Free / Open / Net),Microsoft,Windows,Mac OSX,Symbian,PalmOS,Cisco IOS,AIX,QNX,Solaris,z / OS或任何其他“操作系统”,如电视机,MP3播放器,微波炉等。

其中每一个都有一个整体的一部分,有能力被一个坚定的个人利用。

出于这个原因,大多数供应商都有关于如何将系统设置为尽可能安全的configuration的白皮书。 这意味着使用其他技术来减less表面积。

例如:

  • NAT
  • 反向代理
  • 防火墙

操作系统安全关于框架的事实不仅仅是一个内核types的问题。 单独的每个框架都有其合规的安全机制。 Microsoft Windows中的多用户帐户规范确实允许在大规模部署方面具有更多的灵活性,但是使用Linux,您可以控制权限和授权的来龙去脉。

.NET Framework安全级别主要与您的组策略,powershell和netsh控制台设置有关。 原因在于内存遥测访问参数在内存中具有dynamic访问请求。 Linux框架通常需要类似的关注程度,但主要与您在configuration语言时指定的标志有关。 经过适当configuration的Linux被certificate比Microsoft Windowsconfiguration的安全性更安全。 虽然在“体面”的configuration水平, 工具可以直接穿过你的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安全的主要部分是使用最不兼容但高效的框架。 这样就难以locking本地硬盘访问权限和库句柄。 这样,你的操作系统就有了一个焊接碗。 正如Evan用NTFS和/ proc或/ dev权限所说的那样。 如果你使用一些不能与之交谈的东西, 它更难以破解。

从网站开发中学到的东西,永远不要低估你的框架。 .NET有权为SQL Server集群创build共享挂载的卷和控制机制; 而Apache Source可以对使用Linux的操作系统执行相同的操作。 这是一个相当不错的问题,尽pipe我不得不说,Linux允许在个人方面控制和多语言限制和监控方面更安全; 而Windows则具有审计和logging高级逻辑debugging接口的强大function。 他们两个都是可以比较的,最终会缩小成“你locking得多好”,“有多less钟声和哨声? 在框架内。 Apache有更多的插件安全性提升; IIS有死的停止或所有ASP的运行权限,使它成为模块编程(例如Sharepoint)。

目前,在Linux或Windows上对PHP进行比较,很明显在Linux操作系统中可以使用更多扩展; Windows在PHP上有不同的权限pipe理级别,这使得难以pipe理目录和文件访问。 在Apache中,例如XAMPP,LAMPP或WAMP,我认为Windows的安全性稍差一点,考虑到它对防火墙的限制更容易违反,因为它与您的Web浏览器共享相同的隧道规则。 另一方面,Linux可以使用应用程序池以及更复杂的包级安全机制。 Windows将要求您使用操作系统的各个方面来使networking更加安全。 在使用CentOS和Ubuntu等发行版或者风格的时候,Linux可以通过使用大约60%的操作系统来修复它。

在Windows上使用最新的SEC_ATL混合使用ASP.NET的IIS(在Microsoft服务器上,而不是Windows客户端上)也可以非常安全。

就像Apache一样,你可能希望用Linux来运行它,以支持更高和更低级别的驱动程序,SMIME,编解码器和数据包级证券。 虽然Windows会要求您安装覆盖的安全机制,否则,如果涉及到运行数千台服务器,会阻止您的stream量超出您的喜好。

使用Linux时,内核越细,networking安全性越高,就越好(像NSLUG中的Apache一样)。

对于Windows,您最好喜欢为您的ASP.NET框架编写Powershell模块和附加覆盖安全性,并将您的组策略configuration给USGS,因为大多数时候它确实需要它来阻止Linux将自动拒绝并且不会想到的那种stream量关于。

同样他们可以变强。 开箱即用的Linux发行版将比使用向导设置的未configuration的Microsoft Windows Server更强大。

随着时间的推移,Linux将在安全游戏中超越Windows。 Debian 3服务器今天比Microsoft Server 2008 R2更强大,猜测他们可以在没有内核重build的情况下支持相同的技术。 Debian仍然可以吸烟,我亲眼看到了这一点。

虽然之前已经说过了,但我确定。 这涉及到你的工作人员和你的眼睛细节。 对于在大型服务器networking中工作,这总是最大的区别。

主要的是,我相信Linux被认为是一个更安全的select,因为它无处不在的使用开源软件。

如果openSSH突然开始用密码打电话回家,那么“社区”会注意到某个地方是否有什么可疑的东西被添加了,这样就不会太长时间了。

但是我不能够重申以上其他人已经说过了:安全性主要依赖于configuration:如果openSSH在没有防火墙,空root密码和在sshd中启用PermitRootLogin的情况下,是否打电话回家?

简而言之:最初,UNIX被devise为安全的; Windows的devise很简单。 现在,UNIX的后代将假装对他们的用户更简单。 Windows假装更安全。

他们还没有见过

以前的Windows版本的应用程序运行在相同的地址空间,所以他们能够通过彼此走指针。 他们也依靠合作多任务,有时不合作。

甚至早期的Linux / Unix版本也在应用程序之间以及O / S和应用程序层之间进行分区。 任务切片虽然不总是理想的,但至less是公平的。

因此,对于需要更高可用性的更强大的系统,Unix(或Linux)的遗产。

这一切今天仍然适用吗? 这是另一个问题。

现在NT已经在许多以前的不足之处赶上了Unix,文件权限和内存保护不再是巨大的区分问题。

但是…. 在Unix系统中,对所有设备的所有访问均通过文件进行,因此可以轻松pipe理安全性。 例如,您是否知道如何防止用户X在Windows中访问声卡,同时仍允许用户Y? 在Unix中,这种东西很容易。

湾 目录结构更加理智。 (例如,用户应用程序只需对您的个人文件夹进行写入访问等)。然而,在几年之内,这在Windows中也得到了改进。

d。 这是一个巨大的:SELinux(和可信的Solaris和Mac OS的“安全带”沙箱function)。 这就是所谓的NDAC(非自主访问控制)。 如果你正在使用这些function运行一个操作系统发行版,那么基本上有两层安全性同时进行,Unix一直拥有的正常的DAC(权限系统)和windows的现代版本 – 最重要的是, SELinux和类似系统强加的“应用程序防火墙”。 例如,您可以设置一个策略,使Apache Web服务器可以写入/ tmp,并从/ var / www和/ etc / apache中读取。 所有其他磁盘访问将被拒绝, 无论权限。 同样,您可以指定它只能接受端口80上的传入连接,并且不允许传出连接。 然后,即使有一个错误可以让别人做一些非常糟糕的事情,即使Apache以root身份运行,也无所谓 – 政策会阻止它。 这需要(非常小的)速度惩罚,如果使用不寻常的configuration,这可能是一个痛苦,但是在正常情况下,与旧式的Unix和Windows相比,您的安全级别会大大提高。

即 层 – Unix系统由更多可离开的离散层和服务组成。 这意味着他们可以分别进行正确性和安全性的分析,换出等。几乎所有这些,都不需要重新启动。 这是服务器types系统的一大优点。 另外,在Unix系统上禁用(和卸载)你不需要的东西也比较容易。 例如,为什么要在Web服务器上运行GUI? 它增加了攻击面并占用RAM。

F。 对于那些说Windows NT是为了安全而devise的…这是真的,内核的devise从一开始就具有高级安全性和多用户function,但是有两个主要问题:1.微软在安全方面的logging不佳,和2.整个操作系统被devise为与传统的Windows应用程序兼容,这意味着许多妥协。 Unix一直是多用户的,所以当安全性被强制执行时,应用程序没有什么大的惊喜 – 这意味着更less的妥协。

基于Linux的系统通常被认为比Windows系统更安全有几个原因。

一个是业主的技能。 如果你走进百思买或沃尔玛(在美国这里),而不用考虑购买一台电脑,它将运行Microsoft Windows。 这意味着有大量的Windows系统运行的人谁没有线索。 由于几乎没有人偶然购买Linux计算机(至less在微软反击上网本之后),大多数Linux用户要么知道关于计算机的东西,要么是由某个人设置了计算机。 这适用于所有你不知道自己在做什么的人, 没有运行Windows的人,以及运行各种不同操作系统的人。

一个是攻击者的数量。 微软Windows是一个更有吸引力的目标,因为所有的pipe理不善的机器。 有很多高价值的Linux目标,但他们一般pipe理得很好(还有许多高价值的Windows目标)。 一般来说,没有人会针对Linux计算机。

一个是文化。 在任何Unix / Linux环境下,根和用户帐户之间有明显的区别,在几乎所有情况下,用户在不需要root的情况下都可以在用户帐户中工作。 根据我的经验,这种区别在Windows环境下并不强大,因为每个用户通常都有一个帐户,并且与相关的任何权限相关联。 我现在在我的工作电脑上,我有一个帐户,一个pipe理员帐户。 我所做的一切都是通过一个拥有很高权限的帐户完成的 当我回到我的Linux系统的时候,我会在一个有限的特权帐户中完成几乎所有的事情,并在需要的时候升级。 我的妻子不得不在她的电脑上find两个帐号,一个是她的正常pipe理员帐号,另一个是有限权限的帐号,所以她可以看到普通用户是否有权运行她所写的内容。

一个是向后兼容。 尽pipeUnix并没有从一个安全的操作系统开始,但它很早就获得了安全性。 Linux程序不需要以root用户身份运行,除非他们真正执行rootfunction。 另一方面,Windows运行大量需要pipe理员帐户的程序,因为这是开发人员运行和testing的内容(参见上面的段落),而且这些开发人员通常不具有安全意识,而且以前的工作也很好。 这是微软试图用UAC解决的大问题。 我不认为这是一个非常好的解决scheme,但说实话,微软不会在这里find一个好的解决scheme(我不认为在这里放弃向后兼容性是一个好的解决scheme)。

这导致了这样一个事实,即大多数大规模的安全问题将出现在微软的系统上,而不考虑安全模式的优点,以及微软面临的重大安全问题。 由可用性启发式,人们可以想到更多的微软安全问题的事实偏见他们的判断。

在我看来,这是有道理的。 我没有涉及到实际的操作系统安全性,因为我不知道Windows或Linux发行版在由知识渊博的pipe理员运行时比另一个更脆弱。 Linux具有开源的优势,因为任何人都可以find并修复错误,而微软已经制定了安全实践,可能会或可能不会更好地工作。 (如果我想运行一个非常安全的操作系统,我会selectOpenBSD,这是一个努力保证安全的开源操作系统。)这两个操作系统都有很好的权限系统(我偏好Unix系统,但其他合理的人不同意)。

当然,考虑操作系统不太安全的原因是不好的。 有些人有一个最喜欢的操作系统,并没有浪费其他人的机会。 Some people dislike Microsoft or Richard Stallman or some other person or organization, and denigrate the associated OSs. Some people haven't noticed that Microsoft has changed over the years, since it wasn't all that long ago that Microsoft really didn't care about security, and Windows really was less secure than Linux.

There's no real reason other than inertia. I've seen a lot of Linux advocates making arguments against Windows (and not just on the security side) which on the surface seem valid, but – which when you dig a little – only apply to Windows 3.1 or 95/98.

I've said it before, but while Windows may have more patches/etc, these are fixes for security vulnerabilities that have been identified . And it's not the ones that have been fixed that you have to worry about, is it? I don't believe that being open source is intrinsically more secure either. Rolling your own patches may be fine for a home user, but a corporate user or admin will always want the Real Thing that is certified to work (and to have been tested fully) with a variety of apps, and that is certified to not break the next kernel update. The same applies to fixes from the FOSS community.

So, in my book, it's a mixture of inertia, prejudice and being embedded in the UNIX culture to the exclusion of alternatives.

Processes on Linux/Unix cannot change thier privilages after they are asigned a user, processes on windows can change thier user privilages and change thier user while mid process.

This is the essence of why windows is less secure than linux/unix.