ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

服务器安全加固实战指南:从SSH防护到等保测评全流程

服务器安全加固实战指南:从SSH防护到等保测评全流程 你有没有过这种经历服务器刚买回来心里美滋滋觉得终于有一台属于自己的机器了。结果没几天SSH登录一看bash_history里多了一堆你不认识的命令CPU跑满往外疯狂发包——被入侵了。我做安全加固和运维这些年见过太多这种案例90%以上都不是被什么高级黑客“定点打击”纯粹是服务器裸奔在网上被自动化扫描工具顺手牵羊。这篇服务器安全加固指南我打算按“防入侵 过等保”两条线来讲给新手一条真正能照着操作的路径每一步都告诉你为什么这么做、怎么验证、最容易栽在哪。这篇文章不会给你罗列100条背不完的清单。我会从“先做减法、再做加固、最后留好审计”这个逻辑出发带你走完账号体系、SSH、防火墙、系统内核、等保检查项、入侵检测与巡检最后送一份新手翻车自救手册。文中的命令我在 CentOS/Rocky Linux 和 Ubuntu 上都实际跑过遇到发行版差异的地方我会单独说明。适合谁看刚买第一台云服务器、想把业务部署上去又担心被入侵的新手以及正在准备等保测评、不知道从哪下手的运维同事。1. 动手之前先想清楚加固的第一原则是缩小攻击面1.1 先摸清家底别在黑暗里开枪很多人拿到服务器就急着装宝塔、装MySQL、装Nginx装完才发现自己根本不知道这台机器对外暴露了什么。防入侵的第一步不是加各种安全软件而是先搞清楚这台机器上到底有什么。我会先跑一套基础命令把现状记录下来这份“资产清单”后面每一步都用得上。查看当前监听端口ss -lntup这条命令会列出所有正在监听的TCP/UDP端口以及对应的进程。如果你发现某个端口在监听却完全不认识那个服务先标记下来后面一起排查。再看开机自启服务systemctl list-unit-files --typeservice --stateenabled以及系统里有哪些用户、哪些定时任务cat /etc/passwd crontab -l ls -l /etc/cron.d /etc/cron.daily为什么要做这一步安全加固本质上是一个缩小攻击面的过程。攻击面可以类比成你家的门窗门越多、窗越大贼能进来的入口就越多。服务器的攻击面包括开放的端口、在监听的服务、可登录的账号、不安全的配置、过期的软件。你连自己有几个门、几扇窗都不知道就谈不上加固。顺手把这些信息记录到本地后面排错和自查都能用上。1.2 先做减法关掉用不到的服务摸完家底之后凡是你不知道是干什么的服务先上网查一下确认用不到的直接禁用。很多安全事件的根源不是少装了一个防护软件而是多跑了一个无关服务。常见能清理的默认服务包括基本不用的本地邮件服务 postfix、打印服务 cups、自动发现服务 avahi-daemon以及某些虚拟化软件自带的 libvirtd。关服务之前先把状态和依赖关系确认清楚systemctl status postfix systemctl stop postfix systemctl disable postfix这里有个经验要分享不是所有服务都能乱关云监控 agent、安全 agent、数据库和 Web 服务本身都是业务依赖的。stop 之前先看这个服务是哪个软件包带来的确认它不是业务链路的一部分再动手。我的习惯是先 stop确认业务没受影响再执行 disable一条条来不要批量操作。一次动多个服务出问题根本不知道是哪个引起的。1.3 加固顺序为什么不能乱改一气新手最容易犯的错误是看到一篇教程就照着改改到一半发现 SSH 登不上了或者业务挂了然后心态爆炸。我这些年养成的工作流是先备份、再加固、后验证每次只动一个层面备份关键配置sshd_config、sysctl.conf、PAM 相关文件网络层安全组 防火墙先把进出的口子看清系统层账号、SSH、服务、内核参数业务层数据库、Web 服务的专用加固审计与监控日志、文件完整性、异常告警从外部视角验证扫描端口、检查关键服务这个顺序的核心逻辑是网络层挡不住所有东西但能过滤掉绝大多数的自动扫描系统层负责管好账号和入口审计和监控是最后一道保险万一被突破了你能第一时间发现。每一步做完都要验证确认没弄坏再进入下一步。云服务器尤其要注意控制台里的安全组和系统内防火墙是两层防线只配任何一层都是不完整的后文我会专门讲这两层的关系。2. 登录入口是第一次攻防SSH 与账号体系加固2.1 为什么 SSH 是最大的攻击面只要你的服务器 IP 暴露在公网攻击者的扫描工具就会在几分钟之内发现你的 22 端口。默认的 SSH 配置有三个危险点允许 root 直接登录、允许密码登录、端口固定为 22。这三个点叠加等于把大门钥匙挂在门口然后告诉全世界“来试试”。暴力破解脚本会拿常见密码字典一遍遍试root/123456 这种组合在真实环境中被爆破成功的概率极高不是开玩笑。现实情况比想象中更直接很多安全事件不是被“黑”进来的而是被“猜”进来的。自动化扫描工具每秒能扫上千个 IP只要你的密码稍微弱一点总有一台工具会撞上。所以第一个要做的不是装什么复杂的防护系统而是把 SSH 这道门彻底换掉关掉 root 登录、用密钥代替密码、改掉默认端口。2.2 三步把 SSH 改成“密钥普通用户”模式第一步创建一个普通管理账号并加入提权组useradd opsadmin passwd opsadmin usermod -aG wheel opsadmin # CentOS/Rocky Linux # 或者 Ubuntu 用 # usermod -aG sudo opsadmin第二步在本地电脑上生成密钥对然后把公钥部署到服务器ssh-keygen -t ed25519 -C work-laptop ssh-copy-id opsadmin你的服务器IP为什么推荐 ed25519相比传统的 RSA 2048/4096ed25519 密钥更短、生成和签名速度更快安全性在目前的攻防对抗下完全够用。如果你用的老工具链不支持 ed25519退而求其次用 RSA 4096 也行但没必要主动选。ssh-copy-id 执行完之后先新开一个终端用密钥方式登录验证一下ssh -p 22222 opsadmin你的服务器IP确认能登进来再做第三步修改 /etc/ssh/sshd_configPort 22222 PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes MaxAuthTries 3 LoginGraceTime 30 AllowUsers opsadmin X11Forwarding no改完之后先检查语法再重载服务sshd -t systemctl reload sshd # RHEL 系 # 或者 systemctl reload ssh # Debian/Ubuntu这个顺序必须反复强调务必先确认密钥能登录、普通用户能登录再关掉密码登录和 root 登录。顺序反了你就会被自己锁在门外。我见过太多次因为先改了 PasswordAuthentication no才发现密钥没配对的案例。2.3 双因子认证给 SSH 再加一道锁密钥认证已经能挡住绝大多数自动爆破但如果你管理的服务器有一定重要性或者正在准备等保测评强烈建议再上双因子认证。最常见的做法是用 TOTP 手机动态口令和很多银行 App 的验证码是同一个思路。装好 libpam-google-authenticatorUbuntu/Debian或 google-authenticatorRHEL 系之后在管理账号下运行一次 google-authenticator会生成一个二维码和备用验证码把二维码存到手机验证器 App 里。然后修改 /etc/pam.d/sshd 加入一行认证配置再在 sshd_config 里打开 ChallengeResponseAuthentication重启 sshd 生效。这里有一个惨痛教训双因子认证一旦配置错比密钥更麻烦。配置完成之后千万不要退出当前 SSH 会话新开一个会话测试确认二维码扫描、动态码输入都能通过再关闭原会话。很多人就是改完直接断线结果进不去了只能走云控制台 VNC 去救。2.4 sudo 权限要“抠门”密钥加双因子解决的是“谁能进来”的问题sudo 解决的是“进来之后能干什么”的问题。默认情况下在 wheel/sudo 组里的所有用户都能用 root 权限执行任意命令这口径太大了。更稳妥的做法是用 visudo 把某个账号的 sudo 权限限制到具体命令。比如给负责日志排查的账号只开放查看日志的权限opslogs ALL(ALL) /usr/bin/tail, /usr/bin/grep这样即使这个账号被攻破攻击者能做的事情也极其有限。管理账号和生产账号分开不要让所有人共用一个 root是基本原则。等保测评里最看重的一点也是“权限分离”——管理员、操作员、审计员应该是不同角色而不是所有人一把 root 走天下。2.5 防爆破的最后一层fail2ban即使你已经用上了密钥登录我还是建议把 fail2ban 装上别等真被人盯上了才后悔。fail2ban 的原理是监控日志一旦发现某个 IP 在一段时间内认证失败次数过多就自动把它拉黑。一个最简配置写在 /etc/fail2ban/jail.local[sshd] enabled true port 22222 maxretry 5 findtime 600 bantime 3600意思是 600 秒内同一 IP 失败 5 次禁掉 1 小时。阈值可以按自己情况调整我一般不会把 bantime 设得太短因为攻击者换个 IP 继续试的成本很低拉黑时间太短等于没拉。如果改了 SSH 端口这里的 port 必须同步改不然 fail2ban 监控的流量对不上。3. 系统层面的“关窗”防火墙、服务清理和内核参数3.1 防火墙默认策略没有放行的就是拒绝很多人装完防火墙只加了一堆 allow默认规则还是 ACCEPT这等于白装。正确姿势是“默认拒绝按需放行”就像一栋楼先保证所有房门锁死再给需要的人发钥匙。以 CentOS/Rocky Linux 默认的 firewalld 为例systemctl enable --now firewalld # 先把 SSH 新端口放行再切默认区域为 drop firewall-cmd --permanent --add-port22222/tcp firewall-cmd --permanent --add-port80/tcp firewall-cmd --permanent --add-port443/tcp firewall-cmd --permanent --set-default-zonedrop firewall-cmd --reloadUbuntu 上的 ufw 也是同一个思路ufw default deny incoming ufw allow 22222/tcp ufw allow 80/tcp ufw allow 443/tcp ufw enable关键点在于一定要先添加放行规则再切换默认拒绝。很多人顺序反了reload 完发现自己 SSH 也断了。如果只想让某个 IP 访问管理端口可以用 rich rule 做来源限制firewall-cmd --permanent --add-rich-rulerule familyipv4 source address你的办公IP/32 port protocoltcp port22222 accept这样即使 22222 端口暴露着非白名单来源也连不进来比单纯改端口安全得多。3.2 云安全组和系统防火墙是两层别漏这里单独提一下因为它是最容易踩坑的地方。云服务器通常有两道防火墙一道是云平台控制台里的安全组一道是操作系统里的 firewalld/ufw/iptables。安全组相当于小区门卫系统防火墙相当于你家大门。正确做法是两边都要收紧安全组只放行业务必要端口80、443、SSH 管理端口等数据库端口3306、6379 等只允许办公 IP 或业务内网访问不要对 0.0.0.0/0 开放。系统防火墙做纵深防御。很多运维只配了一道结果安全组全放行、系统防火墙全关等保测评一查就露馅。在云服务器上数据库这类管理端口最稳妥的放行方式是限制来源firewall-cmd --permanent --add-rich-rulerule familyipv4 source address192.168.1.100/32 port protocoltcp port3306 accept如果业务确实需要任意 IP 访问 80/443那也至少保证其他端口是关闭状态。默认拒绝加最小放行这是贯穿整篇文章的核心思想安全组和系统防火墙都要遵守。3.3 内核参数给系统穿上防扫描的“护甲”防火墙解决的是端口问题内核参数解决的是“即使端口开着也不容易被打垮”的问题。配置文件在 /etc/sysctl.conf改完 sysctl -p 生效# 开启 TCP SYN Cookie缓解 SYN Flood 洪水攻击 net.ipv4.tcp_syncookies 1 # 启用反向路径过滤防止 IP 欺骗 net.ipv4.conf.all.rp_filter 1 net.ipv4.conf.default.rp_filter 1 # 忽略广播 ICMP 请求避免被利用做放大攻击 net.ipv4.icmp_echo_ignore_broadcasts 1 # 限制 SYN 重试次数减少握手攻击的影响 net.ipv4.tcp_syn_retries 2挑两个最常见的解释一下tcp_syncookies 的主要作用是在半连接队列被塞满时通过 SYN Cookie 机制保证正常的新连接还能建立这是抵御 SYN 洪水的重要开关rp_filter 会检查进来的包源地址是否可达不可达的直接丢弃能有效减少利用伪造 IP 扫描和攻击的行为。这些参数本身不影响业务端口改完基本无感但能让攻击者的扫描成本明显上升。对新手来说改这里比改 PAM 配置安全得多值得一上来就做。3.4 文件权限敏感文件别给所有人看Linux 权限体系是防入侵的重要基础但很多人从不检查。下面这几项是基础中的基础ls -l /etc/passwd /etc/shadow /etc/gshadow /etc/group正常情况下 passwd 和 group 是 644shadow 和 gshadow 应该是 0 或至少只有 root 可读写。如果发现权限过大马上修正chmod 644 /etc/passwd /etc/group chmod 0000 /etc/shadow /etc/gshadow再检查有没有空密码账号和 UID 为 0 的非 root 账号# 空密码账号 awk -F: ($2){print $1} /etc/shadow # UID 为 0 的账号只应该出现 root awk -F: ($30){print $1} /etc/passwd如果第二条命令输出里除了 root 还有别的那十有八九是被人留了后门需要立刻处理。包括检查所有用户 home 目录下的 authorized_keys防止有人把公钥偷偷放了进来。这个检查没有技术门槛但能发现大多数半吊子攻击者留下的痕迹。4. 等保测评视角把检查项一个个落在地上4.1 先搞清楚等保到底查什么等保测评不是某个厂商的“认证考试”而是一套安全技术和管理要求体系。核心计算环境里和你这台服务器直接相关的检查点主要包括身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范、数据完整性和保密性这几大类。我用一张表快速对照检查大类通常关注的点常见落地手段身份鉴别密码复杂度、登录失败处理、双因素认证PAM pwquality、faillock、SSH双因子访问控制默认账户与口令、权限分离、最小权限改默认密码、普通用户sudo、禁用root远程安全审计审计开启、日志留存、审计保护auditd、rsyslog、日志转存入侵防范最小安装、补丁更新、服务关闭卸载无用软件、定期更新补丁恶意代码防范安装防病毒软件clamav 或云安全 Agent数据完整性/保密性文件校验、传输加密、备份AIDE、SSH/TLS、定期备份各家测评机构的记录方式不一样但核查项基本围绕上面这些跑。下面把最容易扣分的几个点展开讲。4.2 密码复杂度与登录失败锁定密码复杂度是测评里几乎必查的项。基础要求是“长度不小于8位并且包含大写字母、小写字母、数字和特殊字符中的至少三种”。不同发行版配置路径不太一样但思路一致。在 RHEL/CentOS/Rocky 上通过 PAM 的 pwquality 模块控制核心配置一般在 /etc/security/pwquality.confminlen 9 dcredit -1 ucredit -1 lcredit -1 ocredit -1这个配置的意思是密码最短 9 位至少包含一个数字dcredit、一个大写字母、一个小写字母、一个特殊字符。负号表示“必须至少有多少个”这是 PAM 里比较容易误解的地方。登录失败锁定通过 pam_faillock 实现在 /etc/pam.d/system-auth 中增加规则大意是连续失败 5 次锁定 5 分钟。具体指令各家发行版略有差异建议以官方文档为准改之前先备份。这里想提醒的是在生产环境配置 PAM 一定要非常小心改错了可能导致所有用户都登不进去。改之前备份改之后测试再接受。另外别忘了 /etc/login.defs 里的密码老化参数PASS_MAX_DAYS 90 PASS_MIN_DAYS 1 PASS_WARN_AGE 7意思是密码最长使用 90 天要改、至少 1 天内不能改、过期前 7 天开始提醒这是等保测评的常客。4.3 日志审计留痕、留存、防篡改日志是安全事件发生后的“案发现场”。很多服务器被入侵后管理员翻日志发现 /var/log/secure 是空的或者根本没有开启远程留存攻击者进来把日志清了你连他做了什么都不知道。等保测评明确要求审计记录要达到一定保存期限并且审计进程不能被普通用户干扰。第一步确认 rsyslog 在跑systemctl status rsyslog systemctl enable --now rsyslog第二步开启 auditd 并配置规则审计文件访问和权限变更systemctl enable --now auditd auditctl -w /etc/passwd -p wa -k identity auditctl -w /etc/shadow -p wa -k identity第三步考虑把日志实时传送到远程日志服务器或者对象存储。这一步对等保很加分在实际安全事件里也是保护日志不被攻击者篡改的最有效方案。没有条件的话至少用日志轮转保证留存量并定期备份。还有个小细节/var/log/secure 这类敏感日志的权限收一下普通用户不应该能随便查看。系统时间同步也归在这一块等保要求设备时间准确否则审计记录的时间戳没法作为证据。用 chrony 或 systemd-timesyncd 配好可靠的时间源定期用 chronyc sources -v 检查同步状态。时间不同步这个问题看起来小测评时却是很容易被记录的一条。4.4 基线核查命令清单等保测评现场测评师会在你的服务器上敲一堆命令做基线核查。提前自查可以大大减少现场整改压力。下面几条我建议每个月自己跑一遍检查所有账号状态、权限和最近登录awk -F: ($30){print UID0: $1} /etc/passwd awk -F: ($2){print Nopasswd: $1} /etc/shadow last -20检查可写文件和异常 SUIDfind / -perm -002 -type f -exec ls -l {} \; find / -perm -4000 -type f -exec ls -l {} \;检查 SSH 配置里有没有危险项grep -E PermitRootLogin|PasswordAuthentication|Protocol|MaxAuthTries /etc/ssh/sshd_config做完这些自查心里基本就有底了。我的经验是等保整改不要临时抱佛脚最好的状态是日常运维就把这些基线维护好测评师来的时候直接看结果而不是现场改配置改到冒汗。5. 防入侵的主动手段完整性校验、异常排查和巡检习惯5.1 给文件上一份“指纹图谱”AIDE前面做的都是“减少被入侵的概率”但任何防御都有被突破的可能。AIDE 做的事情是对系统里关键文件生成校验和隔一段时间再对比一次一旦发现 /etc/passwd、/usr/bin 下的关键可执行文件被人改动过立刻报警。安装和初始化yum install aide # RHEL 系 # 或者 apt install aide aide --init mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz之后用 cron 定期执行检查把结果输出到日志0 2 * * 0 /usr/sbin/aide --check /var/log/aide_check.log 21注意AIDE 第一次初始化之后只要系统正常更新过软件、改过配置就会产生差异告警这是正常的。需要定期用 aide --update 更新基线别一看到告警就惊弓之鸟但也要养成看告警的习惯区分“我自己改的”和“不是我改的”。5.2 怀疑被入侵时按这条链路排查即便做了这么多防护也要知道“如果最后一道被攻破怎么发现”。一旦怀疑服务器异常比如 CPU 突然飙高、有陌生外联、命令执行变慢按下面顺序排查看在线用户和登录记录who、last、lastb重点关注来源 IP 是否异常看监听端口和网络连接ss -antp找有没有向陌生 IP 发起的连接看计划任务和自启动项crontab -l、/etc/cron.d/、systemctl list-unit-files --typeservice --stateenabled看最近被修改的文件find / -mtime -3 -type f看各用户 home 目录下的 authorized_keys找有没有被塞入的公钥不需要做什么高深操作先按这个链路排查大多数挖矿木马和后门都藏不住。找到可疑点之后先断网取证再清理不要在自己还没搞清楚之前就把它 rm 掉很多后门有守护进程删掉一个还会自动恢复得一次性把关联项全部清掉。5.3 一份足够开始的巡检脚本与其每个星期手动敲那一堆命令不如写个小脚本定时跑完输出结果。下面这个是我平时使用的基础版你可以直接存成 /usr/local/bin/security_check.sh配 cron 每周跑一次#!/bin/bash echo 系统负载与运行时长 uptime echo 磁盘占用 df -h | grep -vE tmpfs|udev echo 当前在线用户 who echo 监听端口 ss -lntup echo 最近认证失败记录 grep Failed password /var/log/secure | tail -20 echo 最近登录记录 last -20 echo 关键文件权限 ls -l /etc/shadow /etc/passwd /etc/sudoers echo 空密码账号 awk -F: ($2){print $1} /etc/shadow配到 crontab0 3 * * 1 /bin/bash /usr/local/bin/security_check.sh /var/log/security_check.log 21这个脚本不求全面胜在能持续跑起来。安全这件事最重要的是“可持续”和“有记录”哪怕每天只看一眼几条输出也比装了全流程工具从来不看强。5.4 底线中的底线备份与恢复演练再强的安全加固也无法保证 100% 不被攻破。真正到了被勒索、被删库、被搞坏配置的那一天能把你捞回来的只有备份。这里说的备份不只是“把数据导一份”而是要有完整的恢复路径。系统配置用 Git 管理或者打镜像数据库做定期自动备份备份文件放到和服务器不同的地方至少每个季度做一次完整的恢复演练别等到出事了才发现备份文件本身就是坏的。很多团队“以为有备份”结果恢复时才发现备份了半年都没验证过那等于没有备份。等保测评里对数据备份恢复也有明确要求这一点是需要长期坚持的习惯。备份不是解决“怎么防”而是解决“真出事了怎么活”两件事要一起做。6. 新手翻车自救手册这些坑我全都踩过6.1 改完 SSH 自己进不去了怎么办这是我最常被问到的问题。常见的翻车原因有三种关了密码登录但密钥没配好禁了 root 登录但普通用户又不具备 sudo 权限改了端口但防火墙没放行。自救的第一原则是不要慌云服务商基本都提供了网页版终端或者 VNC 登录入口相当于在你的房子墙上额外开了一扇只能你自己用的门。通过这个入口进入服务器把配置改回来就可以了。所以做任何高危配置之前先确认你在云控制台能打开网页终端这是一个保命的习惯。如果连网页终端都进不去还能用单用户模式启动修复但那个对新手来说复杂度更高。所以我才反复强调改配置前先备份、先验证、再重载不要在已经连接的会话上做不可逆操作。6.2 防火墙切默认拒绝后断连切成 DROP 后当前 SSH 立刻断掉这种经历我也有过。原因和上一个坑类似只是场景换到了 firewalld/ufw 上。自救方式同样是用网页终端进去执行 firewall-cmd --add-port22222/tcp --permanent firewall-cmd --reload把管理端口先放出来。但更好的办法是不给它翻车的机会。我的习惯是先把所有需要放行的端口规则写好再敲那一条 set-default-zonedrop敲完 reload 之前再用眼睛把规则列表过一遍。还要提醒一点云安全组那边也要确认放行了管理端口因为安全组的限制在系统内部防火墙之前如果安全组没放行你系统里怎么改都白搭。6.3 关服务把业务关没了之前遇到过同事为了清理服务把数据库自动启动给 disable 了重启机器后业务直接宕掉。问题的根源不是不能关服务而是没有先看清楚服务的依赖关系。正确的做法是先把可疑服务 systemctl status 看一下了解它是哪个软件包带来的确认不用之后先 systemctl stop观察 5 到 10 分钟业务是否有异常确认没问题再 systemctl disable。处理系统服务时一次动一个不要批量操作否则出了问题你根本不知道是哪一步引起的。这个是老生常谈但我每次事故复盘都会看到有人栽在上面。6.4 等保整改常见翻车现场等保整改本身不难难的是“改过头”。举三个我见识过的真实案例第一个是把密码复杂度调得极高要求 20 位以上、包含所有字符类型结果导致很多服务配置文件里写死的老密码全部失效服务起不来。正确做法是先梳理有哪些服务账号再统一设一个符合公司策略的合理阈值别贪心。第二个是在 /etc/pam.d 下手动改错了顺序导致所有用户包括 root 都登录不了只能通过单用户模式进系统恢复非常痛苦。所以改 PAM 之前一定要备份最好先在测试机演练。第三个是把日志留存想成只是开个 rsyslog结果审计记录保留时间根本达不到要求。等保测评前要对日志写入量、磁盘空间、轮转周期做一次评估留够余量。6.5 加固做完后如何验收最后一步验收很多人会跳过。我的建议是至少做这几件事从外部网络扫描一次服务器的端口确认只暴露了你预期的端口用正确的方式 SSH 登录确认密钥、账号、端口都生效故意用错误的密码试几次确认 fail2ban 会拉黑、登录失败有记录检查所有定时任务、巡检结果、日志是否正常落盘把这次加固涉及的改动整理成文档记录日期、原因、操作命令存在本地或者内部知识库里。我自己的习惯是无论新买一台服务器还是给老服务器做等保整改都会在动手前写一份改动清单把要改的配置、命令、验证方式、回滚方法都列出来改一项勾一项。这样哪怕中途出了意外也能一步步退回去。服务器安全没有一劳永逸这份清单更像是一套体检流程建议至少每季度重新过一遍尤其是账号、开放端口、定时任务这三个地方最容易偷偷长出你意想不到的东西。祝你的服务器一直干干净净。
返回列表