Li tħarreġ host virtwali Subversion lejn indirizz VPN ibiddel liema sit iwieġeb għal talba, mhux min huwa permess jibgħatha. Il-verifika tal-aċċess issir aktar tard, skont ir-regoli fit-taqsima li qabblet mal-URL, u isem il-host qatt ma jidħol f'dik id-deċiżjoni. Jekk ServerName kien l-unika bidla tiegħek, ir-repożitorju huwa eżattament kif kien aċċessibbli lbieraħ. Żewġ mistoqsijiet separati għandhom jiġu mwieġba fil-konfigurazzjoni: liema socket aċċettat il-konnessjoni u liema identità ġarret it-talba.

X'jiddeċiedi ServerName fil-fatt

L-ospitar virtwali bbażat fuq l-isem iqabbel il-karta Host mad-dħuliet ServerName u ServerAlias, jagħżel host wieħed u jħallih jimmaniġġja t-talba. Il-konnessjoni nnifisha kienet aċċettata qabel minn socket Listen li jappartjeni lis-server, mhux lill-host. Għalhekk isem li jidher privat ma joffri l-ebda protezzjoni: kwalunkwe klijent li jilħaq is-socket jista' jibgħat dik il-karta Host. L-isem huwa ċavetta tar-rotta, u ċ-ċwievet tar-rotta jagħżilhom min isejjaħ.

Tista' tara l-immappjar mingħajr ma taqta' xejn. apachectl -S jistampa kull host, il-port u l-ismijiet tiegħu, u jimmarka liema huwa l-predefuljat għall-indirizz.

RequireAll huwa l-kontenitur li jagħmel it-tnejn verifiki obbligatorji

Apache 2.4 jgeżwer id-direttivi Require ta' taqsima waħda fi RequireAny impliċita, allura żewġ direttivi għarwiena jfissru li waħda minnhom biżżejjed. Żid il-kontenitur u t-tifsira taqleb:

<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 jitlob iż-żewġ kundizzjonijiet: indirizz tas-sors fil-firxa tal-mina u utent li r-repożitorju jaċċetta. Dan għandu jfisser biss-VPN għal URL Subversion. Ir-referenza ta' mod_authz_core tiddokumenta r-regoli tal-kontenitur. Ħalli l-blokka fil-Location eżistenti għar-repożitorju u ħalli d-direttivi DAV li diġà jaħdmu fil-post tagħhom, għax dan il-framment ma jissostitwixxi la AuthType, lanqas il-fajl tal-passwords, lanqas l-awtorizzazzjoni fil-livell tal-passaġġ.

It-test tas-sors ġej minn mod_authz_host, allura kkonferma li huwa mgħobbi qabel ma tiddebġja xi ħaġa oħra: apachectl -M | grep authz_host.

L-indirizz li jivvaluta Apache huwa l-indirizz tas-socket

Require ip iqabbel mal-indirizz li rreġistra Apache għall-konnessjoni, u dan mhux dejjem l-indirizz li l-klijent jaħseb li għandu.

Meta l-VPN jiddirietta l-indirizzi tiegħu mingħajr traduzzjoni, Apache jara l-indirizz tal-mina u 10.8.0.0/24 jaqbel. Meta gateway jittraduċi, Apache jara l-gateway u r-regola bil-kwiet ma taqbel ma' xejn; l-istess ġara wara bbilanċjar tat-tagħbija li jtemm TLS quddiem il-host. Għal dak il-każ hemm mod_remoteip. RemoteIPHeader X-Forwarded-For flimkien ma' RemoteIPTrustedProxy għall-bbilanċjar jissostitwixxi l-indirizz irreġistrat, u biss imbagħad il-firxa jkollha ma' xiex tqabbel.

Li tafda karta ta' trażmissjoni arbitrarja huwa agħar milli ma jkollok l-ebda regola. Kwalunkwe klijent jista' jibgħat X-Forwarded-For li jkun fih 10.8.0.9 u jissodisfa verifika tal-firxa li qatt ma kienet ankra mal-qabża affidabbli.

Saffi l-uditur u l-politika tar-repożitorju

L-irbit huwa kontroll separat u spiss l-aktar sempliċi. Listen 10.8.0.1:443 jiddeċiedi liema sockets jeżistu, u talba ma tistax tagħżel host fuq socket li qatt ma nfetħet. Il-prezz huwa l-ordni tal-bidu: jekk l-interface tal-mina tkun nieżla meta jibda Apache, l-irbit ifalli u s-servizz ma jitlax. Ipparjaha mal-ordni tal-unitajiet, jew orboth ma' indirizz li jeżisti indipendentement mill-mina.

Il-permessi tal-passaġġ jibqgħu f'AuthzSVNAccessFile. Kont validu għas-sit mhuwiex l-istess għotja bħall-aċċess tal-kitba għall-passaġġ tal-proġett, u r-regola tan-netwerk ma tibdilx dan.

Oqgħod attent għall-għaqda tat-taqsimiet meta l-blokka tkun f'fajl inkluż. Apache jgħaqqad il-kontenituri tal-awtorizzazzjoni madwar taqsimiet imbejta u l-aktar taqsima speċifika li taqbel tista' tissostitwixxi r-rekwiżit minflok iżżid miegħu, allura regola fuq /svn forsi ma tasalx sa /svn/repo/trunk ladarba taqsima idjaq tiddefinixxi tagħha.

Ipprova ż-żewġ rifjuti qabel ma tgħid li spiċċa

Ipprova erba' talbiet, mhux waħda. Ġewwa l-VPN b'kont validu għandek tikseb il-lista tar-repożitorju. Ġewwa l-VPN b'password żbaljat għandek tikseb 401 minflok lista. Minn barra l-VPN b'kredenzjali validi għandek tikseb 403, u l-istess talba pubblika lejn isem ta' host alternattiv trid tfalli bl-istess mod.

Kmand wieħed għal kull każ biżżejjed: curl -sI -u user:pass https://svn.example.com/svn/repo/, imbagħad aqra l-linja tal-istat. Irrepeti l-każ li jaħdem permezz tal-klijent veru wkoll, għax svn info jeżerċita l-metodi DAV li se jużaw il-commits u l-aġġornamenti.

Jekk xi wieħed mill-erba' riżultati ma jqablx mal-politika li kellek f'moħħok, il-konfigurazzjoni mhijiex lesta, u li tbiddel isem il-host ma jbiddilx dan.

Artikli relatati