在Linux系统中,非法连接的账户可能来自暴力破解、未授权访问或恶意用户登录,这些行为会威胁系统安全,及时检测、识别并踢掉非法连接是系统管理员的重要工作,以下是详细的操作步骤和工具使用方法,帮助有效处理非法连接问题。
检测非法连接的工具与方法
在踢掉非法连接前,需先通过系统工具识别异常连接,以下是常用工具及使用场景:
查看当前登录用户
使用who
或w
命令可实时查看当前登录系统的用户信息,包括用户名、终端、登录时间及IP地址。
who
命令:简洁显示用户、终端、时间、IP,例如who am i
查看当前会话信息。w
命令:更详细,包含用户活动状态(如CPU、内存占用),例如w -h
(不显示标题行)或w -u
(显示空闲时间)。
若发现陌生用户名、异常IP(如非办公地区IP)或长时间未活动的会话,需进一步排查。
分析登录历史记录
last
命令查看系统的登录历史,包括成功/失败的登录尝试,帮助追溯非法连接的来源。
- 常用参数:
last -n 20
(显示最近20条记录)、last -i
(以IP格式显示地址)、last username
(指定用户的历史记录)。 - 关注点:失败登录记录(标记为“FAILED”)、非工作时间登录、多次短时间重试的IP(可能为暴力破解)。
检查网络连接状态
使用ss
或netstat
查看当前网络连接,定位可疑的SSH或其他服务连接。
ss -tunlp | grep ssh
:过滤SSH端口(默认22)的连接,显示进程ID、本地/远程IP及端口。netstat -an | grep ESTABLISHED
:查看已建立的连接,重点关注非信任IP的SSH连接。
若发现IP为未知来源(如境外IP)或连接数异常(如单个IP短时间内多次连接),需警惕非法访问。
审计系统日志
系统日志文件记录了所有认证和登录信息,是识别非法连接的核心依据:
- Debian/Ubuntu:
/var/log/auth.log
- CentOS/RHEL:
/var/log/secure
常用命令: grep "Failed password" /var/log/auth.log | tail -n 10
:查看最近10次失败登录,分析IP和用户名。grep "Accepted password" /var/log/auth.log | grep "192.168.1.100"
:检查指定IP的成功登录记录。journalctl -u ssh -f
(实时监控SSH服务日志,适合动态追踪)。
识别非法连接的关键指标
通过上述工具收集信息后,需结合以下指标判断连接是否非法:
- IP异常:非公司/家庭常用IP、频繁更换IP的短连接、属于恶意IP库的地址(可通过
whois
查询IP归属)。 - 登录行为异常:短时间内多次失败登录(如1分钟内尝试10次以上)、非工作时间段(如凌晨2-6点)登录、使用非常见用户名(如admin、test)尝试登录。
- 终端异常:通过非标准终端(如
pts/3
、tty1
)登录,或终端显示为“ssh”但无合法用户关联。 - 资源占用异常:
w
命令中发现用户进程占用过高CPU/内存,或运行可疑命令(如挖矿程序、网络扫描工具)。
踢掉非法连接的具体操作
确认非法连接后,需立即终止其进程并断开连接,避免数据泄露或系统破坏。
终止当前非法用户的会话
若非法用户正在交互式登录(如通过SSH终端),可通过以下方式强制断开:
-
方法1:使用
pkill
或kill
命令
先通过w
或who
获取非法用户的终端(如pts/0
),执行:pkill -t pts/0 # 终止pts/0终端的所有进程 # 或指定用户名(若已知) pkill -u username
若进程未终止,可强制结束:
kill -9 PID
(PID可通过ps aux | grep username
获取)。 -
方法2:使用
skill
命令skill -KILL -t pts/0
或skill -KILL -u username
,效果同pkill
,但需安装coreutils
包(部分系统默认未安装)。
断开SSH连接(无需交互式终端)
若非法用户通过SSH连接,可通过ssh
命令远程发送终止指令(需提前配置信任主机或具有root权限):
ssh -T root@目标IP 'pkill -9 -t pts/0' # -T不分配伪终端,直接执行命令
若目标IP为当前非法连接的来源,可在本地通过ss
获取其PID后终止:
ss -tpn | grep 192.168.1.100 # 获取非法IP的SSH连接PID kill -9 PID
封禁非法IP(防止再次连接)
踢掉连接后,需通过防火墙永久或临时封禁非法IP,避免再次入侵:
- iptables(CentOS 7以下/Debian旧版):
iptables -I INPUT -s 192.168.1.100 -j DROP # 封禁IP iptables -save > /etc/sysconfig/iptables # 保存规则
- firewalld(CentOS 7+/RHEL 7+):
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" drop' firewall-cmd --reload
- nftables(新版Linux推荐):
nft add table inet filter nft add chain inet filter input { type filter hook input priority 0 ; } nft add rule inet filter input ip saddr 192.168.1.100 drop nft list ruleset > /etc/nftables.conf # 保存规则
处理非法系统账户
若非法连接来自系统本地用户(如被破解的普通用户),需立即锁定或删除该账户:
passwd -l username # 锁定账户(禁用密码) usermod -L username # 锁定账户(修改/etc/shadow) userdel -r username # 删除用户及家目录(谨慎操作)
预防非法连接的措施
为避免非法连接再次发生,需加强系统安全防护:
- SSH安全配置:
- 修改默认端口(22改为其他端口,如2222),编辑
/etc/ssh/sshd_config
,设置Port 2222
。 - 禁用root直接登录:
PermitRootLogin no
。 - 使用密钥登录(禁用密码):
PasswordAuthentication no
。
- 修改默认端口(22改为其他端口,如2222),编辑
- 登录失败处理:
- 安装
fail2ban
,自动封禁多次失败登录的IP:apt install fail2ban # Debian/Ubuntu yum install fail2ban # CentOS/RHEL
配置
/etc/fail2ban/jail.local
,设置SSH监禁规则:[sshd] enabled = true port = 22 maxretry = 3 bantime = 3600
- 安装
- 定期审计:
- 使用
logwatch
或goaccess
分析日志,发现异常登录趋势。 - 定期检查
/etc/passwd
、/etc/shadow
,确保无异常用户。
- 使用
相关问答FAQs
Q1: 如何防止非法连接再次发生?
A: 防止非法连接需从“访问控制”和“行为监控”两方面入手:
- 访问控制:配置SSH密钥登录(禁用密码)、限制可登录用户(在
/etc/ssh/sshd_config
中设置AllowUsers user1 user2
)、使用防火墙限制来源IP(如仅允许公司网段访问SSH)。 - 行为监控:部署
fail2ban
自动封禁恶意IP,启用系统日志的实时监控(如journalctl -f
),定期使用lynis
等工具进行系统安全审计。
及时更新系统和SSH服务版本,修复已知漏洞(如CVE-2023-38409等SSH高危漏洞)。
Q2: 踢掉连接后如何分析日志追溯攻击来源?
A: 追溯攻击来源需结合系统日志和网络日志,步骤如下:
- 提取登录日志:从
/var/log/auth.log
(Debian/Ubuntu)或/var/log/secure
(CentOS/RHEL)中过滤非法连接的IP和时间范围,grep "192.168.1.100" /var/log/auth.log | grep -E "Failed|Accepted" -A 2 -B 2
查看该IP的登录时间、尝试的用户名、使用的认证方式(密码/密钥)。
- 分析网络连接:通过
/var/log/nginx/access.log
(若有Web服务)或/var/log/tcpdump
(使用tcpdump -i any -w log.pcap
捕获流量)分析IP的访问行为(如是否扫描端口、上传文件)。 - 查询IP归属:使用
whois 192.168.1.100
查询IP的注册信息,判断是否为恶意IP(如属于代理服务器、僵尸网络)。 - 检查系统残留:扫描
/tmp
、/var/tmp
等目录是否有恶意文件(如挖矿程序、后门),检查crontab -l
和/etc/rc.local
是否有异常启动项。
若攻击较严重,可使用foremost
或scalpel
工具进行数据恢复,并备份系统日志供后续分析。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/17036.html