我即将部署一个 Web 应用程序(几个月后),其设置如下(无论如何也许):
Ubuntu Lucid Lynx 具有:
- IP 表防火墙(白名单形式,仅开放 3 个端口)
- 自定义 SSH 端口(例如 31847 或类似端口)
- 没有“root” SSH 访问权限
- 较长的随机用户名(不只是“admin”或其他名称)和较长的密码(65 个字符)
- PostgreSQL 仅监听本地主机
- 256 位 SSL 证书
- 从 NGINX 反向代理到我的应用服务器 (UWSGI)
- 假设我的 colo 是安全的(暂时我不需要担心物理访问)
- 应用程序级安全性(SQL 注入、XSS、目录遍历、CSRF 等)
- 也许是 IP 伪装(但我还不太明白这一点)
这听起来像是一个安全的设置吗?我听说人们的网络应用程序经常被黑客入侵,我一方面想,“也许他们只是忽略了什么”,但我另一方面又想,“也许你无法保护你的服务器,而这些措施只是为了让脚本小子更难进入”。如果我告诉你所有这些,给你我的 IP 地址,并告诉你哪些端口可用,你是否有可能进入(假设你有一个渗透测试工具),或者这真的得到了很好的保护。
答案1
- 如果这 3 个端口是 80/443/22,那么就很好了;)
- 这其实没什么用,因为 SSH 服务器在“敲击”时会识别自身,所以 NMap 之类的工具无论如何都会告诉你在高端口上真正运行的是什么。隐蔽式安全几乎毫无价值。
- 如果你指的是没有远程 root 登录,那么是的,这有帮助。如果你指的是你还有另一个 UID 为 0 的帐户,那么就没那么好了。有另一个用于连接的非特权帐户,然后仅在需要时使用 su/sudo 切换到实际 root。
- 长密码不可能记住,所以你要把它存储在某个地方。这时候,不妨完全禁用密码登录,只使用证书。顺便说一句,这解决了 99% 的 SSH 敲门尝试。
- 如果您的数据库在本地监听,那为什么要监听网络套接字呢?为什么不通过文件系统套接字呢?这不仅更安全(无需监听),而且如果您从本地源连接,实际上速度更快(没有网络协议开销)
- SSL 证书经常配置错误。请确保域名和日期设置正确。
- 即使物理安全不是什么大问题,您仍然可以防止自己的“脑筋急转弯”,例如按“ctrl-alt-del”重新启动以及自动锁定已登录的空闲终端。
答案2
www.insecure.org 是开始寻找漏洞测试软件的好地方,当然还有谷歌。
我想到了一些工具... - nmap - metasploit - saint - burp suite - lan guard
在保护任何连接到网络的东西时,要记住这一点……只有将其从互联网上拔下,它才能得到完全保护。听起来你正在采取所有适当的措施来阻止脚本小子,以及可能大多数自动化 h4ck 工具。但请记住,只要有正确的动机/才能/时间,你就无法保护自己免受“未经授权的访问”。
答案3
答案4
我会用 Nessus 进行测试,如果你喜欢冒险,那么可以尝试 Nikto。
另外,在它前面放置一个 IDS,例如 Snort。
根据您的设置,您可能需要提醒您的 ISP 您正在进行漏洞测试。
看来你走在正确的道路上。