首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >通过nginx反向代理为业务增加认证的方法

通过nginx反向代理为业务增加认证的方法

原创
作者头像
腾讯云-MSS服务
修改于 2020-08-12 04:36:51
修改于 2020-08-12 04:36:51
3.9K0
举报
文章被收录于专栏:安全加固安全加固

Elasticsearch 通过 x-pack 作为认证模块供用户使用,但是在 7.0 以下版本需要购买 licence 才能使用。Elasticsearch 7.0 以上版本 x-pack 作为基本的功能模块供使用,不用购买 licence。

这里以7.0 以下版本来通过 nginx 反向代理的方式对 Elasticsearch 未授权访问漏洞进行安全加固。简述访问逻辑:

(1)服务器的 9201 对外开放访问,且需要认证

(2)实际流量转发到服务器的 9200 提供 Elasticsearch 服务,9200 不直接对外提供访问。

1,安装 http-tools 工具和 nginx

# yum install -y httpd-tools # yum -y install nginx

2,生成密码文件

# htpasswd -c /etc/nginx/elkauth elkdmin New password: Re-type new password: Adding password for user kiadmin

elkadmin 将会是登录认证时候使用的帐号,密码这里需要重复输入两次来确认,且保证密码强度:

(1)静态口令必须长度大于等于 14 位。

(2)静态口令必须包含数字、大写字母、小写字母、特殊符号 4 种中至少 3 种。

3,安装 nginx 并修改 nginx 文件,一般是 /etc/nginx/nginx.conf 

# vim /etc/nginx/nginx.conf

