سرور مجازی

۳ مطلب با کلمه‌ی کلیدی «Rocky Linux 8» ثبت شده است

  • ۰
  • ۰

نحوه ایجاد قوانین، جدول زمانی، و موارد از رویدادهای Suricata با استفاده از برنامه های SIEM Kibana

ورود به سایت

معرفی

آموزش های قبلی در این مجموعه شما را با نحوه نصب و پیکربندی Suricata راهنمایی کردند. آنها همچنین توضیح دادند که چگونه از Filebeat برای ارسال هشدار از سرور Suricata به سرور Elastic Stack استفاده کنید تا با عملکرد داخلی اطلاعات امنیتی و مدیریت رویداد (SIEM) از آن استفاده کنید.

در این آخرین آموزش در این سری، قوانین سفارشی Kibana را ایجاد می‌کنید و هشدارهایی را در داشبوردهای SIEM Kibana ایجاد می‌کنید. هنگامی که قوانینی را وضع کردید و فهمیدید که کجا و چگونه لاگ های Suricata را با استفاده از Kibana فیلتر کنید، نحوه ایجاد و مدیریت پرونده ها با استفاده از ابزارهای تجزیه و تحلیل جدول زمانی Kibana را بررسی خواهید کرد.

در پایان این آموزش شما یک سیستم SIEM خواهید داشت که می توانید از آن برای ردیابی و بررسی رویدادهای امنیتی در تمام سرورهای شبکه خود استفاده کنید.

پیش نیازها

اگر این مجموعه آموزشی را دنبال کرده اید، باید از قبل یک سرور با حداقل 4 گیگابایت رم و 2 CPU و یک کاربر غیر روت پیکربندی شده داشته باشید. برای اهداف این راهنما، بسته به سیستم عامل انتخابی خود، می‌توانید با پیروی از راهنماهای اولیه راه‌اندازی سرور ما برای Ubuntu 20.04، Debian 11 یا Rocky Linux 8، این را تنظیم کنید.

شما همچنین باید Suricata را روی سرور خود نصب و اجرا کنید. اگر نیاز به نصب Suricata بر روی سرور خود دارید، می توانید با استفاده از یکی از آموزش های زیر بسته به سیستم عامل خود این کار را انجام دهید:

اوبونتو 20.04: نحوه نصب Suricata در اوبونتو 20.04
Debian 11: نحوه نصب Suricata در Debian 11
راکی لینوکس 8: نحوه نصب Suricata در راکی ​​لینوکس 8
همچنین به سروری نیاز دارید که Elastic Stack را اجرا کرده و پیکربندی شده باشد تا Filebeat بتواند گزارش‌ها را از سرور Suricata شما به Elasticsearch ارسال کند. اگر نیاز به ایجاد یک سرور Elastic Stack دارید، از یکی از آموزش های لیست زیر که با سیستم عامل شما مطابقت دارد استفاده کنید:

اوبونتو 20.04: نحوه ایجاد یک سیستم اطلاعات امنیتی و مدیریت رویداد (SIEM) با Suricata و Elastic Stack در اوبونتو 20.04
دبیان 11: نحوه ایجاد یک سیستم اطلاعات امنیتی و مدیریت رویداد (SIEM) با Suricata و Elastic Stack در Debian 11
Rocky Linux 8: نحوه ایجاد یک سیستم اطلاعات امنیتی و مدیریت رویداد (SIEM) با Suricata و Elastic Stack در Rocky Linux 8
اطمینان حاصل کنید که می توانید در سرور Elasticsearch خود به Kibana وارد شوید و رویدادهایی در داشبوردهای مختلف Suricata Alerts و Events وجود دارد.

هنگامی که همه پیش نیازها را آماده کردید، یک تونل SSH را به سرور Kibana خود باز کنید و با مرورگر خود با استفاده از اعتبارنامه هایی که در آموزش قبلی ایجاد کرده اید، به Kibana وارد شوید.

مرحله 1 – فعال کردن کلیدهای API در Elasticsearch

قبل از ایجاد قوانین، هشدارها و جدول زمانی در Kibana، باید تنظیمات ماژول امنیتی xpack را فعال کنید.

فایل /etc/elasticsearch/elasticsearch.yml خود را با nano یا ویرایشگر دلخواه خود باز کنید.

sudo nano /etc/elasticsearch/elasticsearch.yml

خط هایلایت شده زیر را به انتهای فایل اضافه کنید:

/etc/elasticsearch/elasticsearch.yml

. . .
discovery.type: single-node
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true

پس از اتمام ویرایش فایل را ذخیره کرده و ببندید. اگر از نانو استفاده می‌کنید، می‌توانید این کار را با CTRL+X انجام دهید، سپس Y و ENTER را تأیید کنید.

اکنون Elasticsearch را مجددا راه اندازی کنید تا تنظیمات جدید اعمال شود.

sudo systemctl restart elasticsearch.service

اکنون آماده پیکربندی قوانین، بررسی هشدارها و ایجاد جدول زمانی و موارد در Kibana هستید.

مرحله 2 – اضافه کردن قوانین به Kibana

برای استفاده از عملکرد SIEM Kibana با داده‌های رویداد Suricata، باید قوانینی ایجاد کنید که هشدارهایی درباره رویدادهای دریافتی ایجاد کند. برای ایجاد یا وارد کردن قوانین، از داشبورد قوانین در صفحه برنامه امنیتی Kibana دیدن کنید.

برای اهداف این آموزش، ما از امضاهای زیر برای شناسایی ترافیک هدایت شده به سرور در پورت های ناهمخوان (به ترتیب ترافیک SSH، HTTP و TLS) استفاده خواهیم کرد:

Example Suricata Signature

alert ssh any any -> 203.0.113.5 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000000;)
alert ssh any any -> 2001:DB8::1/32 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000001;)

alert http any any -> 203.0.113.5 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000002;)
alert http any any -> 2001:DB8::1/32 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000003;)

alert tls any any -> 203.0.113.5 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000004;)
alert tls any any -> 2001:DB8::1/32 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000005;)

اگر از امضاهای خود یا از یک مجموعه قوانین استفاده می‌کنید، مطمئن شوید که می‌توانید هشدار ایجاد کنید و می‌توانید به رویدادهای مربوطه در داشبوردهای پیش‌فرض Suricata در Kibana دسترسی داشته باشید.

اکنون به صفحه قوانین در برنامه امنیتی Kibana مراجعه کنید http://localhost:5601/app/security/rules/. روی دکمه ایجاد قانون جدید در سمت راست بالای صفحه کلیک کنید.

مطمئن شوید که کارت نوع قانون پرس و جو سفارشی انتخاب شده است. به قسمت ورودی درخواست سفارشی بروید و موارد زیر را در آن قرار دهید:

Kibana Query Language Input

rule.id: "1000000" or rule.id :"1000001"

مطمئن شوید که مقادیر rule.id شما با مقدار جانبی Suricata برای حمله یا حملاتی که می‌خواهید درباره آن هشدار دهید مطابقت داشته باشد.

پیش‌نمایش سریع Query را به Last Month تغییر دهید و سپس روی Preview Results کلیک کنید. با فرض اینکه رویدادهای منطبقی را در گزارش های Suricata خود داشته باشید، صفحه با نموداری که هشدارهای ماه گذشته را نشان می دهد در جای خود به روز می شود. صفحه شما باید شبیه تصویر زیر باشد:

روی Continue کلیک کنید تا به فیلد Rule Name که برای هر قانون اضافه می‌کنید، نامی اضافه کنید. یک نام به قسمت Rule Name اضافه کنید. در این مثال از توضیحات پیام از قانون Suricata SSH TRAFFIC در پورت غیر SSH استفاده می کنیم. یک توضیح برای قانون نیز اضافه کنید. ما در این مثال از بررسی تلاش برای اتصال SSH در پورت های غیر استاندارد استفاده خواهیم کرد.

همچنین می توانید بخش تنظیمات پیشرفته را گسترش دهید و جزئیات مربوط به قانون را اضافه کنید. به عنوان مثال، می‌توانید توضیحی در مورد نحوه رسیدگی به یک هشدار ایجاد شده توسط قانون اضافه کنید یا به مقاله‌های محقق امنیتی در مورد یک نوع حمله خاص پیوند دهید.

پس از افزودن نام قانون، توضیحات و فیلدهای اضافی اختیاری، روی Continue کلیک کنید تا به مرحله 3 ایجاد قانون بروید.

تنظیمات بعدی قانون زمانبندی را با مقادیر پیش فرض خود رها کنید و روی Continue کلیک کنید.

در نهایت در مرحله Rule actions روی Create & activate rule کلیک کنید.

شما به صفحه جدیدی هدایت می شوید که جزئیات مربوط به قانون را نشان می دهد:

اگر قوانین دیگری از Suricata وجود دارد که می‌خواهید درباره آنها هشدار داده شود، مراحل بالا را تکرار کنید و sid امضا را در قسمت query custom.id Kibana جایگزین کنید.

هنگامی که یک قانون یا قوانین را در اختیار دارید، آماده هستید تا به مرحله بعدی بروید، جایی که هشدارها را بررسی می‌کنید و یک مورد یا مواردی برای مدیریت آنها ایجاد می‌کنید.

مرحله 3 – ایجاد یک جدول زمانی برای ردیابی هشدارهای مربوط به ترافیک SSH

اکنون که قانون یا قوانینی برای ایجاد هشدارها در برنامه SIEM کیبانا پیکربندی شده‌اید، به راهی برای گروه‌بندی و مدیریت بیشتر هشدارها نیاز دارید. برای شروع، از داشبورد هشدارهای Kibana دیدن کنید: http://127.0.0.1:5601/app/security/alerts.

مطمئن شوید که مقداری ترافیک نامعتبر ایجاد کرده اید که با امضای Suricata یا امضاهایی که استفاده می کنید مطابقت دارد. به عنوان مثال، می توانید با اجرای دستوری مانند زیر از دستگاه محلی خود، قانون sid:1000000 Suricata را فعال کنید:

ssh -p 80 your_server_ip

این دستور سعی می کند به جای پورت پیش فرض 22، با استفاده از SSH در پورت 80 به سرور شما متصل شود و باید یک هشدار را راه اندازی کند. ممکن است چند دقیقه طول بکشد تا هشدار در Kibana نشان داده شود، زیرا باید توسط Elasticsearch و قانونی که در Kibana ایجاد کرده‌اید پردازش شود.

