服务器安全防护设置:新手必做的安全加固实操指南
对于刚接触服务器运维的新手来说,安全防护往往是最容易被忽略却又最关键的一环。很多人在买完服务器后,直接默认配置就跑业务,结果没几天就被扫描、被暴力破解、被挂马。本文基于实操经验,整理了一份新手必做的安全加固清单,每一条都是血泪教训换来的。请注意:以下操作建议在服务器刚初始化后就执行,越早越好。
第一步:修改默认SSH端口并禁止root直接登录
默认的22端口是黑客扫描的重灾区。许多暴力破解脚本专门针对22端口,尝试弱口令。建议将SSH端口修改为1024以上的高位端口(比如22222或10086)。
操作步骤:
- 用root登录服务器,编辑SSH配置文件:
vi /etc/ssh/sshd_config - 找到
#Port 22,去掉注释并改成你的端口号,比如:Port 22222 - 找到
PermitRootLogin yes,改成PermitRootLogin no,禁止root直接远程登录。 - 保存退出后重启SSH服务:
systemctl restart sshd - 重要提醒:修改端口后,先不要关闭当前SSH连接。用另一个终端测试新端口是否能连接成功,确认无误再退出。否则一旦端口写错或防火墙没放行,你就被锁在服务器外了。
避坑: 部分云服务商的控制面板有安全组或防火墙规则,你修改了SSH端口后,必须在云平台控制台同时放行新端口。比如阿里云、腾讯云、华为云等都有安全组规则设置。沐雨云服务器的控制面板中,网络防火墙也支持按端口放行,建议先在后台将新端口添加到允许规则中,再修改SSH配置。
第二步:配置密钥登录,禁用密码登录
密码登录容易受到暴力破解,而密钥登录是目前安全性最高的认证方式。密钥对由私钥和公钥组成,公钥放在服务器上,私钥保存在本地。
操作步骤:
- 在本地电脑生成密钥对(Linux/Mac用终端,Windows推荐使用Git Bash):
ssh-keygen -t rsa -b 4096 -C "你的备注" - 将公钥拷贝到服务器:
ssh-copy-id -p 22222 用户名@服务器IP - 成功后,编辑SSH配置文件,找到
PasswordAuthentication yes,改为PasswordAuthentication no。 - 重启SSH服务生效。
避坑: 密钥文件(一般是id_rsa)一定要保管好,最好备份到安全的地方(如U盘或加密云盘)。一旦丢失,你只能通过云控制台重置密码登录。
第三步:配置防火墙,只放行必要端口
很多新手图省事,直接关闭防火墙,或者允许所有端口通过。这是非常危险的行为。建议只放行业务需要的端口,比如SSH新端口、Web服务的80/443端口、数据库端口(如果必须外部连接的话,否则只监听内网)。
以iptables为例(CentOS/Rocky/AlmaLinux等):
# 清除现有规则(小心操作)
iptables -F
iptables -X
# 默认拒绝所有入站流量
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 允许已建立的连接通过
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 放行本地回环接口
iptables -A INPUT -i lo -j ACCEPT
# 放行SSH新端口(比如22222)
iptables -A INPUT -p tcp --dport 22222 -j ACCEPT
# 放行Web端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
保存规则:
iptables-save > /etc/iptables.rules
并设置开机自启动。
避坑: 如果你用的是沐雨云服务器,可以直接在后台的“安全组”功能中配置入站规则,图形化操作更方便,而且即使本地防火墙误操作,也可以从后台重置。建议新手优先使用云平台自带的安全组,本地防火墙作为次要防线。
第四步:禁用不必要的服务,关闭默认共享端口
服务器默认会开启很多你用不到的服务,比如sendmail、ftp、telnet、rpcbind等。这些服务都有潜在漏洞风险,建议禁用。
常用命令:
systemctl list-unit-files | grep enabled # 查看所有已启用服务
systemctl stop 服务名
systemctl disable 服务名
特别提醒:禁用SELinux虽然简便,但不推荐。建议设置为permissive模式,或者学习如何配置SELinux策略。如果实在嫌麻烦,至少将SELinux设置为宽松模式:
setenforce 0
然后编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissive。
第五步:安装并配置fail2ban,防御暴力破解
即使使用了密钥登录,密码登录被禁用,但依然可能有其他服务(如web面板、数据库)存在密码认证。fail2ban可以监控日志,在短时间内多次登录失败后自动封禁IP。
安装和基本配置:
# CentOS/RHEL系
yum install epel-release -y
yum install fail2ban -y
# Ubuntu/Debian
apt install fail2ban -y
创建配置文件/etc/fail2ban/jail.local:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
ignoreip = 127.0.0.1 你的固定IP (这里填你自己的IP,防止误封)
[sshd]
enabled = true
port = 22222 # 你的SSH端口
logpath = %(sshd_log)s
启动并设置开机自启:
systemctl start fail2ban
systemctl enable fail2ban
避坑: 如果你使用了云平台安全组,fail2ban封禁的是服务器本地防火墙。如果攻击流量很大,建议结合云平台的黑名单功能一起使用。沐雨云服务器的控制台支持手动添加IP黑名单,可以配合fail2ban双管齐下。
第六步:定期更新系统和软件
不要迷信“稳定版不更新”。安全漏洞不断被发现,及时打补丁是最有效的防护手段之一。
在CentOS/RHEL系服务器上,设置自动安全更新:
yum install yum-cron -y
systemctl start yum-cron
systemctl enable yum-cron
编辑/etc/yum/yum-cron.conf,将apply_updates = no改为yes,但注意:对于生产环境,建议手动检查更新,避免自动更新导致服务异常。
最佳实践: 每周设置一个定时任务(crontab),执行yum update -y,然后在低峰期重启服务。
进阶建议:开启日志监控和入侵检测
安装ossec或aide这类工具可以对文件完整性进行监控,发现异常改动立刻报警。新手可以先从aide开始:
yum install aide -y
aide --init
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
之后定期执行aide --check,如果文件被篡改,会有输出提示。
关于云服务商的选择
对于新手来说,选择一个基础安全做得好的云服务商会省去很多麻烦。沐雨云服务器在创建时默认使用非root账号,并且初始防火墙规则只放行SSH和Web端口,减少了新手误操作的风险。同时后台提供了DDoS基础防护、安全组可视化配置、一键快照等实用功能。具体可参考官网:
无论你选择哪家服务商,请务必记住:安全是动态的,不是一次性配置完就完事了。建议每隔一个月复查一次SSH配置、防火墙规则、开启的服务列表,并且养成定期备份的习惯。这三件事做好了,你的服务器就不太容易被攻破。
总结清单:
- 修改SSH端口,禁用root直接登录
- 配置密钥登录,禁止密码登录
- 防火墙只放行必要端口
- 禁用无用服务
- 安装fail2ban
- 定期更新系统
- 开启日志监控(可选)
以上操作全部完成大约需要半小时,但这半小时能帮你避免未来90%的安全风险。别偷懒,赶紧去加固你的服务器吧。