启用skywalking身份安全认证

目录

1.  Nginx部署

1.1更新系统软件包

1.2安装EPEL存储库

1.3安装Nginx

2.  修改 Nginx 配置文件

2.1.     字段解释

3. 创建存储用户名和密码的文件

3.1 安装htpasswd工具

3.2 验证

4.  验证代理及身份认证

4. 常见报错及解决方法

4.1.     检查监听

4.2. 检查配置文件字段地址

4.3. 检查防火墙设置

4.5. 排查代理类型

5. 常见502报错

5.1.     检查SELinux状态

5.2.     临时禁用SELinux

5.3.     永久更改SELinux配置

5.4.     重启服务器


SkyWalking 从 8.0.0 版本开始弃用了自身的安全验证功能。在此之前,SkyWalking 提供了一种基于 HTTP Basic Auth 的简单认证方式,可以通过用户名和密码来保护 SkyWalking 界面和 API。

要在 Centos 上使用 Nginx 部署 SkyWalking 9.3.0 并设置浏览器端访问时需要输入账户和密码,可以按照以下步骤进行操作:

1.  Nginx部署

1.1更新系统软件包

#在安装任何新软件包之前,请确保您的系统上已经更新了所有现有的软件包。

sudo yum update

1.2安装EPEL存储库

#默认情况下,CentOS仓库中不包含Nginx软件包。因此,我们需要安装EPEL(Extra Packages for Enterprise Linux)存储库,它包含了大量的额外的软件包,其中包括Nginx。

sudo yum install epel-release

1.3安装Nginx

#一旦EPEL存储库被启用,您就可以使用yum来安装Nginx了。

yum install nginx

2.  修改 Nginx 配置文件

vim /etc/nginx/nginx.conf。添加以下配置:

server {

    listen       80;

    server_name  example.com; # 替换成自己的域名或 IP 地址

    location / {

        proxy_pass http://localhost:18080; # 将请求转发到 SkyWalking 服务器

        auth_basic "Restricted"; # 启用基本身份验证,显示提示信息

        auth_basic_user_file /etc/nginx/htpasswd; # 指定存储用户名和密码的文件路径

    }

}

2.1.     字段解释

  1. proxy_pass 字段指定将所有请求转发到 SkyWalking 服务器上的端口18080。
  2. auth_basic 字段指定浏览器显示的提示信息,auth_basic_user_file 字段指定存储用户名和密码的文件路径。

3. 创建存储用户名和密码的文件

3.1 安装htpasswd工具

#运行以下命令来安装httpd-tools包:

yum install httpd-tools

3.2 验证

#安装完成后,您可以运行以下命令来验证是否已成功安装htpasswd工具:

htpasswd –v

#如果hthtpasswd安装成功,将显示htpasswd的版本信息。否则,您可能需要重新启动系统后再次尝试安装。

#创建加密文件

touch /etc/nginx/htpasswd。

#执行以下命令:

htpasswd -c /etc/nginx/htpasswd admin

然后输入密码,即可创建一个具有管理员权限的用户 admin。

4.  验证代理及身份认证

  1. 检查SELinux状态

首先,请检查SELinux是否已启用:

Getenforce

如果输出为“Enforcing”,则表示SELinux处于启用状态。

  1. 临时禁用SELinux

要临时禁用SELinux,请运行以下命令:

setenforce 0

#此命令将SELinux设置为“宽松”模式(即不执行强制访问控制),并允许NGINX代理服务器连接到上游服务器。请注意,此操作可能会降低系统安全性,因此应该谨慎使用。

  1. 永久更改SELinux配置

如果要永久更改SELinux配置,则必须编辑/etc/selinux/config文件,并将其SELINUX值更改为“permissive”或“disabled”。

如果将SELINUX设置为“permissive”,则SELinux仍然处于启用状态,但仅记录警告和错误,而不执行强制访问控制。

如果将SELINUX设置为“disabled”,则完全禁用SELinux。(需重启服务器)

  1. 重新启动nginx

systemctl restart nginx

#在浏览器中输入在 nginx.conf 中指定的域名或 IP 地址,例如:http://example.com。将会看到一个登录页面,输入之前创建的用户名和密码即可登录。

通过以上步骤,就可以使用 Nginx 部署 SkyWalking 9.3.0 并设置浏览器端访问时需要输入账户和密码进行身份认证。

 

4. 常见报错及解决方法

使用nginx为skywalking配置账户登陆后浏览器端访问报错,可能是因为 Nginx 无法将请求转发到 SkyWalking 服务器上的端口。

为了解决此问题,您需要检查以下内容:

4.1.     检查监听

端口检查 SkyWalking 服务器是否已正确启动并正在监听正确的端口。可以使用以下命令检查:

netstat -tlnp | grep "8080" # 检查是否有进程在监听端口 8080

4.2. 检查配置文件字段地址

检查 Nginx 配置文件中 proxy_pass 字段是否正确指定了 SkyWalking 服务器的地址和端口。可以尝试直接访问 SkyWalking 服务器的 IP 地址和端口,确认是否可以正常访问。

4.3. 检查防火墙设置

确保允许来自 Nginx 的请求通过。例如,如果使用 firewalld,可以执行以下命令放行端口:

firewall-cmd --zone=public --add-port=80/tcp --permanent # 放行 HTTP 端口

firewall-cmd --reload # 重新加载防火墙规则

4.4.   检查 Nginx 日志

 /var/log/nginx/error.log,查看是否有其他错误信息。可以使用以下命令实时监控日志:

tail -f /var/log/nginx/error.log

4.5. 排查代理类型

如果以上步骤都没有解决问题,可以尝试修改 Nginx 配置文件中的代理类型。例如,如果 SkyWalking 服务器使用的是 HTTPS 协议,可以在 location / 中添加以下配置:

proxy_ssl_server_name on;

proxy_pass https://localhost:8443;

其中,proxy_ssl_server_name 表示要将原始请求头中的 Host 头发送到后端服务器,proxy_pass 指定要转发到的 SkyWalking 服务器的地址和端口。

5. 常见502报错

如果在使用NGINX代理到上游服务器时遇到“connect() to [::1]:18080 failed (13: Permission denied) while connecting to upstream”错误消息,这通常是由于SELinux限制引起的。您可以通过禁用或配置SELinux来解决此问题。

5.1.     检查SELinux状态

首先,请检查SELinux是否已启用:

getenforce

如果输出为“Enforcing”,则表示SELinux处于启用状态。

5.2.     临时禁用SELinux

要临时禁用SELinux,请运行以下命令:

setenforce 0

此命令将SELinux设置为“宽松”模式(即不执行强制访问控制),并允许NGINX代理服务器连接到上游服务器。请注意,此操作可能会降低系统安全性,因此应该谨慎使用。

5.3.     永久更改SELinux配置

如果要永久更改SELinux配置,则必须编辑/etc/selinux/config文件,并将其SELINUX值更改为“permissive”或“disabled”。

•     如果将SELINUX设置为“permissive”,则SELinux仍然处于启用状态,但仅记录警告和错误,而不执行强制访问控制。

•     如果将SELINUX设置为“disabled”,则完全禁用SELinux。

请注意,更改此配置可能会影响系统安全性,并使系统容易受到攻击,因此应该谨慎使用。

5.4.     重启服务器

完成SELinux配置更改后,需要重新启动服务器才能使更改生效:

reboot

如果您不想重新启动服务器,则可以使用以下命令暂时停用SELinux:

sudo setenforce 0

这将使SELinux临时处于“宽松”模式。请注意,此操作可能会降低系统安全性。

猜你喜欢

转载自blog.csdn.net/qq_52497256/article/details/130411850