Net*_*ent 5 security home-server self-hosting
我正在考虑使用一些旧硬件和 Ubuntu 12.04 或 Debian 6 来设置一个适度的 Web 服务器。我知道通过将 LAN 上的机器暴露给外部世界,我很容易受到安全漏洞和攻击。既然如此,而且由于我几乎没有使用 Linux 保护计算机的经验,我想请教一些关于我应该如何保护此 Web 服务器的建议,尤其是因为我的家庭局域网中还有其他计算机包含敏感信息(关于家庭银行账户等)。非常感谢。
首先,您可能知道这一点,但是如果您有动态 IP,您将需要一个动态 DNS,例如 DynDNS 或DNSexit。
在固定部分,我想使用iptables(或类似防火墙GUI纵火,如果你喜欢),如果你不需要打开SSH端口(22端口)或ftp(21只开放80端口的入站连接已足够家庭服务器) 并且您不会安装邮件服务器。
如果您的站点有登录页面,或者您需要打开 ssh、ftp 或 smtp,我建议至少安装类似fail2ban 的东西来禁止尝试连接但没有成功的 IP,这样他们就不会永远尝试。
需要注意的一件重要事情是,您必须查看您的日志,以密切关注它们是否容易安装logwatch(应该在 Debian 和 Ubuntu 上的默认存储库中),以便每天或每周通过邮件提醒您。通过经常阅读它们,您将很快学会找出问题所在。
如果您需要从外部连接来管理服务器,请使用 VPN,无论如何,请始终保持操作系统更新!
更新:对于 SSH 和 sftp,我认为 fail2ban + 只有 ssh 密钥(或密钥 + 密码但不仅仅是密码)是您需要的最低限度(并且不允许 root 访问)。
如果您用于连接的机器具有固定 IP,请仅为这些传入 IP 打开防火墙。
加密的 VPN(我使用openvpn)也有助于保护您的访问。
在这里查看“快速”官方教程,在 15-30 分钟内,您将拥有一个可用于一个客户端的 VPN 服务器 - 一个服务器。为了更好地设置客户端证书身份验证和 CA(您自己的免费 CA),您将需要多花几分钟时间:D
如果您的站点需要 MySQL 或出于任何其他原因您需要从 Internet 管理 MySQL(或其他数据库),如果您不使用 VPN,请使用 ssh 隧道,以便连接到您机器上的本地端口并且隧道加密与服务器的连接,因此您无需打开数据库端口,请查看 中的-L和-D参数man ssh。
我不会安装 phpmyadmin 来监听公共 IP,因为这会向全世界打开您的数据库。如果您需要,我可以在此处放置隧道的示例脚本。