Protokol PROXY v Squid: věřte odesílateli dřív než kontrolám přístupu HTTP
Kontroly odesílatele v protokolu PROXY v Squidu držte oddělené od autorizace cílové domény a požadavku klienta.
Pomocí proxy_protocol_access důvěřujte relayi, který dodává metadata, nikoli vybírejte povolené weby. V Squidu 5–7 proběhne kontrola jednou po navázání TCP na listeneru require-proxy-header, tedy před zpracováním hlaviček požadavku HTTP:
acl trusted_relay src 192.0.2.20/32
http_port 3128 require-proxy-header
proxy_protocol_access allow trusted_relay
proxy_protocol_access deny allNahraďte ukázkovou adresu relaye a omezujte síťový přístup k tomuto listeneru. V této fázi Squid ověří skutečný TCP protějšek, než přijme dodaná metadata. Po přijetí používá tvrzenou adresu klienta pro následné kontroly ACL i logování. Důvěra v relay podle adresy klienta, kterou tvrdí, by toto pořadí obrátila.
Ponechte http_access pro pozdější oprávnění ke zdroji klienta a cíli. Přijetí metadat neautorizuje přístup k webu a ACL cílové domény nemůže odpovědět na dřívější otázku důvěry v odesílatele.
Odesílatel i příjemce se musí shodnout na podporované verzi protokolu PROXY. Běžný klient HTTP nemůže tento listener s povinným prefixem použít jako obyčejný koncový bod proxy. Potřebujete-li obě podoby, použijte záměrně oddělené koncové body místo zdvojení stejné naslouchací adresy a portu.
Důvěryhodný relay může ovlivnit autorizaci podle adresy prostřednictvím identity klienta, kterou dodává. Tuto schopnost přiznejte jen zamýšlenému prostředníkovi.