限制访问elasticsearh的方式:
1、shield
2、Elasticsearch-http-basic
3、nginx + http basic
第一种方式收费,可以排除;第二种方式支持到es1.5,没有找到相应的版本信息;所以本文采用的是第三种方式。下面介绍做法:
1、nginx设置转发配置
upstream es {
server 172.20.33.3:9200;
server 172.20.33.3:9201;
keepalive 200;
}
location /es/ {
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
auth_basic "login";
auth_basic_user_file /usr/local/nginx/conf/vhosts/password/es;
autoindex on;
proxy_pass http://es/;
}
2、生成密码文件
可以参考该网址:http://www.sojson.com/htpasswd.html
在/usr/local/nginx/conf/vhosts/password/es文件中,插入生成好的密码规则。
3、关闭外网访问
修改 config/elasticsearch.yml
#network.publish_host: 0.0.0.0
#networt.bind_host: 0.0.0.0
#network.host: 0.0.0.0
#只要配置这个即可
network.host: 127.0.0.1
#network.publish_host: 127.0.0.1
4、重启elasticsearch
可以再加上iptables ,以及相应的访问频率限制,避免暴力破解。