Ho lavorato a una soluzione di bilanciamento del carico ridondante multi-provider utilizzando HAProxy, AWS e Cloudflare. Ho una soluzione e credo che sarà sicura, ma sto cercando ulteriori convalide sul perché sarebbe una pessima idea.
Ho configurato un servizio di bilanciamento del carico su Cloudflare. Questo fa un controllo di stato su un ELB in AWS, L'ELB è pubblico e controlla un'istanza su EC2 che ha installato HAProxy. l'EC2 e l'ELB sono nel proprio VPC privato con il proprio gruppo di sicurezza privato.
Voglio testare se l'ELB è disponibile da Cloudflare. Voglio anche registrare gli assegni sanitari. È interessante e prezioso per me vedere da cosa proviene l'accesso IP.
Sono consapevole che HAProxy offre una soluzione monitor-uri, e questo funziona, ma non registra le richieste. I documenti dicono che è intenzionale, forse perché non vogliono inondare i log con questi controlli.
Ho provato a riscrivere 503 richieste senza alcun back-end, con un errorfile che ha 200 OK in esso. Restituisce sempre 503, il che è comprensibile.
La mia soluzione
Il mio approccio si avvale della funzione di negazione della richiesta http. Se invio una richiesta http deny deny_status 200 - restituirà 200. Se HAProxy non funziona, non arriverebbe neanche lontanamente. Quindi, il fatto che sarebbe arrivato così lontano è il successo.
Per evitare falsi positivi, fuorvianti o attività pericolose, specificarei di negare (negare lo stato 401 --- o simile) a qualsiasi origine che non sia il ELB, utilizzando l'URL AWS ELB DNS. Il gruppo di sicurezza dovrebbe specificare una porta personalizzata e consentire solo l'utilizzo degli IP di cloudflare. Protezione contro controllori di stato sconosciuti; questi non sarebbero passati o nemmeno nel ELB. In questo modo l'unico modo per ottenere un 200 indietro dal controllo dello stato era direttamente dall'ELB su una porta specificata.
Ho scoperto che in questo modo registra i controlli di integrità e fornisce risultati accurati al servizio di bilanciamento del carico cloudflare. Sto pensando che questa sia una configurazione sicura, ma c'è una ragione per cui questo non sarebbe? Mi sto perdendo un problema di sicurezza qui?
Forse non correlati: quelli sono molti IP da whitelist da cloudflare, mi fa venire a malapena la whitelisting di così tanti IP. Per quanto ne so, gli IP non dovrebbero cambiare, e dovrebbero appartenere a Cloudflare, e dovrei essere in grado di fidarmi di loro dato che è lì il servizio. Mi sto preoccupando troppo?
Per favore non rispondere con soluzioni alternative, mi preoccupo solo della sicurezza e della qualità di questa configurazione.
IP di cloudflare: cloudflare ip doc
haproxy deny: HAProxy http-request docs