您采取什么步骤来保护 Debian 服务器的安全?

您采取什么步骤来保护 Debian 服务器的安全?

我正在安装一个直接连接到互联网的 Debian 服务器。显然,我想让它尽可能安全。我希望你们能提供一些关于如何确保服务器安全的想法,以及你们使用了哪些程序来确保服务器安全。

我希望这个问题的一部分内容是,你用什么作为防火墙?iptables手动配置还是使用某种软件来帮助您?最好的方法是什么?阻止所有内容并仅允许需要的内容?有没有适合初学者的关于这个主题的好教程?

您是否更改过 SSH 端口?您是否使用过类似失败禁止以防止暴力攻击?

答案1

必須的:

  • 使用专家模式安装系统,仅安装我需要的软件包
  • 手写防火墙,对 iptables'input 的默认策略为:drop,允许访问 SSH、HTTP 或给定服务器正在运行的任何其他内容
  • 失败禁止对于 SSH [ 有时也用于 FTP / HTTP / 其他 - 取决于上下文 ]
  • 禁用 root 登录,强制使用普通用户和 sudo
  • 自定义内核 [ 只是老习惯 ]
  • 预定系统升级

根据偏执程度另外:

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

我自己不会做但很有意义的事情:

  • grsecurity对于内核
  • 远程系统日志,因此当系统受到威胁时日志不会被覆盖
  • 对任何 SSH 登录发出警报
  • 配置亨特并将其设置为不时运行

答案2

仅就您的机器的防火墙提出一点说明...

  • 使用白名单,而不是黑名单 - 即阻止所有内容,并且只允许您需要的内容,拒绝其他所有内容。
  • 不要使用 GUI/ncurses 或其他任何试图为您编写防火墙的软件。如果您这样做,您将允许软件为您做出假设 - 您不需要也不应该冒这个风险。自己配置它,如果您不确定,请禁用它 - 您很快就会发现它是否是必需的。如果它已经是一个正在运行的系统,并且您不能中断流量(通过意外阻止它),那么运行 tcpdump(转储到文件)并获取样本 - 稍后研究它们,然后找出哪些是有效的,哪些是无效的。
  • 我个人认为在非标准端口上运行服务没有任何意义,如今的工具并不愚蠢,不会因为某些东西在端口 22 上运行就认为它一定是 ssh,而不是其他 - 例如 和 的选项amapnmap-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 系统的必经之路 - 但需要自行配置。

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

希望有帮助:)

答案3

  • 禁用 root 登录
  • 禁用密码登录(仅允许通过公钥登录)
  • 更改 SSH 端口
  • 使用拒绝主机(或类似方法)

  • 编写自己的 iptbles 脚本(这样你就可以精确控制允许的内容,并可以放弃其他所有内容)

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

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

答案4

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

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

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

相关内容