我开始在一家初创公司担任全栈开发人员。该产品是由一家外部公司开发的 SaaS,他们还负责托管。我的老板希望将应用程序放在我们自己的服务器上,我将负责此事。
我们将在 DigitalOcean droplet(Ubuntu 22.04)上托管该应用程序(一个 NodeJS 项目,只有一个 API,前端是一个移动应用程序)。我的问题是:如何确保大多数数据(如 .env 文件)和服务器本身是安全的?如何保护此设置免受不同类型的攻击,如暴力攻击、DDOS 攻击等。
我已经完成的步骤:
- 创建具有 sudo 权限并能够通过 ssh 进入服务器的非 root 用户
- 禁用 root 登录
- 设置 ufw 仅允许 22、80 和 443
- 已安装 NodeJS v18
- 该应用程序正在使用 pm2 作为进程管理器
- 安装 nginx 用作反向代理
- 安装 fail2ban
- 将指向服务器的域名添加到 Cloudflare
- 向 Cloudflare 添加了一条 WAF 规则,阻止来自朝鲜、伊朗等国家/地区的可疑流量……或可能已知的机器人或威胁评分 >25
- 向服务器添加了 SSL(允许加密)
我对服务器管理只有几个月的经验。这些步骤都是我从网上收集的信息中得到的。
有人能告诉我哪些额外的步骤对于使服务器(和应用程序)投入生产至关重要吗?
所有提示都非常有用!
额外信息:这是一个只能在比利时使用的应用程序,所以来自朝鲜等国家的流量被阻止是可以的。
答案1
这有点困难,因为要保护服务器,总是取决于组织的安全要求。要让它做好生产准备,需要相当多的经验。拥有 cloudflare 作为第一层防御非常好
- 也许可以运行一些强化的 ansible 剧本来保护服务器的安全。 https://github.com/konstruktoid/ansible-role-hardening(小心这可能会损坏东西)
- 将日志转发到 syslog 服务器或 graylog,并确保团队密切关注它或任何其他日志管理工具
- 进行一些负载测试,看看服务器大小是否合适,是否可以处理流量
- 可选:实施/配置备份
但我个人认为在单台服务器上运行这样的工作负载并不是最佳实践。我总是说一等于零。