elasticsearch索引已删除

时间:2017-01-13 17:07:37

标签: symfony elasticsearch foselasticabundle

我的弹性搜索服务器面临严重问题。

我在使用fosElasticaBundle的symfony2项目中使用ES 1.7。

今天ES索引被删除了两次,我无法弄清楚原因。

以下是我可以在cluster.log中读取的日志:

  

[cluster.metadata] [server] [index]删除索引

     

[cluster.metadata] [server] [警告]删除索引

     

[cluster.metadata] [server] [please_read]创建索引,原因[api],templates [],分片[5] / [1],映射[]

     

[cluster.metadata] [server] [please_read] update_mapping [info](动态)

事情是,我的ES在过去的几个月里从未遇到过这样的问题,而网站是在预先制作的。

你认为这可能来自攻击吗?还是配置错误?

4 个答案:

答案 0 :(得分:3)

这很可能来自攻击。如果您执行<Endpoint>/please_read/_search,您可能会看到类似

的注释
     {
            "_index": "please_read",
            "_type": "info",
            "_id": "AVmZfnjEAQ_HIp2JODbw",
            "_score": 1.0,
            "_source": {
                "Info": "Your DB is Backed up at our servers, to restore send 0.5 BTC to the Bitcoin Address then send an email with your server ip",
                "Bitcoin Address": "12JNfaS2Gzic2vqzGMvDEo38MQSX1kDQrx",
                "Email": "elasticsearch@mail2tor.com"
            }

您应该尝试使弹性搜索群集安装更加安全,以避免此类挫折。

还有报道称对mongo / elasticsearch等互联网数据库的开放受到攻击。 http://www.zdnet.com/article/first-came-mass-mongodb-ransacking-now-copycat-ransoms-hit-elasticsearch/

答案 1 :(得分:3)

我同意@ dejavu013,这很可能是数据库勒索软件,我建议使用免费和开源https://github.com/floragunncom/search-guard保护弹性搜索,或者像Elastic's Shield这样的高级解决方案,现在是Elastic X-Pack或Compose的一部分托管Elasticsearch。

答案 2 :(得分:1)

答案 3 :(得分:0)

这确实是一次袭击,因为@ dejavu013说。

我开始通过只允许localhost访问我的elasticseach数据来保护我的数据。

为此,我编辑了我的配置文件elasticseach.yml并添加了这两行:

<?php
//recaptcha test
$curl = curl_init();
curl_setopt_array($curl, [
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'https://www.google.com/recaptcha/api/siteverify',
    CURLOPT_POST => 1,
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_FOLLOWLOCATION => 1,
    CURLOPT_POSTFIELDS => [
        'secret' => 'SECRET CODE FROM GOOGLE',
        'response' => $_POST['g-recaptcha-response'],
        ],
]);
$response = json_decode(curl_exec($curl));

//UPDATE: if your check pass, go on
if ($response->success) {
    //your actual code.
} else {
    died("Recaptcha missing.");
}
?>

因此,只有localhost可以访问数据并发出请求。