背景

作为一个爱折腾的人,我在腾讯云部署了一些服务,比如wiki、BI可视化、控制面板等,这些应用并不对外开发,只是自己使用,但是部署到公网,难免会遇到一些非法探测服务用户密码的情况,为了服务的安全性,可以把nginx作为安全防护层。

Nginx安全保护策略

Nginx提供了多种服务保护策略,最常用的两种方法:1、nginx用户认证 2、nginx白名单策略。

nginx用户认证就是在访问应用之前强制要求输入用户、密码。可以配置全局认证,也可以对某个单独的服务启用认证。这种方法配置简单,但是每次都需要输入用户密码,比较麻烦。

nginx白名单策略就是只允许配置的IP白名单访问服务,其他IP会被拒绝。这里介绍的就是nginx白名单策略。

Nginx白名单配置

1、创建nginx ip白名单文件

vim /etc/nginx/whitelist/whitelist.conf

222.101.51 1;    #客户端ip
10.0.8.15 1;    #本机内网IP

注:白名单格式为:IP 1;

222.101.51 1; 表示nginx允许ip为222.101.51 的客户端访问。

如果需要新增ip,可以在这里添加,然后重启nginx。

2、配置Nginx

1)配置nginx.conf

vim /etc/nginx/nginx.conf

添加下面内容:

geo $allowed_ip {
      default 0;
      include /etc/nginx/whitelist/whitelist.conf;  # 引用外部文件
 }

2)配置各个服务server

vim /etc/nginx/conf.d/1panel.conf

添加下面内容:

if ($allowed_ip = 0) {
     return 403;
}

3、重载Nginx

# nginx重载配置文件
sudo nginx -s reload

到此nginx白名单列表已经生效了,但是客户端的ip经常会发生变化,如果每次变化都需要登录服务器更新whitelist.conf会比较麻烦,下面通过页面更新白名单列表。

3、页面更新IP白名单

页面有两个功能,1、获取当前客户端的公网ip 2、点击添加IP后ip会出现在下面的的ip白名单列表中 3、点击保存以后会将当前ip添加到服务器的whitelist.conf中。

最后

公网部署应用一定要注意数据安全问题,还记得前两年大量公网部署的confluence服务漏洞被黑客攻破,造成大量数据和隐私泄露。所以如果是私有服务一定要做好安全防护,避免不必要的损失。