it-swarm.cn

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

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

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

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

66
Thomaschaaf

必填项:

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

根据偏执狂的程度:

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

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

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

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

  • 使用白名单而不是黑名单-即阻止所有内容,仅允许您需要的内容,拒绝其他所有内容。
  • 请勿使用GUI/ncurses或其他任何试图为您编写防火墙的软件。如果这样做,您将允许该软件为您做假设-您不需要冒险,也不应该这样做。您可以自行配置,如果不确定,请禁用它-如果需要,您会很快发现。如果它已经是可以正常运行的系统,并且您无法中断流量(通过意外阻止它),请运行tcpdump(转储到文件)并进行采样-稍后进行研究,然后找出有效的内容和无效的内容。
  • 我个人看不到在非标准端口上运行服务的任何意义,这些天的工具并没有那么愚蠢,以为例如因为某些内容正在端口22上运行,那么它一定是ssh,否则就不是-对于例如amapnmap-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 
  • 使您的所有公共服务保持最新状态并使用最新的安全补丁进行修补。
  • 不要在网关服务器本身上存储任何数据,至少当它们设法闯入这台计算机时,您会花一些时间,而且您会丢失一两个服务,有时会丢失一些数据,但不会丢失数据。

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

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

永远不要使用任何不基于开放标准的“安全软件”,因为它们注定编写得不好,会被黑(不是“如果”的问题,而是“何时”的问题)。开源和开放协议接受公众审查,并逐渐成为一个成熟可靠的产品;闭源软件主要依靠作者对产品的伟大/安全性的自信心他们认为它是-即,少数人的眼睛与充满眼睛的人的眼睛。

希望有帮助:)

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

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

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

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

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

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

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

6
jtimberman

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

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

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

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

5
pcapademic

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

许多人认为,荒谬的偏执狂很酷,很专业。是不是,只是烦恼给其他管理员而完全令人压抑您会看到的大多数建议只是虚假的工作,它们对于偏执的管理员来说很有用,但实际上并没有帮助,因为真正的安全漏洞很可能是由于系统更新不足和/或内部来源引起的。

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

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

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

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

4
Teddy

在www.debian.org/doc/manuals/securing-debian-howto/上浏览此尼斯方法。

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

3
Vihang D