Zmerit i to, jak nas vidi vlastni proxy
Echo sluzba na internetu odpovi verejnou adresu. Jenze volani na vlastni domenu se otaci zpatky na tentyz stroj a reverse proxy pak vidi neco jineho, typicky adresu docker bridge. A prave tu porovnava seznam povolenych IP u sluzeb za toutez proxy, takze verejna adresa muze byt povolena a volani z containeru presto skonci na 403. Zmeri se to tak, ze portal zavola svoji vlastni verejnou adresu (PUBLIC_ORIGIN + ROOT_PATH + /whoami) a precte si, jak k nemu volani doslo. Kruh sam pres sebe, ale nic jineho tuhle adresu nezjisti: mezi container a server se tim dostane ta sama proxy, kterou prochazi volani na sousedni sluzby. Novy /api/whoami je zamerne bez prihlaseni. Vraci volajicimu jeho vlastni adresu, tedy nic, co by uz nevedel, stejne jako kterakoliv echo sluzba. Obe mereni bezi naraz a jsou videt na strance Konektory vedle sebe. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
4545de8076
commit
6a2e0dc424
@@ -1657,6 +1657,34 @@ export function buildOpenApiDocument() {
|
||||
responses: { '204': { description: 'Smazano' }, '404': { description: 'Neexistuje' } },
|
||||
},
|
||||
},
|
||||
'/api/whoami': {
|
||||
get: {
|
||||
tags: ['Systém'],
|
||||
summary: 'Jak nas vidi ten, kdo nam vola',
|
||||
description:
|
||||
'Vraci volajicimu jeho vlastni adresu tak, jak dorazila k serveru. Zni to ' +
|
||||
'zbytecne, ale je to jediny zpusob, jak zmerit, s jakou zdrojovou adresou ' +
|
||||
'doruci reverse proxy volani, ktere vyslo z naseho containeru. Bez prihlaseni ' +
|
||||
'zamerne - volajici dostane svoji vlastni adresu, nic navic.',
|
||||
responses: {
|
||||
'200': {
|
||||
description: 'Adresa volajiciho',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
ip: { type: 'string', nullable: true },
|
||||
forwardedFor: { type: 'string', nullable: true },
|
||||
remoteAddress: { type: 'string', nullable: true },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
'/api/dashboard/connectors/egress-ip': {
|
||||
get: {
|
||||
tags: ['Konektory'],
|
||||
@@ -1679,6 +1707,22 @@ export function buildOpenApiDocument() {
|
||||
source: { type: 'string' },
|
||||
checkedAt: { type: 'string', format: 'date-time' },
|
||||
error: { type: 'string' },
|
||||
viaProxy: {
|
||||
type: 'object',
|
||||
nullable: true,
|
||||
description:
|
||||
'Jak nas vidi nase vlastni reverse proxy. Zmeri se volanim na ' +
|
||||
'vlastni verejnou adresu (PUBLIC_ORIGIN + ROOT_PATH + /whoami), ' +
|
||||
'ktere se otoci zpatky na tentyz stroj. Byva jina nez ta verejna ' +
|
||||
'a prave ji porovnava seznam povolenych IP u sluzeb za toutez proxy.',
|
||||
properties: {
|
||||
ip: { type: 'string', nullable: true },
|
||||
forwardedFor: { type: 'string', nullable: true },
|
||||
remoteAddress: { type: 'string', nullable: true },
|
||||
url: { type: 'string' },
|
||||
error: { type: 'string' },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user