Linux服务器安全配置指南:新手必看的五个实用技巧

前阵子我帮朋友排查一台被入侵的服务器,发现攻击者只是用了一个弱密码就拿到了root权限,然后植入了挖矿程序,CPU飙到100%。其实很多服务器被黑,都是因为基础安全配置没做好。今天我就把自己日常运维中常用的安全配置整理出来,希望能帮你避免踩坑。

一、SSH安全设置:第一道防线

SSH是登录服务器的常用通道,也是最容易被攻击的入口。我见过太多服务器开着默认的22端口,用着简单的密码,结果被暴力破解。建议你至少做以下几件事:

  • 修改默认端口:把SSH端口从22改成其他端口,比如2222,可以大幅减少扫描攻击。
  • 禁用root直接登录:创建一个普通用户,需要时再用susudo提权。
  • 使用密钥登录:比密码更安全,建议关闭密码登录。

具体操作如下:

# 修改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%以上的常见攻击。希望这份指南能帮到你,也欢迎在评论区分享你的安全经验。

记住:安全的核心是“最小权限”和“纵深防御”。别嫌麻烦,等出事的时候就知道后悔了。

评论区: