Linux系统如何踢掉非法连接的账户?

在Linux系统中,非法连接的账户可能来自暴力破解、未授权访问或恶意用户登录,这些行为会威胁系统安全,及时检测、识别并踢掉非法连接是系统管理员的重要工作,以下是详细的操作步骤和工具使用方法,帮助有效处理非法连接问题。

linux 如何踢掉非法连接的账户

检测非法连接的工具与方法

在踢掉非法连接前,需先通过系统工具识别异常连接,以下是常用工具及使用场景:

查看当前登录用户

使用whow命令可实时查看当前登录系统的用户信息,包括用户名、终端、登录时间及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(可能为暴力破解)。

检查网络连接状态

使用ssnetstat查看当前网络连接,定位可疑的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服务日志,适合动态追踪)。

识别非法连接的关键指标

通过上述工具收集信息后,需结合以下指标判断连接是否非法:

linux 如何踢掉非法连接的账户

  • IP异常:非公司/家庭常用IP、频繁更换IP的短连接、属于恶意IP库的地址(可通过whois查询IP归属)。
  • 登录行为异常:短时间内多次失败登录(如1分钟内尝试10次以上)、非工作时间段(如凌晨2-6点)登录、使用非常见用户名(如admin、test)尝试登录。
  • 终端异常:通过非标准终端(如pts/3tty1)登录,或终端显示为“ssh”但无合法用户关联。
  • 资源占用异常w命令中发现用户进程占用过高CPU/内存,或运行可疑命令(如挖矿程序、网络扫描工具)。

踢掉非法连接的具体操作

确认非法连接后,需立即终止其进程并断开连接,避免数据泄露或系统破坏。

终止当前非法用户的会话

若非法用户正在交互式登录(如通过SSH终端),可通过以下方式强制断开:

  • 方法1:使用pkillkill命令
    先通过wwho获取非法用户的终端(如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/0skill -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,避免再次入侵:

linux 如何踢掉非法连接的账户

  • 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    # 删除用户及家目录(谨慎操作)

预防非法连接的措施

为避免非法连接再次发生,需加强系统安全防护:

  1. SSH安全配置
    • 修改默认端口(22改为其他端口,如2222),编辑/etc/ssh/sshd_config,设置Port 2222
    • 禁用root直接登录:PermitRootLogin no
    • 使用密钥登录(禁用密码):PasswordAuthentication no
  2. 登录失败处理
    • 安装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
  3. 定期审计
    • 使用logwatchgoaccess分析日志,发现异常登录趋势。
    • 定期检查/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: 追溯攻击来源需结合系统日志和网络日志,步骤如下:

  1. 提取登录日志:从/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的登录时间、尝试的用户名、使用的认证方式(密码/密钥)。

  2. 分析网络连接:通过/var/log/nginx/access.log(若有Web服务)或/var/log/tcpdump(使用tcpdump -i any -w log.pcap捕获流量)分析IP的访问行为(如是否扫描端口、上传文件)。
  3. 查询IP归属:使用whois 192.168.1.100查询IP的注册信息,判断是否为恶意IP(如属于代理服务器、僵尸网络)。
  4. 检查系统残留:扫描/tmp/var/tmp等目录是否有恶意文件(如挖矿程序、后门),检查crontab -l/etc/rc.local是否有异常启动项。
    若攻击较严重,可使用foremostscalpel工具进行数据恢复,并备份系统日志供后续分析。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/17036.html

(0)
酷番叔酷番叔
上一篇 2025年8月25日 22:26
下一篇 2025年8月25日 22:44

相关推荐

  • 为什么cp命令会覆盖文件?

    在Linux系统中,复制文件是最基础且频繁的操作之一,无论是日常管理、数据备份还是脚本编写,掌握高效的文件复制方法都至关重要,本文将详细解析Linux中多种文件复制方式,涵盖命令行工具(如cp、rsync)和图形界面操作,并附注意事项及最佳实践,cp(copy)是Linux内置的复制命令,语法如下:cp [选项……

    2025年7月23日
    17000
  • Linux如何显示图片?有哪些图形界面与命令行方法?

    在Linux系统中,显示图片的方式多种多样,既包括图形界面下的可视化工具,也涵盖命令行下的轻量级解决方案,甚至可通过编程接口实现自定义显示,根据用户需求和使用场景的不同,可选择适合的工具和方法,图形界面下的图片查看工具对于使用图形界面的Linux用户,图片查看器是最直观的选择,主流桌面环境通常自带默认查看器,也……

    2025年9月28日
    14500
  • 如何获取文件所有父目录路径?

    在Linux系统中,“向上查找”通常指从当前目录开始,逐级向父目录搜索特定文件或目录的需求,这种操作在定位配置文件(如.env)、版本控制目录(如.git)或项目根目录时非常实用,以下是几种高效且可靠的方法:方法1:使用循环逐级向上查找(推荐)通过Shell脚本逐级检查父目录,直到找到目标文件或到达根目录,操作……

    2025年6月16日
    17600
  • 挂载前必须做哪些准备?

    在Linux系统中挂载硬盘分区是管理存储空间的基础操作,无论您是添加新硬盘还是访问现有分区,以下步骤将确保安全高效地完成,本文遵循专业、准确、可信的原则(符合E-A-T标准),所有命令均经过主流Linux发行版(Ubuntu/CentOS等)实测验证,识别硬盘分区使用 lsblk 或 fdisk 查看磁盘信息……

    2025年7月21日
    16800
  • Linux中如何修改时间?命令操作步骤与方法详解

    在Linux系统中,时间管理是系统运维的基础操作之一,正确的时间设置不仅影响日志记录、任务调度,还关系到服务的认证、数据同步等关键功能,Linux系统的时间分为系统时间(System Clock)和硬件时钟(Hardware Clock,RTC),系统时间是内核维护的时间,硬件时钟是主板独立供电的时钟,修改时间……

    2025年9月23日
    13100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信