Að beina sýndarhýsli Subversion að VPN-tölu breytir því hvaða vefsvæði svarar beiðni, ekki því hver má senda hana. Aðgangsathugunin fer fram síðar, samkvæmt reglum í þeim hluta sem passaði við slóðina, og hýsilsnafn kemur aldrei inn í þá ákvörðun. Ef ServerName var eina breytingin þín er gagnasafnið alveg jafn aðgengilegt og í gær. Svara þarf tveimur aðskildum spurningum í stillingunum: hvaða sökkull tók við tengingunni og hvaða auðkenni beiðnin bar.

Hvað ServerName ákveður í raun

Sýndarhýsing byggð á nafni ber saman Host-hausinn við ServerName- og ServerAlias-færslur, velur einn hýsil og lætur hann annast beiðnina. Tengingin sjálf var tekin við fyrr af Listen-sökkli sem tilheyrir netþjóninum, ekki hýslinum. Þess vegna veitir nafn sem virðist einkarekið enga vernd: hvaða biðlari sem nær sökklinum getur sent þann Host-haus. Nafnið er leiðarkerfislykill, og leiðarkerfislykla velur sá sem kallar.

Þú getur séð vörpunina án þess að giska. apachectl -S prentar hvern hýsil, gátt hans og nöfn og merkir hver er sjálfgefinn fyrir töluðu.

RequireAll er geymirinn sem gerir báðar athuganir skyldubundnar

Apache 2.4 vefur Require-tilskipunum eins hluta inn í óbeina RequireAny, svo tvær berar tilskipanir þýða að önnur hvort dugi. Bættu geyminum við og merkingin snýst við:

<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 krefst báðra skilyrða: upprunatölu innan jarðgöngubilsins og notanda sem gagnasafnið samþykkir. Það ætti að þýða aðeins-VPN fyrir Subversion-slóð. mod_authz_core-tilvísunin skjalfestir reglur geymisins. Hafðu blokkina innan núverandi Location fyrir gagnasafnið og láttu DAV-tilskipanirnar sem þegar virka vera á sínum stað, því þessi bútur kemur hvorki í stað AuthType né lykilorðaskrárinnar né heimildar á slóðarstigi.

Upprunaprófið kemur frá mod_authz_host, svo staðfestu að það sé hlaðið áður en þú kembir eitthvað annað: apachectl -M | grep authz_host.

Talan sem Apache metur er sökkultalan

Require ip ber saman við töluna sem Apache skráði fyrir tenginguna, og hún er ekki alltaf talan sem biðlarinn heldur að hann hafi.

Þegar VPN beinir töluunum sínum án þýðingar sér Apache jarðgöngutöluna og 10.8.0.0/24 passar. Þegar hlið þýðir sér Apache hliðið og reglan passar hljóðlega við ekkert; sama gerist bak við hleðsludreifara sem lýkur TLS fyrir framan hýsilinn. Fyrir það tilvik er til mod_remoteip. RemoteIPHeader X-Forwarded-For ásamt RemoteIPTrustedProxy fyrir dreifarann kemur í stað skráðu tölunnar, og aðeins þá hefur bilið eitthvað til að bera saman við.

Að treysta handahófskenndum framsendingarhaus er verra en að hafa enga reglu. Hvaða biðlari sem er getur sent X-Forwarded-For með 10.8.0.9 og uppfyllt bilsathugun sem var aldrei fest við treystan stökk.

Lagskiptu hlustandann og stefnu gagnasafnsins

Binding er aðskilin stjórn og oft sú einfaldari. Listen 10.8.0.1:443 ákveður hvaða sökkull eru til, og beiðni getur ekki valið hýsil á sökkli sem var aldrei opnaður. Kostnaðurinn er röð ræsingar: ef jarðgönguviðmótið er niðri þegar Apache ræsir mistekst bindingin og þjónustan fer ekki upp. Paraðu hana við röð eininga, eða bindu við tölu sem er til óháð jarðgöngunum.

Slóðarheimildir vera í AuthzSVNAccessFile. Gilt reikningur fyrir vefsvæðið er ekki sama heimild og skrifaðgangur að verkefnaslóð, og netkerfisreglan breytir því ekki.

Fylgstu með samruna hluta þegar blokkin er í innfelldri skrá. Apache sameinar heimildageyma yfir hreiðra hluta og sá hluti sem passar nákvæmast getur komið í stað kröfunnar í stað þess að bæta við hana, svo regla á /svn nær ef til vill ekki /svn/repo/trunk þegar þrengri hluti skilgreinir sína.

Sannið báðar synjanir áður en þú segir að verkinu sé lokið

Prófaðu fjórar beiðnir, ekki eina. Innan VPN með gilt reikning ættirðu að fá lista yfir gagnasafnið. Innan VPN með rangt lykilorð ættirðu að fá 401 í stað lista. Utan VPN með gild skilríki ættirðu að fá 403, og sama opinbera beiðnin á móti öðru hýsilsnafni verður að mistakast á sama hátt.

Ein skipun fyrir hvert tilvik er nóg: curl -sI -u user:pass https://svn.example.com/svn/repo/, lestu svo stöðulínuna. Endurtaktu líka virka tilvikið í gegnum raunverulega biðlarann, því svn info æfir DAV-aðferðirnar sem commit og uppfærslur munu nota.

Ef eitthvað af fjórum niðurstöðum stangast á við stefnuna sem þú ætlaðir þér er stillingunni ekki lokið, og að endurnefna hýsilinn breytir því ekki.

Tengdir greinar