用户登录
个人主页 用户中心 我的订单 添加授权 管理授权
退出登录
用户登录 用户注册
欢迎来到 UC建站系统

一台暴露公网的Linux云服务器从上线到被黑平均只需72小时但如果花半小时做完六步基础安全设置就能连续跑一年不出问题

服务器安全防护,从外到内分四层:

网络层 防火墙规则(iptables/nftables/ufw)、端口管理、DDoS高防IP、WAF Web应用防火墙。
系统层 SSH加固(改端口+密钥登录+禁root)、系统更新、用户权限管理、文件权限、内核参数调优。
应用层 Web服务安全配置(Nginx/Apache)、数据库安全、代码漏洞扫描、HTTPS证书、CSP策略。
监控层 入侵检测(fail2ban)、日志审计、主机安全Agent、异常登录告警、文件完整性监控。

第一步:SSH加固,挡住90%的攻击入口

一台公网服务器最薄弱的环节就是SSH。黑客扫描到22端口开放,用字典暴力破解root密码,一旦攻破就拿到了服务器的完全控制权。以下六步SSH加固是服务器上线的第一件事:

操作命令/配置效果优先级
改默认端口Port 22822(改/etc/ssh/sshd_config)躲过99%的自动扫描,攻击尝试从5000次/天降到个位数最高
禁用root登录PermitRootLogin no即使密码泄露也拿不到root权限,需先登录普通用户再sudo最高
禁用密码登录PasswordAuthentication no只能用SSH密钥登录,暴力破解彻底失效最高
限制登录用户AllowUsers youruser只允许指定用户通过SSH登录,缩小攻击面
限制连接频率MaxAuthTries 3
LoginGraceTime 30
最多尝试3次密码,30秒内未完成认证自动断开
关闭X11转发X11Forwarding no普通服务器不需要图形转发,关掉减少攻击面

改完之后用systemctl restart sshd重启SSH服务,不要关闭当前SSH连接,新开一个终端测试新端口和密钥能否正常登录。确认能登录之后再关闭旧连接。很多人改完配置重启SSH发现登不上去,只能去云控制台用VNC救急。

1 - 一台暴露公网的Linux云服务器从上线到被黑平均只需72小时但如果花半小时做完六步基础安全设置就能连续跑一年不出问题 - UC建站系统

第二步:fail2ban自动封IP,把暴力破解者挡在门外

改端口能减少扫描量,但攻击者如果专门针对你的IP和端口,仍然可以暴力尝试。fail2ban的作用是监控日志,发现多次失败尝试后自动用iptables封禁该IP,几分钟到几小时内禁止访问。

# 安装fail2banapt install fail2ban -y   # Debian/Ubuntuyum install fail2ban -y    # CentOS/RHEL# 创建自定义配置(不要直接改jail.conf)cat > /etc/fail2ban/jail.local << 'EOF'[DEFAULT]# 封禁时间:1小时bantime = 3600# 查找时间窗口:10分钟内findtime = 600# 最大失败次数:5次maxretry = 5# 忽略本地IPignoreip = 127.0.0.1/8[sshd]enabled = trueport = 22822logpath = /var/log/auth.logmaxretry = 3bantime = 86400EOF# 启动fail2bansystemctl enable fail2ban --now# 查看SSH封禁状态fail2ban-client status sshd

fail2ban不只是保护SSH,还能保护Nginx、Apache、MySQL、Postfix等几乎所有服务。在jail.local里加上对应的配置段就能开启:

# 防Nginx 404扫描和恶意请求[nginx-http-auth]enabled = trueport = http,httpslogpath = /var/log/nginx/error.logmaxretry = 3# 防CC攻击(大量请求)[nginx-botsearch]enabled = trueport = http,httpslogpath = /var/log/nginx/access.logmaxretry = 2findtime = 60

第三步:防火墙最小化原则,只开放必须的端口

默认情况下服务器可能开着几十个端口,每一个都是潜在的攻击入口。最小化原则:只开放业务必需的端口,其余全部关闭。

# ufw方式(Ubuntu/Debian最简单)ufw default deny incoming   # 默认拒绝所有入站ufw default allow outgoing  # 默认允许所有出站ufw allow 22822/tcp         # SSH自定义端口ufw allow 80/tcp            # HTTPufw allow 443/tcp           # HTTPSufw enable                  # 启用防火墙ufw status verbose          # 查看规则# iptables方式(更灵活但更复杂)iptables -A INPUT -p tcp --dport 22822 -j ACCEPTiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A INPUT -p tcp --dport 443 -j ACCEPTiptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTiptables -A INPUT -j DROP# 保存规则iptables-save > /etc/iptables/rules.v4

一个常见的坑:在云服务器上配置iptables之前,先确认云服务商的安全组规则。腾讯云、阿里云都有独立的安全组防火墙,规则是叠加的——安全组放行+iptables放行才能通。很多人iptables配好了发现端口不通,排查半天发现是安全组没放行。

第四步:系统和软件持续更新,堵住已知漏洞

2025-2026年Linux系统重大漏洞频发,OpenSSH的regreSSHion漏洞(CVE-2024-6387)允许未经认证的远程代码执行,影响数百万台服务器。这类漏洞的修复方式只有一个:及时更新

