为什么认为基于Linux的操作系统比Windows更安全?[关闭]


19

我听说基于Linux的系统在安全性方面更好。显然,它们没有病毒,不需要防病毒软件。甚至我的大学都宣称这一点-他们拒绝在服务器上安装Windows,这实在令人遗憾,因为我们想使用.NET框架创建一些网站。

我能看到Linux更加安全的唯一原因是因为它是开源的,因此从理论上讲bug会早日被发现并修复。

我对操作系统的工作方式有些了解,但并没有真正研究Linux和Windows如何实现其操作系统。有人可以解释一下使基于Linux的系统更安全的区别吗?


5
我没有完全回答您的问题,但我确实想为您学校的选择辩护。我的学校同时运行Windows系统和linux系统,它们试图共享一个公用文件系统。但是实际上,这可能会很昂贵,因为不幸的是,网络上的Windows和Unix域实际上并没有融洽相处。鉴于我们看到Windows用户需要使用一些开源组件而不是相反的组件(对.net感到抱歉),因此,他们仅在服务器等核心基础硬件上支持Linux才是一个明智的选择。Linux支持当今最关键的服务
Notmyfault,2009年

感谢您的回应-同时也感谢其他回应者,为我清除了一切。记录下来,我对大学的主张比对它更持怀疑态度。
echoblaze

Answers:


55

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

我可能会因为在这里成为“ 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中应用可靠的安全技术(最小特权,可选组件的有限安装,加密安全的身份验证机制等)。不管您实际上是否,这都很重要。


对于像我这样谁不知道如何在Windows和Linux系统的构建方式,您的文章是令人难以置信的信息
echoblaze

同意 好点。
凯尔·霍奇森

1
+1-我是家庭Linux用户,并且主要是Windows安全专业人员。配置本身比操作系统要重要得多,您肯定需要将Linux发行版与Windows进行比较,而不仅仅是内核中的“ Linux”。
罗马

3
慢拍 +1
chickeninabiscuit

长期以来(即使现在主要是历史)对Windows世界造成了严重伤害的一件事是,很长一段时间您必须是本地管理员才能做很多事情,而在* nix世界中,您只会在那台机器上更加谨慎。问题显然是大多数本地计算机的本地管理员执行的任何操作都可以对计算机执行任何操作。如果它并非一直是众所周知的实践,而不是root但在需要时执行sudo / su,那将对linux / unix构成同等威胁。我想这并不是Windows问题,而是软件问题,而使用UAC基本上可以解决。
弗雷德里克(Fredrik)

16

没有提到的另一件事是Windows中的安全性比Linux中的安全性更加模糊。

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

Windows世界中的大多数程序都是相同的-很难快速准确地了解注册表和ACL之间对运行时环境有什么影响。


11

不知道文件权限比较...当我是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都很出色),但它们的目标却不同。


5
是; 与没有ACL的Linux / Unix相比,Windows ACL的粒度更细(尽管大多数现代版本的确提供了使用ACL的选项)。显着的区别在于,人们倾向于以管理员身份登录Windows-这仍然是公司提供的XP笔记本电脑上的标准设置-而Linux / Unix上的人们并没有以root身份执行大多数操作。与Windows相比,默认情况下,这限制了Linux / Unix上可以造成的损坏。如果有人一直以root身份运行,那么所有的赌注都是无效的(除非他们迟早会感到遗憾,并且感到遗憾)。
乔纳森·勒夫勒

“确实,sudo和root概念在UNIX中一直存在,并且仅在Windows才出现。” 你在说什么?Windows NT不像Unix那样古老,但是Windows NT自1992年发布以来就具有非常合理的“设计”安全性。不幸的是,许多Windows管理员没有使用“受限用户”帐户来部署用户(例如从一开始就应该是),但这不应该破坏操作系统。
Evan Anderson,2009年

从服务器的角度来看,理所当然。但是典型的Windows用户需要管理员访问权限才能拥有一个甚至相当舒适的环境,直到Vista。我看到Vista的“右键单击,以管理员身份运行”与sudo相当。
凯尔·霍奇森

3
我完全不同意。自Windows NT 4.0以来,我用有限的用户帐户部署了数千个台式机。从Windows 2000开始,“ RunAs”在某种程度上类似于“ sudo”,并且已在操作系统中使用(“右键单击,运行方式功能”)。我会说用户帐户控制是一个愚蠢的功能,不应该包含在操作系统中。Microsoft通过使“管理员”作为“管理员”来运行而做错了事,而不是在鼓励开发人员编写不会吸引人的软件(即要求“管理员”权利)的同时使之变得更加困难和痛苦。
埃文·安德森

2
我的客户站点上的Vista用户永远不会看到UAC,因为它们以受限的用户帐户身份运行。如果您以“管理员”身份运行,则只会看到UAC。您可以使用组策略禁用UAC,但是您永远不需要。
埃文·安德森

9

我认为,如果配置得当,则基于Windows的系统比Windows系统更安全。一些原因是:

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

  2. 一处的文本日志文件:一处“ / var / log”的基于文本的日志文件易于备份和分析。诸如logwatch之类的工具也可以监视这些日志文件并通过电子邮件向您发送重要的信息,这使事情变得非常容易。我们甚至可以编写自己的工具来分析日志文件并查找我们感兴趣的信息。如果我们不希望日志出现在同一服务器上,甚至可以将日志导出到远程syslog服务器。

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

  4. 支持多种编程语言:在Linux中编写代码非常容易。C,C ++,Python,Perl,Java等可以正常工作,而无需安装任何其他软件包。(如果您安装了DVD附带的Fedora这样的大发行版,则它可以提高安全性,因为我们可以通过编码执行重复的任务。因此,如果出错并且存在问题,则所有帐户都将存在问题,并且很容易检测和修复。如果我们必须手动对大量的帐户/目录进行相同的更改,我们可能会犯一两个错误,并且可能需要很长时间才能发现此类错误。我们也可以使用代码纠正错误并查找简单的错误。由于所有配置文件,用户信息文件,日志文件等都是文本形式,因此无论我们想要实现什么,都非常容易编写代码,并且有很多方法可以完成相同的工作。

  5. 开源代码:由于可能有很多人看过代码,因此很少有间谍软件/广告软件是Linux附带的应用程序的一部分。如果安全性对于某些服务非常重要,您还可以查看源代码,并查看其工作方式。如果您确切知道它是如何工作的,那么您就会知道它的局限性以及何时打破。实际上,如果存在众所周知的安全限制,这些限制将在手册页,软件包网站以及配置文件中的注释中进行记录。开发人员可以毫不犹豫地告诉您,如果您在这种情况下使用我们的工具,那将是有风险的。对于销售软件的组织来说,说出软件的局限性可能并不有利可图,这会使他们的软件看起来很糟糕,并可能减少销售/利润。

  6. 自由和互操作性:尽管这与安全性无关。对于需要考虑成本的大学,基于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系统将更加安全。


6

服务器安全不仅限于操作系统。我想说,影响服务器安全性的更大因素是运行服务器的人员以及他们对锁定事物的谨慎程度。

就是说,如果大学是Linux商店,那么无论您在Windows服务器安全性上发现了什么数据,他们都不会允许您使用Windows Server。如果您想使用.Net框架,我将使用Mono(www.mono-project.com)进行调查。


6

透明性

  • 运行ps auxf,您知道在哪个帐户下正在运行哪些服务。
  • 运行netstat -lnp,您知道哪些程序打开了哪些TCP端口。
  • 运行iptables -L,您知道防火墙有什么规则。
  • 运行stracelsof检查过程的活动性。
  • 运行ls -lah或,tree -pug并且您确切知道完整文件夹具有什么所有权和权限。
  • 日志已进入/var/log,可以通过简单的“搜索文件”进行检查。
  • 没有隐藏的设置。一切都是人类可读的/etc。搜索文本文件,对其进行归档或应用版本控制(subversion / git)非常容易。

清除权限系统

  • 在基础中,只有文件权限。没有“对正则表达式键的许可”,继承的ACL权限,每个进程的安全上下文或其他隐藏功能。
  • 权限位很简单:
    • 在文件上写=编辑文件内容
    • 在文件夹上写=创建/重命名/删除文件节点。
    • 粘性=仅编辑自己的文件。
    • 具有执行或setuid权限的文件将突出显示(在ls彩色模式下)。
  • 一个简单的“查找所有文件”即可显示用户具有哪些权限。
  • 此外,仅在需要时才可以使用ACL。
  • 默认情况下,用户帐户只有两个位置可以写入文件:$HOME/tmp

进阶安全性选项

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

单点进入和特权提升

  • 一个进程本身无法获得更多特权。唯一的方法是运行另一个“ SetUID Root”程序,例如sudo或联系首先检查PolicyKit的DBus服务。可以使用单个“搜索所有文件”命令找到这些SetUID程序。
  • 进程之间的IPC受到严格限制,从而减少了攻击向量。
  • 访问系统(文本控制台,远程桌面,RPC,删除命令调用等)都是通过进行的ssh。这是带有公共/专用密钥检查的SSL隧道。

安全的后台流程

  • 后台服务将以较低的特​​权尽快运行。诸如Apache,Dovecot和Postfix之类的服务会尽快将传入的连接移交给低特权进程。
  • 默认情况下处于锁定状态。微软现在在Windows Server 2008中也采用了这种方法。

良好的审核工具

  • 喜欢的工具nmapncat进行安全审计容易。
  • 可以从命令行审核后台服务。
  • 日志审核工具很常见。
  • 对安全服务进行编码比较容易,因为可以以模块化的方式完成。
  • 有许多免费的入侵检测工具可用。
  • 命令行工具设计为可编写脚本的,因此管理员可以自动执行任务。

良好的安全更新

  • 操作系统的每个部分都会收到安全更新。通过软件包管理器安装Apache,Python或PHP时,它们也会获得更新。
  • 安全更新修复的内容非常开放,因此您可以弄清楚它如何影响您。
  • 软件包均共享相同的库。他们不会单独分发副本,而留下可利用的版本。
  • 周二没有补丁,当黑客已经在野外利用该漏洞时,等待修复。
  • 开发人员可以轻松测试和部署安全更新。
  • 无需计划重新启动即可进行更新。当现有进程继续访问磁盘上的旧数据时,可以替换文件。之后,您可以找到需要重新启动的服务(lsof | grep =)。
  • 无需重新安装即可升级整个操作系统!

此处提到的所有内容或所有主流Linux发行版都已交付,即Red Hat,Debian,openSUSE或Ubuntu。


5

Linux从一开始就被设计为多用户系统,因此它具有比Windows强得多的权限系统。它还为您设计的,使其不具有管理权限(root用户访问权限)运行,因此所有程序均设计为不需要这些权限。这意味着,如果您的帐户遭到入侵,整个系统就不会受到威胁。

部分原因还可能是由于运行Linux的人(通常来说)技术水平更高,因此犯下导致计算机被黑客入侵的愚蠢错误的可能性较小。


2
多用户和单用户操作系统之间的一些差异:jdurrett.ba.ttu.edu/courseware/opsys/os01a.htm
魔神

7
好的,我使用Linux已有12年以上,而使用UNIX之类的操作系统的时间甚至更长。尽管我喜欢Linux,但不能说它的权限系统比Windows 强。它具有比早期Windows版本更好的安全模型(即,并非始终是admin),但是WinNT和更高版本具有强大的权限系统,只是不习惯使用。最新的Linux版本具有更强大的selinux,但这是一个相对较新的功能(如果功能非常强大)。
Eddie

5

“安全就是控制”

从我的角度来看,在Windows中您的控制权少于在Linux中。强化Windows更加困难:)。尽管任何工具都取决于焊工的技能,但我会考虑以下方面:

  • Windows具有更多的高风险漏洞和更多的自动利用(病毒,僵尸网络)
  • Windows管理员(或应该)偏执(由于担心入侵),并进行了某种形式的强化
  • Linux系统管理员有时对操作系统安全性过于信任,而忘记了强化
  • 一旦被黑客入侵,在Linux系统中,您将比在Windows系统中做更多的事情,因为有更强大的命令工具

因此,尽管我确实比Windows更喜欢Linux,但我认为您不应该信任默认安装。


3

以前的大多数文章都将重点放在入侵上,并且在这一点上做得很好,您的问题之一是关于病毒。Linux发行版的病毒问题较少的最大原因是,与Linux和Mac相比,存在更多的Window box。病毒编写者希望获得最大的收益,因此他们为Windows编写。

所有系统都可以入侵和感染。谁告诉您与众不同,无论是您的讲师还是其他人,要么是傻瓜,要么是在犹他州拥有海滨地产向您出售。


3

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


2

Linux和OpenBSD拥有比Windows更安全的潜力,这是一个非常重要的原因。这就是操作系统对自身进行防火墙以免受网络攻击的能力。

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

但是,一旦打开端口并在其上运行服务(即使联网计算机有用),您的安全性就与运行该服务的代码一样安全。


2

没有比其他操作系统更安全的操作系统了。这完全取决于管理系统的人员的知识。

多年来,我已经与一些非常有才华的* nix管理员见面并一起工作,他们可以配置非常安全的* nix服务器。但是,将它们放在Windows主机之前,他们根本不知道如何锁定计算机。同样的道理,我对保护Windows主机的了解很多,但是把我放在* nix框的前面,我不知道自己在做什么。

两种操作系统都不比其他操作系统更安全。当然,我们可以讨论一下平台的历史,并用它来讨论哪种平台随着时间的推移会更加安全,但是我们不是在谈论10年前的* nix操作系统,而是将Windows NT 4部署到生产环境中就是。我们正在谈论现代操作系统(或者至少应该如此),并且可以更好地保护那些操作系统。

我看到有人回答说关于进入Windows防火墙的数据包比Linux防火墙更多地涉及操作系统的部分。向他提问的是,到底谁信任主机上运行的软件防火墙?这就是端点/前端防火墙的用途。为了保护网络。正在运行服务的主机公开了服务。确保服务不会受到损害是主机的工作。网络设备的工作就在它前面,以防止其他数据包从Internet到达主机的其他服务。

一旦网络得到适当的保护,一切都取决于主机上运行的应用程序的保护程度。该应用程序是否有任何可以利用的缓冲区溢出?公开的应用程序中是否有任何途径可以进入操作系统并以某种方式获得更高级别的权限?如果不是,那是一个安全性很高的应用程序。如果有,那么您就需要解决一个问题。

如果有人不考虑在其数据中心中使用其他操作系统,这就是无知的迹象(适用于所有Linux商店和所有Windows商店)。两种操作系统都有用途,应该照此使用。两者都不比另一个更好或更坏。(是的,在我们的环境中,我们有几台Linux机器来处理生产服务。)


1
我的观点不同,这完全取决于管理员的知识。如果要求您防御要塞与帐篷的抵御,我认为您在使用堡垒方面有一些优势。如果此处比较的是Linux和Windows,则它们采用了两种不同的理念来处理多个用户并同时访问系统。尽管优秀的管理员可以帮助纠正缺陷,但作为起点,一个还是另一个仍然有好处。
巴特·

1

无需诅咒您的大学使用linux服务器,就如AdamB所说,对于您的特定要求,请使用Mono(www.mono-project.com)。通常,对OS感兴趣的教授更喜欢linux,即使是任何OS爱好者也都更喜欢linux,因为人们出于简单的好奇心以实际的方式了解事物的工作原理。

  • 现在关于安全性,

linux现在遵循DAC(自由访问控制),它是一种用于访问控制的更智能的系统。如其他答案所述,是的,Linux是多用户的,因此访问控制系统比其他系统要好。

但是,您所指的安全性看起来像服务器安全性,与其说是操作系统问题,不如说是整个服务器网络问题。我所说的是防火墙访问控制列表,路由器等。更新是免费的,终身的。它的开放性使其经过了很多测试,这非常重要。

除了安全性之外,经济上的可行性使linux成为服务器的最佳选择,因为服务器很少,但是应用程序可以运行或托管服务。这些应用程序很好地移植到了它们上。例如-Apache。

我认为不仅仅是安全性,还有其他因素,使您像大多数其他大学一样,选择在服务器上使用linux。


1

尽管这里有很多不错的答案,但我还想补充一点,没有安全操作系统之类的东西。

众所周知,如果一个人创建了一个“安全”平台,那么另一个人会随着时间的流逝在该平台上发现漏洞。

我同意Evan的前两句话最能概括OS安全性:

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

因此,如果我们比较GNU / Linux,BSD系统(免费/开放/网络),Microsoft,Windows,Mac OSX,Symbian,PalmOS,Cisco IOS,AIX,QNX,Solaris,z / OS或任何其他版本,都没有关系。其他运行诸如电视,MP3播放器,微波炉等的“操作系统”。

这些中的每一个都具有整体的一部分,具有被确定的个人利用的能力。

因此,大多数供应商都提供了有关如何设置其系统以使其配置尽可能安全的白皮书。这意味着使用其他技术来最小化表面积。

例如:

  • NAT
  • 反向代理
  • 防火墙

1
我仍然会把钱花在openbsd上,因为“极有可能是极易受到攻击的”。
凯尔·霍奇森

我也不会把我的钱还给你!除非我们谈论DOS <= 4(我相信5.5之前没有NDIS驱动程序?)
韦恩

1

关于框架的操作系统安全性的事实不仅仅是内核类型的问题。每个框架确实都有其合规的安全机制。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仍然可以吸烟,而且我亲眼已经看到了。

尽管正如我之前已经说过的那样。它取决于您与之合作的员工以及您对细节的关注。在大型服务器网络中工作时,这始终是最大的不同。


0

最主要的是,我相信Linux被认为是一种更安全的选择,因为它广泛使用开源软件。

轻松的想法来自“社区”会注意到是否在某处添加了一些可疑的东西(例如,如果openSSH突然开始用密码打电话回去),这种想法不会持续很长时间。

但是我不能重申上面其他人已经说过的话:安全性在很大程度上取决于配置:如果您没有防火墙,空root密码和在sshd中启用PermitRootLogin,谁会在乎openSSH是否不打电话回家?


0

简短的答案:最初,UNIX被设计为安全的。Windows的设计非常简单。现在,UNIX的后代将假装对用户更简单。Windows伪装成更安全。

他们还没见面


2
呸! 与Unix相比,Windows NT在其初始设计中更加注重安全性。后来,人们对Unix进行了安全性检查。类似于现代Unix的操作系统(例如Linux,由于它是全新的代码库,因此实际上不是“ Unix”操作系统)与原始Unix相比有了很大的改进,但是Windows NT从一开始就被设计为符合美国国防部《橙皮书》的安全要求。
埃文·安德森

0

Windows的早期版本具有在相同地址空间中运行的应用程序,因此它们能够相互之间遍历指针。他们还依赖于协作式多任务处理,有时甚至不协作。

即使是非常早的Linux / Unix版本,也可以在应用程序之间以及O / S与应用程序层之间进行分区。任务切片虽然并不总是理想的,但至少是公平的。

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

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


当然不是。Windows从Linux社区获得的许多负面新闻实际上直接针对那些先前的版本,而没有考虑到事情发展的事实。使用coop m / t的Windows的最新版本是3.1,而以DOS为核心的Windows的最新版本是ME。
Maximus Minimus

0

现在,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一直是多用户的,因此在强制执行安全性时应用程序不会有太大的惊喜-这意味着较少的妥协。


通过执行对象管理器中应用的ACL,可以安全地访问Windows NT中的“设备文件”。它具有与文件系统大致相同的ACL模型。回复:您的观点“一个”:符合带Microsoft开发准则的徽标应用程序也不需要在用户的主目录之外进行写访问。回复:“ b”:我同意Windows中的MAC功能有限。Vista中添加的完整性级别是MAC的一种形式。如果选择以这种方式配置,“高级防火墙”(在Vista中也已添加)可以按照您描述的方式限制传出流量。
埃文·安德森

回复:“ e”:我原则上同意,更少的软件意味着更少的失败机会。Windows的内部内部版本没有GUI,但是Microsoft选择不发布它们。回复:“ F”:第三方开发人员的问题更多。回复:在Windows中设置的默认安全策略要比Microsoft健全。就我个人而言,我认为微软应该对表现欠佳的应用程序持更强硬的态度,但是在确保其客户应用程序运行时,它们所处的环境与自由和开源操作系统的开发人员不同。
埃文·安德森

回复:“整个操作系统……旨在具有兼容性……” Win32是内核子系统,它不是NT。如果Microsoft想要(或让其他人使用),则可以构建Windows NT的“发行版”,该Windows NT没有Win32子系统,GUI,并使用“ Interix” POSIX内核子系统启动。实际上,NT OS中的所有UI都是基于Win32的,但是内核完全能够支持非Win32环境。
埃文·安德森

0

基于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安全。


-1

除了惯性,没有其他真正的原因。我已经看到许多Linux倡导者对Windows进行论证(而不仅仅是在安全方面),这在表面上似乎是有效的,但是-当您稍加研究时-仅适用于Windows 3.1或95/98。

我之前已经说过,但是尽管Windows可能有更多补丁/等,但这些都是针对已确定的安全漏洞的修复程序。这不是您要担心的已解决问题,不是吗?我也不认为开源本质上也更安全。推出自己的补丁程序对于家庭用户而言可能很好,但是公司用户或管理员将始终希望获得经过认证的Real Thing,该Real Thing可以在各种应用程序中正常工作(并且已经过全面测试),并且证明不会损坏下一次内核更新。FOSS社区的修复程序也是如此。

因此,在我的书中,它是惯性,偏见的结合,并且被嵌入到UNIX文化中以排除其他选择。


-2

Linux / Unix上的进程在分配用户后无法更改其特权,而Windows上的进程可以更改其用户特权并在过程中进行更改。

这就是为什么Windows不如linux / unix安全的原因所在。


2
只有在进程运行的上下文具有“充当操作系统的一部分”(SE_TCB PRIVILEGE)权限的情况下,这才是正确的。如果您使用不具有SE_TCB PRIVILEGE的安全性上下文启动进程,则该过程将不能只是随机地“模拟”(假设其他安全性上下文的NT主义)另一个用户。如果您没有充分的理由使用SE_TCB PRIVILEGE运行应用程序,那么您将得到应有的收益,IMO。
埃文·安德森

因此,通过系统范围规则的“上下文”来强制执行安全性,这就是Windows不如unix / linux安全的原因。
火鸦
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.