前两天,有个用户在各个论坛发帖:
“宝塔面板有后门!我的服务器被黑了!”
看到消息后,我们第一时间联系用户排查。
结果我们一查日志,发现面板正常、安全、没被入侵。
真正出问题的,是 SSH ——
黑客通过 SSH 直接登录用户的服务器植入病毒。
进一步了解后我们发现:
该用户从购买云服务器开始,就一直没修改云厂商初始化生成的 root 密码。
而这个“看似安全”的随机密码,不知在什么环节被泄露了。
很多云平台在创建服务器时,会自动生成临时 root 密码(甚至以明文显示在控制台或邮件里)。
而这个密码,一旦被人截取,就等于你的服务器大门敞开。
于是黑客轻松登录,改端口、加脚本、装木马……
表面上像是“面板被黑”,实际上是服务器本身被登录。
所以今天,小泽就来带大家做一件简单但非常重要的事
买到云服务器之后,第一件事不是安装面板,
而是先锁 SSH 门!
// 第一步:改掉默认密码(必须!)
买到服务器后第一件事,就是改掉云厂商给你的那个root 初始密码。
不改密码,就相当于大门没锁。
登录上服务器后,输入这一行命令:
passwd
系统会提示你输入两次新密码:
Changing password for user root.
New password: (输入新密码)
Retype new password: (再输一次确认)
passwd: all authentication tokens updated successfully.(最后看到这个就成功了)
小贴士:
密码建议至少 16 位,包含大小写字母 + 数字 + 特殊字符。
千万别用“123456”“admin”“Aa@123456” 这种通用组合。(昨天还有用户的数据库密码是 admin888,看着就……😅如果设置这种密码,你还不如不改)
最好记录在密码管理器中,不要保存在笔记本或截图里。
如果你不知道改成什么下面的命令可以帮你随机生成16位密码哦~
< /dev/urandom tr -dc 'A-Za-z0-9!@#$%^&*()_+=-' | head -c 16; echo
第二步:使用 SSH 密钥登录(彻底告别密码)
如果你已经安装好了面板,可以直接在面板里设置;如果暂时没装面板,也可以通过命令行操作。以下方式二选一即可:
方式一:通过面板进行设置
登录宝塔面板,找到安全-SSH管理
关闭SSH密码登陆,开启SSH密钥登陆
开启成功后下载SSH密钥,后续登陆服务器使用SSH登陆即可
方式二:通过命令设置
# 在你自己电脑生成密钥
ssh-keygen -t ed25519 -C "你的邮箱"
# 把公钥复制到服务器:
ssh-copy-id root@你的服务器IP
# 完成后登陆服务器,登录成功后编辑 SSH 配置:
vim /etc/ssh/sshd_config
# 找到以下几行并修改(如前面有#注释请删除):
PermitRootLogin prohibit-password
PasswordAuthentication no
# 保存退出后执行以下命令重启SSH
systemctl restart sshd
# 重启完成进行测试,测试是否能使用密码登陆(预期不能)以及是否能正常使用密钥登陆
第三步:给SSH加个“门禁系统”—— fail2ban
防爆破神器 fail2ban,可以防止SSH密码爆破,并自动封禁恶意IP,同样你也可以通过面板设置,或者自行安装,以下方式二选一即可:
方式一:通过面板进行设置
登录宝塔面板,找到软件商店,并在软件商店中搜索Fail2ban并安装
安装完成后点击设置,首次使用需要手动启动服务
启动后点击服务保护,点击创建,设置SSH防爆破(最大重试次数默认30,建议大家自己改小一点,比如5),SSH端口默认22,如果你进行了修改,请填写修改后的端口
配置完成后保存即可
方式二:通过命令设置
# 安装Fail2ban
# Debian/Ubuntu
apt install fail2ban -y
# CentOS(需要启用EPEL源)yum install fail2ban -y
# 创建配置文件
vim /etc/fail2ban/jail.d/sshd.local
# 在文件内粘贴以下内容
[sshd]
enabled = true
maxretry = 5
bantime = 3600
# 创建完成后重启服务
systemctl restart fail2ban
超过 5 次输错密码的 IP,会被封禁一小时。
就像自动识别陌生访客的门禁系统。
第四步:防火墙收口
建议只开放必要端口,比如 22,80,443和面板端口,可以在面板防火墙直接进行设置
当然,你也可以选择在在云控制台安全组里,同样关闭一切不必要的端口。在不用面板或者SSH的时候,你甚至可以把这两个端口一起关掉,只保留业务端口,比如80/443
你不开放,黑客就找不到入口。
第五步:定期自查
可以在SSH或者面板终端中,执行以下命令,查看最近登录记录:
last -a | head -n 20
执行以下命令检查计划任务(这里顺便提一下:/www/server/cron/一堆字符的,大概率是面板创建的计划任务,你可以在面板计划任务中查看):
如果发现陌生 IP或奇怪脚本,
赶紧快照 + 备份 + 排查清理。
第六步:面板加固(以 BasicAuth 为例)
SSH 锁好只是第一层防线,面板安全同样重要。
建议开启宝塔面板的 BasicAuth 认证,相当于在登录页前再加一层“暗门”。
在面板左侧菜单栏中找到设置-安全设置
点击开启BasicAuth认证,阅读相关说明
设置用户名和密码
下次访问面板时,浏览器会要求你先输入BasicAuth的用户和密码
// 结尾 · 心态 × 信任
安全,既是用户的责任,也是软件的责任。没有任何系统能百分之百避免漏洞,谁也无法保证永远没有“未知风险”。但能做到的,是持续更新、主动防御、及时修复。对于用户来说,改密码、关端口、配密钥、加验证——是日常安全的基本功;对于宝塔来说,我们同样在不断完善防护机制、加固代码、提升安全可见性。所以,安全不是一句口号,而是一种持续的行动。
真正安全的服务器,
不是永远没出过问题,
而是你和它,都在认真防御。
其实除了文章里提到的几种加固方式,
安全的细节还有很多——比如禁用 root 登录、用普通用户操作、
合理设置文件权限、启用 web 应用防护等等。
不过,这些都可以慢慢补,
最紧要的,还是先把 SSH 锁住。
还没有评论,来说两句吧...