در مرحله بعد، فیلد comnunity_id را به جدول هشدارهایی که در پایین صفحه نمایش داده می شود، اضافه می کنید. از اولین آموزش به یاد بیاورید که این فیلد توسط Suricata تولید می شود و نشان دهنده آدرس های IP منحصر به فرد و پورت های موجود در یک جریان شبکه است. روی دکمه فیلدها کلیک کنید و در کادر محاوره‌ای که ظاهر می‌شود، network.community_id را وارد کنید و سپس کادر کنار نام فیلد را علامت بزنید:

مدال را ببندید و فیلد به جدول هشدارها اضافه می شود. اکنون ماوس را روی هر یک از هشدارهایی که دارای همان مقدار community_id هستند نگه دارید و روی نماد بررسی جدول زمانی افزودن کلیک کنید. این اطمینان حاصل می کند که همه هشدارهایی که Community_id را به اشتراک می گذارند که Suricata به رویداد اضافه کرده است برای بررسی بیشتر به یک جدول زمانی اضافه می شود:

سپس روی پیوند Untitled Timeline در پایین سمت چپ مرورگر خود کلیک کنید. این پیوند شما را به صفحه ای می برد که فقط هشدارهایی را با قسمت Suricata community_id نشان می دهد که می خواهید بررسی کنید.

صفحه تایم لاین جزئیات بیشتری را در مورد بسته های فردی که با یک هشدار یا جریان شبکه مرتبط هستند به شما نشان می دهد. می توانید از جدول زمانی استفاده کنید تا ایده بهتری درباره زمان شروع یک جریان شبکه مشکوک، محل شروع آن و مدت زمان ادامه آن بدست آورید.

روی دکمه All data sources در سمت راست صفحه کلیک کنید و دکمه Detection Alerts را انتخاب کنید، سپس روی Save کلیک کنید. این گزینه جدول زمانی را محدود می کند تا فقط هشدارهایی را که Kibana تولید می کند نمایش دهد. بدون این گزینه، هشدارهای Suricata نیز در جدول زمانی گنجانده خواهد شد.

برای ذخیره خط زمانی جدید خود، روی نماد مداد در سمت چپ بالای صفحه تایم لاین کلیک کنید. اسکرین شات زیر محل پیدا کردن نماد مداد و دکمه همه منابع داده را مشخص می کند:

اگر اطلاعات بیشتری وجود دارد که می‌خواهید به خط زمانی اضافه کنید، می‌توانید متنی را به قسمت توضیحات اضافه کنید. پس از اتمام ویرایش نام و توضیحات خط زمانی، روی دکمه ذخیره در سمت راست پایین کادر گفتگو کلیک کنید.

مراحل بالا را برای ایجاد جدول زمانی برای سایر هشدارها که می خواهید بعداً عمیق تر بررسی کنید، تکرار کنید.

در مرحله بعدی، از نماهای جدول زمانی رویدادها برای پیوست کردن هشدارها به اپلیکیشن Kibana’s Cases در مجموعه ابزارهای SIEM استفاده خواهید کرد.

مرحله 4 – ایجاد و مدیریت موارد SIEM

در مرحله قبل، یک جدول زمانی ایجاد کردید تا هشدارها و بسته‌ها را با هم بر اساس فیلد Community_id Suricata گروه‌بندی کنید. در این بخش از آموزش شما یک Case برای ردیابی و مدیریت هشدارها در جدول زمانی خود ایجاد می کنید.

برای ایجاد یک مورد جدید از جدول زمانی خود، مطمئن شوید که در یک صفحه جدول زمانی در مرورگر خود هستید. روی دکمه Attach to case در سمت راست بالای صفحه تایم لاین و سپس دکمه Attach to new case را از لیست ظاهر شده کلیک کنید.

شما به صفحه ای هدایت می شوید که در آن می توانید اطلاعات مربوط به حادثه ای را که در حال بررسی آن هستید وارد کنید. در اسکرین شات مثال زیر، مورد مثال هشدار ترافیک SSH در یک پورت غیر SSH است:

فیلدها را با یک نام توصیفی و تگ یا تگ های اختیاری پر کنید. در این مثال، نام مورد SSH TRAFFIC در پورت غیر SSH از 203.0.113.5 است، زیرا این نوع ترافیک و میزبان خاصی است که ما در حال بررسی آن هستیم. با بسیاری از رویدادها برای بررسی در سیستم SIEM شما، یک طرح نامگذاری مانند این به شما کمک می کند موارد، جدول زمانی و هشدارها را پیگیری کنید زیرا نام با هشدار Kibana و فیلد پیام امضای Suricata مطابقت دارد.

به پایین صفحه بروید و روی دکمه Create case کلیک کنید. مرورگر شما در صفحه ای قرار می گیرد که کیس ذخیره شده را نشان می دهد. شما می توانید نظرات را در قالب Markdown با اطلاعات اضافی اضافه کنید و همچنین مورد را از این صفحه ویرایش کنید.

سپس، روی پیوند در توضیحات کلیک کنید تا به جدول زمانی پرونده که در مرحله قبلی این آموزش اضافه کرده‌اید بروید.

برای هر هشداری که می‌خواهید در کیس قرار دهید، روی نماد اقدامات بیشتر در هشدار کلیک کنید. روی افزودن به پرونده موجود کلیک کنید.

روی نام مورد در حالتی که ظاهر می شود کلیک کنید تا هشدار به پرونده اضافه شود. مطمئن شوید که موردی را انتخاب کنید که با جدول زمانی و هشدارهایی که در حال بررسی آن هستید مطابقت دارد. اضافه کردن هر هشدار در لیست به مورد موجود را تکرار کنید.

