VPS فایر وال: یوازې د VPN پورټ پرانیزئ، بیا یې ثابت کړئ
یو پورټ باید عام پاتې شي، که نه هیڅ کلینټ نه نښلول کیږي۔ نور رد کړئ، لیږد له ننوتلو جلا وساتئ، او هغه بیارغونې لاره پرېږدئ چې مخکې مو آزمایلي وي۔
هغه فایر وال چې یوازې د VPN پورټ ته اجازه ورکوي یو قاعده نه ده۔ دا درې جلا پرېکړې دي چې په ناڅاپي ډول ورته د پورټ شمېرې پورې اړه لري: د ننوتلو زنځیر پرېکوي چې څه ښايي محلي پروسې ته ورسېږي، د لیږد زنځیر پرېکوي چې د تونل کلینټونو په استازیتوب څه ښايي له کوربه تېر شي، او NAT جدول د وتلو پر مهال د سرچینې پته بیا لیکي۔ له دې یوه غلطه کړئ او پایله به نادراً پاکه خنډ وي۔ تاسو هغه کوربه ترلاسه کوئ چې کلینټونه مني خو هېڅ نه باروي، یا هغه کوربه چې تر هغه پورې بند ښکاري چې څوک د زنځیرونو ترتیب ولولي۔
یوازینی پورټ چې نشي بندېدلی
د VPN اورېدونکی باید له هغو پتو څخه اړیکې ومني چې تاسو یې مخکې نه شی اټکلولی، نو د تعریف له مخې عامه خدمت دی۔ دا یوازینی استثنا ده چې ډیزاین پر بنسټ جوړ شوی: OpenVPN لپاره یو UDP پورټ، WireGuard لپاره یو UDP پورټ، SSL VPN لپاره یو TCP پورټ۔ نور ټول د تونل شاته دي، یعني د اپلیکیشن خدمتونه باید له ټولو انټرفیسونو پرځای د تونل پتې یا loopback سره وتړل شي۔
خو تړل اجرا کول نه دي۔ 0.0.0.0 سره تړلی پروسه یوازې هغه وخت رسېدونکی وي چې قاعده اجازه ورکړي، او پخوانۍ تګلاره هغه ټرافیک لپاره بېل بدیل دی چې له هیچا قاعدې سره سمون نه لري، نه د پورټ کنټرول کوونکې قاعده۔ ستاسو د drop پورته ایښودل شوې مننه بیا هم مننه ده، او خدمت له عامه پتې لرې کول یو خپلواک ښه والی دی، د زنځیر بدیل نه۔
ننوتل، لیږد او NAT بېلابېلو پوښتنو ته ځواب وایي
د ننوتلو ټرافیک کوربه ته هماغه دی، نو د VPN اورېدونکی او اداري لاره همالته اوسېږي۔ د لیږد ټرافیک له کوربه تېریږي، او د تونل کلینټونو ته دا له net.ipv4.ip_forward=1 سره یوځای اړین دی۔ دودیزه نیمګړې ترتیبه وتونکې بهیر ته اجازه ورکوي او د بېرته راتلو لوری هېروي، نو کلینټ لاس ورکول بشپړوي او بیا هېڅ نه باروي؛ د ټاکل شوي او اړوند ټرافیک لپاره conntrack قاعده هغه لوری پوښي۔
NAT درېیمه پوښتنه ده۔ پرته له postrouting بیا لیکنې، لیږد شوي پاکټونه د تونل د خصوصي سرچینې سره وځي او پورته غورځول کیږي، ځکه چې له کوربه هاخوا هیڅ شبکه نه پوهیږي چې پول بېرته څنګه روټ کړي۔ د هغې قاعدې سرچینه مختاړی باید د VPN پول سره سمون ولري، نه د کوربه خپلې پتې سره، او د کلینټ فرعي شبکې نومونکې لیږد قاعدې لپاره همدا رنګه دی۔
IPv6 دوهمه تګلاره ده، وروسته فکر نه۔ هغه کوربه چې کلکه IPv4 زنځیر او پرانیستې تګلاره پر ip6tables لري هېڅ نه دی بند کړی؛ خدمتونه لا هم د بلې کورنۍ له لارې رسېدونکي دي۔ یا د قاعدو ټولګه له ip6tables سره انعکاس کړئ، یا په عامه انټرفیس کې IPv6 په قصداً توګه غیر فعال کړئ، او ولیکئ چې کوم مو غوره کړ۔
هغه بنسټ چې په یوې لوستنې پوه شي
له رد څخه پیل کړئ، بیا یوازې هغه څه ورزیات کړئ چې کوربه ته اړین دي۔ لومړی loopback او ځوابونه، بیا اداري لاره، بیا د تونل اورېدونکی، بیا د کلینټونو لپاره د لیږد تګلاره:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -m conntrack --ctstate NEW -j ACCEPT
sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADEد انټرفیسونو نومونه، پورټ او پول ځای نیوونکي دي؛ هغه له سرور څخه ولولئ نه کاپي یې کړئ۔ د پایلې خوندي کول لیکلو ته ورته مهم دي، ځکه چې یوازې په حافظه کې ژوند کوونکې قاعدې ټولګه په راتلونکي بیا پیل کې ورک کیږي او کوربه په چوپتیا سره بیا پرانیزي۔ د ویشلو میکانېزم سره یې تلپاتې کړئ، او د هغې ورځې لپاره چې ماشین به بوټ نه شي، له ماشین بهر یوه کاپي وساتئ۔
وروستی پورټ بندول پرته له دې چې کوربه له لاسه ورکړئ
په ډیزاین کې یوه تله ده۔ که SSH یوازې د تونل له لارې وي، ناکام VPN خدمت SSH هم له ځانه سره وړي، او د بېرته راتلو یوازینۍ لاره کېدای شي هغه کنسول وي چې تاسو هېڅکله نه دی پرانیستی۔ د وروستي عامه پورټ له بندولو مخکې ډاډ ترلاسه کړئ چې هغه کنسول شته او واقعاً یې کارولی شئ، یا له تونل څخه خپلواکه یوه تنګه اداري لاره وساتئ: له ثابتې پتې SSH، یوازې کیلي، د پاسورډ تصدیق بند۔
بدلون له هغې ناستې پلي کړئ چې مخکې جوړه شوې، نه د هغې اړیکې له لارې چې تاسو یې فلټر کوئ۔ د بېرته تګ مهال ویش وکړئ ترڅو غلطي پای ته ورسیږي نه دا چې تلپاتې شي، د بېلګې په توګه systemd-run --on-active=10min کار چې پخوانۍ قاعدې ټولګه بېرته راولي، او لومړی آزمایلو پر مهال دوهمه SSH ناسته پرانیستې وساتئ۔ بیا وګورئ چې د بېرته تګ کار واقعاً پیل کیږي، ځکه چې نه آزمایل شوې بیارغونه له بیارغونې نشتوالي سره برابر ده۔
لاره ثابته کړئ، سکریپټ نه
لوستل شوې قاعدې ولولئ، نه هغه فایل چې باید هغه بار کړی وای۔ له مجاز بهرني کوربه څخه ډاډ ترلاسه کړئ چې یوازې پام شوي پورټونه ځواب ورکوي؛ د تونل له داخل څخه ډاډ ترلاسه کړئ چې هغه خدمتونه چې تاسو یې خپرول غوښتل رسېدونکي دي۔ هغه پخوانۍ رد تګلاره چې د تونل ټرافیک هم بلاکوي، تر هغه پورې د فعال بندیز په څېر ښکاري چې څوک یې کارول غواړي۔
iptables -S
iptables -t nat -S
ss -lntup
ip -4 addr showاجازه شوی پورټ، د کلینټونو پول، د تونل انټرفیس، اداري سرچینه او د کنسول بهیر د ترتیب څنګ ته ولیکئ۔ پول یا د انټرفیس نوم کې راتلونکی بدلون باید په فلټر او NAT قاعدې دواړو کې سم شي، که نه کوربه پرته له دې چې څوک پوه شي نیمګړي خلاص حالت ته بېرته ځي۔
یو عادت د قاعدو ټولګې څخه ډېر ارزښت لري: له هر بدلون وروسته د کلینټ غوښتنې سره د لیږد لاره او د دوهمې ناستې سره د بیارغونې لاره ثابت کړئ۔ هغه بندیز چې تاسو نه دی کارولی یوازې یوه انګېره ده۔