个人站点安全防护
在个人服务器上搭建网站,对于计划长期运行的站点,有一个问题是必须要考虑的,那就是站点的安全问题。这里介绍一些基本的防护手段。防护的核心原则是:在保持服务可访问的前提下,最大限度地缩小攻击面,并建立多层防御。 1. 核心端口功能与风险 通常 Web 服务器会开放 22/80/443 这三个端口,我们了解下每个端口的主要风险点: 22 (SSH):管理的大门。主要风险是暴力破解和弱口令。一旦被攻破,服务器就易主了; 80/443 (Web):服务的脸面。主要风险是Web应用漏洞(如SQL注入)、DDoS攻击和CC攻击; 所有端口:都存在基于软件漏洞的0-day攻击风险,以及系统配置不当带来的隐患; 2. 个人服务器分层防护 第一层:访问控制与最小化原则(最基础也最有效) 这部分是必须做的,能挡住绝大多数自动化攻击。 SSH 端口安全(关键!) 禁用密码登录,改用密钥对:这是最重要的一步。 密码很容易被暴力破解,而密钥对几乎无法被暴力枚举。 操作:修改 /etc/ssh/sshd_config,设置 PasswordAuthentication no。 更改默认端口(可选但推荐): 将 SSH 服务从默认端口 22 改为一个高位端口(如2222)。 这并不能防住定向攻击,但能瞬间避开 99% 的自动化扫描和攻击脚本。 操作:修改 /etc/ssh/sshd_config,设置 Port 2222。 安装 Fail2ban:这是一个必备工具。 它会监控 SSH 日志,当发现同一个 IP 多次登录失败后,自动将其加入防火墙黑名单一段时间,能有效遏制暴力破解。 配置:重点监控SSH服务,设置合适的maxretry(重试次数)和bantime(封禁时间)。 防火墙配置 只开放必要端口:使用防火墙,只放行你需要对外提供的端口(80, 443, 22(或你修改后的 SSH 端口))。 通常,云服务提供商会提供默认的防火墙功能,通过云服务控制台即可完成配置。如果需要手动配置服务器防火墙(一般是 ufw 或者 firewalld),可以将默认策略配置为“DROP”,然后只放行需要对外提供的端口。命令示例(ufw): sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 2222/tcp # 假设SSH改到了2222端口 sudo ufw enable 注意:优先选择云服务厂商提供的防火墙,而非 ufw,具体原因下面会提到。 ...