117服务器远程访问异常问题处理

现象:

远程 ssh 失败,提示没有权限,很像是密码错误。
不止 root 用户,其他用户也同时不能远程。

解决:

首先想到117和其他服务器不同的地方是因为在上面安装了一个 Redis,其他的和另外的服务器基本一致。所以怀疑是不是 Redis 的问题。

远程不能访问,只能到机房去解决。去之前收集了修改 root 密码的方法,参考:《centos7忘记密码 重置root密码》

后来发现,这个方法根本用不上。因为服务器一直是在线的,不需要重启。

  • 试着修改root密码,失败,提示passwd: Authentication token manipulation error
    身份验证令牌操作错误,一般是因为密码文件的权限的问题,不过也有可能是根目录空间满了。
    执行命令pwconv(同步 etc/passwd 和 etc/shadow)后再试,可以正常修改密码

  • 现在可以通过 root 远程了,但是其他用户都不行,提示用户不存在,在进入到/home 下看用户的目录确实是存在的,而且发现 ll 的时候,原本应该显示文件所属的地方显示的是数字


    打开/etc/passwd发现内容异常,少了刚才切换失败的那个用户的记录,还有乱码,依稀看到 Redis 的字样:

    REDIS0006þ
    root:x:0:0:root:/root:/bin/bash
    ram:x:1000:1000:,,,:/home:/bin/bash
    sshd:x:114:65534::/var/run/sshd:/usr/sbin/nologin
    nobody:x:114:65534::/var/run/sshd:/usr/sbin/nologin
    
    ÿ0^QÌàé<à¬

    参考另外一台没问题的服务器上的该文件,修改如下:

    root:x:0:0:root:/root:/bin/bash
    ram:x:1000:1000:,,,:/home:/bin/bash
    sshd:x:114:65534::/var/run/sshd:/usr/sbin/nologin
    nobody:x:114:65534::/var/run/sshd:/usr/sbin/nologin
    zzwx:x:1003:0::/home/zzwx:/bin/bash
    push:x:1001:0::/home/push:/bin/bash
    zzjt01:x:1002:0::/home/zzjt01:/bin/bash
    zzjt02:x:1004:0::/home/zzjt02:/bin/bash
    zzjttest:x:1007:0::/home/zzjttest:/bin/bash
    zztt01:x:1005:0::/home/zztt01:/bin/bash
    zztt02:x:1006:0::/home/zztt02:/bin/bash

    修改后再 ll,显示正常。

  • 发现在/root/.ssh 下的authorized_keys文件有异常,里面也发现有 redis 和 crack 的字样

    这也是导致之前免密码验证登录这台服务器失败的原因。之前手动修改并重新生成 过该文件,但过一段时间就又会被修改。
    google 的时候发现一篇关于 Redis 的安全问题的文章,里面提到的情况和遇到的这种情况基本差不多:《请务必注意 Redis 安全配置,否则将导致轻松被入侵》
    于是按照里面提到的方法,修改了 redis 的配置文件,并重启 redis。同时,考虑到 redis 没有和本机以外的服务器交互,把 redis 的端口在防火墙关闭。

    firewall-cmd --permanent --remove-port 6379/tcp
    firewall-cmd --reload

总结

  1. 修改 root 密码,并执行 pwconv
  2. 参考另外一台正常的服务器上修改/etc/passwd文件内容
  3. 删除authorized_keys文件,重新生成该文件
  4. 重新安装 redis,使用非 root 用户安装并启动
  5. 修改 redis 配置文件,在/opt/redis-3.0.6/redis.conf最后面新增:

    rename-command FLUSHALL ""
    rename-command CONFIG ""
    rename-command EVAL ""
    build 127.0.0.1
  6. 修改应用侧,增加 redis 的密码校验

  7. 在防火墙上屏蔽 redis 开放的端口

参考资料:
《Linux centos7忘记root密码,修改root密码》

2016-04-07 15:1812