某些Web服务默认没有开发身份验证机制,开放在互联网,只需要URL、IP或端口,就可以直接连接,很容易被扫描工具探测到,导致数据泄露。
在Web服务前端添加Nginx反向代理,并使用Nginx内置的基本身份验证机制来验证身份,可以有效增强Web服务的安全性,避免不必要的信息泄露。
创建.htpasswd认证文件
安装apache2-utils套件
sudo apt install apache2-utils
创建认证文件,-c是创建新的文件,接着按照提示输入user1的密码
sudo htpasswd -c /etc/nginx/.htpasswd user1
也可以直接在命令中输入密码,加上-b参数
sudo htpasswd -cb /etc/nginx/.htpasswd user1 password
添加额外的用户
sudo htpasswd /etc/nginx/.htpasswd user2
修改Nginx配置文件
在要加认证的location路径中,增加auth_basic配置,配置认证文件auth_basic_user_file
location /admin {
auth_basic "Administrator’s Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}
auth_basic也可以配置在整个server下面,如果某个location路径不需要认证,增加auth_basic:off即可
server {
…
auth_basic "Administrator’s Area";
auth_basic_user_file /etc/nginx/.htpasswd;
location /public/ {
auth_basic off;
}
}
Basic Authentication与IP认证相结合
结合satisfy指令,如果设置为all,则需要满足所有条件才可以访问,如果设置为any,则ip认证和basic auth认证满足其中一个即可。
location /admin {
#…
satisfy all;
deny 192.168.1.2;
allow 192.168.1.1/24;
allow 127.0.0.1;
deny all;
auth_basic "Administrator’s Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}
应用设置
nginx -t && systemctl reload nginx
圈小蛙