node.js - AWS 上的 Ubuntu 服务器默认安全性

标签 node.js security ubuntu amazon-web-services

我对 Linux 完全陌生,但多年来一直在 Windows 平台上进行开发。我想在 AWS 上设置一个 Ubuntu 服务器来容纳 Node.js。如果我运行 Ubuntu 服务器的默认安装,加载 Node.js 并在端口 80 上启动一个简单的 Node.js 服务器,我还需要做些什么来保护服务器?

最佳答案

强化服务器的方法有很多,我仅举出两种绝对必要的方法。 在 Ubuntu 服务器上,可能已经激活,也可能尚未激活,但您应该始终检查。

激活防火墙

处理防火墙的 iptables 规则的最简单方法是 ufw。在您的终端中输入:

ufw default deny  # Silently deny access to all ports except those mentioned below
ufw allow 22/tcp  # Allow access to SSH port
ufw allow 80/tcp  # Allow access to HTTP port
ufw enable        # Enable firewall
ufw reload        # Be sure that everything was loaded right

请务必允许 SSH,否则您将被锁定在服务器之外。另请注意,UFW(和 iptables)允许允许或拒绝单个 IP 地址和子网。

在 SSH 中强制 pubkey 登录,禁用 root 登录并使用fail2ban

如果攻击者可以随时尝试访问您的服务器,则密码登录很弱,除非您使用长且难以记住的伪随机序列。 SSH 允许通过公钥/私钥处理身份验证,这些 key 更强大且更难以预测,是从随机种子生成的。

首先生成您自己的 key 对,并将您的公钥添加到服务器上的 ~/.ssh/authorized_keys 中,这样您就不会将自己锁定。之后且仅在之后查看 /etc/ssh/sshd_config。两个相关选项是:

PermitRootLogin no
PasswordAuthentication no

这样,攻击者在尝试密码之前就必须猜测管理员的用户名,因为他们无法以 root 身份登录。您无需以 root 身份访问即可获得 root 权限,您将能够使用 susudo 从您的用户帐户提升权限。

最后,在一定次数的错误尝试验证后,使用 fail2ban 暂时禁止 IP 地址(这样攻击者就无法轻易进行暴力破解)。我说暂时是因为如果攻击者欺骗了你的合法IP,他/她就可以对你执行DoS。

应用所有更改后,重新启动守护进程:

service ssh restart

我会重复一遍,小心,检查所有内容,否则您会将自己锁定在服务器之外

其他备注

默认的 Debian/Ubuntu 安装足够安全,可以暴露在互联网上,而不用担心任何重大缺陷。尽管如此,您还是应该始终检查安全设置,收集有关在服务器上部署的软件的信息,并定期检查日志以查找异常模式。

其他可能有用的工具包括 Apparmor,它为大多数系统服务(Postfix、HTTPd...)提供 MAC 配置文件,用于沙箱、chroot 等的 LXC...这取决于基础设施的重要性。

关于node.js - AWS 上的 Ubuntu 服务器默认安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19478409/

相关文章:

c++ - opencv ubuntu 12.04 Cmake错误: Source directory does not appear to contain CmakeLists. txt

javascript - 删除重复的错误处理代码Node.js

node.js - 如何通过 GKE pod 访问 Google Cloud Storage 中的文件

mysql - 错误 1129 : Host '' blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

java - 如何加载用户类文件以确保其安全?

ubuntu - 我安装 thrift_client 时出错

ubuntu - EC2 实例、装载卷 DOS/MBR 引导扇区

css - 这可能吗?使用 CSS (Stylus) 迭代@keyframes

node.js - 我可以信任 node.js 吗?安全/稳定性问题

security - 在 web2py 中加密存储数据的最佳方法是什么?