Apache 2.4 සමඟ Subversion සත්කාරකය VPN පරිශීලකයන්ට සීමා කරන්න
ServerName අතාත්වික සත්කාරකයක් තෝරයි; එය සම්බන්ධ වන අය සීමා නොකරයි. VPN පරාසය සහ සැබෑ ගබඩා පරිශීලකයා ඉල්ලා, පසුව ප්රතික්ෂේප දෙකම ඔප්පු කරන්න.
Subversion අතාත්වික සත්කාරකයක් VPN ලිපිනයකට යොමු කිරීමෙන් වෙනස් වන්නේ කුමන අඩවිය ඉල්ලීමට පිළිතුරු දෙන්නේද යන්නයි, එය යැවීමට අවසර ඇත්තේ කාටද යන්න නොවේ. ප්රවේශ පරීක්ෂාව පසුව සිදු වේ, URL එකට ගැළපුණු කොටසේ නීති අනුව, සහ සත්කාරක නාමය කිසිදා එම තීරණයට ඇතුළු නොවේ. ServerName ඔබේ එකම වෙනස නම්, ගබඩාව ඊයේ මෙන්ම ප්රවේශ විය හැකිය. වින්යාසයේ ප්රශ්න දෙකකට පිළිතුරු දිය යුතුය: කුමන සොකට් එක සම්බන්ධතාව පිළිගත්තේද සහ ඉල්ලීම කුමන අනන්යතාවක් දැරුවේද.
ServerName සැබවින්ම තීරණය කරන්නේ කුමක්ද
නාමය මත පදනම් වූ අතාත්වික සත්කාරකකරණය Host ශීර්ෂය ServerName සහ ServerAlias ඇතුළත් කිරීම් සමඟ සසඳා, එක් සත්කාරකයක් තෝරා එයට ඉල්ලීම හසුරුවීමට ඉඩ දෙයි. සම්බන්ධතාවය මීට පෙර පිළිගත්තේ සත්කාරකයට නොව සේවාදායකයට අයත් Listen සොකට් එකකිනි. එබැවින් පෞද්ගලික පෙනුමක් ඇති නාමයක් කිසිදු ආරක්ෂාවක් නොදෙයි: සොකට් එකට ළඟා වන ඕනෑම සේවාලාභියෙකුට එම Host ශීර්ෂය යැවිය හැකිය. නාමය මාර්ගගත කිරීමේ යතුරකි, මාර්ගගත කිරීමේ යතුරු තෝරන්නේ ඇමතුම්කරුය.
අනුමාන නොකර සිතියම බැලිය හැකිය. apachectl -S සෑම සත්කාරකයක්, එහි තොටුපොළ සහ නාම මුද්රණය කර, ලිපිනය සඳහා පෙරනිමි කුමක්ද යන්න සලකුණු කරයි.
RequireAll යනු පරීක්ෂා දෙකම අනිවාර්ය කරන බහාලුමයි
Apache 2.4 එක් කොටසක Require නිර්දේශ ව්යංග්ය RequireAny එකක ඔතයි, එබැවින් නිරාවරණ නිර්දේශ දෙකක් යනු ඉන් එකක් ප්රමාණවත් යන්නයි. බහාලුම එකතු කරන්න, අර්ථය පෙරළෙයි:
<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 කොන්දේසි දෙකම ඉල්ලයි: උමග පරාසය තුළ මූලාශ්ර ලිපිනය සහ ගබඩාව පිළිගන්නා පරිශීලකයා. Subversion URL එකක් සඳහා VPN-පමණක් යන්නෙන් අදහස් විය යුත්තේ එයයි. mod_authz_core යොමුව බහාලුම් නීති ලේඛනගත කරයි. කොටස ගබඩාවේ පවතින Location තුළම තබා, දැනටමත් ක්රියා කරන DAV නිර්දේශ ඒවායේ තැනම තබන්න, මක්නිසාද යත් මෙම කොටස AuthType, මුරපද ගොනුව හෝ මාර්ග මට්ටමේ අවසරය කිසිවක් ප්රතිස්ථාපනය නොකරයි.
මූලාශ්ර පරීක්ෂාව mod_authz_host වෙතින් එයි, එබැවින් වෙනත් දෙයක් නිරාකරණය කිරීමට පෙර එය පූරණය වී ඇති බව තහවුරු කරන්න: apachectl -M | grep authz_host.
Apache ඇගයන ලිපිනය සොකට් ලිපිනයයි
Require ip සම්බන්ධතාව සඳහා Apache වාර්තා කළ ලිපිනය සමඟ සසඳයි, එය සේවාලාභියා තමා සතු යැයි සිතන ලිපිනය නොවිය හැකිය.
VPN එහි ලිපින පරිවර්තනයකින් තොරව මාර්ගගත කරන විට, Apache උමග ලිපිනය දකින අතර 10.8.0.0/24 ගැළපේ. ද්වාරයක් පරිවර්තනය කරන විට, Apache ද්වාරය දකින අතර නීතිය නිහඬව කිසිවකට ගැළපෙන්නේ නැත; සත්කාරකය ඉදිරිපිට TLS අවසන් කරන බර සමතුලිත කරන්නෙකු පිටුපසද එයම සිදු වේ. එම අවස්ථාව සඳහා mod_remoteip ඇත. සමතුලිත කරන්නා සඳහා RemoteIPTrustedProxy සමඟ RemoteIPHeader X-Forwarded-For වාර්තා කළ ලිපිනය ප්රතිස්ථාපනය කරයි, එවිට පමණක් පරාසයට සංසන්දනය කිරීමට යමක් ඇත.
අත්තනෝමතික යැවීම් ශීර්ෂයක් විශ්වාස කිරීම කිසිදු නීතියක් නොමැති වීමට වඩා නරකය. ඕනෑම සේවාලාභියෙකුට 10.8.0.9 අඩංගු X-Forwarded-For යවා, විශ්වාසදායක පිම්මකට කිසිදා සවි නොකළ පරාස පරීක්ෂාවක් සපුරාලිය හැකිය.
ශ්රෝතෘව සහ ගබඩා ප්රතිපත්තිය ස්තර වශයෙන් යොදන්න
බැඳීම වෙනම පාලනයක් වන අතර බොහෝ විට සරලම වේ. Listen 10.8.0.1:443 කුමන සොකට් පවතින්නේද යන්න තීරණය කරයි, කිසිදා නොවිවෘත කළ සොකට් එකක ඉල්ලීමකට සත්කාරකයක් තෝරා ගත නොහැකිය. මිල පිටවීමේ අනුපිළිවෙලයි: Apache ආරම්භ වන විට උමග අතුරුමුහුණත වසා ඇත්නම්, බැඳීම අසමත් වන අතර සේවාව ඉහළට නොඑයි. එය ඒකක අනුපිළිවෙල සමඟ යුගල කරන්න, නැතහොත් උමගෙන් ස්වාධීනව පවතින ලිපිනයකට බැඳෙන්න.
මාර්ග අවසර AuthzSVNAccessFile හි රැඳේ. අඩවිය සඳහා වලංගු ගිණුමක් ව්යාපෘති මාර්ගයකට ලිවීමේ ප්රවේශයට සමාන අවසරයක් නොවේ, ජාල නීතිය එය වෙනස් නොකරයි.
කොටස ඇතුළත් ගොනුවක ඇති විට කොටස් ඒකාබද්ධ කිරීම ගැන අවධානයෙන් සිටින්න. Apache කොටස් හරහා අවසර බහාලුම් ඒකාබද්ධ කරන අතර වඩාත් නිශ්චිත ගැළපෙන කොටසට අවශ්යතාව එකතු කරනවාට වඩා ප්රතිස්ථාපනය කළ හැකිය, එබැවින් පටු කොටසක් තමන්ගේ එක නිර්වචනය කළ පසු /svn මත ඇති නීතිය /svn/repo/trunk දක්වා නොපැමිණිය හැකිය.
අවසන් යැයි පැවසීමට පෙර ප්රතික්ෂේප දෙකම ඔප්පු කරන්න
එකක් නොව හතරක් ඉල්ලීම් පරීක්ෂා කරන්න. VPN තුළ වලංගු ගිණුමක් සමඟ ගබඩා ලැයිස්තුව ලැබිය යුතුය. VPN තුළ වැරදි මුරපදයක් සමඟ ලැයිස්තුවක් වෙනුවට 401 ලැබිය යුතුය. VPN පිටතින් වලංගු අක්තපත්ර සමඟ 403 ලැබිය යුතුය, විකල්ප සත්කාරක නාමයකට කරන එම පොදු ඉල්ලීමද එලෙසම අසමත් විය යුතුය.
එක් අවස්ථාවකට එක් විධානයක් ප්රමාණවත්ය: curl -sI -u user:pass https://svn.example.com/svn/repo/, පසුව තත්ත්ව පේළිය කියවන්න. ක්රියා කරන අවස්ථාව සැබෑ සේවාලාභියා හරහාද පුනරාවර්තනය කරන්න, මක්නිසාද යත් svn info කමිට් සහ යාවත්කාලීන භාවිතා කරන DAV ක්රම පුහුණු කරයි.
හතරෙන් ඕනෑම ප්රතිඵලයක් ඔබ අදහස් කළ ප්රතිපත්තිය සමඟ නොගැළපෙන්නේ නම්, වින්යාසය අවසන් නැත, සත්කාරකයේ නම වෙනස් කිරීමෙන් එය වෙනස් නොවේ.