我使用 Debian 已有一年了,主要是作为我公司内部服务器的发行版。现在我正在建立一个公共电子商务网站,并计划为此目的在数据中心使用专用的 Debian 服务器。我将接受信用卡付款,并直接将其传输到银行网关,而不存储任何信用卡信息。
我将使用 Django 1.1.1、mod_wsgi、Apache2 来运行 django 并使用 nginx 来提供静态媒体。
- 您认为这是一个好的设置吗?
- 您会建议在服务器配置方面采取哪些安全措施?任何建议、最佳实践链接和教程都将不胜感激 :)
答案1
更新,更新,更新。
- 你运行的是 Debian 稳定版还是测试版?有时保持测试版的更新比稳定版要复杂一些。
- 您是否将所有内容都作为 Debian 软件包运行?
确保你没有运行多余的服务。运行 netstat -nap 并检查所有正在监听端口的进程,确保其中没有任何不是严格需要的进程。只需监听环回即可。
所有可公开访问的非公开内容都应受到强密码或更强有力的措施(ssh 密钥等)的保护。
如果可以的话,采取一些措施来抵御 DoS 攻击会很不错。限制恶意请求可能会很方便。
答案2
我在 Debian 生产服务器上安装了许多东西:
- logwatch(apt-get install logwatch) - 每天向您发送一封电子邮件,总结您的服务器昨天生成的日志。这是发现即将出现的潜在问题的好方法
- apticron (apt-get install apticron) - 当有新版本的已安装软件包可用时,通过电子邮件通知您,例如修复安全漏洞
考虑到通过服务器的数据的敏感性,我会将 SSH 登录限制为仅基于密钥(无密码),因为这样会大大增加随机破解帐户的难度。无论你是否这样做,root SSH 都是不好的、危险的和错误的,应该禁用或限制为少数受信任的 IP 地址
确保你已订阅[电子邮件保护]
考虑运行 rootkithunter、chkrootkit 和 integrit(均可通过 apt-get install 获得),以检查没有任何恶意程序进入您的服务器。
确保您网站的敏感部分(接受信用卡号、密码等的任何部分,尤其是 django 管理界面)只能通过 HTTPS(SSL)连接访问,而不是纯 HTTP。
如果您对安全性非常担心/非常重视,请让托管服务提供商通过电话向您读取服务器的 SSH 密钥指纹或以加密电子邮件的形式发送给您,以便您在第一次连接机器时验证您没有受到中间人攻击(或者,如果可能的话,在实际坐在机器前时第一次登录机器)。