你采取什么步骤来保护 Debian 服务器?

Tho*_*aaf 66 security linux debian firewall

我正在安装直接连接到 Internet 的 Debian 服务器。显然,我想让它尽可能安全。我希望你们/女孩添加您的想法来保护它以及您使用的程序。

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

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

pQd*_*pQd 50

强制性:

  • 用专家模式安装系统,只安装我需要的包
  • 带有 iptables 输入默认策略的手写防火墙:删除,允许访问 SSH、HTTP 或任何其他正在运行的给定服务器
  • Fail2Ban for 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并将其设置为不时运行

  • 除非您真的知道自己在做什么,否则编译自定义内核不会提供安全优势。除非您将它放在包管理系统中,否则您也会忽略使其保持最新状态,这会导致安全性变差。 (13认同)
  • 完成所有这些之后,对系统运行 BASTILLE 以查找其他任何内容。我还建议对系统进行全面的、不安全的检查 Nessus 扫描;然后修复它发出的警报。 (4认同)
  • -1 通过默默无闻的安全性。否则体面的答案。 (3认同)

Xer*_*xes 18

只是一个关于防火墙的说明你的机器......

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

最重要的是,您永远不会成功地使任何东西 100% 安全 - 这是不可能的 - 所以我们的目标是使尽可能安全 - 如果破坏您的系统的努力太多,它已经足够好,而且大多数蹩脚脚本小子将进入下一个系统。

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

永远不要使用任何不基于开放标准的“安全软件”——它们注定写得不好并且会被黑客攻击(不是“如果”,而是“何时”的问题)。开源和开放协议接受公众监督,汇聚成为成熟可靠的产品;闭源软件主要依赖于作者对他们认为的产品有多好/有多安全的自信——即少数眼睛与满眼的地球。

希望有帮助:)


小智 12

  • 禁用root登录
  • 禁用密码登录(只允许用公钥登录)
  • 更改 SSH 端口
  • 使用拒绝主机(或类似的)

  • 编写您自己的 iptbles 脚本(这样您就可以准确控制允许的内容并可以删除其他所有内容)

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

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


jti*_*man 6

作为一般起点,我遵循Internet 安全中心的基准/指南,它们是安全最佳实践的综合汇编。看起来他们的 Debian 基准测试已经有一段时间没有更新了,但是步骤的一般概述是:

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

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


pca*_*mic 5

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

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

我还建议在服务器上使用某种接口防火墙 - 纵深防御是关键。将非标准端口用于管理相关服务并没有什么坏处。fail2ban 很好。在 Serverfault 上寻求有关安全应用程序的更具体的问题,以找到更多想法。

安全就像关于两个徒步旅行者和熊的笑话——虽然一个人永远无法达到完美的安全,但成为一个比其他人更难的目标是有帮助的。