现在,我使用ec2作为后端平台(节点js + nginx + certbot),nginx.conf的设置如下
server {
listen 80;
server_name somethings.example.com;
root /usr/share/nginx/html;
location /{
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_redirect off;
}前端-后端通过https进行通信
当前端在铬开发工具(“元素”面板)中使用后端(api)时,您可以在“远程地址”列中看到ec2 IPv4公共IP: 433。
然而,当我使用IPv4公共IP: 3000时,我可以使用http (不安全) api (目前正在使用404以防止进一步使用)。
所以我想问一下这会不会导致安全问题?如何解决这个问题?还是在使用http进行通信时重定向?或者如何将ec2 IPv4公共IP:433隐藏在远程地址中?
发布于 2020-10-05 02:28:47
是的,有安全问题。在公共子网上公开您的EC2实例允许人们尝试并探测各种端口,并查看他们是否可以利用任何漏洞或利用安全性上的任何漏洞。
至少,您应该锁定与此EC2实例关联的安全组,以确保它只接受来自预期443端口的公共HTTP通信。
提高安全性的一个常见方法是使用负载均衡器(即使您只有一个EC2实例)。
Amazon提供了各种负载平衡器,您可以使用经典的弹性负载均衡器(ELB)或应用程序负载均衡器(ALB)。
这是通过将您的EC2实例放在一个私有子网中来实现的,这样互联网上的东西就不能访问它了。然后在公共子网中创建负载均衡器,并更新安全组设置,以便只有负载均衡器才能向EC2实例发送请求。还可以确保负载均衡器只接受/转发HTTPS通信量。
使用上述策略可以向客户端隐藏EC2实例,并确保没有人能够探测您的EC2s的各种端口。
否则,您只需锁定EC2上的安全组设置,以确保只向公众开放例外端口。
https://stackoverflow.com/questions/64166159
复制相似问题