فهرست بستن

چگونه WireGuard آن را به لینوکس تبدیل کرد • ثبت نام

چگونه WireGuard آن را به لینوکس تبدیل کرد • ثبت نام

شاید روزی – شاید – Zero Trust بسیاری از مشکلات امنیتی شبکه ما را حل کند. اما در حال حاضر، اگر می خواهید مطمئن شوید که یک استراق سمع در شبکه خود ندارید، به یک شبکه خصوصی مجازی (VPN) نیاز دارید.
تنها یک مشکل کوچک با VPN های تجاری وجود دارد: بسیاری از آنها غیرقابل اعتماد هستند. بنابراین، چه کاری می توانید انجام دهید؟ خوب، خودتان را اجرا کنید البته پاسخ منبع باز است. و امروزه، VPN انتخابی شما VPN داخلی لینوکس است: WireGuard.
چرا WireGuard به جای OpenVPN یا IKEv2؟ زیرا اجرای آن با حفظ امنیت و ارائه سرعت های سریعتر ساده تر است. و وقتی صحبت از VPN ها می شود، همه چیز در مورد تعادل سرعت و امنیت است.

بنابراین، اگر WireGuard همه چیز است، چرا اینقدر طول کشید تا آن را به هسته لینوکس تبدیل کنیم؟ به هر حال، خالق آن، جیسون دوننفلد، برای اولین بار ایده های پشت WireGuard را در سال 2015 ارائه کرد.

زیرا حتی زمانی که یک ایده عالی دارید و آن را به خوبی اجرا می کنید، به این معنی نیست که همه چیز در حلقه های توسعه لینوکس به سرعت پیش می رود. نه، حتی زمانی که خود لینوس توروالدز اعلام کرد "آیا می توانم فقط یک بار دیگر عشقم را به آن ابراز کنم."
توروالدز WireGuard را دوست داشت، زیرا، "شاید کد کامل نباشد، اما من آن را مرور کرده ام، و در مقایسه با وحشت هایی که OpenVPN و IPSec هستند، این یک اثر هنری است."

یک کار هنری؟ به طور جدی؟ بله جدی
Donenfeld WireGuard را به عنوان جایگزینی برای پروتکل های تونل زنی ایمن قدیمی مانند IPSec و OpenVPN توسعه داد. دوننفلد، کسی که هرگز از گفتن آنچه فکر می‌کرد ابایی نداشت، این پروتکل‌های قدیمی‌تر را «بسیار دشوار» توصیف کرده است.
به عنوان مثال، فقط از نظر خطوط خالص کد، OpenVPN وزنی معادل 70000 خط کد دارد. یا، اگر با OpenSSL پیاده‌سازی شود، همانطور که معمولاً هست، در مجموع 600000 خط کد تولید می‌شود. وایر گارد؟ این فقط 4000 خط کد است. همانطور که بسیاری از کارشناسان امنیتی اشاره کرده‌اند، این امر ممیزی برای مشکلات امنیتی را بسیار ساده‌تر می‌کند.

