
大概两年前我一个朋友的业务服务器被挂马整站首页被改成乱码页面数据库差点被人拖走。那次我过去帮忙排查翻了一晚上日志最后确认是Tomcat管理后台弱口令被爆破攻击者上传了Webshell进程里还多了一个挖矿程序。也是从那次之后我给自己经手的所有CentOS立了一条规矩装完系统第一时间做安全加固再装一个靠谱的主机防护Agent。这几年试了一圈云锁是我在CentOS上用得最顺手的一套方案没有之一。这篇就把我从选型到落地的完整过程写出来先是选型逻辑然后是环境检查、Agent安装、控制台初始化、核心防护配置最后附上几个我踩过的坑。哪怕你之前完全没接触过服务器安全照着做也能把一台CentOS的基本防护撑起来。用顺手之后你可能也会冒出和我当年一样的两个字真香。1. 为什么给CentOS装云锁先搞清楚你面对的是什么威胁1.1 裸奔的CentOS在互联网上到底有多危险先说一个反直觉的事实你的服务器被攻击大多数时候不是因为有人在专门盯着你而是因为全网扫描工具从来没停过。我自己的一台轻量云主机装好系统不到半天auth日志里就能看到几百条来自不同IP的SSH登录失败记录。这就是全网端口扫描加暴力破解在自动干活完全是广撒网模式根本没有目标太小不值得打这回事。裸奔状态下的CentOS最常见的被入侵路径无非这么几条SSH弱口令root密码设成123456、admin这类等于把门锁卸了挂块牌子。中间件漏洞Tomcat后台弱口令、phpMyAdmin直接暴露公网、Struts2和Shiro这类老组件的历史漏洞都是重灾区。Webshell上传网站某个上传接口没做类型校验攻击者传一个PHP马上去网站目录就变成后花园。默认端口暴露3306、6379、27017这些数据库和缓存端口直接裸在公网等于告诉别人来连。很多做开发的朋友觉得我的站小没人看但攻击是自动化的几百块钱一个月的小主机一样会被扫到。等出了事再回头看日志往往已经被人清干净了那时候才是真的被动。1.2 云锁、宝塔、fail2ban、安全组到底选哪个先给你一张粗暴的对比表看完你就明白我为什么在CentOS上把云锁作为主机侧防护的主角方案定位优点局限云锁主机安全Agent集成WAF、文件防篡改、资源监控、SSH防爆破一体化、图形界面、上手快规则库持续更新需要常驻进程部分高级功能要花时间调宝塔面板服务器管理面板建站、部署、计划任务极方便安全功能是附带模块深度有限fail2ban开源暴力破解防御免费、轻量、可定制功能单一无图形界面不适合小白云平台安全组云厂商的网络安全规则零成本、网络层过滤管不到主机内部行为和Web层攻击我的实际用法是组合拳云平台安全组做第一层网络过滤fail2ban管SSH基础防御云锁负责主机内部的行为检测、Web防护和文件完整性监控。云锁解决的不是某一个单点问题而是把主机上有什么异常行为这件事用一块看板统一展现出来。多台服务器一起管理的时候这个价值尤其明显不用一台一台登上去翻日志了。1.3 云锁管得了什么管不了什么先列能管的事。云锁在CentOS上主要覆盖五类能力Web应用防护SQL注入、XSS、命令注入、恶意上传、CC类攻击的拦截。文件防篡改关键目录文件一旦变化立刻告警Webshell落地基本难逃。木马查杀与隔离对磁盘上的恶意代码、挖矿程序做扫描和处置。系统加固SSH防爆破、危险端口识别、账号安全、弱口令检查。资源与行为监控CPU、内存、磁盘、带宽、进程、IO超出阈值能主动通知。再说管不了的这块才是新手最大的盲区。云锁是主机安全Agent不是应用层代码审计工具业务逻辑层面的漏洞比如订单金额越权、验证码绕过它管不了大流量DDoS清洗还是要靠云厂商的高防资源数据备份这件事没有任何一个安全软件能替你兜底。所以正确姿势是云锁帮你挡住常见的自动化攻击和入侵但代码质量、备份策略这些基本功该补还是要补。预期管理做到位用起来才不失望。2. 动手之前的准备CentOS环境梳理与安装前置检查2.1 确认版本和架构别装错包安装之前我建议先花一分钟确认系统情况这一步能省掉后面很多莫名其妙的问题# 查看发行版版本 cat /etc/redhat-release # 查看CPU架构 uname -m云锁对CentOS的兼容性覆盖得比较广CentOS 6、7、8、9以及Stream系列基本都能装CentOS 7.9、8.x这些常用版本没问题。需要注意的是一定要分清32位和64位现在的服务器几乎都是x86_64直接看uname -m输出x86_64就选64位安装包。内存方面云锁Agent本身很轻量官方一般建议512MB以上小内存VPS也能跑但全盘扫描的时候内存会被拉起来一些首次扫描建议挑业务低峰期。2.2 先把基础工具装上云锁的安装包是tar.gz格式安装脚本是Shell脚本所以wget、tar这两个是硬依赖。CentOS 7默认可能不带wget建议先装齐yum install -y wget tar net-tools vimCentOS 8或9上yum命令依然能用本质上是dnf的软链接遇到yum找不到的情况就直接用dnfdnf install -y wget tar net-tools vimnet-tools装完就有netstat命令后面排查端口冲突会用到vim纯粹是我个人习惯方便后面改配置文件。编辑器随你nano也行安装脚本本身是自动执行的这块不挑。2.3 防火墙和SELinux的预判这一步很多人一上来就跳过结果装完发现控制台登录不上又折回来查。CentOS 7以后默认带firewalld如果业务和云锁都要用建议先把本地控制台用的8080端口放行firewall-cmd --permanent --add-port8080/tcp firewall-cmd --reload注意如果服务器是云主机云平台的安全组/防火墙也要同步放行8080不然Linux里放行了外部也进不来。这两层是串联关系缺一层都访问不了。然后是SELinux。我不建议为了装一个软件无脑关SELinux但也不能让Enforcing模式挡住Agent的正常网络通信。装之前先看一眼当前状态getenforce输出Enforcing也不用慌先继续装后面一旦出现Agent启动失败、网络异常往SELinux方向排查就行第六节我会专门讲怎么处理。3. 保姆级安装过程从下载Agent到服务跑起来3.1 获取官方安装包加一步文件校验云锁官方提供Agent安装包下载我习惯直接去官网拿对应系统版本的tar包也给大家一个我常用的下载方式作为参考如果官方下载链接有更新以你实际拿到的地址为准wget https://download.yunsuo.com.cn/v3/yunsuo_agent_64bit.tar.gz32位老机器就换对应的32位包现在基本都是64位一般不用纠结。下载完我习惯先做一次校验防止文件不完整或者被篡改。虽然国内大厂下载一般不会遇到但好习惯不嫌多sha256sum yunsuo_agent_64bit.tar.gz把输出结果和官方页面公布的校验值比对一致再往下走。不一致多半是网络传输丢包或者下到半截重下一次再校验。3.2 解压赋权运行安装脚本拿到安装包之后的操作套路是固定的tar zxf yunsuo_agent_64bit.tar.gz cd yunsuo_agent_64bit ls -l chmod x install.sh ./install.sh这里稍微解释一下安装脚本会帮你做什么理解了就不容易慌检查当前用户是否有root权限没有就直接拒绝因为Agent要写/usr/local并注册系统服务普通用户干不了。检测操作系统发行版和内核版本判断兼容性。把Agent主体拷贝到固定安装目录/usr/local/yunsuo_agent/。注册开机自启动服务并把Agent进程拉起来。输出安装成功提示包含后续管理的访问方式比如本地控制台地址、服务管理命令。整个过程一般几十秒到一两分钟取决于机器性能。看到类似云锁Agent安装成功的提示主流程就走完了。3.3 安装完成后的三重验证我不太相信安装脚本的输出习惯再用三个命令自己确认一遍# 检查进程是否在跑 ps -ef | grep yunsuo # 检查服务状态 systemctl status yunsuo # 检查安装目录 ls -l /usr/local/yunsuo_agent/进程存在且状态是active (running)说明Agent已经活着了。目录里一般能看到主程序、install.sh、uninstall.sh和配置目录后面卸载或排查都要用到。这里强调一下不同小版本的进程名或服务名可能有差异如果这两个命令查不到用systemctl list-units | grep yunsuo再确认一下别一看查不到就以为装失败了先放宽条件再排查。4. 控制台第一次登录本地管理页面与云平台绑定4.1 浏览器访问本地安全控制台Agent运行起来之后云锁给你准备了一个本地Web控制台直接在浏览器访问https://服务器IP:8080注意是https不是http。浏览器会提示证书不受信任这是正常现象因为云锁本地控制台默认用的是自签名证书第一次访问都会遇到。选择继续访问/高级-前往即可不用太担心安全问题。这个控制台监听在本机远程访问依赖你在防火墙上放行的规则整体是可控的。第一次进入会要求设置管理密码具体交互以你安装版本的界面为准。设置一个强度足够的密码最好别跟服务器root密码一样。登录之后进入主界面CPU、内存、磁盘、带宽这些核心指标一屏铺开视觉上非常直观这也是我当初觉得真香的地方——不用一行一行敲命令看指标了。4.2 要不要绑定云平台账号云锁也支持把服务器绑定到云平台账号这样能在网页上集中管理多台服务器手机也能收到告警推送。我的建议是只有一台服务器且你不想多注册一个平台账号本地控制台完全够用。手上有三五台机器云平台集中管理更省事告警能一个口子统一收。服务器是纯内网环境、不允许出网访问第三方平台老老实实用本地控制台不要强行绑定。绑定流程一般是先在云锁官网注册账号然后在控制台的添加服务器里选安装码或服务器IPAgent会自动完成握手。这部分界面文案各个版本多少有点变化但核心逻辑就是账号服务器身份绑定跟着向导走不会迷路。4.3 登录之后的第一件事四项初始化配置装完登录仅仅是开始我每次在新服务器上配云锁固定先做四件事顺序基本不换改管理口令。安装时有的版本会生成默认密码或让你设置务必改成自己的强口令这一步等同给控制台换锁。开告警。把CPU使用率、内存使用率、磁盘使用率、带宽告警都开启。阈值我常用90%、80%、85%来设置带宽告警按流量的绝对值比如峰值超过50Mbps就告警具体按机器规格调整。配白名单。把公司出口IP、堡垒机IP、常用运维跳板IP加进白名单避免后续误封导致自己把自己锁在门外。按需开启防护模块。Web防护、文件防篡改、SSH防爆破这三项是我默认必开的后面第五节详细讲。四件事做完云锁才算真正进入能用状态。5. 核心功能逐项配置装上只是开始配好才有意义5.1 Web应用防护规则别等被打才想起来开如果你的CentOS是用来跑Web服务的云锁的Web防护是你应该第一个认真配置的模块。进入Web防护界面后把站点对应的域名或端口加入防护列表选择防护模式宽松只拦明显的攻击请求误报率最低适合还不确定业务形态的时候先用。标准拦截常见OWASP类攻击载荷适合大多数正式业务我一般默认用这个。严格对可疑请求非常敏感适合被攻击时的临战状态日常常开容易误伤。SQL注入、XSS、命令注入、恶意上传、CC防护这些子项打开后云锁会按规则库实时分析请求。这里提醒一个新手容易犯的错开启严格模式后业务被误拦第一反应不应该是骂工具而是去拦截日志里看被拦的是什么请求。如果请求里确实包含SQL关键字或者奇怪的编码多半是规则命中如果完全正常的业务请求被拦就把这条路径加进URL白名单或者把模式调回标准。安全防护的本质是判断判断必然有误差学会看日志、调白名单比到处问人管用。5.2 文件防篡改与Webshell检测服务器安全的重中之重Web文件被篡改比进程被挂马更隐蔽也更容易被忽略。云锁的文件防篡改功能给你一个很实用的能力指纹监控关键目录。建议纳入监控范围的目录Web根目录比如/var/www/html或宝塔常见的/www/wwwroot/你的站点。Tomcat的webapps目录比如/usr/local/tomcat/webapps/应用名。系统关键二进制目录/usr/bin、/usr/sbin。这个要谨慎更新软件包可能触发告警但宁可有噪音也不能漏。监控粒度上重点关注动态脚本文件.php、.jsp、.jar这些是Webshell最常见的宿主。静态图片、css、js可以降低监控等级减少误报噪音。Webshell查杀功能建议每周手动跑一次指定目录的扫描也可以直接安排定时任务。扫描出可疑文件后云锁会默认隔离但隔离不等于删除。我建议先人工看一遍打开文件确认是不是恶意代码是就清掉不是再恢复。特别是有些加密混淆的PHP文件查杀引擎可能误报人工确认这步不能省。5.3 资源监控与异常告警最先发现入侵的往往是资源趋势很多人低估了资源监控对安全的帮助。实际上僵尸网络、挖矿木马这类入侵最明显的破绽就是CPU或带宽突然飙升。云锁的资源监控面板能把CPU、内存、磁盘、网络、磁盘IO按时间维度画出来出现入侵的时候那个陡坡非常扎眼。但光看面板不够要把告警配置成主动找你。我常用的阈值CPU使用率超过90%持续5分钟。内存使用率超过80%持续5分钟。磁盘使用率超过85%。出网带宽突然超过日常峰值一倍以上。告警方式按你的习惯来能微信、邮件推送就用推送及时性最好如果只在本地控制台看至少保证每天登录扫一眼。当你看到某个进程CPU异常高的时候配合top或htop交叉验证确定是哪个进程、路径是否可疑这比直接杀进程本身更重要——先弄清病根再动手。5.4 SSH防爆破与系统加固从源头挡住暴力破解云锁的SSH防爆破功能本质上和fail2ban思路类似短时间内某个IP多次认证失败就自动将该IP拉黑一段时间。开启后默认阈值是失败次数时间窗口的组合比如每分钟失败5次就封禁。这个参数我建议不要设得特别激进不然同事换IP登录反而把你锁了配合前面说的白名单一起用体验最好。系统加固模块里还有几个我每次都会过一遍的点危险端口检测看3306、6379、27017、5432这些端口是否暴露公网。如果确实要对外提供服务至少改成强口令加限定来源IP没必要的直接关掉或只用内网。账号检查清理没有用的系统账号把可登录的账号列表过一遍不该有Shell的账号统统改成nologin。弱口令检查云锁能帮你扫一遍现有账号的密码强度扫出弱口令的尽快改掉。我自己交付CentOS服务器的标准流程里SSH防爆破是必开项配合修改默认SSH端口、禁用root远程登录、使用密钥认证一套下来暴力破解基本就废了。6. 踩坑记录CentOS上装云锁最容易翻车的几个点6.1 8080端口被占用导致控制台打不开我第一次在生产服务器上装的时候控制台怎么都访问不了最后发现是8080被另一个Java应用占了。排查方式很简单ss -lntp | grep 8080看到输出里有其他进程占用确认是端口冲突。处理方案有两个要么停掉或挪走占用8080的进程要么修改云锁本地控制台的监听端口。修改方式是在云锁的配置文件里调整改完重启Agent服务生效。这里要特别提醒改完端口防火墙和安全组的放行规则也要同步改不然还是访问不通。这个教训让我养成了先查端口的习惯装之前提前跑一下ss -lntp | grep -E :80|:8080|:443提前看一遍心里有底再动手。6.2 SELinux把Agent的通信挡了有一次在CentOS 7.9上装完云锁Agent服务反复启动失败systemctl status里看全是权限拒绝的日志后来才定位到SELinux。Enforcing模式下SELinux对进程的本地网络绑定、文件写入都有严格限制Agent有时候会被误挡。排查SELinux相关的告警看审计日志ausearch -m avc -ts recent如果出现大量类型为avc且被拒绝的记录基本就锁定了。处理上有两种思路临时把SELinux调到Permissive验证猜想执行setenforce 0然后重启Agent服务。如果能正常跑起来确认就是SELinux的锅。长期方案不建议为了一个Agent直接关闭SELinux稳妥做法是保持Permissive模式继续观察或者编写对应的SELinux自定义策略放行Agent需要的操作。生产环境怎么取舍取决于你们的安全基线。我的原则是没有SELinux策略维护能力至少别用Enforcing挡住业务但要想办法在测试环境把策略配好而不是简单粗暴全关。6.3 yum源和Agent安装包下载超时这个坑更多出现在刚装好的纯净系统上。默认yum源在国内速度感人装wget都可能卡半天。思路很简单换国内镜像源。以阿里云镜像为例CentOS 7wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo yum clean all yum makecacheCentOS 8/9的源配置结构略有不同去镜像站官网看对应说明即可。如果Agent包本身下载超时可以用断点续传wget -c或者本地下载好再通过scp/sftp传到服务器上别死磕一条路。6.4 卸载重装时留了残留第二遍怎么都不对有人装的时候没检查依赖后来要换版本直接删了安装目录就以为卸载干净了结果第二次安装出现各种诡异问题。正确做法是用官方卸载脚本/usr/local/yunsuo_agent/uninstall.sh执行后再手动检查这些位置确认无残留ps -ef | grep yunsuo ls -d /usr/local/yunsuo_agent systemctl list-units | grep yunsuo有进程就先kill有目录就删除有自启动项就禁用清干净再重装。很多为什么我重装就是不行的问题九成出在残留而不是安装包本身。我从第一次在CentOS上装云锁到现在经手的服务器少说也有几十台。如果要总结一条最想对你说的经验那就是安全工具的护城河不在装没装而在配没配、看没看。云锁这类Agent软件的价值是给你一扇看得见异常的窗户和一双能自动拦下常见攻击的手套但真正守住服务器的还是你定期翻看日志、跟进告警、及时升级的习惯。最后再分享一个我自己定的规矩每次改完云锁的防护策略都要在测试接口上实际验一遍确认业务没被误伤再离开终端。这套流程虽然多花几分钟但比事后被业务方找上门来要体面得多。