اکنون با استفاده از منوی پیمایش در سمت چپ صفحه، دوباره از برنامه Cases در Kibana] (http://localhost:5601/app/security/cases) دیدن کنید. روی پرونده خود کلیک کنید و توجه داشته باشید که چگونه هشدارهایی که اضافه کرده اید در جزئیات پرونده فهرست شده اند:

از اینجا می‌توانید به پایین کیس پیمایش کنید و اطلاعات بیشتری را که می‌خواهید اضافه کنید. به عنوان مثال، هر اقدامی که برای بررسی یک هشدار یا هشدارها انجام داده اید، تغییرات پیکربندی به Suricata مانند یک قانون جدید یا ویرایش شده، افزایش به یکی دیگر از اعضای تیم یا هر چیز دیگری که مربوط به مورد است.

هنگامی که با ایجاد مواردی برای انواع مختلف هشدارهایی که می‌خواهید پیگیری کنید راحت هستید، اکنون می‌توانید از ابزارهای SIEM Kibana برای سازماندهی و هماهنگ کردن بررسی هر هشدار در یک مکان مرکزی استفاده کنید.

نتیجه

در این آموزش شما سیستم Suricata و Elastic Stack SIEM موجود خود را با افزودن قوانینی به Kibana که هشدارهایی را در مورد ترافیک خاص مورد علاقه ایجاد می کند، ساخته اید. شما همچنین یک جدول زمانی یا جدول زمانی ایجاد کردید تا مجموعه ای از هشدارها را بر اساس Community_id گروه بندی کنید. در نهایت، یک مورد ایجاد کردید و جدول زمانی خود را به همراه هشدارهای فردی مورد علاقه به آن مرتبط کردید.

با وجود این سیستم SIEM، اکنون می توانید رویدادهای امنیتی را در سراسر سیستم های خود تقریباً در هر مقیاسی ردیابی کنید. همانطور که با Suricata بیشتر آشنا می شوید و هشدارهایی را که در Kibana SIEM شما ایجاد می کند ردیابی می کنید، می توانید هشدارهای Suricata و اقدامات پیش فرضی را که مطابق با شبکه خاص شما انجام می دهد سفارشی کنید.

برای داشتن یک رابط کاربری سبک تر SIEM، ممکن است به EveBox نیز علاقه مند باشید، که تمام داده های رویداد Suricata و عملکرد SIEM را در یک صفحه ارائه می دهد.

 

https://vpsgol.net/product/vps-germany/

 

https://vpsgol.net/product/vps-usa/

 

https://vpsgol.net/product/vps-france/

 

https://vpsgol.net/product/vps-canada/

 

https://vpsgol.net/product/vps-poland/

 

https://vpsgol.net/product/vps-netherlands/

 

https://vpsgol.net/product/vps-england/

برچسب‌ها:Rocky Linux 8اتصال به سرور مجازیاوبونتو 20.04ایجاد سرور مجازیخرید سرورخرید سرور مجازی آمریکاسیستم SIEMمدیریت موارد SIEMنصب و پیکربندی Suricata

  • behnam gol mohamadi
  • ۰
  • ۰

نحوه راه اندازی WireGuard در Rocky Linux 8

ورود به سایت

 

معرفی

WireGuard یک شبکه خصوصی مجازی سبک (VPN) است که از اتصالات IPv4 و IPv6 پشتیبانی می کند. VPN به شما امکان می دهد شبکه های غیرقابل اعتماد را مانند یک شبکه خصوصی پشت سر بگذارید. این به شما این آزادی را می دهد که از طریق تلفن هوشمند یا لپ تاپ خود با خیال راحت و ایمن به اینترنت متصل شوید ، وقتی به یک شبکه غیرقابل اعتماد متصل هستید ، مانند WiFi در هتل یا کافی شاپ.

رمزگذاری WireGuard برای ایجاد یک تونل رمزگذاری شده بین خود به کلیدهای عمومی و خصوصی برای همکاران متکی است. هر نسخه از WireGuard از مجموعه رمزنگاری خاصی برای اطمینان از سادگی ، امنیت و سازگاری با همسالان استفاده می کند.

در مقایسه ، سایر نرم افزارهای VPN مانند OpenVPN و IPSec از امنیت لایه انتقال (TLS) و گواهینامه ها برای احراز هویت و ایجاد تونل های رمزگذاری شده بین سیستم ها استفاده می کنند. نسخه های مختلف TLS شامل پشتیبانی از صدها مجموعه و الگوریتم رمزنگاری مختلف است ، و در حالی که این امر انعطاف پذیری بالایی را برای پشتیبانی از مشتریان مختلف امکان پذیر می کند ، همچنین پیکربندی VPN ای را که از TLS وقت گیرتر ، پیچیده تر و مستعد خطا است ، ایجاد می کند.

در این آموزش ، شما WireGuard را روی سرور Rocky Linux 8 راه اندازی می کنید و سپس دستگاه دیگری را پیکربندی می کنید تا با استفاده از هر دو اتصال IPv4 و IPv6 (که معمولاً به عنوان اتصال دو پشته نامیده می شود) به آن به صورت همتا متصل شود. همچنین می توانید نحوه هدایت ترافیک اینترنتی همتا را از طریق سرور WireGuard در پیکربندی دروازه ، علاوه بر استفاده از VPN برای یک تونل peer-to-peer رمزگذاری شده ، یاد بگیرید.

برای اهداف این آموزش ، ما سیستم Rocky Linux 8 دیگری را به عنوان همکار (که به آن مشتری نیز گفته می شود) در سرور WireGuard پیکربندی می کنیم. آموزش های بعدی این مجموعه نحوه نصب و اجرای WireGuard را در سیستم ها و دستگاه های Windows ، macOS ، Android و iOS توضیح می دهد.

پیش نیازها

برای پیگیری این آموزش ، شما نیاز دارید:

  • یک سرور Rocky Linux 8 با یک کاربر sudo غیر روت و فایروال فعال است. برای تنظیم این ، می توانید راه اندازی سرور اولیه ما را با آموزش Rocky Linux 8 دنبال کنید. ما در این راهنما از این به عنوان سرور WireGuard یاد می کنیم.
  • شما به یک ماشین مشتری نیاز دارید که از آن برای اتصال به سرور WireGuard خود استفاده کنید. در این آموزش ما به این دستگاه به عنوان WireGuard Peer اشاره می کنیم. برای اهداف این آموزش ، توصیه می شود از دستگاه محلی خود به عنوان WireGuard Peer استفاده کنید ، اما در صورت تمایل می توانید از سرورهای راه دور یا تلفن های همراه به عنوان مشتری استفاده کنید. اگر از سیستم از راه دور استفاده می کنید ، حتماً در قسمت های بعدی این آموزش ، تمام قسمت های اختیاری را دنبال کنید ، در غیر این صورت ممکن است خود را از سیستم خارج کنید.
  • برای استفاده از WireGuard با IPv6 ، همچنین باید اطمینان حاصل کنید که سرور شما پیکربندی شده است تا از این نوع ترافیک پشتیبانی کند. اگر می خواهید پشتیبانی IPv6 را با WireGuard فعال کنید و از قطره vpsgol استفاده می کنید ، لطفاً به این صفحه مستندات نحوه فعال کردن IPv6 در Droplets مراجعه کنید. هنگام ایجاد Droplet یا پس از آن با استفاده از دستورالعمل های آن صفحه ، می توانید پشتیبانی IPv6 را اضافه کنید.

مرحله 1 – نصب WireGuard و ایجاد یک جفت کلید

اولین قدم در این آموزش نصب WireGuard روی سرور شماست. برای شروع ، باید دو مخزن نرم افزار اضافی به فهرست بسته سرور خود ، epel و elrepo اضافه کنید. برای نصب آنها دستور زیر را اجرا کنید. توجه داشته باشید اگر در این جلسه برای اولین بار است که از sudo استفاده می کنید ، از شما خواسته می شود که رمز عبور کاربر sudo خود را ارائه دهید:

sudo dnf install elrepo-release epel-release

اکنون که سرور شما می تواند به مخازن موجود در بسته های WireGuard دسترسی پیدا کند ، WireGuard را با استفاده از دستورات زیر نصب کنید:

sudo dnf install kmod-wireguard wireguard-tools

اکنون که WireGuard را نصب کرده اید ، گام بعدی ایجاد تعمیر کلید خصوصی و عمومی برای سرور است. برای ایجاد کلیدها از دستورات wg genkey و wg pubkey استفاده می کنید و سپس کلید خصوصی را به فایل پیکربندی WireGuard اضافه می کنید.

از آنجا که شما در حال ایجاد یک کلید خصوصی هستید که برای رمزگذاری ترافیک در سرور WireGuard شما استفاده می شود ، مجوزهای پیش فرض اعمال شده بر روی پرونده های جدید باید قبل از ایجاد این فایل به طور موقت به یک مقدار محدود کننده تغییر کند. باید با استفاده از دستور umask مجوزهای پیش فرض را برای فایل های تازه ایجاد شده تنظیم کنید.

از دستور umask زیر برای اطمینان از ایجاد دایرکتوری ها و فایل های جدید  با مجوزهای محدود خواندن و نوشتن استفاده کنید:

umask 077

umask 077 اطمینان می دهد که فقط صاحب یک دایرکتوری می تواند در آن وارد شود و فقط صاحب یک فایل می تواند آن را بخواند یا بنویسد. مجدداً توجه داشته باشید که وقتی از پوسته خود خارج می شوید و دوباره وارد سیستم می شوید ، umask شما به مقدار پیش فرض 022 بازنشانی می شود ، که به شما اجازه می دهد فایل های جدیدی را که در سیستم ایجاد شده است بخوانید.

حالا می توانید با استفاده از دستور زیر کلید خصوصی را برای WireGuard ایجاد کنید:

wg genkey | sudo tee /etc/wireguard/private.key

شما باید یک خط خروجی کدگذاری base64 دریافت کنید که کلید خصوصی است. یک کپی از خروجی نیز در فایل /etc/wireguard/private.key برای مرجع بعدی توسط قسمت tee فرمان ذخیره می شود. کلید خصوصی خروجی را با دقت یادداشت کنید زیرا بعداً در این بخش باید آن را به فایل پیکربندی WireGuard اضافه کنید.

مرحله بعدی ایجاد کلید عمومی مربوطه است که از کلید خصوصی گرفته شده است. برای ایجاد فایل کلید عمومی از دستور زیر استفاده کنید:

sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

این دستور شامل سه فرمان جداگانه است که با استفاده از | اپراتور :

  • sudo cat /etc/wireguard/private.key: این دستور فایل کلید خصوصی را می خواند و آن را به جریان خروجی استاندارد منتقل می کند.
  • wg pubkey: فرمان دوم خروجی فرمان اول را به عنوان ورودی استاندارد خود می گیرد و برای تولید یک کلید عمومی پردازش می کند.
  • sudo tee /etc/wireguard/public.key: آخرین فرمان خروجی فرمان تولید کلید عمومی را می گیرد و آن را به پرونده ای با نام /etc/wireguard/public.key هدایت می کند.

هنگامی که فرمان را اجرا می کنید ، مجدداً یک خط خروجی کد شده base64 دریافت خواهید کرد ، که کلید عمومی سرور WireGuard شما است. آن را در جایی برای مرجع کپی کنید ، زیرا باید کلید عمومی را در هر همتایی که به سرور متصل می شود ، توزیع کنید.

مرحله 2 – انتخاب آدرس های IPv4 و IPv6

در قسمت قبل WireGuard را نصب کردید و یک جفت کلید ایجاد کردید که برای رمزگذاری ترافیک به و از سرور استفاده می شود. در این بخش ، یک فایل پیکربندی برای سرور ایجاد می کنید و WireGuard را تنظیم می کنید تا هنگام راه اندازی مجدد سرور به طور خودکار راه اندازی شود. شما همچنین آدرس های IPv4 و IPv6 خصوصی را برای استفاده با سرور WireGuard و همسالان خود تعریف خواهید کرد.

اگر قصد دارید از هر دو آدرس IPv4 و IPv6 استفاده کنید ، هر دو این بخش را دنبال کنید. در غیر این صورت ، دستورالعمل های مربوط به بخش مناسب VPN را برای نیازهای شبکه خود دنبال کنید.

مرحله 2 (الف) – انتخاب محدوده IPv4

اگر از سرور WireGuard خود با همتایان IPv4 استفاده می کنید ، سرور نیاز به طیف وسیعی از آدرس های IPv4 خصوصی دارد که برای مشتریان و رابط تونل آن استفاده می شود. شما می توانید طیف وسیعی از آدرس های IP را از بلوک های آدرس رزرو شده زیر انتخاب کنید (اگر می خواهید درباره نحوه تخصیص این بلوک ها از مشخصات RFC 1918 بیشتر بدانید):

  • 10.0.0.0 to 10.255.255.255 (10/8 prefix)
  • 172.16.0.0 to 172.31.255.255 (172.16/12 prefix)
  • 192.168.0.0 to 192.168.255.255 (192.168/16 prefix)

برای اهداف این آموزش ، از 10.8.0.0/24 به عنوان یک بلوک آدرس IP از اولین محدوده IP های رزرو شده استفاده خواهیم کرد. این محدوده تا 255 اتصال مختلف مختلف را امکان پذیر می کند ، و به طور کلی نباید آدرس های متداخل یا متناقض با سایر محدوده های IP خصوصی داشته باشد. اگر این محدوده مثال با شبکه های شما سازگار نیست ، می توانید طیف وسیعی از آدرس هایی را انتخاب کنید که با پیکربندی شبکه شما کار می کند.

سرور WireGuard از یک آدرس IP واحد برای آدرس IPv4 تونل خصوصی خود استفاده می کند. ما از 10.8.0.1/24 در اینجا استفاده می کنیم ، اما از هر آدرسی در محدوده 10.8.0.1 تا 10.8.0.255 می توان استفاده کرد. اگر از چیزی متفاوت از 10.8.0.1/24 استفاده می کنید ، آدرس IP مورد نظر خود را یادداشت کنید. شما این آدرس IPv4 را به فایل پیکربندی که در مرحله 3 تعریف کرده اید – ایجاد پیکربندی سرور WireGuard اضافه می کنید

مرحله 2 (ب) – انتخاب محدوده IPv6

اگر از WireGuard با IPv6 استفاده می کنید ، باید پیشوند آدرس منحصر به فرد IPv6 محلی منحصر به فرد را بر اساس الگوریتم RFC 4193 ایجاد کنید. آدرس هایی که با WireGuard استفاده می کنید با یک رابط مجازی تونل مرتبط خواهند بود. برای ایجاد یک پیشوند تصادفی و منحصر به فرد IPv6 در بلوک رزرو شده fd00 ::/8 آدرسهای خصوصی IPv6 ، باید چند مرحله را تکمیل کنید.

طبق RFC ، راه توصیه شده برای به دست آوردن یک پیشوند IPv6 منحصر به فرد این است که زمان روز را با یک مقدار شناسایی منحصر به فرد از یک سیستم مانند شماره سریال یا شناسه دستگاه ترکیب کنید. سپس این مقادیر هش شده و کوتاه می شوند و در نتیجه مجموعه ای از بیت ها را می توان به عنوان آدرس منحصر به فرد در بلوک IP های خصوصی fd00 ::/8 رزرو شده استفاده کرد.

برای شروع تولید محدوده IPv6 برای سرور WireGuard ، یک علامت زمان 64 بیتی را با استفاده از ابزار date با دستور زیر جمع آوری کنید:

date +%s%N

از سال 1970-01-01 00:00:00 UTC ترکیبی با هم ، عددی مانند زیر دریافت خواهید کرد ، که تعداد ثانیه ها (٪ s در دستور date) و نانو ثانیه (٪ N) است:

 

Output

1628101352127592197

مقدار را برای استفاده بعداً در این بخش در جایی ثبت کنید. در مرحله بعد ، مقدار id-machine برای سرور خود را از فایل/var/lib/dbus/machine-id کپی کنید. این شناسه مختص سیستم شماست و تا زمانی که سرور وجود دارد نباید تغییر کند.

cat /var/lib/dbus/machine-id

خروجی مانند موارد زیر را دریافت خواهید کرد:

 

/var/lib/dbus/machine-id

20086c25853947c7aeee2ca1ea849d7d

اکنون باید زمان بندی را با machine-id ترکیب کرده و مقدار حاصل را با استفاده از الگوریتم SHA-1 هش کنید. دستور از قالب زیر استفاده می کند:

printf <timestamp><machine-id> | sha1sum

دستور جایگزین را در timestamp و مقادیر هویت ماشین خود اجرا کنید:

printf 162810135212759219720086c25853947c7aeee2ca1ea849d7d | sha1sum

مقدار هش مانند موارد زیر را دریافت خواهید کرد:

 

Output

4f267c51857d6dc93a0bca107bca2f0d86fac3bc  -

توجه داشته باشید که خروجی دستور sha1sum بصورت هگزا دسیمال است ، بنابراین خروجی از دو کاراکتر برای نشان دادن یک بایت داده استفاده می کند. به عنوان مثال 4f و 26 در خروجی مثال دو بایت اول داده های هش شده هستند.

الگوریتم موجود در RFC فقط به حداقل 40 بیت یا 5 بایت خروجی هش شده نیاز دارد. از دستور cut برای چاپ 5 بایت رمزگذاری شده هگزا دسیمال از هش استفاده کنید:

printf 4f267c51857d6dc93a0bca107bca2f0d86fac3bc | cut -c 31-

آرگومان -c به دستور cut می گوید که فقط مجموعه مشخصی از کاراکترها را انتخاب کنید. آرگومان 31 به cut می گوید که همه کاراکترها را از موقعیت 31 تا انتهای خط ورودی چاپ کنید.

شما باید خروجی مانند موارد زیر را دریافت کنید:

 

Output

0d86fac3bc

در این خروجی مثال ، مجموعه بایت ها عبارتند از: 0d 86 fa c3 bc.

اکنون می توانید پیشوند شبکه IPv6 منحصر به فرد خود را با افزودن 5 بایت ایجاد شده با پیشوند fd بسازید و هر 2 بایت را با یک: colon برای خوانایی جدا کنید. از آنجا که هر زیر شبکه در پیشوند منحصر به فرد شما می تواند در مجموع 18،446،744،073،709،551،616 آدرس IPv6 احتمالی را در خود جای دهد ، می توانید برای سادگی زیر شبکه را به اندازه استاندارد 64 /محدود کنید.

با استفاده از بایت هایی که قبلاً با اندازه زیر شبکه /64 ایجاد شده بود ، پیشوند به شرح زیر خواهد بود:

 

Unique Local IPv6 Address Prefix

fd0d:86fa:c3bc::/64

این محدوده fd0d: 86fa: c3bc ::/64 چیزی است که شما برای اختصاص آدرس IP جداگانه به واسط های تونل WireGuard خود در سرور و همکاران استفاده خواهید کرد. برای اختصاص IP برای سرور ، 1 را پس از نویسه های نهایی :: اضافه کنید. آدرس حاصله fd0d: 86fa: c3bc :: 1/64 خواهد بود. همسالان می توانند از هر IP در محدوده استفاده کنند ، اما به طور معمول هر بار که یک همتا اضافه می کنید ، مقدار را به یک افزایش می دهید ، به عنوان مثال fd0d: 86fa: c3bc :: 2/64. IP را یادداشت کرده و پیکربندی WireGuard Server را در قسمت بعدی این آموزش انجام دهید.

مرحله 3 – ایجاد پیکربندی سرور WireGuard

قبل از ایجاد پیکربندی سرور WireGuard ، به اطلاعات زیر نیاز دارید:

  1. مطمئن شوید که کلید خصوصی موجود در مرحله 1 را دارید – نصب WireGuard و ایجاد یک جفت کلید.
  2. اگر از WireGuard با IPv4 استفاده می کنید ، به آدرس IP ای که در مرحله 2 (a) برای سرور انتخاب کرده اید نیاز دارید – انتخاب محدوده IPv4 ، که در این مثال 10.8.0.1/24 است.
  3. اگر از WireGuard با IPv6 استفاده می کنید ، به آدرس IP سروری که در مرحله 2 (ب) ایجاد کرده اید – انتخاب محدوده IPv6) نیاز دارید. در این مثال IP fd0d: 86fa: c3bc :: 1/64 است.

