与 Web 应用程序部署相关的安全问题

与 Web 应用程序部署相关的安全问题

我即将部署一个 Web 应用程序(几个月后),其设置如下(无论如何也许):

Ubuntu Lucid Lynx 具有:

  1. IP 表防火墙(白名单形式,仅开放 3 个端口)
  2. 自定义 SSH 端口(例如 31847 或类似端口)
  3. 没有“root” SSH 访问权限
  4. 较长的随机用户名(不只是“admin”或其他名称)和较长的密码(65 个字符)
  5. PostgreSQL 仅监听本地主机
  6. 256 位 SSL 证书
  7. 从 NGINX 反向代理到我的应用服务器 (UWSGI)
  8. 假设我的 colo 是安全的(暂时我不需要担心物理访问)
  9. 应用程序级安全性(SQL 注入、XSS、目录遍历、CSRF 等)
  10. 也许是 IP 伪装(但我还不太明白这一点)

这听起来像是一个安全的设置吗?我听说人们的网络应用程序经常被黑客入侵,我一方面想,“也许他们只是忽略了什么”,但我另一方面又想,“也许你无法保护你的服务器,而这些措施只是为了让脚本小子更难进入”。如果我告诉你所有这些,给你我的 IP 地址,并告诉你哪些端口可用,你是否有可能进入(假设你有一个渗透测试工具),或者这真的得到了很好的保护。

答案1

  1. 如果这 3 个端口是 80/443/22,那么就很好了;)
  2. 这其实没什么用,因为 SSH 服务器在“敲击”时会识别自身,所以 NMap 之类的工具无论如何都会告诉你在高端口上真正运行的是什么。隐蔽式安全几乎毫无价值。
  3. 如果你指的是没有远程 root 登录,那么是的,这有帮助。如果你指的是你还有另一个 UID 为 0 的帐户,那么就没那么好了。有另一个用于连接的非特权帐户,然后仅在需要时使用 su/sudo 切换到实际 root。
  4. 长密码不可能记住,所以你要把它存储在某个地方。这时候,不妨完全禁用密码登录,只使用证书。顺便说一句,这解决了 99% 的 SSH 敲门尝试。
  5. 如果您的数据库在本地监听,那为什么要监听网络套接字呢?为什么不通过文件系统套接字呢?这不仅更安全(无需监听),而且如果您从本地源连接,实际上速度更快(没有网络协议开销)
  6. SSL 证书经常配置错误。请确保域名和日期设置正确。
  7. 即使物理安全不是什么大问题,您仍然可以防止自己的“脑筋急转弯”,例如按“ctrl-alt-del”重新启动以及自动锁定已登录的空闲终端。

答案2

www.insecure.org 是开始寻找漏洞测试软件的好地方,当然还有谷歌。

我想到了一些工具... - nmap - metasploit - saint - burp suite - lan guard

在保护任何连接到网络的东西时,要记住这一点……只有将其从互联网上拔下,它才能得到完全保护。听起来你正在采取所有适当的措施来阻止脚本小子,以及可能大多数自动化 h4ck 工具。但请记住,只要有正确的动机/才能/时间,你就无法保护自己免受“未经授权的访问”。

答案3

这是一个很好的开始,但请记住,您的预防措施需要在测试时经常重新评估。

考虑拒绝主机Sentry工具,和/或任何其他您喜欢的监控工具。

答案4

我会用 Nessus 进行测试,如果你喜欢冒险,那么可以尝试 Nikto。

另外,在它前面放置一个 IDS,例如 Snort。

根据您的设置,您可能需要提醒您的 ISP 您正在进行漏洞测试。

看来你走在正确的道路上。

相关内容