E virtuelle Subversion-Host op eng VPN-Adress ze wielen ännert, wéi eng Säit eng Ufro beäntwert, net wien se däerf schécken. D'Zougrëffsprüfung geschitt méi spéit, no de Regele vun der Sektioun, déi zur URL gepasst huet, an en Hostnumm geet ni an déi Decisioun. Wann ServerName Är eenzeg Ännerung war, ass den Depot genee esou erreechbar wéi gëschter. Zwee getrennte Froen mussen an der Konfiguratioun beäntwert ginn: wéi ee Socket d'Verbindung ugeholl huet an wéi eng Identitéit d'Ufro gedroen huet.

Wat ServerName tatsächlech entscheet

Nummbaséiert virtuelle Hosting vergläicht den Host-Header mat ServerName- an ServerAlias-Andräg, wielt een Host an lässt deen d'Ufro verschaffen. D'Verbindung selwer gouf virdru vun engem Listen-Socket ugeholl, deen zum Server gehéiert, net zum Host. Dofir bitt en Numm, deen privat ausgesäit, keng Protektioun: all Client, deen de Socket erreecht, kann deen Host-Header schécken. Den Numm ass en Routing-Schlëssel, an Routing-Schlëssele wielt deen, deen ufréit.

Dir kënnt d'Zouuerdnung ouni ze roden gesinn. apachectl -S dréckt all Host, säi Port a seng Nimm aus a markéiert, wéi enen den Standard fir d'Adress ass.

RequireAll ass de Container, deen déi zwou Prüfunge verbindlech mécht

Apache 2.4 wéckelt d'Require-Direktive vun enger Sektioun an eng implizit RequireAny, also zwee plakeg Direktive bedeiten, datt eng vun deenen zwee duergeet. Füügt de Container derbäi an d'Bedeitung dréit sech ëm:

<Location /svn/repo>
    AuthType Basic
    AuthName "Subversion"
    AuthBasicProvider file
    AuthUserFile /etc/apache2/svn.htpasswd
    <RequireAll>
        Require ip 10.8.0.0/24
        Require valid-user
    </RequireAll>
</Location>

RequireAll verlaangt béid Bedingungen: eng Quelladress am Tunnelberäich an e Benutzer, deen den Depot akzeptéiert. Dat sollt nëmme-VPN fir eng Subversion-URL bedeiten. D'Referenz vu mod_authz_core dokumentéiert d'Containerregeien. Loosst de Block am bestuenden Location fir den Depot a léisst d'DAV-Direktiven, déi schonn funktionéieren, op hirem Platz, well dëst Fragment weder AuthType nach d'Passwuertdatei nach d'Autorisatioun op Wee-Niveau ersetzt.

D'Quellprüfung kënnt vu mod_authz_host, also bestätegt, datt et gelueden ass, ier Dir eppes anescht debuggéiert: apachectl -M | grep authz_host.

D'Adress, déi Apache evaluéiert, ass d'Socket-Adress

Require ip vergläicht mat der Adress, déi Apache fir d'Verbindung opgeholl huet, an dat ass net ëmmer déi Adress, déi de Client mengt ze hunn.

Wann de VPN seng Adressen ouni Iwwersetzung routet, gesäit Apache d'Tunneladress an 10.8.0.0/24 passt. Wann en Gateway iwwersetzt, gesäit Apache de Gateway an d'Reegel passt roueg op näischt; déiselwecht Saach geschitt hannert engem Load Balancer, deen TLS virum Host ofschléisst. Fir dee Fall gëtt et mod_remoteip. RemoteIPHeader X-Forwarded-For zesumme mat RemoteIPTrustedProxy fir de Balancer ersetzt déi opgehollen Adress, an eréischt dann huet de Beräich eppes ze vergläichen.

Engem arbiträren Weiderleesungsheader ze vertrauen ass schlëmmer wéi guer keng Reegel ze hunn. All Client kann X-Forwarded-For mat 10.8.0.9 schécken an eng Beräichsprüfung erfëllen, déi ni un engem vertraute Sprong verankert war.

Schicht de Lauschterer an d'Depotspolitik

D'Bindung ass eng separat Kontroll an dacks déi méi einfach. Listen 10.8.0.1:443 entscheet, wéi eng Sockete existéieren, an eng Ufro kann keen Host op engem Socket wielen, deen ni opgemaach gouf. De Präis ass d'Startuerdnung: wann d'Tunnel-Interface ënnen ass, wann Apache startet, schléit d'Bindung fehl an de Service kënnt net erop. Koppelt se mat der Eenheetsuerdnung, oder bind un eng Adress, déi onofhängeg vum Tunnel existéiert.

Wee-Berechtegungen bleiwen an AuthzSVNAccessFile. En valabele Kont fir d'Säit ass net déiselwecht Bewilligung wéi Schreiwe-Zougrëff op e Projetwee, an d'Netzwierkreegel ännert dat net.

Passt op d'Sektiounsfusioun op, wann de Block an enger agebonnener Datei läit. Apache fusionéiert Autorisatiounscontaineren iwwer verschachtelt Sektiounen an déi spezifeschst passend Sektioun kann d'Ufuerderung ersetzen amplaz se derbäizefügen, also kann eng Reegel op /svn méiglecherweis net /svn/repo/trunk erreechen, soubal eng méi eng Sektioun hir eege definéiert.

Beweist béid Oflehnungen, ier Dir et fäerdeg nennt

Test véier Ufroen, net eng. Bannen am VPN mat engem valabele Kont sollt Dir d'Lëscht vum Depot kréien. Bannen am VPN mat engem falsche Passwuert sollt Dir 401 kréien amplaz enger Lëscht. Vun ausserhalb vum VPN mat valabelen Umeldungsinformatiounen sollt Dir 403 kréien, an déiselwecht ëffentlech Ufro un en alternativen Hostnumm muss op déiselwecht Manéier feelen.

Eng Kommando pro Fall ass genuch: curl -sI -u user:pass https://svn.example.com/svn/repo/, liest dann d'Statuslinn. Widderhëlt de funktionéierende Fall och iwwer de richtege Client, well svn info déi DAV-Methoden üübt, déi Commits an Aktualiséierungen benotze wäerten.

Wann ee vun de véier Resultater net mat der Politik iwwereneest, déi Dir virgesinn hutt, ass d'Konfiguratioun net fäerdeg, an den Host ëmzebenennen ännert dat net.

Ähnlech Artikelen