هنگامی که کلید خصوصی و آدرس IP مورد نیاز را دارید ، یک فایل پیکربندی جدید با استفاده از vi یا ویرایشگر دلخواه خود با اجرای دستور زیر ایجاد کنید:

sudo vi /etc/wireguard/wg0.conf

خطوط زیر را به فایل اضافه کنید و کلید خصوصی خود را به جای مقدار مشخص شده base64_encoded_private_key_goes_here و آدرس (های) IP در خط آدرس جایگزین کنید. اگر می خواهید WireGuard در پورت دیگری در دسترس باشد ، می توانید خط ListenPort را تغییر دهید.

i را فشار دهید تا vi وارد حالت درج شود و سپس خطوط زیر را اضافه کنید:

 

/etc/wireguard/wg0.conf

[Interface]
PrivateKey = base64_encoded_private_key_goes_here
Address = 10.8.0.1/24, fd0d:86fa:c3bc::1/64
ListenPort = 51820
SaveConfig = true

خط SaveConfig تضمین می کند که وقتی رابط WireGuard خاموش می شود ، هرگونه تغییر در فایل پیکربندی ذخیره می شود.

پس از اتمام اعمال تغییرات ، ESC و سپس: wq را فشار دهید تا تغییرات را در فایل بنویسید و خارج شوید. شما در حال حاضر پیکربندی اولیه سرور را دارید که می توانید بسته به نحوه استفاده از سرور WireGuard VPN خود ، بر اساس آن اقدام کنید.

مرحله 4 – تنظیم پیکربندی شبکه WireGuard Server

اگر از WireGuard برای اتصال همتای خود به سرور WireGuard استفاده می کنید تا فقط به خدمات روی سرور دسترسی داشته باشید ، نیازی به تکمیل این بخش ندارید. اگر می خواهید ترافیک اینترنت WireGuard Peer خود را از طریق سرور WireGuard هدایت کنید ، باید با دنبال کردن این بخش از آموزش ، ارسال IP را پیکربندی کنید.

برای پیکربندی حمل و نقل ، فایل /etc/sysctl.conf را با استفاده از vi یا ویرایشگر دلخواه خود باز کنید:

sudo vi /etc/sysctl.conf

اگر از IPv4 با WireGuard استفاده می کنید ، خط زیر را در پایین فایل اضافه کنید:

/etc/sysctl.conf

net.ipv4.ip_forward=1

اگر از IPv6 با WireGuard استفاده می کنید ، این خط را در پایین فایل اضافه کنید:

/etc/sysctl.conf

net.ipv6.conf.all.forwarding=1

اگر از IPv4 و IPv6 استفاده می کنید ، مطمئن شوید که هر دو خط را وارد کرده اید. پس از اتمام کار فایل را ذخیره و ببندید.

برای خواندن فایل و بارگذاری مقادیر جدید برای جلسه ترمینال فعلی خود ، دستور زیر را اجرا کنید:

sudo sysctl -p

 

Output

net.ipv6.conf.all.forwarding = 1
net.ipv4.ip_forward = 1

اکنون سرور WireGuard شما می تواند ترافیک ورودی را از دستگاه مجازی اترنت VPN به سرورهای دیگر و از آنجا به اینترنت عمومی هدایت کند. استفاده از این پیکربندی به شما امکان می دهد تمام ترافیک وب را از WireGuard Peer خود از طریق آدرس IP سرور خود مسیریابی کنید و آدرس IP عمومی مشتری شما به طور م hiddenثر پنهان می شود.

با این حال ، قبل از اینکه ترافیک از طریق سرور شما به درستی هدایت شود ، باید برخی از قوانین فایروال را پیکربندی کنید.

مرحله 5 – پیکربندی فایروال سرور WireGuard

در این بخش پیکربندی WireGuard Server را ویرایش می کنید تا قوانین فایروال cmd فایروال را اضافه کنید که باعث می شود ترافیک به سمت سرور و کلاینت ها به درستی مسیریابی شود. مانند بخش قبل ، اگر از WireGuard VPN خود برای اتصال دستگاه به دستگاه برای دسترسی به منابع محدود شده برای VPN خود استفاده می کنید ، این مرحله را رد کنید.

برای افزودن قوانین فایروال به سرور WireGuard ، برخی از قوانین دائمی را ایجاد می کنید که از پیکربندی صحیح سرور در هنگام راه اندازی مجدد اطمینان حاصل می کند. برای دسترسی به سرویس WireGuard در پورت UDP 51820 موارد زیر را اجرا کنید:

sudo firewall-cmd –zone=public –add-port=51820/udp –permanent

در مرحله بعد باید دستگاه wg0 را به منطقه داخلی اضافه کنید ، که به ترافیک رابط VPN اجازه می دهد تا به رابط های دیگر در سرور WireGuard برسد. اگر از سرور به عنوان دروازه VPN برای تمام ترافیک اینترنت Peer استفاده می کنید ، این تنظیم بسیار مهم است. اگر در آینده تونل های WireGuard بیشتری به سرور خود اضافه می کنید ، حتماً دستگاه های آنها را به منطقه داخلی یا مورد اطمینان نیز اضافه کنید.

برای افزودن رابط wg0 به منطقه داخلی موارد زیر را اجرا کنید:

sudo firewall-cmd –zone=internal –add-interface=wg0 –permanent

