مقدمه
در برخی مواقع، ممکن است خود را در شبکه ای بیابید که ناامن است یا فایروال بسیار محدودی دارد و می خواهید مطمئن شوید که هیچکس ترافیک شما را تماشا نمی کند. یک راه حل این است که یک VPN در اوبونتو 22.04 / 20.04 / 18.04 راه اندازی کنید، اما بسیاری از VPN ها به نرم افزار مشتری خاصی روی دستگاه شما نیاز دارند که ممکن است حق نصب آن را نداشته باشید. با این حال، اگر تنها چیزی که برای ایمن کردن نیاز دارید مرور وب است، یک جایگزین سریع، رایگان و مفید وجود دارد: یک تونل پروکسی SOCKS 5.
یک پروکسی SOCKS یک تونل رمزگذاری شده SSH است که در آن برنامه های کاربردی پیکربندی شده ترافیک خود را به سمت پایین هدایت می کنند و سپس در انتهای سرور، پراکسی ترافیک را به اینترنت عمومی ارسال می کند. برخلاف VPN، یک پروکسی SOCKS باید بر اساس برنامه به برنامه در دستگاه مشتری پیکربندی شود، اما تا زمانی که برنامه قادر به استفاده از پروکسی SOCKS باشد، میتوانید برنامهها را بدون هیچ نرمافزار مشتری تخصصی راهاندازی کنید. در سمت سرور، تنها چیزی که برای پیکربندی نیاز دارید SSH است.
در این آموزش شما از سروری که Ubuntu 22.04 را اجرا می کند (اگرچه هر توزیع لینوکس که می توانید از طریق SSH به آن دسترسی داشته باشید کار می کند) و مرورگر وب فایرفاکس به عنوان برنامه مشتری استفاده خواهید کرد. در پایان این آموزش شما می توانید وب سایت ها را از طریق تونل رمزگذاری شده SSH مرور کنید.
پیش نیازها
- یک سرور لینوکس که اوبونتو را اجرا می کند (توزیعات دیگر کار می کنند) با کاربر
sudo
و دسترسی SSH. - برنامه ای برای پیکربندی با پروکسی SOCKS، مانند مرورگر وب فایرفاکس.
- برای کاربران ویندوز، به ابزار PuTTY یا Windows Subsystem for Linux (WSL) نیز نیاز دارید.
PuTTY برای راه اندازی تونل پروکسی برای کاربران ویندوز استفاده می شود. کاربران macOS یا Linux ابزارهایی برای راه اندازی تونل از پیش نصب شده دارند.
مرحله 1 (macOS/Linux) – راه اندازی تونل
در رایانه محلی خود، اگر Droplet خود را با یک کلید در حال حاضر ایجاد نکرده اید، یک کلید SSH ایجاد کنید. پس از ایجاد کلید، مطمئن شوید که قسمت عمومی به فایل “authorized_keys” در SSH Droplet شما اضافه شده است. سپس یک برنامه ترمینال را برای ایجاد یک تونل SSH با فعال بودن پراکسی SOCKS باز کنید.
با این دستور تونل را راه اندازی کنید:
ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain
توضیح برهان
-i
: مسیر کلید SSH برای اتصال به هاست-D
: به SSH می گوید که ما یک تونل SOCKS روی شماره پورت مشخص شده می خواهیم (شما می توانید یک عدد بین 1025 و 65536 انتخاب کنید)-f
: فرآیند را به پسزمینه منتقل میکند-C
: داده ها را قبل از ارسال فشرده می کند-q
: از حالت بی صدا استفاده می کند-N
: به SSH می گوید که پس از اتمام تونل هیچ فرمانی ارسال نخواهد شد
بررسی کنید که تونل با این دستور اجرا می شود:
ps aux | grep ssh
در خروجی خطی به شکل زیر خواهید دید:
Output
sammy 14345 0.0 0.0 2462228 452 ?? Ss 6:43AM 0:00.00 ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain
می توانید از برنامه ترمینال خود خارج شوید و تونل فعال خواهد ماند. دلیل آن این است که ما از آرگومان -f استفاده کردیم که جلسه SSH را در پسزمینه قرار میدهد
مرحله 1 (ویندوز) – راه اندازی تونل
PuTTY را باز کنید. اگر هنوز آن را نصب نکرده اید، PuTTY را دانلود کرده و در جایی که دوست دارید ذخیره کنید. PuTTY برای نصب به حقوق سرپرست نیاز ندارد. فقط .exe
را دانلود کرده و اجرا کنید.
برای راه اندازی تونل مراحل زیر را انجام دهید:
از بخش Session، نام میزبان (یا آدرس IP) سرور خود و پورت SSH (معمولاً 22) را اضافه کنید.
در سمت چپ، به مسیر: Connection > SSH > Tunnels بروید
هر شماره پورت منبع بین 1025 و 65536 را وارد کنید، مانند 1337
دکمه Dynamic Radio را انتخاب کنید
روی دکمه Add کلیک کنید
به Session در سمت چپ برگردید
یک نام در قسمت Saved Sessions اضافه کنید و روی دکمه Save کلیک کنید
حالا دکمه Open را بزنید تا اتصال برقرار شود
نام کاربری sudo
و رمز عبور سرور خود را برای ورود وارد کنید
مرحله 2 – پیکربندی فایرفاکس برای استفاده از تونل
اکنون که یک تونل SSH دارید، وقت آن است که فایرفاکس را برای استفاده از آن تونل پیکربندی کنید. به یاد داشته باشید که برای اینکه یک تونل SOCKS 5 کار کند، باید از یک برنامه محلی استفاده کنید که بتواند تونل را پیاده سازی کند. فایرفاکس این قابلیت را دارد:
این مرحله برای ویندوز، macOS و لینوکس یکسان است.
مطمئن شوید که شماره پورتی را که در دستور SSH خود استفاده کرده اید دارید. در مثال های خود از 1337 استفاده کرده ایم.
(مراحل زیر با فایرفاکس نسخه 80 انجام شد، اما باید روی نسخه های دیگر کار کند، اگرچه مکان گزینه ها ممکن است متفاوت باشد.)
فایرفاکس را باز کنید
- در گوشه سمت راست بالا، روی نماد همبرگر کلیک کنید تا به منوی فایرفاکس دسترسی پیدا کنید.
- روی آیتم منوی Preferences یا Options کلیک کنید.
- به پایین بروید و در قسمت Network Settings دکمه Settings… را انتخاب کنید.
- در زیر عنوان «پیکربندی دسترسی پروکسی به اینترنت»، پیکربندی دستی پروکسی را انتخاب کنید.
- برای SOCKS Host localhost یا 127.0.0.1 را وارد کنید و برای پورت از پورت سفارشی مشخص شده در تونل خود، 1337 استفاده کنید.
- نزدیک پایین، کادر «پراکسی DNS هنگام استفاده از SOCKS v5» را علامت بزنید
- برای ذخیره و بستن تنظیمات خود، روی دکمه OK کلیک کنید
حالا یک تب دیگر در فایرفاکس باز کنید و شروع به وبگردی کنید. شما باید برای مرور ایمن از طریق تونل SSH آماده باشید. داده هایی که از وب سایت دریافت می کنید رمزگذاری شده است. علاوه بر این، از آنجایی که گزینه Proxy DNS را علامت زده اید، جستجوهای DNS شما نیز رمزگذاری شده اند تا ISP شما نتواند آنچه را که می بینید یا جایی که برای دریافت آن رفته اید را ببیند.
برای تأیید اینکه از پروکسی استفاده می کنید، به تنظیمات شبکه در فایرفاکس برگردید و شماره پورت دیگری را وارد کنید و تنظیمات را ذخیره کنید. اکنون اگر بخواهید وب را مرور کنید، باید یک پیام خطا دریافت کنید: “سرور پروکسی اتصالات را رد می کند”. این ثابت می کند که فایرفاکس از پروکسی استفاده می کند و نه فقط از اتصال پیش فرض. از طرف دیگر، میتوانید به یک سایت IP عمومی مانند ipecho.net بروید، و آیپی که برمیگرداند باید IP SSH Droplet شما باشد، زیرا اکنون به عنوان پروکسی شما عمل میکند.
مرحله 3 – بازگردانی پروکسی در فایرفاکس
وقتی نیاز به حفظ حریم خصوصی تونل SSH را تمام کردید، به تنظیمات پروکسی شبکه در فایرفاکس برگردید. روی دکمه رادیویی «استفاده از تنظیمات پروکسی سیستم» کلیک کنید و روی OK کلیک کنید. اکنون که فایرفاکس دیگر از تونل SOCKS استفاده نمی کند، می توانیم آن را نیز خاموش کنیم. میتوانید تونل را به سمت بالا رها کنید تا بتوانید پروکسی را در فایرفاکس فعال و غیرفعال کنید، اما اگر تونل را برای مدت طولانی بیکار بگذارید، ممکن است خودش بسته شود.
بستن تونل (macOS/Linux)
تونلی که قبلاً در دستگاه محلی خود ایجاد کردیم به پسزمینه فرستاده شد، بنابراین بستن پنجره ترمینال که برای باز کردن تونل استفاده کردید، آن را خاتمه نمیدهد. برای خاتمه دادن به تونل باید شناسه فرآیند (PID) را با استفاده از دستور ps شناسایی کنیم و سپس با استفاده از دستور kill
فرآیند را خاتمه دهیم.
بیایید تمام فرآیندهای فعال ssh را در دستگاه خود جستجو کنیم:
ps aux |grep ssh
خطی را پیدا کنید که شبیه دستوری است که قبلا برای ایجاد تونل وارد کرده اید. در اینجا خروجی نمونه است:
Output
sammy 14345 0.0 0.0 2462228 452 ?? Ss 6:43AM 0:00.00 ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain
از ابتدای خط، در یکی از دو ستون اول، یک عدد 3-5 رقمی وجود دارد. این PID است. PID نمونه 14345 در اینجا برجسته شده است.
اکنون که می دانید PID چیست، می توانید از دستور kill برای پایین آوردن تونل استفاده کنید. هنگام از بین بردن فرآیند از PID خود استفاده کنید:
kill 14345
بستن تونل (ویندوز)
پنجره PuTTY را که برای ایجاد تونل استفاده کردید ببندید همین.
مرحله 4 (macOS/Linux) – ایجاد میانبر برای استفاده مکرر
برای سیستمهای macOS یا Linux، میتوانیم یک نام مستعار ایجاد کنیم یا یک اسکریپت ایجاد کنیم تا به سرعت تونل را برای ما ایجاد کنیم. دو روش زیر برای خودکار کردن فرآیند تونل وجود دارد:
این روش های میانبر هر دو به احراز هویت کلید SSH بدون رمز عبور/بدون عبارت برای سرور نیاز دارد
BASH Script قابل کلیک
اگر آیکونی میخواهید که با کلیک روی آن، تونل شروع شود، میتوانیم یک اسکریپت BASH کوچک برای انجام کار ایجاد کنیم. اسکریپت تونل را راهاندازی میکند و سپس فایرفاکس را راهاندازی میکند، اگرچه هنوز هم باید اولین بار تنظیمات پراکسی را به صورت دستی در فایرفاکس اضافه کنید.
در macOS، باینری فایرفاکس که میتوانیم از خط فرمان راهاندازی کنیم، داخل Firefox.app است. با فرض اینکه برنامه در پوشه Applications باشد، باینری در /Applications/Firefox.app/Contents/MacOS/firefox
یافت می شود.
در سیستمهای لینوکس، اگر فایرفاکس را از طریق مخزن نصب کردهاید یا از قبل نصب شده است، مکان آن باید /usr/bin/firefox
باشد. اگر فایرفاکس در مکان استاندارد نیست، همیشه میتوانید از فرمان که فایرفاکس استفاده کنید تا متوجه شوید که فایرفاکس در کجای سیستم شما قرار دارد.
در این اسکریپت مسیر فایرفاکس را با مسیری که مناسب سیستم شماست جایگزین کنید. همچنین ممکن است لازم باشد خط SSH را طوری تنظیم کنید که فرمان موفقیت آمیزی را که قبلاً برای ایستادن یک تونل استفاده می کردید منعکس کند.
با استفاده از یک ویرایشگر متن مان
ند nano یک فایل جدید ایجاد کنید:
nano ~/socks.sh
خطوط زیر را اضافه کنید:
#!/bin/bash -e
ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@`your_domain`
/Applications/Firefox.app/Contents/MacOS/firefox &
- شماره پورت مورد نظر خود را جایگزین
1337
کنید (باید با آنچه در فایرفاکس قرار داده اید مطابقت داشته باشد) - کاربر SSH @ نام میزبان یا IP خود را جایگزین
sammy@your_domain
کنید /Applications/Firefox.app/Contents/MacOS/firefox
را با مسیر باینری فایرفاکس برای سیستم خود جایگزین کنید
اسکریپت خود را ذخیره کنید برای nano، CONTROL + o و سپس برای خروج، CONTROL + x را تایپ کنید.
اسکریپت را اجرایی کنید، به طوری که وقتی روی آن دوبار کلیک کردید، اجرا شود. از خط فرمان، از دستور chmod برای اضافه کردن مجوزهای اجرا استفاده کنید:
chmod +x /path/to/socks.sh
در macOS، ممکن است مجبور شوید یک مرحله اضافی را انجام دهید تا به macOS بگویید که یک فایل .sh باید مانند یک برنامه اجرا شود و در یک ویرایشگر باز نشود. برای انجام این کار، روی فایل socks.sh خود کلیک راست کرده و «دریافت اطلاعات» را انتخاب کنید.
بخش «باز کردن با:» را پیدا کنید و اگر مثلث افشاگری به سمت پایین نیست، روی آن کلیک کنید تا بتوانید منوی کشویی را ببینید. Xcode ممکن است به عنوان برنامه پیش فرض تنظیم شود.
آن را به Terminal.app تغییر دهید. اگر Terminal.app در لیست نیست، «سایر» را انتخاب کنید و سپس به Applications > Utilities > Terminal.app بروید (ممکن است لازم باشد منوی کشویی «فعال» را از «Recommended Applications» روی «All Applications» تنظیم کنید).
برای باز کردن پروکسی SOCKS خود، روی فایل socks.sh
دوبار کلیک کنید. اسکریپت یک پنجره ترمینال را باز می کند، اتصال SSH را شروع می کند و فایرفاکس را راه اندازی می کند. با خیال راحت در این مرحله پنجره ترمینال را ببندید. تا زمانی که تنظیمات پراکسی را در فایرفاکس نگه داشته اید، می توانید مرور را از طریق اتصال امن خود شروع کنید:
این اسکریپت به شما کمک می کند تا به سرعت پروکسی را بایستید، اما همچنان باید مراحل دستی فهرست شده در بالا را انجام دهید تا فرآیند ssh را بیابید و پس از اتمام کار، آن را بکشید.
نام مستعار خط فرمان
اگر مرتباً خود را در خط فرمان میبینید و میخواهید تونل را بالا بیاورید، میتوانید یک نام مستعار خط فرمان ایجاد کنید تا کار را برای شما انجام دهد.سخت ترین قسمت ایجاد یک نام مستعار این است که بفهمید دستور مستعار کجا ذخیره شود.
توزیعهای مختلف لینوکس و نسخههای macOS نامهای مستعار را در مکانهای مختلف ذخیره میکنند. بهترین گزینه این است که به دنبال یکی از فایل های زیر بگردید و alias
را جستجو کنید تا ببینید در حال حاضر سایر نام های مستعار در کجا ذخیره می شوند. امکانات عبارتند از:
- ~/.bashrc
- ~/.zshrc
- ~/.bash_aliases
- ~/.bash_profile
- ~/.profile
هنگامی که فایل صحیح را پیدا کردید، نام مستعار زیر را به هر فایلی که قبلاً دارید یا فقط در انتهای فایل اضافه کنید. در مثال زیر از نام مستعار “firesox” برای نمایش تونل SOCKS استفاده می کنیم، اما می توانید از هر کلمه ای که می خواهید به عنوان نام مستعار خود استفاده کنید:
alias firesox='ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain && /Applications/Firefox.app/Contents/MacOS/firefox &'
- شماره پورت مورد نظر خود را جایگزین 1337 کنید (باید با آنچه در فایرفاکس قرار داده اید مطابقت داشته باشد)
- sammy@your_domain را با نام میزبان یا IP کاربر SSH خود جایگزین کنید
- /Applications/Firefox.app/Contents/MacOS/firefox را با مسیر باینری فایرفاکس جایگزین کنید
نام مستعار شما فقط زمانی بارگذاری می شود که پوسته جدیدی را راه اندازی می کنید، بنابراین جلسه ترمینال خود را ببندید و یک پوسته جدید را شروع کنید. حالا وقتی تایپ می کنید:
firesox
این نام مستعار تونل شما را راه اندازی می کند، سپس فایرفاکس را برای شما راه اندازی می کند و شما را به خط فرمان باز می گرداند. مطمئن شوید که فایرفاکس همچنان برای استفاده از پروکسی تنظیم شده است. اکنون می توانید به صورت ایمن مرور کنید.
مرحله 5 (اختیاری) – عیب یابی: عبور از فایروال ها
اگر اتصال شما کار میکند، میتوانید بروید و میتوانید خواندن را متوقف کنید. با این حال، اگر متوجه شده اید که به دلیل یک فایروال محدود نمی توانید یک اتصال SSH ایجاد کنید، احتمالاً پورت 22، که برای ایجاد تونل لازم است، مسدود شده است. اگر میتوانید تنظیمات SSH سرور پراکسی را کنترل کنید (با دسترسی ریشه به DigitalOcean Droplet، میتوانید این کار را انجام دهید)، میتوانید SSH را طوری تنظیم کنید که در پورتی غیر از 22 گوش کند.
از کدام پورت می توانید استفاده کنید که مسدود نشده است؟
پورت هایی که اغلب باز هستند شامل 80 (ترافیک عمومی وب) و 443 (TLS، ترافیک وب امن) می شوند.
اگر سرور SSH شما محتوای وب را ارائه نمیکند، میتوانیم به SSH بگوییم که به جای پورت پیشفرض 22 از یکی از این پورتهای وب برای برقراری ارتباط استفاده کند. 443 بهترین انتخاب است زیرا انتظار میرود که ترافیک رمزگذاری شده در این پورت داشته باشد. ترافیک SSH رمزگذاری خواهد شد.
از یک مکان بدون فایروال، SSH را به DigitalOcean Droplet که برای پراکسی استفاده می کنید وارد کنید یا از کنسول ساخته شده از کنترل پنل Digital Ocean استفاده کنید.
تنظیمات SSH سرور را ویرایش کنید:
sudo nano /etc/ssh/sshd_config
به دنبال خط پورت 22 باشید.
ما می توانیم به طور کامل «22» را جایگزین کنیم یا یک پورت دوم برای SSH اضافه کنیم تا به آن گوش دهد. ما انتخاب میکنیم که SSH به چندین پورت گوش دهد، بنابراین یک خط جدید در زیر پورت 22 اضافه میکنیم که پورت 443 را میخواند. مثالی در اینجا آمده است:
. . . Port 22 Port 443 . . .
SSH را مجددا راه اندازی کنید تا پیکربندی SSH را که به تازگی ویرایش کرده اید بارگیری مجدد کند. بسته به توزیع شما، نام شبح سرور SSH ممکن است متفاوت باشد، اما احتمالاً ssh یا sshd است. اگر یکی کار نمی کند دیگری را امتحان کنید:
sudo service ssh restart
برای تأیید اینکه پورت SSH جدید شما کار می کند، یک پوسته جدید باز کنید (هنوز مورد فعلی را نبندید، فقط در صورتی که به طور تصادفی خود را قفل کردید) و SSH را با استفاده از پورت جدید باز کنید:
ssh sammy@your_domain -p 443
اگر موفق شدید، اکنون می توانید از هر دو پوسته خارج شوید و تونل SSH خود را با استفاده از پورت جدید باز کنید:
ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain -p 443
تنظیمات فایرفاکس یکسان خواهد بود زیرا به پورت SSH بستگی ندارد، فقط به پورت تونل (1337 بالا) بستگی دارد.
نتیجه
در این عصر و عصر مدرن، راههای زیادی برای مرور ایمن وجود دارد، وقتی در یک شبکه بالقوه خصمانه هستید، مانند وای فای عمومی یک کافیشاپ. در اکثر مواقع، اگر بتوانید از VPN برای ایمن سازی و محافظت از تمام ترافیک خود استفاده کنید، استفاده از آن ترجیح داده می شود. اما داشتن یک تونل SOCKS به شما امنیت لازم را در هنگام مرور وب می دهد، زمانی که نمی توانید از VPN استفاده کنید یا به آن اعتماد کنید. یک تونل SOCKS به سرعت راه اندازی می شود و به راحتی از آن استفاده می شود، و شما کنترل کاملی روی آن دارید. آنها یک گزینه عالی برای مرور ایمن هستند.