别让弱密码打开后门
上周同事老李的服务器被黑了,日志显示攻击者是通过SSH用一个简单的密码撞进去的。他用的是‘123456’加用户名组合,不到十分钟就被破解。这种事情在小团队里太常见了,总觉得“我的服务器没人盯”,可实际上自动化扫描工具全天候运行,只要端口开着,分分钟就能中招。
改掉默认密码是最基本的操作。比如MySQL的root账户、路由器后台、NAS管理界面,出厂密码就像房子的原装锁芯,谁都能查到编号配钥匙。必须第一时间设置高强度密码,建议用大小写字母+数字+符号的组合,长度不少于12位。记不住?那就用靠谱的密码管理器,总比数据被删光了哭着恢复强。
开启双因素认证,多一道坎
现在很多服务都支持双因素认证(2FA),不只是邮箱和微信,连Linux登录也能加上。比如Google Authenticator可以集成到SSH登录流程里。安装好插件后,每次远程连接不仅要输密码,还得输入手机APP生成的动态码。哪怕密码泄露了,没有那6位动态数也进不来。
配置起来也不复杂,在Ubuntu上装个libpam-google-authenticator,然后运行命令初始化,按提示扫码绑定就行。之后修改sshd_config文件,把PAM模块调用打开,重启服务就生效了。虽然登录麻烦了一点,但想想半夜被挖矿程序占满CPU的滋味,这点麻烦算啥。
限制IP和用户,缩小暴露面
公司数据库服务器没必要对全世界开放。用防火墙规则锁死访问来源,比如只允许办公室公网IP或VPN地址段连接SSH。iptables一条规则就能搞定:
<code>iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT</code>
<code>iptables -A INPUT -p tcp --dport 22 -j DROP</code>同时禁用root直接登录。新建一个普通管理员账号,需要用sudo提权操作。这样即使账号凭证被截获,攻击者还得再找提权漏洞,拖延他们的进攻节奏。顺便把SSH默认端口从22改成其他非常用端口,虽然防不住专业扫描,但能挡住大部分脚本小子的自动攻击。
监控异常登录行为
有个客户发现服务器突然变慢,查日志才发现凌晨三点有陌生IP反复尝试登录。幸好启用了登录告警,通过脚本检测/var/log/auth.log里的失败记录,超过阈值就发邮件通知。这种简单监控能在早期发现问题。
还可以定期导出成功登录的IP列表,看看有没有出现在国外或不认识的地址。比如你在北京运维,结果日志里出现莫斯科的登录记录,那肯定有问题。配合fail2ban这类工具,自动封禁频繁失败的IP,能有效减少暴力破解风险。