我淦,从来没想到我也有泄密的一天。昨天把我的内网服务开源了,开源的时候专门 copy 了一份新代码 push github 。仔仔细细检查了好多遍,考虑到单测用例有很多密钥和邮件信息,一遍又一遍检查单测文件,把大部分单测文件都删了。
结果,没想到漏了一个流水线的自动编译脚本。脚本里面有核心服务器密码。泄露的是外网服务器密码。但是我把内外网服务器都组成局域网了,所有服务器可以内网 ip 互相访问。昨天早上 10 点多 push 的 github ,下午 6 点发现泄密,赶紧把外网服务器格式化了重装系统。但是我内网服务器涉及的东西太多,没法直接格式化。
今天早上一起来,QQ 提示网络有风险,让我改密码。改完密码依然提示有风险。这特么是谁入侵到我内网机器上挂肉鸡了吗?检查了一遍服务器进程没看到有啥异常,假设被抓肉鸡的话,有啥专业的检查工具不?
不确定是不是真的被入侵了,还是仅仅是巧合,但心里总放心不下,我淦
1
opengps 2023-07-31 10:22:25 +08:00
检查:可疑网络链接,可疑进程,可疑文件,可疑脚本任务
|
2
jiangwei2222 OP @opengps 网络太复杂了,很多机器组了局域网。内网有很多互调,内网又有 PT 、BT ,我查了出口路由器的记录,完全没法看。
进程有几千个,大致看了一眼没啥异常。 文件更没法排除,东西太多了。 定时任务 crontab -l 看了下,机器没装 crontab |
3
xubeiyou 2023-07-31 11:00:30 +08:00 2
基本我的云服务器没啥宝贝东西 我之前被搞了 我 TMD 直接重装
|
4
hahawode 2023-07-31 11:01:09 +08:00
我的服务器密码之前漏过;
服务比如数据库 能不能建立一个和之前账号密码 一摸一样的,看谁在链接; 原来的数据就改一下继续用 |
5
SeanLari 2023-07-31 11:03:04 +08:00 1
|
6
cslive 2023-07-31 11:10:02 +08:00
应用备份,断网重装系统
|
7
ihciah 2023-07-31 11:39:47 +08:00
能藏的地方和手段可太多了,建议从备份恢复或重装。
|
8
liuzhaowei55 2023-07-31 11:52:51 +08:00 via iPhone
删掉机器重新部署,如果有能力检查出来隐藏漏洞,当初就也不会被入侵了
|
9
codeface 2023-07-31 12:19:58 +08:00 14
如前人所述,重装是最稳妥的。不过也有一些排查手段可以参考:
# 1.查看异常进程活动-查找是否有异常进程和端口占用 ## 1.1 查找占用 cpu 最多的进程 * 运行 top 命令后,键入大写字母 P 按 cpu 排序 ## 1.2 查找占用内存最多的进程 * 运行 top 命令后,键入大写字母 M * `ps aux | sort -k4nr` ## 1.3 查找进程对应的文件 * `ls -la /proc/$pid/exe` * `ls -la /proc/$pid` ## 1.4 跟踪异常进程运行情况 * `strace -tt -T -e trace=all -p $pid` ## 1.5 查看进程打开的文件 * `lsof -p $pid` ## 1.6 查看进程端口情况 * 查看所有端口 `netstat -anltp` * 查看指定进程的端口 `netstat -anltp | grep $pid` * `netstat -apn|more` ## 1.7 清除恶意进程 * 清除可疑进程的进程链: `ps -elf | grep [pid] kill -9 [pid]` # 2.查看账号安全 ## 2.1 查看是否有存在新增异常账号 * 查找特权用户 `awk -F ":" '$3==0{print $1}' /etc/passwd` * 查找可以远程登录的账号信息 `awk '/\$1|\$6/{print $1}' /etc/shadow` * 查找 sudo 权限账户 `cat /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"` ## 2.2 查看是否有账号异常登录情况 * 查看当前登录用户和其行为 `w` * 查看所有用户最后一次登录的时间 `lastlog` * 查看错误登陆信息 `lasstb` * 查看所有用户的登录注销信息及系统的启动、重启及关机事件 `last` * 查看登录成功的日期、用户名及 ip `grep "Accepted " /var/log/secure* | awk '{print $1,$2,$3,$9,$11}'` * 查看试图爆破主机的 ip ``` grep refused /var/log/secure* | awk {'print $9'} | sort | uniq -c |sort -nr | more grep "Failed password" /var/log/secure* | grep -E -o "(([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3}))" | uniq -c ``` * 查看有哪些 ip 在爆破主机的 root 账号 `grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort` * 查看爆破使用的用户名字典 `grep "Failed password" /var/log/secure | awk {'print $9'} | sort | uniq -c | sort -nr` # 3.检查开机启动项 一般通过`crontab -l`命令即可检测到定时任务后门。不同的 linux 发行版可能查看开机启动项的文件不大相同,Debian 系 linux 系统一般是通过查看`/etc/init.d`目录有无最近修改和异常的开机启动项。而 Redhat 系的 linux 系统一般是查看`/etc/rc.d/init.d`或者`/etc/systemd/system`等目录。 依次排查: ``` /var/spool/cron/* /etc/crontab /etc/cron.d/* /etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/* /etc/cron.weekly/ /etc/anacrontab /var/spool/anacron/* ``` * `cat /etc/rc.local` * `cat /etc/init.d/rc.local` * `chkconfig --list` * `ls -alt /etc/init.d` * 查看 anacron 异步定时任务 `cat/etc/anacrontab` * 枚举主机所有服务 `service--status-all` # 4.查找异常文件 ## 4.1 查看最近一段时间内被修改的系统文件 * `find /etc/ /usr/bin/ /usr/sbin/ /bin/ /usr/local/bin/ -type f -mtime -T | xargs ls -la` ## 4.2 按时间排序,确认最近是否有命令被替换,可以结合 rpm -Va 命令 * `ls -alt /usr/bin /usr/sbin /bin /usr/local/bin` * `rpm -Va>rpm.log` ## 4.3 查看指定目录下文件时间的排序 * `ls -alt | head -n 10` ## 4.4 使用 find 指令查找限定时间范围的文件 * `sudo find ./ -cmin -10 -name "*.php"` # 5.排查恶意 alias 检查 `~/.bashrc`和`~/.bash_profile` # 6.排查恶意 ssh 公钥 * `/etc/.ssh/AuthorizedKeys` * `~/.ssh/AuthorizedKeys` # 7.系统文件被替换的情况下使用`busybox` 被替换的系统文件通常为 `ld.so.preload` * `busybox ps -ef|grep watchdogs` * `busybox ps -ef|grep ksoftirqds` # 8.借助工具查杀病毒和 rootkit ## 8.1 查杀 rootkit chkrootkit (下载地址-http://www.chkrootkit.org) rkhunter (下载地址-http://rkhunter.sourceforge.net) ## 8.2 查杀病毒 clamav(下载地址-http://www.clamav.net/download.html) ## 8.3 查杀 webshell cloudwalker(下载地址-http://github.com/chaitin/cloudwalker) # 9. 添加命令审计 为历史的命令增加登录的 IP 地址、执行命令时间等信息 ## 9.1 保存 1 万条命令: * `sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile` ## 9.2 在/etc/profile 的文件尾部添加如下行数配置信息 ``` USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'` if [ "$USER_IP" = "" ] then USER_IP=`hostname` fi export HISTTIMEFORMAT="%F %T $USER_IP `whoami` " shopt -s histappend export PROMPT_COMMAND="history -a" ``` |
10
MagicLi 2023-07-31 13:49:13 +08:00
想办法重装。
|
11
mineralsalt 2023-07-31 13:57:53 +08:00
放心吧, 没那么容易被入侵, PT, 各种内网回调又没有可执行权限, 你把你泄露密码的那台机器重装一下就行了, 局域网内其他机器应该没问题
|
12
cx9208 2023-07-31 14:33:44 +08:00 3
|
13
yanmu6626 2023-07-31 14:46:23 +08:00
有需求,还是建议弄个 SaaS 版的 EDR 进行防御,一般都兼容 linux 和 windows
|
14
npe 2023-07-31 17:01:10 +08:00
入侵了没办法了。。。
|
15
msco 2023-07-31 17:03:50 +08:00
如果是 rootkit 挺麻烦的,看不到网络连接和进程还有目录,要用专门的查杀工具,还不一定能查干净
|
16
liguangyi 2023-07-31 17:08:31 +08:00
可靠且更快的方式,重装一台新系统,做好安全限制,然后只将数据迁移过去,其他任何脚本、程序都不从被黑的系统里拷贝。
|
17
aapeli 2023-07-31 17:14:09 +08:00 1
其实无论怎样检查都不能保证能清理干净,如果有快照的话尝试恢复系统, 没有的话 可以尝试重做系统.
|
18
keepRun 2023-07-31 19:42:24 +08:00
你这种情况我想到了 github 上有专门的开源工具就是扫描各大网络平台尤其是 github ,从上面自动发现泄露的密码进行攻击,你肯定是被扫描到了
|
19
linuslv 2023-07-31 20:42:20 +08:00
日志。。。
|
20
allgy 2023-08-01 10:52:26 +08:00
检查端口
|
21
wumoumou 2023-08-01 15:46:07 +08:00
建议重装,你按网上的方法操作一遍,你会发现过几天又被搞了。。
|
22
Kenshiro 2023-08-09 23:16:09 +08:00
这领域攻击简单防守难,建议想办法备份抹盘重装
|
23
linuxgo 2023-09-22 17:29:55 +08:00
我之前用 vps 的时候每天最多的时候有上千的 ip 扫描和尝试 22 端口,结果都被 fail2ban 拦截了,所以我一般用 linux 都会启用 fail2ban 做防御,还是很管用
|