در نهایت ، اگر از سرور WireGuard به عنوان دروازه VPN استفاده می کنید ، باید یک قانون ماسکراس را به منطقه عمومی اضافه کنید. Masquerading برای بازنویسی ترافیکی که در یک رابط داخلی وارد می شود (در این مورد wg0) استفاده می شود تا به نظر برسد که مستقیماً از آدرس های عمومی IPv4 یا IPv6 سرور WireGuard سرچشمه می گیرد.

دستورات زیر را برای فعال کردن مخفی سازی ، جایگزینی در محدوده شبکه IPv4 و IPv6 خود به جای مقادیر برجسته ، اجرا کنید:

sudo firewall-cmd –zone=public –add-rich-rule=’rule family=ipv4 source address=10.8.0.0/24 masquerade’ –permanent
sudo firewall-cmd –zone=public –add-rich-rule=’rule family=ipv6 source address=fd0d:86fa:c3bc::/64 masquerade’ –permanent

اکنون فایروال را مجدداً بارگذاری کنید تا تغییرات اعمال شده و از دائمی بودن آنها اطمینان حاصل کنید:

sudo firewall-cmd –reload

اکنون می توانید وضعیت کل مناطق عمومی ، داخلی یا سایر فایروال ها را بررسی کنید تا با اجرای دستور زیر از وجود قوانین اطمینان حاصل کنید. جایگزین منطقه ای که می خواهید به جای نام عمومی برجسته شده آن را بررسی کنید:

sudo firewall-cmd –zone=public –list-all

خروجی مانند موارد زیر را دریافت خواهید کرد:

 

Output

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0 eth1
  sources:
  services: cockpit dhcpv6-client ssh
  ports: 51820/udp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
    rule family="ipv4" source address="10.8.0.0/24" masquerade
    rule family="ipv6" source address="fd0d:86fa:c3bc::/64" masquerade

مقادیر برجسته شده حاکی از قاعده ای است که اجازه می دهد ترافیک UDP در پورت 51820 موجود باشد و مخفی سازی برای هر یک از شبکه های ذکر شده فعال است.

همچنین می توانید با استفاده از دستور زیر تأیید کنید که قانون ارسال داخلی وجود دارد:

sudo firewall-cmd –zone=internal –list-interfaces

در صورت وجود قانون ، خروجی مشابه زیر دریافت خواهید کرد:

 

Output

wg0

سرور WireGuard شما پیکربندی شده است تا بتواند ترافیک VPN را به درستی مدیریت کند ، از جمله حمل و نقل و نقاب برای همسالان. با رعایت قوانین فایروال ، می توانید سرویس WireGuard را برای گوش دادن به ارتباطات همتا راه اندازی کنید.

مرحله 6 – راه اندازی سرور WireGuard

WireGuard را می توان پیکربندی کرد تا با استفاده از اسکریپت wg-quick خود به عنوان یک سرویس systemd اجرا شود. در حالی که می توانید به صورت دستی از دستور wg برای ایجاد تونل در هر زمان که می خواهید از VPN استفاده کنید استفاده کنید ، انجام این کار یک فرآیند دستی است که تکراری و مستعد خطا می شود. در عوض ، می توانید از systemctl برای مدیریت تونل با کمک اسکریپت wg-quick استفاده کنید.

استفاده از سرویس systemd به این معنی است که می توانید WireGuard را برای راه اندازی در هنگام راه اندازی پیکربندی کنید تا بتوانید در هر زمان که سرور در حال اجرا است به VPN خود متصل شوید. برای انجام این کار ، سرویس wg-quick را برای تونل wg0 که با افزودن آن به systemctl تعریف کرده اید ، فعال کنید:

sudo systemctl enable wg-quick@wg0.service

توجه داشته باشید که فرمان نام تونل wg0 را به عنوان بخشی از نام سرویس مشخص می کند. این نام به فایل پیکربندی /etc/wireguard/wg0.conf مربوط می شود. این رویکرد برای نامگذاری به این معنی است که می توانید هر تعداد دلخواه که از سرور خود استفاده می کنید تونل VPN جداگانه ایجاد کنید. هر تونل می تواند شامل IPv4 ، IPv6 و تنظیمات فایروال مشتری باشد.

حالا سرویس را شروع کنید:

sudo systemctl start wg-quick@wg0.service

با دستور زیر بررسی کنید که سرویس WireGuard فعال است. شما باید خروجی را فعال (در حال اجرا) ببینید:

sudo systemctl status wg-quick@wg0.service

 

Output

● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
   Loaded: loaded (/usr/lib/systemd/system/wg-quick@.service; enabled; vendor preset: disabled)
   Active: active (exited) since Fri 2021-09-17 19:58:14 UTC; 6 days ago
     Docs: man:wg-quick(8)
           man:wg(8)
           https://www.wireguard.com/
           https://www.wireguard.com/quickstart/
           https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
           https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
 Main PID: 22924 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 11188)
   Memory: 0B
   CGroup: /system.slice/system-wg\x2dquick.slice/wg-quick@wg0.service

Sep 17 19:58:14 wg0 systemd[1]: Starting WireGuard via wg-quick(8) for wg0...
Sep 17 19:58:14 wg0 wg-quick[22924]: [#] ip link add wg0 type wireguard
Sep 17 19:58:14 wg0 wg-quick[22924]: [#] wg setconf wg0 /dev/fd/63
Sep 17 19:58:14 wg0 wg-quick[22924]: [#] ip -4 address add 10.8.0.1/24 dev wg0
Sep 17 19:58:14 wg0 wg-quick[22924]: [#] ip -6 address add fd0d:86fa:c3bc::1/64 dev wg0
Sep 17 19:58:14 wg0 wg-quick[22924]: [#] ip link set mtu 1420 up dev wg0
Sep 17 19:58:14 wg0 systemd[1]: Started WireGuard via wg-quick(8) for wg0.

توجه کنید که چگونه خروجی دستورات ip را که برای ایجاد دستگاه مجازی wg0 استفاده می شود نشان می دهد و آدرس IPv4 و IPv6 را که به فایل پیکربندی اضافه کرده اید به آن اختصاص می دهد. اگر می خواهید پیکربندی دستی VPN را پیکربندی کنید ، می توانید از این قوانین برای عیب یابی تونل استفاده کنید ، یا با خود دستور wg.

با سرور پیکربندی و اجرا ، گام بعدی این است که دستگاه مشتری خود را به صورت WireGuard Peer پیکربندی کرده و به سرور WireGuard متصل شوید.

مرحله 7 – پیکربندی WireGuard Peer

پیکربندی یک همتای WireGuard مشابه راه اندازی WireGuard Server است. هنگامی که نرم افزار سرویس گیرنده را نصب کردید ، یک جفت کلید عمومی و خصوصی ایجاد می کنید ، در مورد آدرس IP یا آدرس برای همتای خود تصمیم می گیرید ، یک فایل پیکربندی برای همتا تعریف می کنید و سپس با استفاده از اسکریپت wg-quick تونل را راه اندازی می کنید.

با ایجاد یک جفت کلید و پیکربندی با استفاده از مراحل زیر ، می توانید هر تعداد همکار که دوست دارید به VPN خود اضافه کنید. اگر چندین VPN را به VPN اضافه می کنید ، حتماً آدرس IP خصوصی آنها را پیگیری کنید تا از برخورد جلوگیری شود.

برای پیکربندی WireGuard Peer ، مطمئن شوید که بسته WireGuard را با استفاده از دستورات dnf زیر نصب کرده اید. در اجرای همکار WireGuard:

sudo dnf install elrepo-release epel-release
sudo dnf install kmod-wireguard wireguard-tools

ایجاد جفت کلید WireGuard Peer’s Key

در مرحله بعد ، باید جفت کلید را در همتا با استفاده از مراحل مشابهی که در سرور استفاده می کنید ایجاد کنید. از دستگاه محلی یا سرور راه دور خود که به عنوان همکار عمل می کند ، دستور زیر را برای تنظیم umask روی 077 اجرا کنید:

umask 077

اکنون می توانید با استفاده از دستور زیر کلید خصوصی را برای همتا ایجاد کنید:

wg genkey | sudo tee /etc/wireguard/private.key

مجدداً یک خط خروجی کد شده base64 دریافت خواهید کرد که کلید خصوصی است. یک نسخه از خروجی نیز در /etc/wireguard/private.key ذخیره می شود. کلید خصوصی خروجی را با دقت یادداشت کنید زیرا بعداً در این بخش باید آن را به فایل پیکربندی WireGuard اضافه کنید.

سپس برای ایجاد فایل کلید عمومی از دستور زیر استفاده کنید:

sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

مجدداً یک خط خروجی کد شده base64 دریافت خواهید کرد که کلید عمومی WireGuard Peer شما است. آن را در جایی برای مرجع کپی کنید ، زیرا برای ایجاد یک اتصال رمزگذاری شده ، باید کلید عمومی را در سرور WireGuard توزیع کنید.

ایجاد فایل پیکربندی WireGuard Peer

اکنون که یک جفت کلید دارید ، می توانید یک فایل پیکربندی برای همتای خود ایجاد کنید که حاوی تمام اطلاعات مورد نیاز برای ایجاد ارتباط با سرور WireGuard باشد.

برای فایل پیکربندی به چند قطعه اطلاعات نیاز دارید:

  • base64 کلید خصوصی را که در همتا ایجاد کرده اید رمزگذاری کرد.
  • محدوده آدرس IPv4 و IPv6 که در سرور WireGuard تعریف کرده اید.
  • base64 کلید عمومی را از سرور WireGuard رمزگذاری کرد.
  • آدرس IP عمومی و شماره پورت سرور WireGuard. معمولاً این آدرس IPv4 خواهد بود ، اما اگر سرور شما دارای آدرس IPv6 است و دستگاه سرویس گیرنده شما دارای اتصال IPv6 به اینترنت است ، می توانید به جای IPv4 از این آدرس استفاده کنید.

با تمام این اطلاعات موجود ، یک فایل /etc/wireguard/wg0.conf جدید در دستگاه WireGuard Peer با استفاده از vi یا ویرایشگر دلخواه خود باز کنید:

sudo vi /etc/wireguard/wg0.conf

خطوط زیر را به فایل اضافه کنید و در صورت لزوم داده های مختلف را در قسمت های برجسته جایگزین کنید:

 

/etc/wireguard/wg0.conf

[Interface]
PrivateKey = base64_encoded_peer_private_key_goes_here
Address = 10.8.0.2/24
Address = fd0d:86fa:c3bc::2/64

[Peer]
PublicKey = base64_encoded_server_public_key_goes_here
AllowedIPs = 10.8.0.0/24, fd0d:86fa:c3bc::/64
Endpoint = 203.0.113.1:51820

 

توجه کنید که چگونه اولین خط آدرس از آدرس IPv4 از زیر شبکه 10.8.0.0/24 که قبلاً انتخاب کرده اید استفاده می کند. این آدرس IP می تواند هر چیزی در زیر شبکه باشد مگر اینکه با IP سرور متفاوت باشد. افزایش آدرس ها به میزان 1 در هر بار افزودن یک همتا به طور کلی ساده ترین راه برای تخصیص IP است.

به همین ترتیب ، توجه کنید که خط دوم آدرس چگونه از آدرس IPv6 از زیر شبکه ای که قبلاً ایجاد کرده اید استفاده می کند و آدرس سرور را یک بر یک افزایش می دهد. باز هم ، اگر تصمیم دارید از آدرس دیگری استفاده کنید ، هر IP موجود در محدوده معتبر است.

بخش قابل توجه دیگر فایل آخرین خط AllowedIPs است. این دو محدوده IPv4 و IPv6 به همکاران دستور می دهند فقط در صورتی ترافیک از طریق VPN ارسال کنند که سیستم مقصد دارای آدرس IP در هر محدوده باشد. با استفاده از دستورالعمل AllowedIPs ، می توانید VPN را بر روی همتا محدود کنید تا فقط به سایر خدمات و خدمات مشابه در VPN متصل شود ، یا می توانید تنظیماتی را انجام دهید که تمام ترافیک VPN را تونل گذاری کرده و از سرور WireGuard به عنوان دروازه استفاده کنید.

اگر فقط از IPv4 استفاده می کنید ، محدوده fd0d: 86fa: c3bc ::/64 (شامل کاما) را حذف کنید. برعکس ، اگر فقط از IPv6 استفاده می کنید ، فقط پیشوند fd0d: 86fa: c3bc ::/64 را وارد کنید و محدوده 10.8.0.0/24 IPv4 را کنار بگذارید.

در هر دو مورد ، اگر می خواهید تمام ترافیک همسالان خود را از طریق VPN ارسال کنید و از سرور WireGuard به عنوان دروازه ای برای همه ترافیک استفاده کنید ، می توانید از 0.0.0.0/0 ، که نشان دهنده کل فضای آدرس IPv4 است ، و :: /0 برای کل فضای آدرس IPv6.

(اختیاری) پیکربندی یک همتا برای مسیریابی تمام ترافیک در تونل

اگر تصمیم گرفته اید تمام ترافیک همکاران خود را از طریق تونل با استفاده از مسیرهای 0.0.0.0/0 یا ::/0 مسیریابی کنید و همتا یک سیستم از راه دور است ، باید مراحل این بخش را تکمیل کنید. اگر همتای شما یک سیستم محلی است ، بهتر است از این بخش صرف نظر کنید.

برای همسالان از راه دور که از طریق SSH یا پروتکل دیگری با استفاده از آدرس IP عمومی به آنها دسترسی پیدا می کنید ، باید برخی قوانین اضافی را به فایل wg0.conf همتا اضافه کنید. این قوانین تضمین می کند که شما هنوز می توانید از خارج از تونل به سیستم متصل شوید. در غیر این صورت ، هنگامی که تونل ایجاد می شود ، تمام ترافیکی که معمولاً در رابط شبکه عمومی انجام می شود ، به درستی جهت دور زدن رابط تونل wg0 هدایت نمی شوند و منجر به یک سیستم از راه دور می شود.

ابتدا باید آدرس IP ای را که سیستم به عنوان دروازه پیش فرض خود استفاده می کند ، تعیین کنید. دستور ip route زیر را اجرا کنید:

ip route list table main default

خروجی مانند موارد زیر را دریافت خواهید کرد:

 

Output

default via 203.0.113.1 dev eth0 proto static

به آدرس IP برجسته 203.0.113.1 درگاه برای استفاده بعدی و eth0 دستگاه توجه کنید. ممکن است نام دستگاه شما متفاوت باشد. اگر چنین است ، آن را به جای eth0 در دستورات زیر جایگزین کنید.

سپس با بررسی دستگاه با دستور نشان دادن آدرس IP آدرس عمومی سیستم را بیابید:

ip -brief address show eth0

خروجی مانند موارد زیر را دریافت خواهید کرد:

 

Output

eth0             UP             203.0.113.5/20 10.20.30.40/16 2604:a880:400:d1::3d3:6001/64 fe80::68d5:beff:feff:974c/64

در این خروجی مثال ، IP برجسته 203.0.113.5 (بدون دنباله /20) آدرس عمومی است که به دستگاه eth0 اختصاص داده شده است که باید به پیکربندی WireGuard اضافه کنید.

اکنون فایل /etc/wireguard/wg0.conf WireGuard Peer را با vi یا ویرایشگر دلخواه خود باز کنید.

sudo vi /etc/wireguard/wg0.conf

قبل از خط [Peer] ، 4 خط زیر را اضافه کنید:

PostUp = ip rule add table 200 from 203.0.113.5
PostUp = ip route add table 200 default via 203.0.113.1
PreDown = ip rule delete table 200 from 203.0.113.5
PreDown = ip route delete table 200 default via 203.0.113.1

[Peer]
. . .

این خطوط یک قانون مسیریابی سفارشی ایجاد می کنند و یک مسیر سفارشی اضافه می کنند تا اطمینان حاصل شود که ترافیک عمومی به سیستم از دروازه پیش فرض استفاده می کند.

  • PostUp = ip rule add table 200 from 203.0.113.5 – این فرمان یک قاعده ایجاد می کند که هنگام ورود IP با آدرس عمومی 203.0.113.5 سیستم ، هرگونه ورودی مسیریابی در جدول شماره 200 را بررسی می کند.
  • PostUp = ip route add table 200 default by 203.0.113.1 – این دستور اطمینان می دهد که هر ترافیکی که توسط جدول 200 پردازش می شود ، به جای رابط WireGuard ، از دروازه 203.0.113.1 برای مسیریابی استفاده می کند.
  • خطوط PreDown هنگام خاموش شدن تونل ، قانون و مسیر سفارشی را حذف می کند.

اگر تمام ترافیک همکاران خود را از طریق VPN مسیریابی می کنید ، مطمئن شوید که در sysctl و firewall-cmd درست در سرور WireGuard در مرحله 4-تنظیم پیکربندی شبکه WireGuard سرور و مرحله 5-پیکربندی فایروال سرور WireGuard پیکربندی کرده اید.

(اختیاری) پیکربندی حل کننده های DNS WireGuard Peer

اگر از سرور WireGuard به عنوان یک دروازه VPN برای همه ترافیک همکاران خود استفاده می کنید ، باید خطی را به بخش [رابط] اضافه کنید که حل کننده های DNS را مشخص می کند. اگر این تنظیم را اضافه نکنید ، ممکن است درخواست های DNS شما توسط VPN محافظت نشود ، یا ممکن است به ارائه دهنده خدمات اینترنت شما یا سایر اشخاص ثالث فاش شود.

اگر فقط از WireGuard برای دسترسی به منابع در شبکه VPN یا پیکربندی peer-to-peer استفاده می کنید ، می توانید این بخش را رد کنید.

برای افزودن حل کننده های DNS به پیکربندی همکار خود ، ابتدا تعیین کنید سرور WireGuard شما از کدام سرورهای DNS استفاده می کند. دستور زیر را در سرور WireGuard اجرا کنید ، اگر نام دستگاه اترنت خود را به جای eth0 جایگزین کنید اگر متفاوت از این مثال باشد:

cat /etc/resolv.conf

شما باید خروجی مانند موارد زیر را دریافت کنید:

 

Output

; Created by cloud-init on instance boot automatically, do not edit.
;
nameserver 67.207.67.2
nameserver 67.207.67.3

آدرس های IP خروجی راه حل های DNS هستند که سرور از آنها استفاده می کند. بسته به نیاز خود می توانید از همه یا همه آنها یا فقط IPv4 یا IPv6 استفاده کنید. حل کننده هایی را که استفاده می کنید یادداشت کنید.

در مرحله بعد باید حل کننده های انتخابی خود را به فایل پیکربندی WireGuard Peer اضافه کنید. دوباره به WireGuard Peer برگردید ، فایل /etc/wireguard/wg0.conf را با استفاده از vi یا ویرایشگر دلخواه باز کنید:

sudo vi /etc/wireguard/wg0.conf

قبل از خط [Peer] موارد زیر را اضافه کنید:

DNS = 67.207.67.2 67.207.67.3

[Peer]
. . .

باز هم ، بسته به اولویت یا الزامات شما برای IPv4 و IPv6 ، می توانید لیست را با توجه به نیاز خود ویرایش کنید.

در مرحله بعد ، سرویس حل شده با سیستم را در Peer فعال و راه اندازی کنید تا وقتی تونل ایجاد شد ، حل کننده های DNS Peer به روز شود:

sudo systemctl enable systemd-resolved

اگر Rocky Linux و احتمالاً سایر توزیع های مشتق از RedHat مانند CentOS یا Fedora در حال اجرا هستند ، باید سیستم همتای خود را در این مرحله راه اندازی مجدد کنید. اگر آن را راه اندازی مجدد نکنید ، فایل /etc/resolv.conf هنگام راه اندازی تونل به دلیل اشکالی در برنامه های systemd-حل شده یا ابزارهای حفاظتی ، مجوزهای صحیح را تنظیم نمی کند. WireGuard Peer را با دستور زیر راه اندازی مجدد کنید:

sudo reboot

با وجود همه این تنظیمات حل کننده DNS و راه اندازی مجدد همکار ، اکنون آماده هستید که کلید عمومی همکار را به سرور اضافه کنید و سپس تونل WireGuard را روی همتا راه اندازی کنید.

مرحله 8 – افزودن کلید عمومی Peer به سرور WireGuard

قبل از اتصال همتا به سرور ، مهم است که کلید عمومی همتا را به سرور WireGuard اضافه کنید. این مرحله تضمین می کند که می توانید ترافیک را از طریق VPN متصل و مسیریابی کنید. بدون اتمام این مرحله ، سرور WireGuard به همکاران اجازه ارسال یا دریافت ترافیک از طریق تونل را نمی دهد.

با اجرای موارد زیر ، مطمئن شوید که نسخه ای از کلید عمومی کد شده base64 را برای WireGuard Peer در اختیار دارید:

sudo cat /etc/wireguard/public.key

 

Output

PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=

حالا وارد سرور WireGuard شده و دستور زیر را اجرا کنید:

sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,fd0d:86fa:c3bc::2

توجه داشته باشید که قسمت مجاز-ips فرمان ، لیستی از آدرس های IPv4 و IPv6 را با کاما جدا می کند. اگر می خواهید آدرس IP را که یک همتا می تواند به خود اختصاص دهد محدود کنید یا اگر همسالان شما می توانند از هر آدرس IP در محدوده VPN استفاده کنند ، می توانید IP های فردی را تعیین کنید. همچنین توجه داشته باشید که هیچ یک از همسالان نمی توانند تنظیمات مجاز ips یکسانی داشته باشند.

اگر می خواهید ips مجاز برای یک همکار موجود را به روز کنید ، می توانید دوباره همان فرمان را اجرا کنید ، اما آدرس IP را تغییر دهید. چندین آدرس IP پشتیبانی می شود. به عنوان مثال ، برای تغییر WireGuard Peer که به تازگی اضافه کرده اید و IP ای مانند 10.8.0.100 را به IP های 10.8.0.2 و fd0d: 86fa: c3bc :: 2 موجود اضافه می کنید ، موارد زیر را اجرا کنید:

sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,10.8.0.100,fd0d:86fa:c3bc::2

پس از اجرای دستور افزودن همتا ، وضعیت تونل را روی سرور با استفاده از دستور wg بررسی کنید:

sudo wg

 

Output

interface: wg0
 public key: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=
 private key: (hidden)
 listening port: 51820

peer: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=
 allowed ips: 10.8.0.2/32, fd0d:86fa:c3bc::/128

توجه کنید که چگونه خط همتا کلید عمومی WireGuard Peer و آدرس های IP یا محدوده آدرس هایی را نشان می دهد که مجاز است از آنها برای اختصاص IP خود استفاده کند.

اکنون که پارامترهای اتصال همتا را روی سرور تعریف کرده اید ، مرحله بعدی این است که تونل را روی همتا راه اندازی کنید.

مرحله 9 – اتصال WireGuard Peer به Tunnel

اکنون که سرور و همکار شما به گونه ای پیکربندی شده اند که از انتخاب IPv4 ، IPv6 ، ارسال بسته ها و وضوح DNS پشتیبانی می کنند ، زمان آن رسیده است که همتا را به تونل VPN متصل کنید.

از آنجا که ممکن است فقط بخواهید VPN برای موارد خاص استفاده شود ، ما از دستور wg-quick برای ایجاد اتصال بصورت دستی استفاده می کنیم. اگر می خواهید شروع به کار تونل را مانند سرور انجام دهید ، مراحل زیر را در مرحله 6 دنبال کنید-به جای استفاده از دستور wq-quick ، بخش WireGuard Server را راه اندازی کنید.

برای شروع تونل ، موارد زیر را در WireGuard Peer اجرا کنید:

sudo wg-quick up wg0

خروجی مانند موارد زیر را دریافت خواهید کرد:

 

Output

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.2/24 dev wg0
[#] ip -6 address add fd0d:86fa:c3bc::2/64 dev wg0
[#] ip link set mtu 1420 up dev wg0

آدرس های IPv4 و IPv6 برجسته ای را که به همتای خود اختصاص داده اید ، اضافه کنید.

اگر AllowedIPs را روی همتا روی 0.0.0.0/0 و ::/0 تنظیم کنید (یا از محدوده هایی غیر از محدوده هایی که برای VPN انتخاب کرده اید استفاده کنید) ، خروجی شما شبیه موارد زیر خواهد بود:

 

Output

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.2/24 dev wg0
[#] ip -6 address add fd0d:86fa:c3bc::2/64 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] mount `67.207.67.2' /etc/resolv.conf
[#] wg set wg0 fwmark 51820
[#] ip -6 route add ::/0 dev wg0 table 51820
[#] ip -6 rule add not fwmark 51820 table 51820
[#] ip -6 rule add table main suppress_prefixlength 0
[#] nft -f /dev/fd/63
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] nft -f /dev/fd/63
[#] ip rule add table 200 from 203.0.113.5
[#] ip route add table 200 default via 203.0.113.1

در این مثال ، به مسیرهای برجسته شده ای که فرمان اضافه کرده و مربوط به AllowedIPs در پیکربندی همتا است توجه کنید.

در مرحله بعد ، با استفاده از ping مقداری ترافیک در رابط تونل ایجاد کنید تا یک بسته ICMP (که در دستورات زیر با آرگومان -c 1 مشخص شده است) به سرور WireGuard نشان داده شود:

ping -c 1 10.8.0.1

اگر تمام ترافیک را از طریق VPN مسیریابی می کنید ، می توانید به جای آن از یکی از سرورهای CloudFlare استفاده کنید:

ping -c 1 1.1.1.1

اکنون با استفاده از دستور wg وضعیت تونل را روی همتا بررسی کنید:

sudo wg

 

Output

interface: wg0
 public key: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=
 private key: (hidden)
 listening port: 49338
 fwmark: 0xca6c

peer: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=
 endpoint: 203.0.113.1:51820
 allowed ips: 10.8.0.0/24, fd0d:86fa:c3bc::/64
 latest handshake: 1 second ago
 transfer: 6.50 KiB received, 15.41 KiB sent

همچنین می توانید وضعیت سرور را دوباره بررسی کنید و خروجی مشابهی دریافت خواهید کرد.

با استفاده از دستورات مسیر ip و مسیر ip -6 تأیید کنید که همتای شما از VPN استفاده می کند. اگر از VPN به عنوان دروازه ای برای همه ترافیک اینترنت خود استفاده می کنید ، بررسی کنید که کدام رابط برای ترافیک مقصد 1.1.1.1 CloudFlare و 2606: 4700: 4700 :: 1111 DNS وضوح مورد استفاده قرار می گیرد.

ip route get 1.1.1.1

 

Output

1.1.1.1 dev wg0 table 51820 src 10.8.0.2 uid 1000
   cache

توجه داشته باشید که از دستگاه wg0 و آدرس IPv4 10.8.0.2 که به همتای خود اختصاص داده اید استفاده می شود. به همین ترتیب ، اگر از IPv6 استفاده می کنید ، موارد زیر را اجرا کنید:

ip -6 route get 2606:4700:4700::1111

 

Output

2606:4700:4700::1111 dev wg0 table 51820 src fd0d:86fa:c3bc::2 metric 1024 pref medium

دوباره به رابط wg0 و آدرس IPv6 fd0d: 86fa: c3bc :: 2 که به همتای خود اختصاص داده اید توجه کنید.

اگر مرورگر همتای شما نصب شده است ، همچنین می توانید از ipleak.net و ipv6-test.com دیدن کنید تا تأیید کنید که همتای شما ترافیک خود را از طریق VPN مسیریابی می کند.

هنگامی که آماده قطع ارتباط VPN با همکار هستید ، از دستور wg-quick استفاده کنید:

sudo wg-quick down wg0

خروجی مشابه زیر دریافت خواهید کرد که نشان می دهد تونل VPN خاموش است:

 

Output

[#] ip link delete dev wg0

اگر AllowedIPs را روی همتا روی 0.0.0.0/0 و ::/0 تنظیم کنید (یا از محدوده هایی غیر از محدوده هایی که برای VPN انتخاب کرده اید استفاده کنید) ، خروجی شما شبیه موارد زیر خواهد بود:

 

Output

[#] ip rule delete table 200 from 137.184.109.48
[#] ip route delete table 200 default via 137.184.96.1
[#] ip -4 rule delete table 51820
[#] ip -4 rule delete table main suppress_prefixlength 0
[#] ip -6 rule delete table 51820
[#] ip -6 rule delete table main suppress_prefixlength 0
[#] ip link delete dev wg0
[#] umount /etc/resolv.conf
[#] nft -f /dev/fd/63

برای اتصال مجدد به VPN ، دستور wg-quick up wg0 را دوباره روی همتا اجرا کنید. اگر می خواهید پیکربندی همتا را از سرور WireGuard حذف کنید ، می توانید دستور زیر را اجرا کنید ، مطمئن باشید که کلید عمومی صحیح را برای همتایی که می خواهید حذف کنید جایگزین کنید:

sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= remove

به طور معمول فقط در صورت عدم وجود همتای دیگر ، یا کلیدهای رمزگذاری آن به خطر افتاده یا تغییر کرده است ، باید پیکربندی همتا را حذف کنید. در غیر این صورت بهتر است پیکربندی را در محل خود بگذارید تا همکار بتواند مجدداً به VPN متصل شود بدون اینکه لازم باشد هر بار کلید و ips مجاز آن را اضافه کنید.

نتیجه

در این آموزش شما بسته و ابزار WireGuard را روی هر دو سیستم سرور و سرویس گیرنده Rocky Linux 8 نصب کرده اید. شما قوانین فایروال را برای WireGuard تنظیم کرده و تنظیمات هسته را پیکربندی کرده اید تا بتوانید با استفاده از دستور sysctl روی سرور ، ارسال بسته را انجام دهید. شما نحوه تولید کلیدهای رمزگذاری خصوصی و عمومی WireGuard و نحوه پیکربندی سرور و همکاران (یا همتا) برای اتصال به یکدیگر را آموختید.

اگر شبکه شما از IPv6 استفاده می کند ، همچنین آموخته اید که چگونه یک محدوده آدرس محلی منحصر به فرد برای استفاده از اتصالات همتا ایجاد کنید. در نهایت ، شما نحوه محدود کردن میزان ترافیک VPN را با محدود کردن پیشوندهای شبکه که همکار می تواند استفاده کند ، و همچنین نحوه استفاده از سرور WireGuard به عنوان یک دروازه VPN برای رسیدگی به تمام ترافیک اینترنت برای همسالان یاد گرفتید.

 

  • behnam gol mohamadi
  • ۰
  • ۰

راه اندازی سرور اولیه با Rocky Linux 8

ورود به سایت

معرفی

هنگامی که برای اولین بار سرور جدید Rocky Linux 8 ایجاد می کنید ، چند مرحله پیکربندی وجود دارد که باید به عنوان بخشی از تنظیمات اولیه ، اوایل آن را انجام دهید. این امر امنیت و قابلیت استفاده از سرور شما را افزایش می دهد و پایه محکمی برای اقدامات بعدی به شما می دهد.

مرحله 1 – ورود به سیستم به عنوان Root

برای ورود به سرور خود ، باید آدرس IP عمومی سرور خود را بدانید. شما همچنین به رمز عبور یا اگر یک کلید SSH برای احراز هویت نصب کرده اید ، به کلید خصوصی حساب کاربر اصلی نیاز دارید. اگر قبلاً به سرور خود وارد نشده اید ، ممکن است بخواهید اسناد ما را در مورد نحوه اتصال به Droplet خود با SSH دنبال کنید ، که این فرآیند را با جزئیات پوشش می دهد.

اگر قبلاً به سرور خود متصل نیستید ، اکنون با استفاده از دستور زیر به عنوان کاربر اصلی وارد شوید (قسمت برجسته شده فرمان را با آدرس IP عمومی سرور خود جایگزین کنید):

ssh root@your_server_ip

در صورت ظاهر شدن هشدار مربوط به اصالت میزبان را بپذیرید. اگر از احراز هویت رمز عبور استفاده می کنید ، رمز ورود خود را برای ورود وارد کنید. اگر از کلید SSH که از رمز عبور محافظت می کند استفاده می کنید ، ممکن است از شما خواسته شود که اولین بار که از کلید در هر جلسه استفاده می کنید عبارت عبور را وارد کنید. اگر برای اولین بار است که با گذرواژه وارد سرور می شوید ، ممکن است از شما خواسته شود که رمز اصلی را تغییر دهید.

درباره Root

کاربر اصلی کاربر اداری در یک محیط لینوکس است و دارای امتیازات بسیار وسیعی است. به دلیل افزایش امتیازات حساب اصلی ، از استفاده منظم آن دلسرد می شوید. این به این دلیل است که بخشی از قدرت ذاتی حساب اصلی ، توانایی ایجاد تغییرات بسیار مخرب ، حتی به طور تصادفی است.

به این ترتیب ، گام بعدی این است که یک حساب کاربری جایگزین با دامنه نفوذ کاهش یافته برای کارهای روزمره ایجاد کنید. این حساب همچنان می تواند در صورت لزوم امتیازات بیشتری را به دست آورد.

مرحله 2 – ایجاد یک کاربر جدید

پس از ورود به سیستم root ، می توانید حساب کاربری جدیدی ایجاد کنید که از این پس برای ورود به سیستم از آن استفاده می کنیم.

این مثال یک کاربر جدید به نام sammy ایجاد می کند ، اما شما باید نام کاربری دیگری را که ترجیح می دهید جایگزین کنید:

adduser sammy

در مرحله بعد ، یک رمز عبور قوی برای کاربر sammy تعیین کنید:

passwd sammy

دوبار از شما خواسته می شود که رمز عبور را وارد کنید. پس از انجام این کار ، کاربر شما آماده استفاده می شود ، اما ابتدا به این کاربر امتیازات بیشتری می دهیم تا از دستور sudo استفاده کند. این به ما اجازه می دهد تا در صورت لزوم دستورات را به عنوان root اجرا کنیم

مرحله 3 – اعطای امتیازات اداری

اکنون ، ما یک حساب کاربری جدید با امتیازات حساب معمولی داریم. با این حال ، ممکن است گاهی اوقات نیاز به انجام کارهای اداری داشته باشیم.

برای اجتناب از خروج از کاربر معمولی و ورود مجدد به عنوان حساب اصلی ، می توانیم مواردی را که به عنوان “superuser” یا امتیازات root برای حساب معمولی خود شناخته می شود ، تنظیم کنیم. این به کاربر معمولی ما این امکان را می دهد که با قرار دادن کلمه sudo قبل از هر فرمان ، فرمان هایی با امتیاز مدیریتی اجرا کند.

برای افزودن این امتیازات به کاربر جدید ، باید کاربر جدید را به گروه چرخ اضافه کنیم. به طور پیش فرض ، در Rocky Linux 8 ، کاربرانی که به گروه چرخ تعلق دارند مجاز به استفاده از دستور sudo هستند.

به عنوان root ، این دستور را اجرا کنید تا کاربر جدید خود را به گروه چرخ اضافه کنید (کلمه برجسته شده را با نام کاربری جدید خود جایگزین کنید):

usermod -aG wheel sammy

اکنون ، هنگامی که به عنوان کاربر معمولی خود وارد سیستم شده اید ، می توانید sudo را قبل از دستورات برای انجام اقدامات با امتیازات فوق العاده کاربر تایپ کنید.

مرحله 4 – راه اندازی یک فایروال اساسی

فایروال ها سطح اولیه امنیت را برای سرور شما فراهم می کنند. این برنامه ها مسئول جلوگیری از تردد به هر پورت سرور شما هستند ، به جز درگاه ها/سرویس هایی که صراحتاً تأیید کرده اید. راکی لینوکس برای انجام این عملکرد سرویسی به نام firewalld دارد. ابزاری به نام firewall-cmd برای پیکربندی خط مشی های دیوار آتش استفاده می شود

ابتدا firewalld را نصب کنید:

dnf install firewalld -y

پیکربندی پیش فرض firewalld اجازه اتصال ssh را می دهد ، بنابراین می توانیم فایروال را بلافاصله روشن کنیم

systemctl start firewalld

برای اطمینان از شروع سرویس ، وضعیت آن را بررسی کنید:

systemctl status firewalld

 

Output

● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-02-06 16:39:40 UTC; 3s ago
     Docs: man:firewalld(1)
 Main PID: 13180 (firewalld)
    Tasks: 2 (limit: 5059)
   Memory: 22.4M
   CGroup: /system.slice/firewalld.service
           └─13180 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid

توجه داشته باشید که هم فعال است و هم فعال ، یعنی اگر سرور راه اندازی مجدد شود به طور پیش فرض شروع می شود.

اکنون که سرویس راه اندازی شده است ، می توانیم از برنامه firewall-cmd برای بدست آوردن و تنظیم اطلاعات خط مشی برای فایروال استفاده کنیم.

ابتدا بیایید فهرست کنیم که کدام سرویس ها قبلاً مجاز هستند:

firewall-cmd –permanent –list-all

 

Output

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0 eth1
  sources:
  services: cockpit dhcpv6-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

برای مشاهده خدمات اضافی که می توانید با نام آنها را فعال کنید ، تایپ کنید:

firewall-cmd –get-services

برای افزودن سرویسی که باید مجاز باشد ، از پرچم –add-service استفاده کنید:

firewall-cmd –permanent –add-service=http

با این کار سرویس http اضافه می شود و ترافیک ورودی TCP به پورت 80 امکان پذیر می شود. پیکربندی پس از بارگیری مجدد فایروال به روز می شود:

firewall-cmd –reload

به یاد داشته باشید که برای هرگونه سرویس اضافی که بعداً ممکن است پیکربندی کنید ، باید فایروال (با سرویس یا پورت) را به صراحت باز کنید.

مرحله 5 – فعال کردن دسترسی خارجی برای کاربر معمولی خود

اکنون که یک کاربر معمولی غیر روت برای استفاده روزانه داریم ، باید مطمئن شویم که می توانیم از آن برای SSH در سرور خود استفاده کنیم.

فرایند پیکربندی دسترسی SSH برای کاربر جدید شما بستگی به این دارد که حساب ریشه سرور شما از رمز عبور یا کلیدهای SSH برای احراز هویت استفاده کند.

اگر حساب Root از احراز هویت رمز عبور استفاده می کند

اگر با استفاده از رمز عبور وارد حساب اصلی خود شده اید ، احراز هویت رمز عبور برای SSH فعال است. می توانید با باز کردن یک جلسه ترمینال جدید و استفاده از SSH با نام کاربری جدید خود ، به حساب کاربری جدید خود SSH وارد کنید:

ssh sammy@your_server_ip

پس از وارد کردن گذرواژه کاربر معمولی خود ، وارد سیستم می شوید. به یاد داشته باشید ، اگر نیاز به اجرای فرمان با مجوزهای مدیریتی دارید ، قبل از آن sudo را به این شکل تایپ کنید:

sudo command_to_run

هنگام استفاده از sudo برای اولین بار در هر جلسه (و دوره ای پس از آن) از شما رمز عبور معمولی کاربر درخواست می شود.

برای افزایش امنیت سرور ، توصیه می کنیم به جای استفاده از احراز هویت رمز عبور ، کلیدهای SSH را تنظیم کنید. برای آموزش نحوه پیکربندی احراز هویت مبتنی بر کلید ، راهنمای ما را در مورد تنظیم کلیدهای SSH در Rocky Linux 8 دنبال کنید.

اگر حساب Root از احراز هویت کلید SSH استفاده می کند

اگر با استفاده از کلیدهای SSH وارد حساب اصلی خود شده اید ، احراز هویت رمز عبور برای SSH غیرفعال است. برای ورود موفق به سیستم ، باید یک نسخه از کلید عمومی خود را به فایل user/.ssh/author_keys کاربر جدید اضافه کنید.

از آنجا که کلید عمومی شما قبلاً در فایل root/.ssh/author_keys حساب ریشه در سرور است ، می توانیم آن فایل و ساختار فهرست را در حساب کاربری جدید خود کپی کنیم.

ساده ترین راه برای کپی فایل ها با مالکیت و مجوزهای صحیح ، دستور rsync است. این کار دایرکتوری .ssh کاربر اصلی را کپی می کند ، مجوزها را حفظ می کند و صاحبان فایل را در یک فرمان واحد تغییر می دهد. اطمینان حاصل کنید که قسمت های برجسته فرمان زیر را برای مطابقت با نام کاربر معمولی خود تغییر دهید:

rsync –archive –chown=sammy:sammy ~/.ssh /home/sammy

اکنون ، در یک ترمینال جدید در دستگاه محلی خود ، یک جلسه SSH جدید را با کاربر غیر root خود باز کنید:

ssh sammy@your_server_ip

شما باید بدون استفاده از رمز عبور وارد حساب کاربری جدید شوید. به یاد داشته باشید ، اگر نیاز به اجرای یک فرمان با امتیازات مدیریتی دارید ، قبل از آن sudo را به این شکل تایپ کنید:

sudo command_to_run

هنگام استفاده از sudo برای اولین بار در هر جلسه (و دوره ای پس از آن) از شما رمز عبور معمولی کاربر درخواست می شود.

نتیجه

در این مرحله ، شما یک پایه محکم برای سرور خود دارید. هم اکنون می توانید هر یک از نرم افزارهای مورد نیاز خود را بر روی سرور خود نصب کنید.

Rocky Linux 8rootجدیدترین سرور لینوکسخرید سرور لینوکسراه اندازی فایروالسرور لینوکسسرورRocky Linux 8

  • behnam gol mohamadi