server {     listen       9201 default_server;     listen       [::]:9201 default_server;     server_name  _;     #root         /usr/share/nginx/html;       # Load configuration files for the default server block.     include /etc/nginx/default.d/*.conf;       location / {           auth_basic "ELK Auth";         auth_basic_user_file /etc/nginx/elkauth;         proxy_pass http://localhost:9200/;         proxy_set_header Host $host:9200;         proxy_set_header X-Real-IP $remote_addr;         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;       }       error_page 404 /404.html;         location = /40x.html {     }       error_page 500 502 503 504 /50x.html;         location = /50x.html {     } }

这部分的重点是三个:

(1)修改掉端口,elasticsearch 默认使用的是 9200 端口,我们使用 9201 来作为帐号认证端口。

(2)注释掉 index ,不然请求不会跳转

(3)配置反代和认证,默认的 location 配置为空,所以这里直接添加就可以了。

依次解释这些配置的作用:

auth_basic "ELK Auth"; //帐号认证弹框的 banner 信息,说明服务名称 auth_basic_user_file /etc/nginx/elkauth; //认证的帐号密码文件,也就是我们 htpasswd 创建的密码文件 proxy_pass http://localhost:9200/; //重定向目标, proxy_set_header Host $host:9200; //重定向后的请求会增加一个名为 Host 的 header 包含目标IP:端口 proxy_set_header X-Real-IP $remote_addr; //重定向后的请求会增加一个名为 X-Real-IP 的 header 说明请求源IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; //重定向后的请求会增加一个名为 X-Forwarded-For 的 header 记录 X-Forwarded-For 信息

4,重启服务

service nginx restart

5,访问测试:

输入用户名密码之后可以正常访问:

6,WEB API 访问

到目前为止实现了为 Elasticsearch 的访问添加认证,但是实际上针对 9200 的访问都是 api 调用,所以不能像浏览器访问一样手工输入密码。可以在 http 请求中加上 Authorization 头部来通过认证:

# curl -H 'Authorization: Basic a2lhZG1pbjpraWFkbWlu' http://192.168.1.1:9201/ {   "name" : "VM_0_3_centos",   "cluster_name" : "elasticsearch",   "cluster_uuid" : "lVG6IylMSpOmU1WRukgi0Q",   "version" : {     "number" : "7.6.1",     "build_flavor" : "default",     "build_type" : "rpm",     "build_hash" : "aa751e09be0a5072e8570670309b1f12348f023b",     "build_date" : "2020-02-29T00:15:25.529771Z",     "build_snapshot" : false,     "lucene_version" : "8.4.0",     "minimum_wire_compatibility_version" : "6.8.0",     "minimum_index_compatibility_version" : "6.0.0-beta1"   },   "tagline" : "You Know, for Search" }

其中 a2lhZG1pbjpraWFkbWlu 是[用户:密码]经过 base64 编码之后的字符串,当然也可以在浏览器手工输入用户名密码之后,通过浏览器的 F12 功能直接获取到这个值:

7,配置 Elasticsearch 绑定 localhost 

避免外部用户通过网络访问到 Elasticsearch 的 9200 端口服务,需要将 Elasticsearch 服务绑定 localhost 。

vim /etc/elasticsearch/elasticsearch.yml

修改 network.host 为 localhost

network.host: localhost

重启 Elasticsearch  服务

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
nginx简单代理配置
前言 Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。因为域名只能解析80端口,所以必须需要nginx代理访问。
王念博客
2019/07/25
8180
ELK日志系统:Filebeat使用及Kibana如何设置登录认证
Filebeat is a lightweight, open source shipper for log file data. As the next-generation Logstash Forwarder, Filebeat tails logs and quickly sends this information to Logstash for further parsing and enrichment or to Elasticsearch for centralized storage and analysis.
菩提树下的杨过
2018/09/20
1.2K0
ELK日志系统:Filebeat使用及Kibana如何设置登录认证
史上最全的nginx安全访问控制配置
准备两台带有yum安装的nginx的虚拟机,一台作为代理服务器,一台作为真实服务器。
码农编程进阶笔记
2021/07/20
3.8K0
Nginx反向代理中使用proxy_redirect重定向url
在使用Nginx做反向代理功能时,有时会出现重定向的url不是我们想要的url,这时候就可以使用proxy_redirect进行url重定向设置了。proxy_redirect功能比较强大,其作用是对发送给客户端的URL进行修改!! 语法:proxy_redirect [ default|off|redirect replacement ]; 默认:proxy_redirect default; 配置块(使用的字段):http、server、location 当上游服务器返回的响应是重定向或刷新请求(如HT
洗尽了浮华
2018/01/23
27.7K0
你的Elasticsearch在裸奔吗?
安全隐患划重点: 1、印度:没有设置Elasticsearch集群安全权限; 2、婚庆网站:Elasticsearch服务器暴露到公网。 3、群友:9200端口映射到外网。
铭毅天下
2019/03/07
1.3K0
你的Elasticsearch在裸奔吗?
前后端都用得上的 Nginx 日常使用经验-补充篇
之前分享了 前后端都用得上的 Nginx 日常使用经验 ,在配置 elk 的时候增加了nginx basic auth 和 IP百名的配置,作为补充分享。
易墨
2024/01/21
2060
前后端都用得上的 Nginx 日常使用经验-补充篇
通过nginx解决服务集群发布引发的问题
非优雅关闭会导致业务的损失或者影响业务数据,比如 kill -9 暴力停止导致正在进行的用户瞬间无法访问,而数据瞬间丢失或缺失,引发的一连串问题。而优雅关闭正是为了解决该问题而提了的一系列优化措施,指的是在系统在服务过程中,需要更新或者停机,通过一定的机制或者顺序按照业务或者相关技术的流程进行服务的无损或优雅的进行服务停止、重启等。
逍遥壮士
2020/11/06
8200
nginx反向代理+http user 认证访问 私有registry
利用nginx做反向代理,从而实现对registry的访问;而nginx作为反向代理来使用在实际情况中非常多见,并且还支持基本的用户权限认证。 本节讲述如何用nginx 的反向代理实现对registry的访问(https访问),同时用nginx提供基本的用户认证功能:
qsjs
2020/06/09
3.1K0
nginx反向代理中proxy_set_header 运维笔记
Nginx proxy_set_header:即允许重新定义或添加字段传递给代理服务器的请求头。该值可以包含文本、变量和它们的组合。在没有定义proxy_set_header时会继承之前定义的值。默认情况下,只有两个字段被重定义: proxy_set_header Host $proxy_host; proxy_set_header Connection close; 如果启用缓存,来自之前请求的头字段“If-Modified-Since”, “If-Unmodified-Since”, “If-None-
洗尽了浮华
2018/01/23
18.9K0
nginx反向代理中proxy_set_header 运维笔记
Nginx反向代理配置去除前缀
使用nginx做反向代理的时候,可以简单的直接把请求原封不动的转发给下一个服务。设置proxy_pass请求只会替换域名,如果要根据不同的url后缀来访问不同的服务,则需要通过如下方法:
烂猪皮
2020/09/10
1.7K0
Nginx 之访问认证
我们都知道,Web 服务器程序部署成功并启动之后,都是可以公开访问的,要想控制成只有部分人可以访问必然需要配置一下访问认证,实现访问认证的方法有很多,主要有两种:Flask-OAuth 和 Nginx,Flask-OAuth 以前讲过,今天我就来讲一下 Nginx 配置访问认证。这里以配置 Scrapyd 的访问认证为例进行讲解。
不可言诉的深渊
2020/02/11
3.1K0
Nginx 之访问认证
ES-nginx 长连接和权限配置
长连接配置 events { worker_connections 1024; } http { keepalive_timeout 120s 120s; keepalive_requests 10000; upstream elasticsearch { server 127.0.0.1:9200; keepalive 15; } server { listen 8080; location / { proxy_pa
YG
2018/05/23
2.9K0
Elasticasearch Web 管理工具--Cerebro
cerebro是使用Scala,Play Framework,AngularJS和Bootstrap构建的开源(MIT许可)elasticsearch Web管理工具。
Kevin song
2020/12/08
1.1K0
Nginx配置反向代理和负载均衡
今天给大家介绍一下如何利用Nginx进行反向代理,之所以介绍这个的原因是,因为开发的时候遇到一个很尴尬的场景。因为是springboot项目,所以每一个控制类的端口都不一样,但是app那边所有接口都是对应一个ip和一个端口。如果我们想要实现本地app调式,就必须配置一个nginx,进行反向代理连接我们启动的服务器。废话不多说,开始我们nginx配置的介绍。
林老师带你学编程
2019/05/25
8950
nginx之配置proxy_set_header问题梳理
将左侧匹配到的/proxy_path/开头的url全部转发到后端服务器 192.168.223.137。
小勇DW3
2019/12/20
9.5K0
nginx之配置proxy_set_header问题梳理
HTTP Auth 认证冲突
nginx 代理 springboot,Springboot 使用了 JWT 认证,HTTP头为 Authorization: Bearer {BASE64}
netkiller old
2021/10/08
1.4K0
Nginx的几个常用配置和技巧
有很多服务通过nginx访问,但本身没有提供账号认证的功能,就可以通过nginx提供的authbase账号密码认证来实现,可以用以下脚本来生成账号的密码
本人秃顶程序员
2019/05/07
1.2K0
Nginx的几个常用配置和技巧
Nginx负载均衡与反向代理
一、nginx配置属性详细说明: #全局设置 main  # 运行用户 user www-data;     # 启动进程,通常设置成和cpu的数量相等 worker_processes  1; # 全局错误日志及PID文件 error_log  /var/log/nginx/error.log; pid        /var/run/nginx.pid; # 工作模式及连接数上限 events {     use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方
Sindsun
2018/04/28
9900
Nginx负载均衡与反向代理
Nginx https反向代理
这里还是使用前一篇文章中使用的python3的 http server 作为后端应用服务。
kongxx
2024/02/20
9350
Web服务器-Nginx的访问控制(一)
作者介绍:简历上没有一个精通的运维工程师。下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
运维小路
2025/04/10
1330
Web服务器-Nginx的访问控制(一)
相关推荐
nginx简单代理配置
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档