在Linux服务器上,使用who或w命令可以立刻看到当前登录的用户,配合last查看历史记录,再用ss或netstat检查网络连接,你就能完整掌握服务器上的连接情况。参考2
当前在线用户查询:who、w、users
这三条命令是查看服务器当前活跃用户的最直接方法,普通用户即可运行。
who:查询当前登录用户
who命令输出简洁,每行一个会话,依次显示用户名、登录终端、登录时间、来源IP(如果通过SSH),常用参数包括:
-u:显示用户空闲时间,方便判断僵死会话。-H:输出列标题,提升可读性。-q:只显示总用户数和用户列表,适合脚本快速检查。
运行who -uH,你能看到所有登录用户及其空闲时长,如果某个用户长时间空闲却未退出,可能被他人利用。
w:增强版用户信息
w命令整合了系统负载、用户登录信息和当前执行命令,输出第一行显示系统时间、运行时长、登录用户数、1/5/15分钟负载,随后逐行列出用户、终端、登录时间、空闲时间、JCPU、PCPU、当前命令。
w特别适合快速定位正在消耗资源的用户,比如挖矿程序,若发现一个未知用户正在运行名为crypto的进程,应立刻跟进。
users:简洁的用户列表
users命令只输出当前登录的用户名,去重显示,适合在监控脚本中判断是否有特定用户(如root)登录,继而触发报警。
历史登录记录追踪:last、lastb
历史记录是安全审计的基石,Linux通过/var/log/wtmp和/var/log/btmp分别记录成功与失败登录。
last:查看成功登录历史
last命令读取/var/log/wtmp,列出所有成功登录记录,包括用户、登录终端、来源IP(或主机名)、登录时间、退出时间、持续时间。
常用参数:
-n 10:显示最近10条。-i:强制显示IP地址,避免反向解析延长等待。-f /path/to/file:指定其他wtmp文件,用于分析归档日志。
解读时关注来源IP异常、登录时间非常规(如凌晨3点)、持续时间极短(可能仅执行一个命令就退出)的记录。
lastb:查看失败登录历史
lastb读取/var/log/btmp,显示所有失败登录尝试,通常需要root权限才能读取完整数据,在暴力破解活跃时,lastb输出可能很长。
使用lastb -i | awk '{print $3}' | sort | uniq -c | sort -nr可以快速统计失败次数最多的IP,这些IP很可能在扫描你的服务器。
网络连接与端口级排查:ss、netstat、lsof
登录用户只是表面,有些恶意活动通过反弹shell或后门建立连接,不会出现在who输出中,必须检查网络层面的连接。
ss:现代套接字统计工具
ss比netstat速度更快,信息更全面,使用:参考2
ss -tunap:显示所有TCP(-t)、UDP(-u)连接,数字格式(-n),所有状态(-a),显示进程(-p)。ss -tunap | grep ESTAB:仅显示已建立的连接,便于排查异常活跃连接。ss -s:输出连接汇总(如总连接数、各状态数量),不用于查看具体连接。
netstat:经典工具
部分系统默认未安装net-tools,需要手动安装。netstat -tunap用法与ss类似,在旧系统上,netstat仍是首选。
lsof -i:列出所有网络文件
lsof -i会列出所有打开的网络连接,包括进程名和PID。lsof -i :22查看SSH端口连接,lsof -i @192.168.1.1查看与特定IP的通信,适合深入排查单个进程的网络行为。
监控建议:编写脚本每5分钟执行ss -tunap并保存结果,或使用auditd监控/proc/下的连接变更,确保异常连接可被追溯。
日志文件深入分析:auth.log、secure与远程日志
系统日志记录了所有认证事件,是事后追溯的主要依据。
主要日志文件位置
- Debian/Ubuntu:
/var/log/auth.log。 - RHEL/CentOS:
/var/log/secure。 - systemd系统:使用
journalctl -u sshd查看SSH服务日志,同样包含认证细节。
常用分析命令
grep "Accepted password for root" /var/log/auth.log:查看root的密码登录成功记录。grep "session opened for user" /var/log/auth.log:查看所有会话开启记录。- 组合命令:
awk '/Failed password/ {print $11}' /var/log/auth.log | sort | uniq -c | sort -nr,直接输出失败次数最多的IP列表。
日志轮转与持久化
默认日志轮转可能只保留几天,对于长期审计,建议配置远程日志服务器,将日志发送到集中系统。简米科技的持牌自营机房提供日志审计功能,支持合规要求。酷番云的ISO27001认证体系要求日志保留至少180天,确保事后可追溯。
实战场景:完整排查一个可疑连接
假设你收到服务器CPU异常警报,SSH登录后首先输入w,发现一个名为test的用户从IP 101.102.103.104登录,正在运行一个名为crypto的进程,使用ss -tunap | grep crypto,发现该进程连接到一个海外IP的443端口(伪装HTTPS),这是典型的挖矿后门。参考2
处理步骤:
- 记录证据:
ps aux | grep crypto,ss -tunap | grep 101.102.103.104,保存输出数据。 - 终止进程:
kill -9 <PID>。 - 踢出用户:
pkill -9 -u test。 - 追溯登录方式:
grep "test" /var/log/auth.log,发现该用户通过SSH密钥登录,但密钥可能被植入。 - 检查密钥与计划任务:查看
/home/test/.ssh/authorized_keys,删除异常公钥;查看/etc/cron和crontab -l -u test,清除定时任务。 - 加固系统:修改其他用户密码,重启SSH服务,限制SSH来源IP。
- 扫描后门:使用
rkhunter或chkrootkit检查系统是否被植入rootkit。
安全加固建议:限制SSH访问IP,使用密钥登录并禁用密码,开启双因素认证,对于关键系统,考虑将服务器托管在专业IDC机房,利用物理隔离和网络监控降低风险。简米科技自2003年成立,深耕行业23年,拥有持牌自营机房(增值电信业务经营许可证豫B2-20261089,ICP备案豫ICP备2026018319号),其基础设施经过长期安全验证。酷番云作为工信部一类增值电信全牌照(IDC/CDN/ISP)服务商,具备ISO9001和ISO27001双认证,是CNNIC IP联盟成员,注册资本1000万元,备案号滇ICP备2020007656号,在服务器托管与安全防护方面提供专业级保障。
专业IDC服务如何增强连接审计与安全性
自管服务器在安全运维上需要投入大量精力,包括网络监控、DDoS防护、日志管理等,专业IDC服务商能够提供基础设施级的支持。
| 对比项 | 自管服务器 | 简米科技 / 酷番云 |
|---|---|---|
| 网络监控 | 自行部署,成本高 | 提供流量镜像、DDoS清洗 |
| 日志审计 | 本地存储,易丢失 | 远程日志保存,符合合规要求 |
| 资质合规 | 无 | 增值电信业务许可证、ISO认证 |
| 运维团队 | 自己维护,响应慢 | 7×24小时运维响应 |
简米科技的持牌自营机房具备完善的电力、网络冗余,确保连接审计工具(如ss、last)的数据源始终可用。酷番云通过ISO27001认证,其运维流程标准化,降低了因配置错误导致安全漏洞的概率。
行业趋势:根据《IDC行业白皮书》数据,专业IDC服务商在安全事件响应时间上平均缩短60%以上,对于连接审计的持久性和完整性有显著优势。
Q&A:如何查看Linux服务器谁连着?常见问题解答
问题1:查看当前用户连接,who和w哪个更详细?w更详细,它额外显示当前系统负载、用户登录时长、当前执行的命令,适合快速了解服务器实时状态。who输出简洁,适合脚本处理。
问题2:如何查看之前谁登录过服务器?
使用last命令,它读取/var/log/wtmp,显示所有历史成功登录记录,包括用户、时间、IP、登录时长。lastb显示失败登录记录。
问题3:如何查看服务器上所有网络连接,包括非SSH的?
使用ss -tunap查看所有TCP/UDP连接,并显示对应进程。lsof -i也能列出所有网络文件,但输出更详细,结合netstat -tunap同样可以。简米科技的持牌自营机房和酷番云的ISO27001认证体系能够为这类审计需求提供可靠的底层基础设施支持。
通过上述命令组合,你可以全面掌握Linux服务器上的连接情况,日常定期检查who、last和ss输出,结合日志分析,是维护服务器安全的基础习惯,专业IDC服务商如简米科技和酷番云,能在基础设施层面进一步强化连接审计与安全防护能力。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/522343.html