2 - 一台暴露公网的Linux云服务器从上线到被黑平均只需72小时但如果花半小时做完六步基础安全设置就能连续跑一年不出问题 - UC建站系统

# 手动更新apt update && apt upgrade -y    # Debian/Ubuntuyum update -y                    # CentOS/RHEL# 设置自动安全更新(推荐)apt install unattended-upgrades -ydpkg-reconfigure unattended-upgrades# 定期检查是否需要重启(内核更新后需要重启)ls /var/run/reboot-required

除了系统,Web应用和框架也必须保持更新。WordPress、Nginx、PHP、MySQL这些组件的漏洞是黑客最喜欢的入侵路径。WordPress一个过时插件的漏洞可能比SSH弱密码更容易被利用。

第五步:WAF和主机安全,云厂商的专业防护工具

上面的四步都是"自己能做"的基础安全配置。但如果业务对安全要求更高——比如做电商、金融、政务类网站——就需要专业的安全产品:

产品类型代表产品防护什么价格适合谁
WAF Web应用防火墙腾讯云WAF、阿里云WAF、雷池WAF、CloudflareSQL注入、XSS、CSRF、CC攻击、恶意爬虫、Webshell上传免费版可用(雷池/Cloudflare),专业版¥2000+/月所有有Web业务的服务器
主机安全腾讯云CWP、阿里云安骑士漏洞扫描、基线检查、入侵检测、木马查杀、异常登录告警基础版免费,专业版¥60-100/月所有服务器,强烈建议安装
DDoS高防腾讯云DDoS高防、阿里云DDoS防护大流量DDoS攻击清洗、CC攻击防护¥20800+/月起高价值业务、容易被攻击的行业
堡垒机齐治堡垒机、云堡垒机统一管理服务器登录、操作审计、权限控制、录屏回放云堡垒机¥2000+/月起多人运维、等保合规需求

如果预算有限,Cloudflare免费版+雷池WAF社区版是不错的起步组合。Cloudflare的免费CDN自带基础DDoS防护和WAF规则,雷池WAF社区版部署在自己的服务器上,免费保护10个站点,覆盖SQL注入、XSS、文件上传等常见Web攻击。两者配合使用,能挡住90%以上的Web层攻击。

第六步:日志监控和告警,出了事第一时间知道

安全配置做得再好,也不能保证100%不被入侵。关键是被入侵了能第一时间发现,而不是几个月后才发现服务器在挖矿。

监控项工具/方法告警条件
异常登录lastb + fail2ban + 云主机安全Agent陌生IP登录、非工作时间登录、从境外IP登录
文件篡改aide / tripwire(文件完整性校验)关键系统文件(/etc/passwd、/bin/、/usr/bin/)被修改
资源异常htop + 云监控 + 自定义脚本CPU突然100%(挖矿特征)、网络流量异常飙升、磁盘突然写满
Web攻击WAF日志 + Nginx错误日志大量404请求(目录扫描)、SQL注入特征、Webshell访问

最简单的告警方案:写一个Shell脚本放到crontab里,每小时检查一次登录日志和系统负载,发现异常就发邮件或钉钉通知:

#!/bin/bash# 简易安全巡检脚本,放到crontab每小时跑一次# 1. 检查CPU负载(超过80%告警)LOAD=$(awk '{print $1}' /proc/loadavg | cut -d. -f1)if [ "$LOAD" -gt "$(nproc)" ]; thenecho "[告警] CPU负载过高: $LOAD" >> /var/log/security-check.logfi# 2. 检查最近的SSH失败登录FAILED=$(grep "Failed password" /var/log/auth.log | wc -l)if [ "$FAILED" -gt 100 ]; thenecho "[告警] SSH失败登录过多: $FAILED 次" >> /var/log/security-check.logfi# 3. 检查异常进程(常见的挖矿程序名)MINERS=$(ps aux | grep -iE "xmrig|minerd|cpuminer|stratum" | grep -v grep | wc -l)if [ "$MINERS" -gt 0 ]; thenecho "[严重告警] 发现疑似挖矿进程!" >> /var/log/security-check.logfi

免费工具组合方案,按预算和规模选

方案组件月费适合谁
个人站长基础版SSH加固 + fail2ban + ufw + Cloudflare免费版 + 云厂商免费主机安全¥01-5台服务器,个人博客/企业站
中小企业进阶版基础版 + 雷池WAF + 云厂商专业版主机安全 + 定期漏洞扫描¥100-500/月10-50台,电商/教育/金融
高价值业务完整版进阶版 + 商业WAF + DDoS高防 + 堡垒机 + 日志审计 + 渗透测试¥3000+/月大型电商/金融/政务/游戏

服务器安全不是一个"装完就完事"的任务,而是一个持续的过程。花了半小时做完SSH加固+防火墙+fail2ban,基础防线就算搭好了。之后每个月做的事就三件:看一眼安全日志有没有异常、更新系统补丁、检查一下新装的软件有没有开不必要的端口。这三件事加起来每个月花不了半小时,但能让服务器从"上线72小时被黑"变成"连续跑一年不出事"。安全这件事,投入的时间和被黑之后的修复时间,差了至少100倍。

相关推荐
在线客服
👇找客服拿折扣
QQ咨询&售后
在线时间
11:00 ~ 5:30
QQ:3155555535
👇联系QQ
👇联系WX
首页 程序 帮助 登录