大家好,我是你们的老朋友。今天想聊聊 Linux 服务器的安全配置。很多新手买了一台服务器后,第一件事就是装环境、跑服务,却往往忽略了最基本的安全设置。等到被入侵、数据丢失时才追悔莫及。其实,只要花半小时做几个关键配置,就能挡住 90% 的常见攻击。这篇文章会手把手带你完成这些操作,全程附带命令示例,哪怕你是刚接触 Linux 也能跟着做。
一、SSH 安全设置:守好服务器的大门
SSH 是远程管理服务器的通道,也是黑客最常攻击的目标。默认端口 22 每天会被扫描上千次,所以我们要做的第一件事就是加固它。
1. 修改默认端口
编辑 SSH 配置文件:
sudo nano /etc/ssh/sshd_config找到 #Port 22,去掉注释并改成高位端口(比如 10022):
Port 10022然后重启服务:
sudo systemctl restart sshd注意:改完端口后,记得在防火墙放行新端口,否则你会把自己锁在外面(后面会讲防火墙配置)。
2. 禁用 root 直接登录
继续编辑 sshd_config,找到 PermitRootLogin,改为 no:
PermitRootLogin no然后创建一个普通用户,日常用这个用户登录,需要提权时再 sudo:
sudo adduser yournamesudo usermod -aG sudo yourname
3. 使用密钥认证,禁用密码登录
在本地生成密钥对:
ssh-keygen -t ed25519 -C "your_email@example.com"将公钥复制到服务器:
ssh-copy-id -p 10022 yourname@your_server_ip测试用密钥登录成功后,再回到 sshd_config 关闭密码认证:
PasswordAuthentication no最后重启 SSH。这样就算黑客知道密码也登不进来,安全系数大幅提升。
二、防火墙配置:只开该开的门
Linux 自带的防火墙工具主要有 iptables 和 firewalld。这里以 CentOS / Rocky Linux 常用的 firewalld 为例,Ubuntu 用户可以用 ufw,原理类似。
1. 安装并启动 firewalld
sudo yum install firewalld -y # CentOS/RHEL
sudo systemctl start firewalld
sudo systemctl enable firewalld2. 开放必要端口
假设你改了 SSH 端口为 10022,并且跑了 Web 服务(80 和 443):
sudo firewall-cmd --permanent --add-port=10022/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload3. 查看规则,关闭不需要的端口
sudo firewall-cmd --list-all如果发现有不认识的服务在监听,可以用 ss -tlnp 查看到底是什么进程,然后酌情关闭。记住:最小权限原则——只开放业务需要的端口。
三、定期备份策略:给数据上保险
安全不只是防攻击,还要防误删、防硬盘损坏。没有备份,一切安全措施都是空谈。
1. 使用 rsync 备份到本地或远程
一个简单的备份脚本 backup.sh:
#!/bin/bash
BACKUP_DIR="/backup/$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR"
rsync -avz --delete /var/www/html "$BACKUP_DIR" # 备份网站文件
rsync -avz --delete /etc "$BACKUP_DIR" # 备份配置文件
mysqldump -u root -p your_db > "$BACKUP_DIR/db.sql" # 备份数据库配合 crontab 每天凌晨执行:
crontab -e
0 3 * /root/backup.sh2. 异地备份很重要
如果服务器被入侵或机房着火,本地备份也保不住。建议将备份同步到另一台服务器或对象存储。比如用 rclone 同步到云端,或者直接用 scp 传到另一台机器。这里推荐使用 雨云服务器(优惠码:aabh)作为异地备份目标,价格实惠,国内节点速度快,很适合做灾备。
四、常见攻击防护:主动防御三板斧
除了加固 SSH 和防火墙,我们还需要一些主动防御工具来应对暴力破解、DDoS 等攻击。
1. 安装 Fail2ban 阻止暴力破解
Fail2ban 会监控日志文件,发现多次登录失败就临时封禁 IP。
sudo yum install fail2ban -y
sudo systemctl start fail2ban
sudo systemctl enable fail2ban配置自定义规则(针对 SSH 新端口):
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 10022
maxretry = 3
bantime = 3600这样同一 IP 输错 3 次密码就被封 1 小时,暴力破解基本失效。
2. 使用 Cloudflare 或 DDoS 防护
如果你的网站面向公网,建议套一层 CDN 隐藏真实 IP。Cloudflare 免费版就够用,能拦截大量应用层攻击。如果服务器本身扛不住大流量,可以选择带高防的云厂商,比如 雨云服务器(优惠码:aabh)就有高防节点,性价比很高。
3. 定期更新系统和软件
很多漏洞都是已知的,更新就能堵上。养成习惯每周执行一次:
sudo yum update -y # CentOS
sudo apt update && sudo apt upgrade -y # Ubuntu另外,关注安全公告,及时修补内核漏洞。
五、总结与思考
安全没有绝对的万无一失,但做好这些基础配置,已经能让你的服务器远离 99% 的麻烦。最后几点建议:
- 不要为了方便而牺牲安全,比如使用弱密码、开放所有端口。
- 养成查看日志的习惯:
/var/log/secure、/var/log/messages里有很多线索。 - 如果自己管理服务器觉得麻烦,可以考虑托管服务。像 雨云服务器(优惠码:aabh)就提供了一键部署的安全组策略和自动备份功能,很适合新手。
好了,今天的分享就到这里。如果你有更好的安全技巧,欢迎在评论区交流。记住:安全配置不是一次性工作,而是持续的习惯。祝你的服务器稳如泰山!
评论区: