您如何采取措施保护Debian服务器的安全?[关闭]


66

我正在安装直接连接到Internet的Debian服务器。显然,我想使其尽可能安全。我希望你们/大家添加一些想法来确保它的安全以及使用什么程序。

我希望这个问题的一部分涵盖您用作防火墙的什么?只是手动配置iptables还是使用某种软件来帮助您?最好的方法是什么?阻止一切,只允许需要什么?是否有针对该主题的初学者的好教程?

您是否更改SSH端口?您是否使用Fail2Ban之类的软件来防止暴力破解



1
Ubuntu有UFW Debian不会;)我woundering人是否被配置的iptables他们的自我或使用像fireHOL一些软件
Thomaschaaf

我一直倾向于自己写iptables规则。我有一个样板,它会执行以下操作:丢弃所有碎片,圣诞节数据包等。除此以外的所有操作都是系统特定的,通常很小。顺便说一句,使用iptables时,我无法承受足够多的丢弃片段。由于某些原因,我尚未研究,iptables仅检查第一个片段,而盲目传递其余部分而不检查。在我看来,这使碎片成为一种责任。
Scott Pack

3
嗯... Debian有自慰。 packages.debian.org/ufw
womble

Answers:


50

必填项:

  • 以专家模式安装系统,只需要我需要的软件包
  • iptables输入具有默认策略的手写防火墙:丢弃,允许访问SSH,HTTP或给定服务器正在运行的任何其他内容
  • 用于SSH的Fail2Ban [有时是FTP / HTTP /其他-取决于上下文]
  • 禁用root登录,强制使用普通用户和sudo
  • 自定义内核[只是旧习惯]
  • 计划的系统升级

根据偏执狂的程度:

  • 除几个允许的目标/端口外,对输出的丢弃策略
  • integrit用于检查文件系统软件的某些部分是否未修改[校验和保存在机器外部],例如Tripwire
  • 计划扫描,至少从外部使用系统的nmap
  • 自动日志检查是否存在未知模式[但这主要是为了检测硬件故障或一些轻微的崩溃]
  • chkrootkit的预定运行
  • 不可变的属性,/etc/passwd因此添加新用户要困难一些
  • / tmp用noexec挂载
  • 端口敲门器或其他打开SSH端口的非标准方式(例如,访问Web服务器上的“秘密”网页允许在有限的一段时间内从查看该页面的IP地址进入SSH连接。如果您已建立连接,-m state --satete ESTABLISHED则只要使用单个SSH会话,就应确保允许数据包流通过]

我不做自己但有道理的事情:

  • 内核的grsecurity
  • 远程系统日志,因此在系统受到威胁时不会覆盖日志
  • 警报任何SSH登录
  • 配置rkhunter并将其设置为不时运行

4
完成所有这些操作后,对系统运行BASTILLE,以查找其他内容。我还建议您对系统进行Nessus全面扫描,不安全的检查。然后修复所有警报。
Scott Pack

13
除非您真的知道自己在做什么,否则编译自定义内核不会带来安全优势。除非将其放在软件包管理系统中,否则您还会忽略其最新信息,这将导致安全性下降。
亚当·吉本斯

3
-1通过模糊处理获得安全性。否则,得体的答案。
dwc

@Adam-是的,我确实知道,我仍然更喜欢具有仅包含我需要的部分的整体内核。那可能很落后,但是我做到了。@dwc-这只是一个额外的步骤,只是锦上添花,或者就像我们所说的在令人不愉快的臭味堆顶部所说的樱桃。
pQd

1
您的意思是sudo not
su-– LapTop006

18

只是有关对计算机进行防火墙保护的说明...

  • 使用白名单,而不是黑名单-即阻止所有内容,仅允许您需要的内容,拒绝其他所有内容。
  • 请勿使用GUI / ncurses或其他任何试图为您编写防火墙的软件。如果这样做,您将允许该软件为您做假设-您不需要冒险,也不应该这样做。您可以自行配置,如果不确定,请禁用它-如果需要,您会很快发现。如果它已经是可以正常运行的系统,并且您无法中断流量(通过意外阻止它),请运行tcpdump(转储到文件)并进行采样-稍后进行研究,然后找出有效的内容和无效的内容。
  • 我个人看不到在非标准端口上运行服务的任何意义,这些天的工具并没有那么愚蠢,以为例如因为某些内容正在端口22上运行,那么它一定是ssh,否则就不是-对于例如amap,和nmap-A选项。话虽如此,您可以(如果担心的话)可以修改服务,以使自己不被窥探,例如,以下内容可让攻击者知道OpenSSH您所运行的版本,然后他们可以寻找用于那个确切的版本。如果您隐藏了这些东西,将会使它们变得更难。
    [root @ ud-olis-1 uhtbin]#telnet本地主机22
    正在尝试127.0.0.1 ...
    已连接到localhost.localdomain(127.0.0.1)。
    转义字符为'^]'。
    SSH-2.0-OpenSSH_3.9p1
  • 使您的所有公共服务保持最新状态并使用最新的安全补丁进行修补。
  • 不要在网关服务器本身上存储任何DATA,至少当它们设法闯入这台计算机时,您会花一些时间,并且会丢失一两个服务,有时会丢失一些数据,但不会丢失数据。

最重要的是,您将永远无法成功实现100%安全-这是不可能的-因此我们的目标是使安全性尽可能高-如果您花费太多精力破坏系统,那就足够好了,而且大多数情况下,脚本类将移至下一个系统。

  • iptables 是适用于任何Linux系统的方法-但您可以自行配置。

永远不要使用任何不基于开放标准的“安全软件”,因为它们注定编写得不好,会被黑(不是“如果”的问题,而是“何时”的问题)。开源和开放协议接受公众审查,并逐渐成为一种成熟可靠的产品;闭源软件主要依赖于多么大/安全-A-产品的作者的自信,他们认为这是-即一小眼睛VS的地球满了眼睛。

希望有帮助:)


“……眼睛的数量很少,而眼睛却充满了。” -我希望有足够多的“公司”意识到这一点,但是通过默默无闻的安全性似乎是大多数人遵循的趋势。是的,在非标准端口上运行诸如ssh之类的服务并不能阻止坚定的攻击者。然而,将保持脚本小子了-有人运行在端口22上的IP地址范围的字典攻击
L0neRanger

12
  • 禁用root登录
  • 禁用密码登录(仅允许通过公共密钥登录)
  • 更改SSH端口
  • 使用denyhosts(或类似的)

  • 编写自己的iptbles脚本(以便您完全控制允许的内容并可以删除其他所有内容)

  • 强制使用SSL / TLS安全的通信,并确保拥有有效的,未过期且已签名的证书

  • 打开所有外部服务的严格证书验证(例如,使用另一台计算机上的LDAP服务器对用户进行身份验证时)

您会因禁用密码身份验证而感到不满。
derobert


6

作为一般起点,我遵循Internet安全中心的基准/指南,这些基准/指南是对安全最佳做法的全面汇编。看起来他们的Debian基准测试似乎还没有更新,但是步骤概述如下:

  • 应用最新的操作系统补丁/软件包
  • 启用系统/内核/进程记帐。
  • 启用MAC(例如SELinux或AppArmor)。
  • 启用基于主机的防火墙(iptables)。
  • 验证APT sources.list(密钥正确,来源受信任)。
  • 最小化网络服务,禁用所有不需要的内容,并对防火墙进行防护。
  • 使用TCPWrappers进一步限制系统访问。
  • 仅使用加密的网络协议,禁用未加密的服务(telnet,f​​tp等)。
  • 配置仅对SSH的远程访问。
  • 禁用用户登录密码,并要求基于密钥的身份验证。
  • 禁用文件系统共享(NFS,SMB)。
  • 启用远程/集中式系统日志记录(并定期查看日志!)。
  • 设置BIOS /固件级别的密码。
  • 设置引导加载程序密码。
  • 配置系统备份,制定灾难恢复计划并进行TEST,以确保备份有效并且人员知道灾难恢复过程!

所有这些设置都有很多资源,包括在CISecurity基准测试中要在系统上实现的特定命令和配置文件。


5

我建议不要将计算机直接连接到Internet。在机器和Internet之间放置某种防火墙。这使您可以进行安全性和网络监视,而不会给服务器增加负担。就个人而言,我发现网络和功能分段通常会简化网络故障排除,尽管有时,附加的复杂性确实会使分析更加困难。

最安全但最烦人的防火墙策略是拒绝所有防火墙,并只允许必须允许的流量。这很烦人,因为随着网络需求的变化,经常需要更新防火墙策略。

我还建议在服务器上使用某种类型的接口防火墙-深度防御是关键。使用非标准端口进行与管理相关的服务不会有任何问题。fail2ban很好。寻求有关Serverfault上的安全应用程序的更具体的问题,以找到更多的想法。

安全就像两个徒步旅行者和熊的玩笑一样-虽然一个人永远无法实现完美的安全性,但成为一个比其他人更困难的目标很有帮助。


+1为好答案。我必须指出,如果您采取正确的做法,默认拒绝就不会令人讨厌。当然,您必须知道您允许什么,对吗?实际上,应将此作为政策声明以通俗易懂的语言写下来。如果您不按照常规方式进行操作,那么您就没有以管理员身份工作。如果是这样,更新防火墙规则很简单。
09年

非常好点。每个组织都应该有一个简单的语言安全策略声明。随着组织需求的变化,应更新策略声明。如果仅让管理员计划防火墙规则实施和CYA,即使组织管理人员不必费心去考虑安全性,智能管理员也将维护这样的策略声明。
2009年

4

有些人指出了《保护Debian手册》。这对军事需求以外的所有事物都应该是完全足够的。

许多人认为,荒谬的偏执狂很酷,或者很专业。它不是,它只是恼人的其他管理员和彻底镇压为您的用户。您会看到推荐的大多数内容只是虚假的工作,以致对偏执的管理员很有用,但实际上并没有帮助,因为真正的安全漏洞可能是由于未充分更新的系统和/或内部来源造成的。

话虽如此,我确实认为不信任本地网络上的任何内容而不是信任来自Internet的内容是我的信条之一。因此,我将所有内容都配置为即使在本地网络上也需要身份验证。我使用IPsec对每台计算机之间的所有通信进行加密和身份验证。

我正在为所有服务器转换为全盘加密。

我只安装我使用的服务。我没有防火墙;我配置了我必须要求身份验证的服务,或者将它们(通过程序自己的配置或通过TCP-包装程序)限制为某些IP。我唯一需要阻止使用iptables的是memcached,因为它没有配置文件,并且没有使用TCP-wrappers。

我为帐户使用了随机生成的良好密码,并信任我的SSH服务器(以及所有其他服务),以将不知道该密码的人拒之门外。 fail2ban仅适用于日志文件空间有限的用户,IMO。(您应该具有足够好的密码才能信任它们。)


3

在www.debian.org/doc/manuals/securing-debian-howto/中浏览此不错的方法。

我个人更改了ssh端口,并使用了fail2ban + denyhosts。我阻止了所有不需要的事情。阻挡得越多,就不必担心。


4
啊。在“更改SSH端口”之前,您一直拥有我。毫无意义。尤其是当任何时间充裕的joe schmoe可以通过端口扫描您并立即找出SSH正在运行的端口时,尤其如此。连接后,它将立即声明服务名称(和服务器版本)。
马特·西蒙斯

3
是的,我知道任何人都可以端口扫描您,并找到正确的端口。但是大多数攻击都在默认端口上。只需尝试更改端口即可获得一些统计信息。
Vihang D
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.