前阵子我帮朋友排查一台被入侵的服务器,发现攻击者只是用了一个弱密码就拿到了root权限,然后植入了挖矿程序,CPU飙到100%。其实很多服务器被黑,都是因为基础安全配置没做好。今天我就把自己日常运维中常用的安全配置整理出来,希望能帮你避免踩坑。
一、SSH安全设置:第一道防线
SSH是登录服务器的常用通道,也是最容易被攻击的入口。我见过太多服务器开着默认的22端口,用着简单的密码,结果被暴力破解。建议你至少做以下几件事:
- 修改默认端口:把SSH端口从22改成其他端口,比如2222,可以大幅减少扫描攻击。
- 禁用root直接登录:创建一个普通用户,需要时再用
su或sudo提权。 - 使用密钥登录:比密码更安全,建议关闭密码登录。
具体操作如下:
# 修改SSH配置文件
sudo vim /etc/ssh/sshd_config
# 修改端口(去掉注释并修改)
Port 2222
# 禁止root登录
PermitRootLogin no
# 启用密钥登录
PubkeyAuthentication yes
# 关闭密码登录(确保密钥已配置好后再取消注释)
PasswordAuthentication no
# 重启SSH服务
sudo systemctl restart sshd
改完之后记得在防火墙里放行新端口,同时把旧端口关掉。如果你是在雨云服务器这类云平台上买的VPS,记得在控制台的安全组里也同步修改规则。
二、防火墙配置:只开必要的端口
防火墙是服务器的第二道安全屏障。Linux自带的ufw(Uncomplicated Firewall)对新手很友好,不需要记复杂的iptables命令。
# 安装ufw(如果没装的话)sudo apt install ufw -y # Debian/Ubuntu
或 sudo yum install ufw -y # CentOS
设置默认策略:拒绝所有入站,允许所有出站
sudo ufw default deny incoming
sudo ufw default allow outgoing
放行SSH新端口
sudo ufw allow 2222/tcp
放行HTTP/HTTPS端口(如果你建站的话)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
启用防火墙
sudo ufw enable
查看状态
sudo ufw status verbose
记住一个原则:只开放你业务需要的端口。比如你只跑网站,那就只开80、443和SSH端口,其他的一律关闭。
三、定期备份策略:数据是命根子
曾经有个客户,服务器被勒索病毒加密了所有文件,因为没做备份,只能交赎金。其实备份没那么复杂,用rsync加定时任务就能搞定。
# 创建备份目录
sudo mkdir -p /backup/web备份网站目录(以/var/www/html为例)
sudo rsync -avz --delete /var/www/html/ /backup/web/
备份数据库(以MySQL为例)
mysqldump -u root -p your_database > /backup/db_$(date +%Y%m%d).sql
添加Crontab定时任务(每天凌晨3点执行)
crontab -e
加入以下内容
0 3 * /usr/bin/rsync -avz --delete /var/www/html/ /backup/web/
0 4 * /usr/bin/mysqldump -u root -p你的密码 your_database > /backup/db_$(date +\%Y\%m\%d).sql
建议把备份文件同步到其他机器或对象存储,避免服务器本身出问题导致备份也丢了。另外要定期测试恢复,确保备份真的可用。
四、常见攻击防护:fail2ban与系统更新
fail2ban是个很实用的工具,它能自动封禁暴力破解的IP。我自己的服务器上就装了它,效果立竿见影。
# 安装fail2ban
sudo apt install fail2ban -y # Debian/Ubuntu配置SSH保护
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vim /etc/fail2ban/jail.local
在[sshd]部分添加以下配置
[sshd]
enabled = true
port = 2222
maxretry = 5
bantime = 3600
重启服务
sudo systemctl restart fail2ban
除了fail2ban,保持系统更新也特别重要。很多漏洞都是官方修复后,攻击者利用未打补丁的机器搞事。建议每周执行一次更新:
sudo apt update && sudo apt upgrade -y # Debian/Ubuntu
sudo yum update -y # CentOS
五、其他安全细节:别忽视小环节
除了上面这些,还有几个细节值得注意:
- 禁用ICMP响应:防止被ping扫描,但注意别影响正常网络诊断。
- 定期检查日志:养成看
/var/log/auth.log(认证日志)的习惯,能发现异常登录尝试。 - 使用安全增强模块:比如SELinux或AppArmor,新手可以先从宽松模式开始慢慢熟悉。
- 及时处理异常:如果发现CPU突然飙高、网络流量异常,别犹豫,立刻排查。
另外,如果你只是临时测试或跑个小项目,也可以考虑雨云服务器的便宜套餐,性价比高,但记住安全配置一样不能少。使用优惠码aabh还能省点钱。
总结
服务器安全不是一锤子买卖,而是一个持续的过程。我见过太多人“裸奔”上生产环境,最后被黑得惨不忍睹。其实只要花一两个小时把SSH、防火墙、备份、fail2ban这些基础配置做好,就能抵挡90%以上的常见攻击。希望这份指南能帮到你,也欢迎在评论区分享你的安全经验。
记住:安全的核心是“最小权限”和“纵深防御”。别嫌麻烦,等出事的时候就知道后悔了。
评论区: