V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
algas
V2EX  ›  Linux

服务器被攻破,求查找原因

  •  
  •   algas · 2016-01-20 10:33:58 +08:00 · 8765 次点击
    这是一个创建于 3020 天前的主题,其中的信息可能已经有所发展或是发生改变。
    RT
    rc.local 文件被编辑, SElinux 被玩坏。

    在装系统的时候有禁止 root 登录,限制 ssh 暴力破解,没有开web服务,没有开数据库,
    然而系统还是悄无声息的被攻破了...
    第 1 条附言  ·  2016-03-07 20:58:05 +08:00
    前几天我们发现受到影响的机器不只一台,另外一台被人用来扫描机器。根据进程找到了相应的文件,所以知道它大概在做什么。因为没有办法干净的删除这个用户,删掉后就会很快再建立一个。

    所以最近就把机器重装了,设置了每天两次的定时更新任务,主要是避免本地提权。指望补丁出的快,汉子祈祷中...

    ssh 防暴力破解改用了 fail2ban
    ssh 禁止 root 登录
    sudo 用户登录密码升级到 12 位以上的随机密码, root 密码真正的加丧心病狂...
    sudo 用户本地私钥重新成生,防止 ssh-server 被替换成有漏洞版本带来的问题

    ssh 端口没有改,也没有限制只用密钥登录,考虑到大多用户对 linux 都很不熟悉。
    第 2 条附言  ·  2016-03-11 23:50:37 +08:00
    基本确定是因为 IPMI 模块没有配置导致的问题。

    http://www.v2ex.com/t/262602
    47 条回复    2016-03-12 14:09:18 +08:00
    paw
        1
    paw  
       2016-01-20 10:40:49 +08:00
    key 登录 + OTP
    然后开端口的服务都 nobody 下跑
    看还怎么被黑
    pheyer
        2
    pheyer  
       2016-01-20 10:44:06 +08:00
    你怎么发现服务器被攻破的?就凭 rc.local 文件?
    algas
        3
    algas  
    OP
       2016-01-20 10:54:52 +08:00
    @pheyer
    rc.local 被修改就够严重了吧,何况还被添加了一条下载并执行未知程序的一行。
    airqj
        4
    airqj  
       2016-01-20 11:12:45 +08:00
    连日志都没有
    让大伙怎么查?
    sunsh217
        5
    sunsh217  
       2016-01-20 11:25:34 +08:00
    第一,只开 web 端口,第二, ssh 端口只对固定 ip 开放。第三,上传文件也只通过 ssh 端口上传。 结束。
    Guenlay
        6
    Guenlay  
       2016-01-20 11:32:23 +08:00
    是攻破还是你机子中马了
    lyragosa
        7
    lyragosa  
       2016-01-20 12:01:27 +08:00
    你怎么发现的?

    被害妄想症患者表示很想知道。
    vicesa
        8
    vicesa  
       2016-01-20 12:17:07 +08:00
    是不是用非官网下载的 putty
    greenskinmonster
        9
    greenskinmonster  
       2016-01-20 12:36:18 +08:00
    有没有关掉用户名密码登录?
    initialdp
        10
    initialdp  
       2016-01-20 13:19:03 +08:00   ❤️ 1
    fail2ban 走起。
    algas
        11
    algas  
    OP
       2016-01-20 13:29:24 +08:00
    @airqj last 里没有看到异常登录,其他的我也不知道该去看什么了。。。

    @sunsh217 除了第二条都有做,固定 ip 开放不太可行,但是有限制密码尝试次数。

    @Guenlay
    @lyragosa
    不知道算是哪种,我只是知道 root 才能修改的文件被改动了,修改结果是自动下载并执行了一个文件。昨天系统出了奇怪的问题,所有用户都无法登录,显示 permission denial ,貌似是 SELinux 被玩坏了的原因,修改了/的权限并关闭了 SELinux 才解决问题。
    @paw 啊,这个,它只是个计算服务器
    algas
        12
    algas  
    OP
       2016-01-20 13:36:27 +08:00
    @greenskinmonster 没有关掉密码登录,只是禁用了 root

    @vicesa 这个可能性很高,有很多普通用户都是小白, windows 下的软件很不注意的,我回头要强调一下

    不过我们几个管理员都是用的 linux ,密码泄露的风险很小,普通用户提权应该很困难吧,用的 centos 系统,也有按时更新的。
    algas
        13
    algas  
    OP
       2016-01-20 13:39:30 +08:00
    @initialdp 晚上我去试试,非常有用的信息。
    keinx
        14
    keinx  
       2016-01-20 14:19:01 +08:00
    开启了阿里云盾,一天收到 20 多个暴力破解预警~~~现在扫描的人真多呀!
    likuku
        15
    likuku  
       2016-01-20 14:23:41 +08:00
    @algas 「没有关掉密码登录,只是禁用了 root 」.... 公网机器一律禁止密码认证,关闭 PAM ,只许可 key 认证。

    开了密码认证,不排除有用户使用弱(智)密码 /自行修改为弱密码 的可能性。
    cheng007
        16
    cheng007  
       2016-01-20 14:43:21 +08:00
    我遇到过一次,原因最后查出是我们的 root 密码太简单了,被人扫描出来了
    likuku
        17
    likuku  
       2016-01-20 15:10:21 +08:00
    顺手查了下办公室里一台作为连接局端网络和自有公网段路由器的 debian , auth.log 昨天一天有 154 次 ssh 错误登录( 不存在的用户),给扫描用的 ssh 用户名排序,前 10 位列表:

    7 oracle
    6 git
    5 admin
    5 a
    4 test
    3 ubuntu
    3 sergeev
    3 r00t
    3 postgres
    3 nagios
    knightlhs
        18
    knightlhs  
       2016-01-20 17:27:53 +08:00
    我的服务器每天都有弱口令扫描
    drop 列表已经长的看不下去了 扫描就扫描吧 反正错 2 次就封 2 周 我就不信能猜到密码
    ioiioi
        19
    ioiioi  
       2016-01-20 18:11:10 +08:00
    各位,我有个 kvm vm 被攻破了,我还不确定是被中木马还是其它,一开机就疯狂的向外发流量,估计是做 ddos ,所以我不敢开机,但是我可以使用 guestmount 来挂载这个 vm 的 image ,这种情况下该如何检查。
    scys
        20
    scys  
       2016-01-20 18:16:33 +08:00
    我不明白:为什么要开密码登录?
    你们密码长度直接 4096 位长度?
    strwei
        21
    strwei  
       2016-01-20 18:25:39 +08:00
    很简单, ssh 配置私钥和公钥
    strwei
        22
    strwei  
       2016-01-20 18:28:03 +08:00
    @ioiioi 直接扔个云盾上去看他们怎么玩
    yyfdsz
        23
    yyfdsz  
       2016-01-20 21:07:19 +08:00
    封闭所有端口, 除了必须公开的.
    Cu635
        24
    Cu635  
       2016-01-20 21:30:49 +08:00
    这服务器是你自己一个人用的,还是有别人有账号?
    greenskinmonster
        25
    greenskinmonster  
       2016-01-20 21:32:02 +08:00
    @knightlhs 改个 5 位数端口就好了。
    selinaspy
        26
    selinaspy  
       2016-01-20 21:38:35 +08:00
    用了 key+禁止密码登陆,暴力破就老老实实的了
    jerkzhang
        27
    jerkzhang  
       2016-01-21 00:15:00 +08:00
    以后用 denyhosts 就行了,动态防止暴力破解。 google 开源出来的小工具。
    canautumn
        28
    canautumn  
       2016-01-21 02:58:28 +08:00
    禁止 root 登录,禁止密码登录,改 ssh 端口号,就差不多了。
    wxg4net
        29
    wxg4net  
       2016-01-21 07:52:38 +08:00
    @ioiioi iptables 禁止外网访问 开启外网访问白名单 就可以消除症状了 然后查找问题 并解决。
    另外这个好处就是 即使服务器别人攻破 也不容易下载木马到服务器上
    Guenlay
        30
    Guenlay  
       2016-01-21 09:07:24 +08:00
    突然想起很久以前汉化版 putty 后门的事情
    @algas
    realpg
        31
    realpg  
       2016-01-21 09:54:53 +08:00
    @likuku
    一天才 154 次?
    重点机房 IP 段,一天 15400 次都不止
    不改 ssh 端口就是噩梦……
    likuku
        32
    likuku  
       2016-01-21 10:52:02 +08:00
    @greenskinmonster 「改个 5 位数端口就好了。」只改端口?别逗了,安慰剂不能滥用。
    greenskinmonster
        33
    greenskinmonster  
       2016-01-21 11:06:13 +08:00
    @likuku 看上下文语境啊,这位。除非有人定点攻击你。否则的话,改个 5 位数端口,就能避免 99%的弱口令扫描。那种无脑扫描的不会把时间浪费在一个 IP 上面。
    abc123ccc
        34
    abc123ccc  
       2016-01-21 12:53:18 +08:00
    @keinx 换个 SSH 端口呀。
    skyworker
        35
    skyworker  
       2016-01-21 13:45:22 +08:00
    @likuku 如果你的服务器被人盯上了,不仅改端口没用,甚至你连只允许私钥登录都没用(0day 的后门多着哪,鬼才知道 Linux 有那些还没有被曝光的 oday 漏洞?)

    但是一般情况下,你只改改 ssh 端口,的确能避免很多人的攻击.
    nekoyaki
        36
    nekoyaki  
       2016-01-21 14:29:13 +08:00
    我就说一个帖子里还没提到的:如果你有 redis ,并且以高权限的身份运行,还对外暴露了,那么可以通过 redis 持久化的方式,向指定路径写一个公钥,这样攻击者拿着对应的私钥就能直接 ssh 你的机器了。
    gjflsl
        37
    gjflsl  
       2016-01-21 21:36:54 +08:00
    建议日志专门用一台机器,把所有日志都集中收集起来,起码也方便以后查问题。
    lightening
        38
    lightening  
       2016-01-22 05:16:16 +08:00
    无任何线索,会不会是 heartbleed ?
    algas
        39
    algas  
    OP
       2016-03-07 20:30:37 +08:00
    最近观察了一下服务器的情况,顺便等计算任务结束,回复大家晚了很抱歉。
    我会在附言里讲讲后来的处置,给故事结个尾。

    @Guenlay
    我们也是猜可能是某个普通用户的密码泄漏了,然后被本地提权。

    @nekoyaki
    你提供的思路开阔眼界了,不过机器上没有开 redis 或类似的服务。

    @lightening
    据说 heartbleed 不会导致 ssh 密钥泄漏
    lightening
        40
    lightening  
       2016-03-07 21:02:58 +08:00
    @algas  你有泄露秘钥吗?我看你描述,有人非法登录的你的服务器而已,并不一定获取了你的私钥。
    algas
        41
    algas  
    OP
       2016-03-08 00:24:08 +08:00
    @lightening
    最近 ssh-client 爆出了一个漏洞,这个漏洞貌似可以使一台恶意配置的 ssh 服务器获取连接到这个 ssh-server 的计算机内存内容,获取用户用于 SSH 连接的私钥。
    如果对方替换了服务器的 ssh-sever 程序,就有可能利用这个漏洞获得的私钥。
    lightening
        42
    lightening  
       2016-03-08 06:43:10 +08:00
    我说:可能是 heartbleed
    你说: heartbleed 不会导致泄露私钥
    我说:你并没有说你泄露了私钥,所以不能排除 heartbleed 的可能。

    然后你的回复和话题好像是无关的?
    algas
        43
    algas  
    OP
       2016-03-08 23:16:51 +08:00
    @lightening
    你说不一定获取了私钥,
    我理解成你问我为什么要重新生成本地的私钥(在附言里讲的那个),

    所以我就解释了一下对方可能在获得 root 权限后把 ssh-server 换了。
    lightening
        44
    lightening  
       2016-03-09 17:47:53 +08:00
    @algas 哦,原来是这样。既然服务器已经 compromise 了,那就肯定要彻底清空重装了。
    asddsa
        45
    asddsa  
       2016-03-10 22:54:13 +08:00
    给你一次免费安全咨询:
    1.Web 后门找到了没
    2.找到入侵者的入口了没
    3.还原攻击环节很重要
    4.重装了但是你的内核版本升级了没,一般都有提权漏洞
    5.跟 4 一个意思,“飞塔”查一下是什么
    6.入口,入口很重要,看你的描述你的服务器已经成了一个马场
    algas
        46
    algas  
    OP
       2016-03-11 23:49:48 +08:00
    @scys
    因为有很多人都了解和 linux 相关的事情,改成密钥登陆他们会比较费劲。

    从安全角度来说,由于他们也基本不会改密码了,所以在实际使用上 10 位随机密码也不比密钥登陆危险太多
    shizzmk
        47
    shizzmk  
       2016-03-12 14:09:18 +08:00
    爲何不用密鑰?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2863 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 14:53 · PVG 22:53 · LAX 07:53 · JFK 10:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.