1.事件背景
网信办发来通报,某国企单位存在境外IP远程登录内网服务器(Linux)告警.
成因:该国企单位内网通过端口映射,将某台服务器远程SSH服务端口映射到公网IP的指定端口,并且用的是弱口令登录.网信办发出
(1)受害机状态判断
爆破尝试状态(未沦陷)
Linux/Windows主机日志存在大量重复SSH登录失败记录,高频集中于单个或多个外网IP,无陌生IP登录成功记录,主机暂无异常进程、外联行为。
入侵成功状态(已沦陷)
主机出现陌生IP SSH登录成功记录、新增未知管理员账号、存在异常定时任务/免密后门、CPU/带宽异常占用、存在陌生外网C2外联,主机已被攻击者控制。
2.威胁情报收集
记录下境外恶意IP,在微步在线威胁情报平台查询该IP相关情报,着重看攻击画像.[经查:该IP为美国的一个恶意IP.平台的攻击画像明确说明该IP在XX月XX日曾有端口扫描与SSH爆破行为,该端口与时间等各类信息均与该国企单位的信息高度一致,因此判断出该国企单位是被境外恶意IP利用SSH爆破实现服务器控制行为]
3.步骤一:防火墙策略加固
登录防火墙后,配置该防火墙的安全策略选项(不同品牌的防火墙安全策略配置可能存在差异,具体可以询问相关运维人员或者联系安全设备厂商的售后服务).
(1) IP封禁
开启防火墙端口防护策略,限制单IP短时间SSH连接频次,拦截高频爆破流量:防火墙→抗 DDoS→全局防护
封禁恶意IP:防火墙->安全策略配置->添加
(2) 端口服务处理
询问负责人是否需要SSH远程登录服务
①需要SSH远程登录服务
- 设置复杂度高的口令(例:密码要包含大小写\数字\特殊字符\长度不低于8)
- 仅允许使用SSH 公钥认证登录服务器
配置流程:
一、生成密钥对
Windows(PowerShell)/Mac/Linux 本地终端(非服务器主机)执行,输入后一路回车即可.
ssh-keygen -t ed25519生成路径:
windows[私钥:C:\Users\Administrator\.ssh\id_ed25519
公钥:C:\Users\Administrator\.ssh\id_ed25519.pub]
linux[私钥:~/.ssh/id_ed25519公钥:~/.ssh/id_ed25519.pub]
二、上传公钥至服务器
Windows:
在我的电脑路径[ C:\Users\Administrator\.ssh\ ] 路径,用记事本打开id_ed25519.pub文件
复制文本内容,粘贴到服务器:~/.ssh/authorized_keys文件的下一行,如果无该文件新建即可.
然后执行以下命令,回车后输入密码即可
chmod 600 ~/.ssh/authorized_keys systemctl restart sshdLinux:
执行以下命令,并将输出内容粘贴到到服务器:~/.ssh/authorized_keys文件的下一行,
如果无该文件新建即可.
cat ~/.ssh/id_ed25519.pub然后执行以下命令,回车后输入密码即可
chmod 600 ~/.ssh/authorized_keys systemctl restart sshd三、更改ssh配置文件
在服务器打开sshd_config文件
vim /etc/ssh/sshd_config修改 / 新增以下参数,注释全部删掉,严格按下面填写
# 开启公钥认证 PubkeyAuthentication yes # 禁止密码登录 PasswordAuthentication no # 禁止空密码账号登录 PermitEmptyPasswords no # 禁止root账号直接密码登录(可选,推荐开启) PermitRootLogin prohibit-password # 关闭基于主机信任认证 HostbasedAuthentication no四、校验
Windows(PowerShell)/Mac/Linux 本地终端执行
ssh root@服务器IP能正常连上,再关闭原有服务器会话;
如果连不上,立刻回到原窗PasswordAuthentication yes改回去重启 ssh 排错,避免远程无法接入。
- 防火墙安全策略配置临时白名单:仅允许指定IP远程访问SSH服务端口:
菜单栏:对象→地址→IPv4 地址→新建,填写单 IP / 网段(如 192.168.1.0/24),保存.
新建放行策略(白名单核心)
左侧:策略→安全策略
- 点【新建】,优先级拉到最顶部(规则从上往下匹配,白名单必须优先)
- 源地址:选刚才建好的可信 IP 对象;目的地址按需填(any / 指定内网服务器)
- 服务:any 全部端口,或指定 TCP/UDP 端口(22、80、3306 等)
- 动作:允许;勾选启用;填写备注,确定保存
②无需SSH远程登录服务
禁用SSH服务: 服务器执行以下代码
sudo systemctl stop sshd sudo systemctl disable sshd配置服务器防火墙(iptables)策略为丢弃SSH服务端口数据包
iptables -A INPUT -p tcp --dport 22 -j DROP # 永久保存规则 service iptables save4.步骤二:日志审计与受害机溯源
(1)防火墙日志审计\溯源内网受害主机
- 左侧菜单:防护→入侵防御→威胁日志
- 筛选条件:
- 目的地址:填写内网网段,筛选被攻击、被外联回连的内网 IP;
- 按攻击类型(木马外联、暴力破解、挖矿外联、漏洞攻击)过滤;
- 日志字段可直接查看:源 IP(攻击方)、目的 IP(内网受害主机)、目的端口、时间、攻击行为,直接标记受害内网主机 IP。
(2)SSH登录日志审计
# 统计爆破频次最高的攻击IP(核心溯源) grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr # 查看所有成功入侵的登录记录 grep "Accepted password" /var/log/secure # 查看root账号登录记录,排查高危入侵 grep "root" /var/log/secure | grep Accepted5.步骤三:排查与阻断
(1)SSH会话排查
# 查看当前登录用户及终端 w who # 强制下线陌生终端(pts/0、pts/1等陌生终端号) pkill -f pts/终端号 # 查杀陌生SSH连接进程 ps -ef | grep sshd kill -9 恶意进程PID(2)账号排查与清理
# 查看所有可登录系统的用户 cat /etc/passwd | grep -E "/bin/bash|/bin/sh" # 排查UID为0的隐形特权账号(除root外均为异常账户) awk -F: '$3==0' /etc/passwd # 排查异常sudo权限用户 cat /etc/sudoers ls /etc/sudoers.d/(2)SSH异常公钥排查与清理
# 查看root账号密钥,删除所有陌生公钥 cat /root/.ssh/authorized_keys(3)定时任务恶意程序排查与清理
# 查看定时任务 crontab -l # 查看系统级定时任务 ls /etc/cron.* /var/spool/cron/ # 排查临时目录恶意文件(挖矿木马高发目录) find /tmp /var/tmp /dev/shm -type f -exec ls -l {} \;(4)恶意进程与外联端口排查
# 查看所有外网TCP连接 netstat -antp | grep ESTABLISHED ss -antp # 查看高CPU占用进程(挖矿程序典型特征) top