یکی از دلایلی که WireGuard بسیار ساده‌تر است، و همچنین اینکه چرا زمان زیادی طول کشید تا آن را به لینوکس تبدیل کرد، این است که Donenfeld از زیرسیستم رمزنگاری داخلی لینوکس خوشش نمی‌آمد. او فکر می کرد که رابط برنامه نویسی کاربردی آن (API) بسیار پیچیده و دشوار است.
او پیشنهاد کرد که با یک زیرسیستم رمزنگاری جدید تکمیل شود: کتابخانه روی خودش. با توسعه دهندگانی که سال ها روی سیستم های رمزنگاری موجود لینوکس وقت گذاشته بودند، آنطور که ممکن است تصور کنید، این موضوع چندان خوب پیش نرفت. علاوه بر این جنبه، بسیاری فکر می کردند که داننفلد زمان خود را برای اختراع مجدد چرخ رمزنگاری تلف می کند.
داننفلد مایل بود با جامعه کار کند. همانطور که او در لیست پستی هسته لینوکس (LKML) نوشت: "هیچ اکراهی برای کار با انجمن وجود ندارد. من عمیقاً به این متعهد هستم، همانطور که توسط انبوه ارسال پچ ها، بحث ها، و حضور در کنفرانس ها به کنفرانس نشان می دهد. گفتگو با مردم رو در رو."
این باعث نشد که جنجال ها کم شود، اما دوننفلد متحد مهمی داشت که یک بار دیگر به کمک او آمد: توروالدز.
توروالدز نوشت: "من 1000% با جیسون در این زمینه هستم. استفاده از مدل رمزنگاری/کارایی سخت، ناکارآمد و کاملاً بی‌معنی است، زمانی که می‌دانید رمز یا الگوریتم هش شما چیست و CPU شما مستقیماً آن را به خوبی انجام می‌دهد."
در نهایت دوننفلد مصالحه کرد. WireGuard به API رمزنگاری موجود منتقل می‌شود. بنابراین احتمالاً بهتر است که کاملاً آن را بپذیریم و سپس به صورت تکاملی برای وارد کردن زینک به لینوکس تکه تکه کار کنیم.
دقیقا همین اتفاق افتاد. برخی از عناصر Zine به کد رمزنگاری قدیمی در هسته لینوکس 5.5 وارد شده اند. این پایه و اساس WireGuard را برای عرضه در لینوکس گذاشت.
بنابراین Wireguard در مارس 2020 با هسته لینوکس 5.6 ادغام شد. همچنین به عنوان یک بکپورت برای هسته پایدار لینوکس 5.4 در دسترس است. به طور خلاصه، اگر می خواهید سرور WireGuard خود را امروز بر روی یک توزیع مدرن لینوکس اجرا کنید، آماده کار هستید.
امروزه WireGuard یک VPN امن لایه 3 است. زمانی که در لینوکس شروع به کار کرد، کد WireGuard به سرعت تبدیل به کراس پلتفرم شد. امروزه روی ویندوز، macOS، BSD، iOS و Android اجرا می‌شود. در واقع، در حال حاضر یک پورت بومی، البته آزمایشی Windows WireGuard وجود دارد. شما اسمش را بگذارید، احتمالاً می توانید WireGuard را روی آن اجرا کنید.

در پشت صحنه، WireGuard از Curve25519 برای تبادل کلید، BLAKE2s برای هش کردن، و ChaCha20 و Poly1305 برای احراز هویت استفاده می‌کند. همچنین شامل سایر ابزارهای رمزنگاری پیشرفته مانند چارچوب پروتکل نویز، Curve25519، SipHash24 و HKD است. به عبارت دیگر، شکستن WireGuard آسان نیست.
با این حال، استقرار و استفاده از آن آسان است. از آنجایی که WireGuard یک رابط مجازی – wg0 را ارائه می دهد، می توانید آن را با ابزارهای استاندارد شبکه لینوکس مانند فایروال و ifconfig(8) پیکربندی کنید.
WireGuard همه این کارها را با کپسوله کردن ایمن بسته های IP روی UDP انجام می دهد. احراز هویت و طراحی رابط آن بیشتر به Secure Shell (SSH) مربوط می شود تا تنظیمات پیچیده تر VPN های دیگر. شما به سادگی رابط WireGuard را با کلید خصوصی خود و کلیدهای عمومی همتایان خود پیکربندی می کنید و آماده شبکه سازی خصوصی هستید.
توجه داشته باشید، WireGuard کامل نیست. مطمئناً، مرکز ارتباطات علمی مستقیم فرانسه (CCSD) برای «صحت، محرمانه بودن پیام، محرمانه بودن پیشروی، احراز هویت متقابل، منحصربه‌فرد بودن جلسه، و مقاومت در برابر جعل هویت کلیدی، اتصال نادرست هویت، و حملات تکراری»، مدرک رمزنگاری نشان داده است.
با این حال، امنیت شبکه بیش از قفل کردن داده های ارسال شده بیشتر است. برای مثال، WireGuard به تنهایی آدرس های IP را به صورت پویا اختصاص نمی دهد. بنابراین، به خودی خود، هر بار که از آن استفاده می کنید، همان آدرس IP ثابت و آسان برای ردیابی را دریافت می کنید. این به نوبه خود به این معنی است که WireGuard باید آدرس IP و مهرهای زمانی شما را ثبت و ذخیره کند. هم OpenVPN و هم IKEv2 با تخصیص پویا آدرس های IP از این نگرانی های امنیتی جلوگیری می کنند.
شما می توانید در اطراف این کار کنید. در واقع، سه VPN تجاری، CyberGhost، IVPN، و قهرمان اولیه WireGuard، Mullvad، در حال حاضر چنین راه حل هایی را ارائه می دهند. و البته، اگر آن را روی سرور خود اجرا می‌کنید و از آن برای شبکه‌سازی ایمن در کار خود از کاربران خانگی استفاده می‌کنید، خیلی به این مسائل اهمیت نمی‌دهید.
همانطور که برای من، WireGuard چیزی است که من امروز استفاده می کنم و، انتظار دارم، در نهایت، همان چیزی باشد که فردا استفاده می کنید. ®