使服务器做好生产准备 + 确保服务器安全(Ubuntu 22.04、NodeJS、nginx)

使服务器做好生产准备 + 确保服务器安全(Ubuntu 22.04、NodeJS、nginx)

我开始在一家初创公司担任全栈开发人员。该产品是由一家外部公司开发的 SaaS,他们还负责托管。我的老板希望将应用程序放在我们自己的服务器上,我将负责此事。

我们将在 DigitalOcean droplet(Ubuntu 22.04)上托管该应用程序(一个 NodeJS 项目,只有一个 API,前端是一个移动应用程序)。我的问题是:如何确保大多数数据(如 .env 文件)和服务器本身是安全的?如何保护此设置免受不同类型的攻击,如暴力攻击、DDOS 攻击等。

我已经完成的步骤:

  1. 创建具有 sudo 权限并能够通过 ssh 进入服务器的非 root 用户
  2. 禁用 root 登录
  3. 设置 ufw 仅允许 22、80 和 443
  4. 已安装 NodeJS v18
  5. 该应用程序正在使用 pm2 作为进程管理器
  6. 安装 nginx 用作反向代理
  7. 安装 fail2ban
  8. 将指向服务器的域名添加到 Cloudflare
  9. 向 Cloudflare 添加了一条 WAF 规则,阻止来自朝鲜、伊朗等国家/地区的可疑流量……或可能已知的机器人或威胁评分 >25
  10. 向服务器添加了 SSL(允许加密)

我对服务器管理只有几个月的经验。这些步骤都是我从网上收集的信息中得到的。

有人能告诉我哪些额外的步骤对于使服务器(和应用程序)投入生产至关重要吗?

所有提示都非常有用!

额外信息:这是一个只能在比利时使用的应用程序,所以来自朝鲜等国家的流量被阻止是可以的。

答案1

这有点困难,因为要保护服务器,总是取决于组织的安全要求。要让它做好生产准备,需要相当多的经验。拥有 cloudflare 作为第一层防御非常好

  1. 也许可以运行一些强化的 ansible 剧本来保护服务器的安全。 https://github.com/konstruktoid/ansible-role-hardening(小心这可能会损坏东西)
  2. 将日志转发到 syslog 服务器或 graylog,并确保团队密切关注它或任何其他日志管理工具
  3. 进行一些负载测试,看看服务器大小是否合适,是否可以处理流量
  4. 可选:实施/配置备份

但我个人认为在单台服务器上运行这样的工作负载并不是最佳实践。我总是说一等于零。

相关内容