首页
Search
1
v2ray异常错误之二
3,310 阅读
2
linux时区设置
2,698 阅读
3
DB2常用操作
2,173 阅读
4
websphere修改jvm内存xmx和xms
1,929 阅读
5
nfs客户端文件属主为nobody的现象
1,552 阅读
技术
生活
运动
游戏
电影
登录
Search
标签搜索
docker
linux
troubleshooting
nginx
secure
truenas
mysql
windows
python
esxi
docker swarm
oracle
zabbix
tomcat
blog
dsm
群晖
rpa
freenas
db
yuc
累计撰写
291
篇文章
累计收到
0
条评论
首页
栏目
技术
生活
运动
游戏
电影
页面
搜索到
15
篇与
的结果
2024-07-05
nginx简单的鉴权
问题背景 某个环境想提供一个web给指定的机器来下载文件,但是网络经过了多级代理以及nat,所以ip地址很可能无法正常的识别,如果使用 allow 的这种指令针对 ip 地址做限制和开放,那么几乎是实现不了的,那么我们还有什么办法呢? 使用第三方的模块,或者简单认证模块都是可以的,但是如果nginx服务器不好传文件,或者想要的速度比较快,那么还有没有更简单的限制措施呢? 简单方案 我们可以借鉴 http 请求中 Token 的方式,要求在 URI 中增加类似的头部,这样的话可以实现简单快速的鉴权方案,示例如下: if ( $arg_token != '111111') { return 401; } 这里用到的方法是, nginx可以根据 $arg_参数名 实现获取 URI 的参数内容,最后我们利用这个功能实现权限的判断
2024年07月05日
8 阅读
0 评论
0 点赞
2024-07-05
nginx安全防护目录穿越
问题现象 某个环境被渗透测试有目录穿越漏洞,根据提供的 POC 测试如下: [root@SwjwSs003ZSi html]# curl -H "Cookie: pvdid=anonymous; JSESSIONID=31C4345FB72B10B090BFDE1156F8F1A0; route=f015f74752d9d072baef31542796e55a|1717567459|1717562574" 'https://10.1.26.3/xxx/api/fileupload/services/download?fileId=%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc/passwd' -k 返回的内容: root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin zabbix:x:997:995:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin nscd:x:28:28:NSCD Daemon:/:/sbin/nologin 可以说明是成功了 规避措施 在产品还没有修复的情况下,可以先从 nginx 上拦截掉这种请求 if ($request_uri ~* "%2e%2e|%2f%2e|%2e%2f|%2F%2E%2E|%2E%2E") { return 403; } if ($request_uri ~* "\.\./") { return 403; } if ($uri ~* "\/\.\./|\.\./|\.\.") { return 403; } 这样可以禁止访问请求中有当前目录,上级目录 等 URI
2024年07月05日
4 阅读
0 评论
0 点赞
2024-05-07
nginx缓存
请求头说明 proxy_hide_header ensures the header will not be passed back to the client, proxy_ignore_headers ensures that the header will not automatically disable caching within nginx 其他问题 如果没有设置 proxy_cache_valid 字段,则不会缓存,请求被缓存策略拦截成功,但是一直miss proxy_cache_bypass可以根据uri或者其他策略对一些请求不缓存 一个server下有多个不同location proxy_pass到不同后端web server,怎么对这个server下所有环境都做缓存,如果server内共享一个缓存location,那么缓存未找到时候proxy_pass需要配置什么地址去回源资源,有以下解决方案: a. 对每个不同的location都做一个缓存配置。如果环境数量少是可以这样配置的 b. 共用一个location缓存配置,再proxy_pass前面增加一段lua脚本,当执行到这里的时候,根据客户端请求的主机名去查到对应的真实web server,并且赋值给变量,所以proxy_pass只需要配置变量就行了
2024年05月07日
3 阅读
0 评论
0 点赞
2024-01-17
tomcat返回403禁止跨域问题
问题现象 tomcat返回403跨域主要是Origin值问题,从浏览器F12可以看到报错的请求是存在Origin头部的,浏览器这一部分可能Origin和host是一样的,不会有问题, 但是通过中间nginx抓包可以看到转发至tomcat这一段,可能出现不一致的情况。这个问题最主要的是中间某个nginx没有正确的设置Host值,解决方式有如下几种: 设置Origin的值为空,绕过跨域 proxy_set_header Origin ""; 使用more_headers 移除 Origin头部 使用proxy_set_header Host xxxx; 设置Origin所需的Host,如果有多层nginx,可以只在最后一个设置。但是这样也有局限性,如果外部多个出口的情况,面对用户有多个地址,那就仍然受限,需要每个host都配置一个server
2024年01月17日
5 阅读
0 评论
0 点赞
2023-12-04
nginx之同一个端口http跳转到https
0x1 场景 在 nginx 中一个监听端口只能有一种状态,如果监听了 http,那么不能再次监听 https,所以会出现一种需求: 如果环境使用了非标准的 https 端口,而用户如果没有手动输入前缀 https:// ,那么是无法正常访问环境的,通常返回的是 400,告诉用户在 https 上使用了 http 协议。但这样仍然不够,对于不熟悉技术的用户来说,也仍然不知道需要去手动处理前缀 0x2 常用解决办法 通常这问题有一个常用的解决办法。那就是增加一个 http 端口,在这个端口上做 301 跳转到 https即可。那这样就用到了两个端口,我们可以通过一个端口来解决问题吗? 答案是可以的 0x3 一个端口497 参考如下的配置: error_page 497 https://$http_host$request_uri; error_page 指令也是我们常用的,就是把指定的错误响应状态码跳转到设定的页面上,所以这一句基本的含义就是把 497 的状态码跳转到其 https 地址上。再结合其能解决问题,我们可以知道,当 nginx为https环境时,如果接受到了 http 请求,那么其会响应 497。至此我们就解决了单个端口实现 https 环境,并且兼容 http 访问跳转的需求。 0x4 haproxy实现 发现 haproxy 也是有办法可以实现的,参考文档: https://discourse.haproxy.org/t/one-port-to-catch-http-and-https-requests-and-redirect-to-the-https-version/1703?u=elovin
2023年12月04日
6 阅读
0 评论
0 点赞
1
2
3