VPN කන්ටේනරයේ NET_ADMIN: එයට කුමක් සහ කොහේද වෙනස් කළ හැකිද
මෙම හැකියාව එක් ජාල නාම අවකාශයක් තුළ අතුරුමුහුණත්, මාර්ග සහ ගිනිපවුරු වෙනස් කිරීමට ඉඩ දෙයි. සත්කාරක ජාලකරණය සමඟ එම අවකාශය සත්කාරකයේම තමන්ගේ තට්ටුවයි.
NET_ADMIN යනු ක්රියාවලියකට ජාල පරිපාලනය කිරීමට ඉඩ දෙන ලිනක්ස් හැකියාවයි, සහ කන්ටේනරයක එය ක්රියාවලිය ධාවනය වන ජාල නාම අවකාශය තුළම හරියටම එය කරයි. මෙය සොකට් එකක් විවෘත කිරීමේ බලපත්රයක් නොවේ, උපාංගයක හෝ මාර්ගයක ආදේශකයක්ද නොවේ. රසවත් ප්රශ්නය කිසිවිටෙකත් හැකියාව ලබා දී ඇත්ද යන්න නොව, වෙනස කුමන නාම අවකාශයට ලැබෙන්නේද යන්නයි.
හැකියාව ආවරණය කරන දේ
තමන්ගේ නාම අවකාශය තුළ, NET_ADMIN ඇති ක්රියාවලියකට අතුරුමුහුණත් ඉහළ නැංවීමට සහ පහත හෙළීමට, ලිපින පැවරීමට, මාර්ග එකතු කිරීමට සහ ඉවත් කිරීමට, සහ ගිනිපවුරු නීති ලිවීමට හැකිය, එය capabilities(7) මෙම හැකියාව යටතේ එකතු කරන මෙහෙයුම් සමූහයයි. එය කර්නලය රථවාහනය පෝලිමට ගෙන පෙරහන් කරන ආකාරය පාලනය කරන අතුරුමුහුණත් මට්ටමේ සැකසුම්ද සකස් කළ හැකිය. VPN සේවාලාභියෙකුට සාමාන්යයෙන් ආරම්භයේදී ඒවායින් කිහිපයක් අවශ්ය වන අතර ඉන් පසු වෙන කිසිවක් අවශ්ය නොවේ. එබැවින් බොහෝ රූප භාවිතා කරන ප්රමාණයට වඩා වැඩි ප්රවේශයක් ඉල්ලා සිටී.
එම නාම අවකාශයෙන් පිටත මෙහෙයුම් ආවරණය නොවේ, සහ යාබද වරප්රසාද වෙන් වෙන්ව පවතී. අමු පැකට් කියවීම සහ ලිවීම NET_RAW ට අයත් වන අතර, tun උපාංගයක් සෑදීමට හැකියාව සහ උපාංග නෝඩයට ප්රවේශය යන දෙකම අවශ්ය වේ. උපාංගය නොමැති ක්රියාවලියකට ජාල ගැටලුවක් ලෙස පෙනෙන නමුත් එසේ නොවන අවසර දෝෂයක් ලැබේ.
නාම අවකාශය හානියේ අරය තීරණය කරයි
තමන්ගේම පාලම් ජාලයේ ඇති කන්ටේනරයක් තමන්ගේම loopback, තමන්ගේම අතුරුමුහුණත් සහ තමන්ගේම මාර්ගකරණ වගුවට ළඟා වේ. එහි NET_ADMIN ලබා දීමෙන් VPN සේවාලාභියාට සත්කාරකයේ මාර්ගකරණ තීරණ ස්පර්ශ නොකර උමගක් ගොඩනැගීමට හැකි වේ, එය බොහෝ කන්ටේනර් රූප උපකල්පනය කරන සැකැස්මයි.
එම කන්ටේනරය සත්කාරක ජාලකරණයට මාරු කරන්න, එවිට එම අවසරයම දැන් සත්කාරකයේ මාර්ග සහ සත්කාරකයේ ගිනිපවුරු සංස්කරණය කරයි, මන්ද වෙන් වූ නාම අවකාශයක් ඉතිරිව නැත. එක් උමගක් කළමනාකරණය කළ යුතුව තිබූ සේවාලාභියාට මුළු යන්ත්රයේම රථවාහනය හරවා යැවිය හැක, සහ එහි විසුරුම් ස්ක්රිප්ටයේ වැරැද්දක් සත්කාරකයේ කිසිවෙකු නොලියූ නීති ඉතිරි කරයි. හැකියාව තුළම කිසිවක් වෙනස් නොවීය; සන්දර්භය වෙනස් විය. එබැවින් එකම compose ගොනුව සත්කාරක දෙකක වෙනස් ලෙස හැසිරේ.
එකකට ඒකාබද්ධ වන පූර්ව කොන්දේසි තුනක්
VPN කන්ටේනරවල ආරම්භක අසාර්ථකත්වයන් සාමාන්යයෙන් වෙන් වූ කරුණු තුනකින් එකකට අදාළ වේ: හැකියාව, උමග් උපාංගය සහ ප්රොටෝකෝලය සඳහා කර්නල සහාය. තුනම එකවර ලබා දීම ක්රියා කරයි, එය ඊළඟ අසාර්ථකත්වය ආරෝපණය කළ නොහැකි ද බවට පත් කරයි. අවම compose කොටසක් හැකියාව ලබා දී උපාංග නෝඩය පැහැදිලිව යවයි:
services:
vpn:
image: example/vpn-client:latest
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
sysctls:
- net.ipv4.conf.all.src_valid_mark=1යම් sysctl අවශ්යදැයි රූපයේම ලේඛනවලින් කියවන්න, මන්ද කන්ටේනරයක ඇති sysctl එකකට අමතර වරප්රසාදයක් හෝ සත්කාරක මට්ටමේ සැකසුමක් අවශ්ය විය හැක. රූපය පරිශීලක අවකාශ ප්රකාරය පමණක් ආධාර කරන තැන උපාංගයක් කිසිසේත් අවශ්ය නොවන අතර හැකියා ලැයිස්තුව ඒ අනුව හැකිලේ.
ප්රකාරය නොව, පටු මෙහෙයුම ලබා දෙන්න
වරප්රසාදිත ප්රකාරය සෑම හැකියාවක්ම භාර දී එකම වේලාවේ උපාංග ප්රවේශය පුළුල් කරයි, එබැවින් පූර්ව කොන්දේසි තුනෙන් කුමක් අඩු වියද යන්න සඟවයි. එය කන්ටේනරයේ අසාර්ථකත්ව ක්රම සත්කාරක වෙනස්කම්වලින් වෙන් කර හඳුනාගත නොහැකි ද බවට පත් කරයි. ලිවීමට දිගු වුවත් පැහැදිලි ලැයිස්තුවකට මුල් තැන දෙන්න.
මූල රහිත සහ පරිශීලක නාම අවකාශ යෙදවුම් හැකියාවේ ප්රායෝගික අර්ථය වෙනස් කරයි, මන්ද ක්රියාවලියට එය සිතියම් කළ නාම අවකාශයක් තුළ පමණක් තබා ගත හැක. මූල සහිත උදාහරණයකින් හැකියා ලැයිස්තුවක් මූල රහිත ධාවන පරිසරයකට පිටපත් කර එම ප්රවේශයම බලාපොරොත්තු වීම දහවල් වේලාවක් අහිමි කර ගැනීමේ සාමාන්ය ක්රමයකි.
රහස්යයන් වෙනම තීරණයකට අයත් වේ. NET_ADMIN තබා ගැනීම සේවාලාභියා කුමන සමානකරු අනන්යතාවක් ඉදිරිපත් කරන්නේද, කුමන අක්තපත්ර පූරණය කරන්නේද හෝ ඒවා කෙසේ කරකවන්නේද යන්න ගැන කිසිවක් නොකියයි. ජාල පරිපාලනය විශ්වාසය සපයන්නේ නැත.
වෙනස සත්යාපනය කර අවසරය ඇත්තේ ඇයිද යන්න සටහන් කරන්න
උමග නිර්දෝෂී කිරීමට පෙර කන්ටේනරයට සැබවින්ම ලැබුණේ කුමක්දැයි තහවුරු කරන්න. පහත පරීක්ෂාව එකතු කළ හැකියා සහ ජාල ප්රකාරය වාර්තා කර, පසුව ඇතුළතින් අතුරුමුහුණත් ලැයිස්තුව පෙනෙන ආකාරය පෙන්වයි:
docker inspect --format '{{.HostConfig.CapAdd}} {{.HostConfig.NetworkMode}} {{.HostConfig.Privileged}}' vpn
docker exec vpn sh -c 'grep CapEff /proc/self/status'
docker exec vpn ip -br addr
docker exec vpn ip routeහැකියාව ඇති අතර අතුරුමුහුණත් ලැයිස්තුව තවමත් හිස් නම්, සේවාලාභියා කිසිවක් සෑදීමට පෙරම අසාර්ථක වී ඇත, සහ ඊළඟට බැලිය යුතු තැන කන්ටේනර් ලොග් වේ. උමග ඇති නමුත් රථවාහනය ගලා නොයන්නේ නම්, කන්ටේනරය තුළ ඇති මාර්ගකරණ වගුව ඊළඟ ප්රශ්නයට පිළිතුරු දෙයි.
විසුරුම් මාර්ගයද පරීක්ෂා කරන්න, මන්ද ගිනිපවුරු නීති ලියන සේවාලාභියෙකුට ඒවා පිටුපස තැබිය හැක. කන්ටේනරය නවත්වා සත්කාරක ජාලකරණය භාවිතා කරන්නේ නම් සත්කාරකයේ නීති කට්ටලය නැවත පරීක්ෂා කරන්න. ආරම්භයේදී තත්පර දෙකක් පමණක් අවශ්ය අවසරයක් එය විස්තර කරන සටහනක් නොමැතිව compose ගොනුවේ ස්ථිර අවශ්යතාවක් ලෙස විස්තර නොකළ යුතුය.
සෑම හැකියාවක් අසල හේතුව ලියන්න: කුමන මෙහෙයුමට එය අවශ්ය වියද සහ එය නොමැතිව කුමක් අසාර්ථක වේද. එම සටහන රූප යාවත්කාලීනවලින් පසුවද පවතී, සහ සමාලෝචිත වරප්රසාද ලැයිස්තුවක් සහ පිටපත්-අලවා ගැනීමෙන් වර්ධනය වූ ලැයිස්තුවක් අතර වෙනස එයයි.