سرور مجازی

۱۱ مطلب با کلمه‌ی کلیدی «اتصال به سرور مجازی» ثبت شده است

  • ۰
  • ۰

نحوه تنظیم سهمیه های سیستم فایل در اوبونتو 20.04

ورود به سایت

معرفی

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

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

پیش نیازها

این آموزش فرض می‌کند که شما وارد سرور اوبونتو 20.04 شده‌اید، با یک کاربر غیر ریشه و دارای sudo فعال، همانطور که در راه‌اندازی سرور اولیه با اوبونتو 20.04 توضیح داده شده است. تکنیک‌های این آموزش معمولاً باید روی توزیع‌های لینوکس به غیر از اوبونتو کار کنند، اما ممکن است نیاز به تطبیق داشته باشند.

مرحله 1 – نصب Quota Tools

برای تنظیم و بررسی سهمیه ها، ابتدا باید ابزارهای خط فرمان سهمیه را با استفاده از apt نصب کنید. ابتدا لیست بسته را به روز کنید، سپس بسته را نصب کنید:

sudo apt update
sudo apt install quota

با اجرای دستور quota و درخواست اطلاعات نسخه آن، می توانید تأیید کنید که ابزارها نصب شده اند:

quota –version

 

Output

Quota utilities version 4.05.
. . .

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

بعد مطمئن شوید که ماژول های هسته مناسب برای نظارت بر سهمیه ها را دارید.

مرحله 2 – ماژول Quota Kernel را نصب کنید

اگر روی یک سرور مجازی مبتنی بر ابر هستید، نصب پیش‌فرض لینوکس اوبونتو ممکن است ماژول‌های هسته مورد نیاز برای پشتیبانی از مدیریت سهمیه را نداشته باشد. برای بررسی، از find برای جستجوی ماژول های quota_v1 و quota_v2 در فهرست /lib/modules/… استفاده می کنید:

find /lib/modules/ -type f -name ‘*quota_v*.ko*’

 

Output

/lib/modules/5.4.0-99-generic/kernel/fs/quota/quota_v2.ko
/lib/modules/5.4.0-99-generic/kernel/fs/quota/quota_v1.ko

نسخه هسته خود را – که در مسیرهای فایل بالا مشخص شده است – یادداشت کنید زیرا در مرحله بعد به آن نیاز خواهید داشت. احتمالاً متفاوت خواهد بود، اما تا زمانی که دو ماژول در لیست هستند، همه چیز آماده است و می توانید بقیه این مرحله را رد کنید.

اگر هیچ خروجی از دستور بالا دریافت نکردید، بسته linux-image-extra-virtual را نصب کنید:

sudo apt install linux-image-extra-virtual

مرحله 3 – گزینه های نصب فایل سیستم را به روز کنید

برای فعال کردن سهمیه ها در یک فایل سیستم خاص، باید آن را با چند گزینه مرتبط با سهمیه مشخص شده نصب کنید. می توانید این کار را با به روز رسانی ورودی سیستم فایل در فایل پیکربندی /etc/fstab انجام دهید. آن فایل nano یا ویرایشگر متن دلخواه خود را باز کنید:

sudo nano /etc/fstab

محتویات این فایل مشابه موارد زیر خواهد بود:

/etc/fstab

LABEL=cloudimg-rootfs   /        ext4   defaults        0 0
LABEL=UEFI      /boot/efi       vfat    defaults        0 0

این فایل fstab از یک سرور مجازی است. یک رایانه رومیزی یا لپ تاپ احتمالاً fstab کمی متفاوت خواهد داشت، اما در بیشتر موارد شما یک فایل سیستم / یا root خواهید داشت که تمام فضای دیسک شما را نشان می دهد.

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

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

/etc/fstab

LABEL=cloudimg-rootfs   /        ext4   usrquota,grpquota        0 0
. . .

این تغییر به ما این امکان را می دهد که سهمیه های کاربر (usrquota) و گروهی (grpquota) را در سیستم فایل فعال کنیم. اگر فقط به یکی یا دیگری نیاز دارید، ممکن است گزینه استفاده نشده را کنار بگذارید. اگر در خط fstab شما از قبل به جای پیش‌فرض گزینه‌های فهرست شده بود، باید گزینه‌های جدید را به انتهای هر چیزی که از قبل وجود دارد اضافه کنید، مطمئن شوید که همه گزینه‌ها را با کاما و بدون فاصله از هم جدا کنید.

برای اعمال گزینه های جدید، فایل سیستم را مجدداً نصب کنید:

sudo mount -o remount /

در اینجا از پرچم -o برای عبور از گزینه remount استفاده می شود.

 

Output

mount: /etc/fstab: parse error

می توانید با مشاهده فایل /proc/mounts بررسی کنید که از گزینه های جدید برای نصب فایل سیستم استفاده شده است. در اینجا، از grep استفاده کنید تا فقط ورودی سیستم فایل ریشه در آن فایل را نشان دهید:

cat /proc/mounts | grep ‘ / ‘

 

Output

/dev/vda1 / ext4 rw,relatime,quota,usrquota,grpquota 0 0

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

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

قبل از اینکه در نهایت سیستم سهمیه را روشن کنید، باید یک بار دستور quotacheck را به صورت دستی اجرا کنید:

sudo quotacheck -ugm /

این دستور فایل های /aquota.user و /aquota.group را ایجاد می کند. این فایل‌ها حاوی اطلاعاتی درباره محدودیت‌ها و استفاده از سیستم فایل هستند و قبل از روشن کردن نظارت بر سهمیه باید وجود داشته باشند. پارامترهای quotacheck مورد استفاده عبارتند از:

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

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

ls /

 

Output

aquota.group  bin   dev  home        initrd.img.old  lib64       media  opt   root  sbin  srv  tmp  var      vmlinuz.old
aquota.user   boot  etc  initrd.img  lib             lost+found  mnt    proc  run   snap  sys  usr  vmlinuz

اگر گزینه های u یا g را در دستور quotacheck وارد نکرده باشید، فایل مربوطه از بین خواهد رفت.

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

sudo modprobe quota_v1 -S 5.4.0-99-generic
sudo modprobe quota_v2 -S 5.4.0-99-generic

اکنون برای روشن کردن سیستم سهمیه آماده هستید:

sudo quotaon -v /

 

quotaon Output

/dev/vda1 [/]: group quotas turned on
/dev/vda1 [/]: user quotas turned on

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

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

چند راه برای تعیین سهمیه برای کاربران یا گروه ها وجود دارد. در اینجا، نحوه تنظیم سهمیه ها با هر دو دستور edquota و setquota را بررسی خواهید کرد.

استفاده از edquota برای تعیین سهمیه کاربر

از دستور edquota برای ویرایش سهمیه ها استفاده کنید. بیایید سهمیه کاربر سامی نمونه شما را ویرایش کنیم:

sudo edquota -u sammy

گزینه -u مشخص می کند که این سهمیه کاربری است که شما در حال ویرایش آن هستید. اگر می خواهید سهمیه یک گروه را به جای آن ویرایش کنید، از گزینه -g در جای خود استفاده کنید.

با این کار، فایلی در ویرایشگر متن پیش‌فرض شما باز می‌شود، مشابه اینکه crontab -e یک فایل موقت را برای ویرایش شما باز می‌کند. فایل شبیه به این خواهد بود:

Disk quotas for user sammy (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/vda1                        40          0          0         13        0        0

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

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

بیایید کاربر سامی شما را به‌روزرسانی کنیم تا سهمیه بلوکی با محدودیت نرم افزاری 100 مگابایتی و محدودیت سخت 110 مگابایتی داشته باشد:

Disk quotas for user sammy (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/vda1                        40       100M       110M         13        0        0

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

sudo quota -vs sammy

 

Output

Disk quotas for user sammy (uid 1000):
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
      /dev/vda1     40K    100M    110M              13       0       0

این فرمان وضعیت سهمیه فعلی شما را خروجی می دهد و نشان می دهد که سهمیه شما 100M است در حالی که حد شما 110M است. این به ترتیب با محدودیت های نرم و سخت مطابقت دارد.

استفاده از setquota برای تعیین سهمیه کاربر

برخلاف edquota، setquota اطلاعات سهمیه کاربر شما را در یک دستور، بدون مرحله ویرایش تعاملی، به‌روزرسانی می‌کند. شما نام کاربری و محدودیت‌های نرم و سخت را برای سهمیه‌های مبتنی بر بلوک و inode و در نهایت سیستم فایل برای اعمال سهمیه در موارد زیر مشخص خواهید کرد:

sudo setquota -u sammy 200M 220M 0 0 /

دستور بالا محدودیت های سهمیه مبتنی بر بلوک سامی را به 200 مگابایت و 220 مگابایت دوبرابر می کند. 0 0 برای محدودیت های نرم و سخت مبتنی بر inode نشان می دهد که آنها تنظیم نشده باقی می مانند. این مورد نیاز است حتی اگر هیچ سهمیه مبتنی بر inode تنظیم نکنید.

یک بار دیگر از دستور quota برای بررسی کار خود استفاده کنید:

sudo quota -vs sammy

 

Output

Disk quotas for user sammy (uid 1000):
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
      /dev/vda1     40K    200M    220M              13       0       0

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

مرحله 6 – ایجاد گزارش های سهمیه

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

sudo repquota -s /

 

Output

*** Report for user quotas on device /dev/vda1
Block grace time: 7days; Inode grace time: 7days
                        Space limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   1696M      0K      0K          75018     0     0
daemon    --     64K      0K      0K              4     0     0
man       --   1048K      0K      0K             81     0     0
nobody    --   7664K      0K      0K              3     0     0
syslog    --   2376K      0K      0K             12     0     0
sammy     --     40K    200M    220M             13     0     0

در این مثال شما در حال تولید یک گزارش برای فایل سیستم / root هستید. دستور -s به repquota می گوید که در صورت امکان از اعداد قابل خواندن توسط انسان استفاده کند. تعداد کمی از کاربران سیستم لیست شده اند که احتمالاً هیچ سهمیه ای به طور پیش فرض ندارند. سامی کاربر شما با مقادیر استفاده شده و محدودیت های نرم و سخت در پایین لیست شده است.

همچنین به Block grace time: 7days callout و ستون grace توجه کنید. اگر کاربر شما بیش از حد نرمال بود، ستون grace نشان می دهد که چقدر زمان برای بازگشت به زیر محدودیت باقی مانده است.

مرحله 7 – پیکربندی یک دوره مهلت برای بیش از حد

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

sudo setquota -t 864000 864000 /

دستور بالا هر دو زمان grace block و inode را روی 864000 ثانیه یا 10 روز تنظیم می کند. این تنظیم برای همه کاربران اعمال می‌شود و هر دو مقدار باید ارائه شوند حتی اگر از هر دو نوع سهمیه استفاده نمی‌کنید (block در مقابل inode).

توجه داشته باشید که مقادیر باید در ثانیه مشخص شوند.

دوباره repquota را اجرا کنید تا بررسی کنید که آیا تغییرات اعمال شده اند:

sudo repquota -s /

 

Output

Block grace time: 10days; Inode grace time: 10days
. . .

تغییرات باید بلافاصله در خروجی repquota منعکس شود.

نتیجه

در این آموزش شما ابزارهای خط فرمان سهمیه را نصب کردید، تأیید کردید که هسته لینوکس شما می‌تواند سهمیه‌های نظارت را انجام دهد، یک سهمیه مبتنی بر بلوک برای یک کاربر تنظیم کردید، و گزارشی در مورد استفاده از سهمیه سیستم فایل خود ایجاد کردید.

پیوست: پیام های خطای رایج مربوط به سهمیه

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

 

quotaon Output

quotaon: cannot find //aquota.group on /dev/vda1 [/]
quotaon: cannot find //aquota.user on /dev/vda1 [/]

این خطایی است که ممکن است در صورت تلاش برای روشن کردن سهمیه ها (با استفاده از quotaon) قبل از اجرای فرمان quotacheck اولیه، مشاهده کنید. دستور quotacheck فایل های سهمیه یا سهمیه مورد نیاز برای روشن کردن سیستم سهمیه را ایجاد می کند. برای اطلاعات بیشتر به مرحله 4 مراجعه کنید.

 

quotaon Output

quotaon: using //aquota.group on /dev/vda1 [/]: No such process
quotaon: Quota format not supported in kernel.
quotaon: using //aquota.user on /dev/vda1 [/]: No such process
quotaon: Quota format not supported in kernel.

این خطای quotaon به ما می گوید که هسته شما از سهمیه ها پشتیبانی نمی کند، یا حداقل از نسخه صحیح پشتیبانی نمی کند (هر دو نسخه quota_v1 و quota_v2 وجود دارد). این بدان معناست که ماژول های هسته مورد نیاز شما نصب نشده اند یا به درستی بارگذاری نمی شوند. در سرور اوبونتو، محتمل‌ترین دلیل این امر استفاده از یک تصویر نصب شده بر روی یک سرور مجازی مبتنی بر ابر است.

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

اگر این خطا پس از نصب ادامه داشت، مرحله 4 را مرور کنید. مطمئن شوید که یا به درستی از دستورات modprobe استفاده کرده اید، یا اگر این گزینه برای شما مناسب است، سرور خود را راه اندازی مجدد کرده اید.

 

quota Output

quota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //quota.user: No such file or directory

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

 

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/

برچسب‌ها:اتصال به سرور مجازیخرید سرور مجازیخرید سرور مجازی فرانسهخرید سرور مجازی قویدستور edquotaسرور اوبونتو 20.04سرور مجازیلینوکسماژول Quota Kernelنصب Quota Tools

 

  • behnam gol mohamadi
  • ۰
  • ۰

نحوه ایجاد قوانین، جدول زمانی، و موارد از رویدادهای 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
  • ۰
  • ۰

 چگونه سرورهای اوبونتو 20.04 را به روز نگه داریم

ورود به سایت

معرفی

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

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

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

پیش نیازها

یک سرور اوبونتو 20.04 و یک کاربر غیر ریشه با امتیازات sudo.

مرحله 1 – پیروی از بهترین روش ها برای مدیریت برنامه

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

در صورت امکان، برنامه های موجود در پشته شما باید توسط سیستم init سرور شما مدیریت شود، که در اکثر توزیع های لینوکس مدرن از جمله اوبونتو سیستمی است. Systemd دستور systemctl را برای تعامل با سرویس های در حال اجرا و راه اندازی مجدد خودکار آنها در صورت نیاز ارائه می دهد. تقریباً تمام نرم افزارهایی که از طریق مدیریت بسته شما نصب می شوند و برای اجرا در پس زمینه طراحی می شوند، باید به طور خودکار یک سرویس systemd و یک فایل واحد پیکربندی را به عنوان بهترین روش ارائه دهند.

هنگام اجرای نرم افزار خود، یا نرم افزار مستقر شده از مخازن Git، ایده بدی نیست که فایل های واحد خود را برای ادغام با systemd بنویسید. به عنوان یک جایگزین سبک، ممکن است ترجیح دهید از ابزاری مانند سرپرست استفاده کنید. همچنین می‌توانید از زمان‌بندی cron سیستم خود با دستور reboot@ استفاده کنید.

پس از اینکه پیکربندی در جای خود قرار گرفت، مطمئن شوید که آن را از طریق راه اندازی مجدد تست کنید. می‌توانید با اجرای sudo shutdown now -r راه‌اندازی مجدد کنید، که فرآیندهای در حال اجرا شما را کاملاً متوقف می‌کند و بلافاصله راه‌اندازی مجدد می‌شود. همچنین می‌توانید به‌جای زمان کنونی، زمان را به hh:mm یا چند دقیقه از هم‌اکنون تعیین کنید تا در آینده راه‌اندازی مجدد را برنامه‌ریزی کنید. استقرار تولید معمولاً پس از قطعی های برنامه ریزی نشده نیازی به توجه شما ندارد و همه سرویس ها و نقاط پایانی لازم باید به طور خودکار بازیابی شوند.

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

مرحله 2 – پیکربندی ارتقاءهای بدون نظارت

مدیر بسته اوبونتو، apt، دارای یک گردش کار کاملاً ثابت برای انجام یک ارتقاء کامل سیستم است. ابتدا، آپدیت apt را اجرا می‌کنید تا لیست بسته‌های خود را به‌روزرسانی کنید، و سپس، apt upgrade را بدون مشخص کردن بسته‌ای اجرا می‌کنید تا هر بسته در سیستم را ارتقا دهید. اگر با بسته‌های شخص ثالث تداخل نسخه داشته باشید یا اگر عمداً برخی از بسته‌ها را ارتقا نداده‌اید، این گردش کار ممکن است کمی متفاوت باشد، اما دستورات اصلی یکسان هستند.

اوبونتو یک ابزار منحصر به فرد به نام ارتقاهای بدون نظارت را به منظور بازیابی و نصب خودکار وصله های امنیتی و سایر ارتقاءهای ضروری برای سرور شما فراهم می کند. اکثر سرورهای اوبونتو با این ابزار به صورت خودکار نصب و پیکربندی می شوند، اما می توانید آن را با دستورات apt زیر نصب کنید:

sudo apt update
sudo apt install unattended-upgrades

پس از نصب، می توانید بررسی کنید که آیا سرویس ارتقاء بدون نظارت با استفاده از systemctl اجرا می شود:

sudo systemctl status unattended-upgrades.service

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

پیکربندی آن در /etc/apt/apt.conf.d/50unattended-upgrades ذخیره می شود. این فایل را با استفاده از nano یا ویرایشگر متن مورد علاقه خود باز کنید:

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

فایل به خوبی حاشیه نویسی شده است، و می توانید خطوط بسیاری از نظرات کد (با //) را ببینید که عملکرد آن را توضیح می دهند. اولین بلوک پیکربندی، بسته‌هایی را که به‌طور خودکار به‌روزرسانی می‌شوند، بررسی می‌کند و با الگوی نام‌های مخزن بسته اوبونتو مطابقت دارد. فایل‌های موجود در مخزن هسته و مخزن -security به طور پیش‌فرض به‌روزرسانی می‌شوند، اما خطوط حاوی مخازن -updates، -proposed و -backports به‌طور پیش‌فرض نظر داده می‌شوند.

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

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

پس از اتمام ویرایش فایل را ذخیره کرده و ببندید. اگر از nano استفاده می کنید، Ctrl+X را فشار دهید، سپس وقتی از شما خواسته شد، Y و سپس Enter را فشار دهید.

اگر تغییراتی در پیکربندی ایجاد کردید، سرویس ارتقاهای بدون نظارت را مجدداً بارگیری کنید تا اعمال شود:

sudo systemctl reload unattended-upgrades.service

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

مرحله 3 – به روز رسانی و LivePatching هسته

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

هیچ روش جهانی برای زمان بندی خودکار به روز رسانی هسته لینوکس وجود ندارد. این به این دلیل است که به‌روزرسانی‌های هسته از گذشته نیازمند راه‌اندازی مجدد کامل سیستم بوده‌اند و زمان‌بندی راه‌اندازی مجدد بدون ایجاد فرضیاتی در مورد محیط شما غیرممکن است. انتظار می‌رود که بسیاری از سرورها تا حد امکان در دسترس بودن 24 ساعته و 7 روز هفته را ارائه دهند و راه‌اندازی مجدد می‌تواند مدت زمان نامعلومی طول بکشد یا نیاز به مداخله دستی داشته باشد.

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

فعال کردن Livepatch برای اطمینان از Uptime سرور در طول به روز رسانی هسته

برای جلوگیری از خرابی در هنگام ارتقای هسته، می توانید از ویژگی هسته لینوکس به نام وصله زنده استفاده کنید. این ویژگی امکان پیاده سازی به روز رسانی هسته را بدون راه اندازی مجدد می دهد. دو نگهدارنده اصلی برای وصله‌های زنده هسته وجود دارد: Canonical، که سرویس Livepatch خود را برای اوبونتو ارائه می‌کند، و KernelCare که اوبونتو را علاوه بر سایر توزیع‌های اصلی لینوکس پشتیبانی می‌کند. هر دو برای استفاده نیاز به ثبت نام دارند و فقط سرویس Canonical برای استفاده فردی رایگان است.

می توانید برای یک کلید Livepatch در https://auth.livepatch.canonical.com/ ثبت نام کنید. پس از ثبت نام، می توانید بسته snap canonical-livepatch را نصب کنید. Snap یکی دیگر از مدیریت بسته های اوبونتو است که در کنار apt اجرا می شود.

sudo snap install canonical-livepatch

می‌توانید با استفاده از کلید وب‌سایت آن‌ها، با فرمان یک خطی، canonical-livepatch را فعال کنید:

sudo canonical-livepatch enable your-key

خروجی باید حاوی پیام Successfully enabled device باشد. این سرویس باید از این پس بدون هیچ گونه مداخله دیگری در پس زمینه اجرا شود و می توانید وضعیت آن را با استفاده از وضعیت canonical-livepatch بررسی کنید:

sudo canonical-livepatch status

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

نتیجه

در این آموزش، چندین استراتژی را برای به روز نگه داشتن سرورهای اوبونتو به طور خودکار بررسی کردید. همچنین برخی از تفاوت های ظریف مخازن بسته، به روز رسانی هسته و مدیریت راه اندازی مجدد سرور را یاد گرفتید. همه اینها اصول مهم DevOps و کار با سرورها به طور گسترده تر هستند و تقریباً تمام پیکربندی های تولید بر اساس این مفاهیم اصلی هستند.

 

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/

برچسب‌ها:LivePatching هستهاتصال به سرور مجازیبه روز رسانی سرورخرید سرور مجازیراه اندازی سرورسرور مجازیسرورهای اوبونتو 20.04فعال کردن Livepatch

 

  • behnam gol mohamadi
  • ۰
  • ۰

نحوه استفاده از MongoDB در یک برنامه Flask

ورود به سایت

معرفی

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

Flask یک چارچوب وب سبک وزن پایتون است که ابزارها و ویژگی های مفیدی را برای ایجاد برنامه های کاربردی وب در زبان پایتون ارائه می دهد. MongoDB یک برنامه پایگاه داده NoSQL برای همه منظوره، سند محور است که از اسناد JSON مانند برای ذخیره داده ها استفاده می کند. برخلاف روابط جدولی که در پایگاه‌های اطلاعاتی رابطه‌ای استفاده می‌شود، اسناد JSON مانند امکان ایجاد طرح‌واره‌های انعطاف‌پذیر و پویا را در عین سادگی حفظ می‌کنند. به طور کلی، پایگاه های داده NoSQL توانایی مقیاس افقی را دارند که آنها را برای داده های بزرگ و برنامه های بلادرنگ مناسب می کند.

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

پیش نیازها

  • یک محیط برنامه نویسی محلی Python 3، آموزش توزیع خود را در نحوه نصب و راه اندازی یک محیط برنامه نویسی محلی برای سری Python 3 دنبال کنید. در این آموزش ما دایرکتوری پروژه خود را flask_app می نامیم.
  • MongoDB روی دستگاه محلی شما نصب شده است. راهنمای نحوه نصب MongoDB در اوبونتو 20.04 را برای تنظیم پایگاه داده MongoDB خود دنبال کنید.
  • درک مفاهیم پایه فلاسک، مانند مسیرها، توابع مشاهده، و الگوها. اگر با Flask آشنایی ندارید، نحوه ایجاد اولین برنامه وب خود با استفاده از Flask و Python و نحوه استفاده از الگوها در یک برنامه Flask را بررسی کنید.
  • درک مفاهیم اولیه HTML برای آگاهی از پیشینه، می‌توانید مجموعه آموزش نحوه ساخت یک وب‌سایت با HTML را مرور کنید.

مرحله 1 – راه اندازی PyMongo و Flask

در این مرحله Flask و کتابخانه PyMongo را نصب خواهید کرد.

با فعال شدن محیط مجازی، از pip برای نصب Flask و PyMongo استفاده کنید:

pip install Flask pymongo

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

 

Output

Successfully installed Flask-2.0.2 Jinja2-3.0.3 MarkupSafe-2.0.1 Werkzeug-2.0.2 click-8.0.3 itsdangerous-2.0.1 pymongo-4.0.1

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

مرحله 2 – اتصال به سرور MongoDB و ایجاد یک مجموعه

در این مرحله، از کتابخانه PyMongo برای ایجاد یک کلاینت استفاده می‌کنید که از آن برای تعامل با سرور MongoDB، ایجاد یک پایگاه داده، و سپس ایجاد مجموعه‌ای برای ذخیره کارهای خود استفاده می‌کنید.

با فعال بودن محیط برنامه نویسی خود، فایلی به نام app.py را برای ویرایش در پوشه flask_app خود باز کنید:

nano app.py

این فایل کلاس و راهنماهای لازم را از Flask و کتابخانه PyMongo وارد می کند. شما با سرور MongoDB خود برای ایجاد یک پایگاه داده و ایجاد مجموعه ای برای کارها تعامل خواهید داشت. کد زیر را به app.py اضافه کنید:

flask_app/app.py

from flask import Flask
from pymongo import MongoClient

app = Flask(__name__)

client = MongoClient('localhost', 27017)

db = client.flask_db
todos = db.todos

ذخیره کنید و فایل را ببندید.

در اینجا شما کلاس Flask را وارد می کنید، که از آن برای ایجاد یک نمونه برنامه کاربردی Flask به نام app استفاده می کنید.

شما MongoClient را وارد می کنید که از آن برای ایجاد یک شی کلاینت برای نمونه MongoDB به نام کلاینت استفاده می کنید، که به شما امکان می دهد با سرور MongoDB خود ارتباط برقرار کنید و با آن تعامل داشته باشید. وقتی MongoClient را نمونه‌سازی می‌کنید، آن را به میزبان سرور MongoDB خود، که در مورد ما localhost است، و پورت را که در اینجا 27017 است، منتقل می‌کنید.

سپس از نمونه مشتری برای ایجاد یک پایگاه داده MongoDB به نام flask_db استفاده می کنید و یک مرجع به آن را در متغیری به نام db ذخیره می کنید.

سپس مجموعه ای به نام todos در پایگاه داده flask_db با استفاده از متغیر db ایجاد می کنید. مجموعه ها گروهی از اسناد را در MongoDB ذخیره می کنند، مانند جداول در پایگاه های داده رابطه ای.

در MongoDB، پایگاه داده ها و مجموعه ها با تنبلی ایجاد می شوند. این به این معنی است که حتی اگر فایل app.py را اجرا کنید، تا زمانی که اولین سند ایجاد نشود، هیچ یک از کدهای مربوط به پایگاه داده اجرا نخواهد شد. شما یک برنامه کوچک Flask با صفحه ای ایجاد خواهید کرد که به کاربران اجازه می دهد در مرحله بعد اسناد todo را در مجموعه کارهای شما وارد کنند. هنگامی که اولین سند todo اضافه شد، پایگاه داده flask_db و مجموعه todos در سرور MongoDB شما ایجاد می شود.

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

mongo

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

show dbs

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

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

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

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

با فعال بودن محیط برنامه نویسی، فایل app.py خود را برای ویرایش باز کنید:

nano app.py

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

flask_app/app.py

from flask import Flask, render_template, request, url_for, redirect
from pymongo import MongoClient

# ...

در اینجا، تابع render_template() کمکی را که برای رندر یک قالب HTML استفاده می کنید، شی درخواست برای دسترسی به داده هایی که کاربر ارسال می کند، تابع url_for() برای تولید URL و تابع redirect() برای تغییر مسیر کاربر وارد می کنید. پس از افزودن یک کار به صفحه فهرست بازگردید.

سپس مسیر زیر را در انتهای فایل اضافه کنید:

flask_app/app.py

# ...


@app.route('/', methods=('GET', 'POST'))
def index():
    return render_template('index.html')

ذخیره کنید و فایل را ببندید.

در این مسیر، تاپل (“GET”، “POST”) را به پارامتر متد ارسال می کنید تا درخواست های GET و POST را مجاز کنید. درخواست های GET برای بازیابی داده ها از سرور استفاده می شود. درخواست های POST برای ارسال داده ها به یک مسیر خاص استفاده می شود. به طور پیش فرض، فقط درخواست های GET مجاز هستند. هنگامی که کاربر برای اولین بار مسیر / را با استفاده از یک درخواست GET درخواست می کند، یک فایل الگو به نام index.html ارائه می شود. شما بعداً این مسیر را برای رسیدگی به درخواست‌های POST برای زمانی که کاربران فرم وب را برای ایجاد کارهای جدید پر کرده و ارسال می‌کنند، ویرایش خواهید کرد.

سپس یک پوشه templates در پوشه flask_app خود و الگوی index.html که در مسیر قبلی به آن اشاره کردید ایجاد کنید:

mkdir templates
nano templates/index.html

کد زیر را داخل فایل index.html اضافه کنید:

flask_app/templates/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>FlaskApp</title>
    <style>
        .todo {
            padding: 20px;
            margin: 10px;
            background-color: #eee;
        }
    </style>
</head>
<body>
    <h1>FlaskTODO</h1>
    <hr>
    <div class="content">
    <form method="post">
        <p>
            <b><label for="content">Todo content</label></b>
        </p>
        <p>
            <input type="text" name="content"
                placeholder="Todo Content"></input>
        </p>

        <p>
            <b><label for="degree">Degree</label></b>
        </p>
        <p>
            <input id="degree-0" name="degree" required type="radio" value="Important">
            <label for="degree-0">Important</label>
        </p>
        <p>
            <input id="degree-1" name="degree" required type="radio" value="Unimportant">
            <label for="degree-1">Unimportant</label>
        </p>
        <button type="submit">Submit</button>
    </form>
    </div>
</body>
</html>

ذخیره کنید و فایل را ببندید.

در اینجا شما یک صفحه اصلی HTML با عنوان، چند سبک، عنوان و یک فرم وب دارید. در فرم وب، ویژگی متد را برای ارسال نشان می دهید که فرم درخواست POST ارسال می کند. شما یک فیلد ورودی متنی برای محتوای todo با محتوای نام دارید که برای دسترسی به داده های عنوان در مسیر / از آن استفاده می کنید. شما همچنین دو دکمه رادیویی HTML با درجه نام دارید که به کاربر امکان می‌دهد درجه اهمیت هر مورد را مشخص کند: آنها می‌توانند گزینه مهم یا گزینه غیرممکن را هنگام ایجاد کار انتخاب کنند. در آخر، شما یک دکمه ارسال در انتهای فرم دارید.

در حالی که در دایرکتوری flask_app خود با محیط مجازی فعال هستید، با استفاده از متغیر محیطی FLASK_APP به Flask در مورد برنامه (در این مورد app.py) بگویید. سپس متغیر محیطی FLASK_ENV را روی توسعه تنظیم کنید تا برنامه در حالت توسعه اجرا شود و به دیباگر دسترسی پیدا کنید. برای اطلاعات بیشتر در مورد اشکال زدا Flask، به نحوه رسیدگی به خطاها در یک برنامه فلاسک مراجعه کنید. برای این کار از دستورات زیر استفاده کنید:

export FLASK_APP=app
export FLASK_ENV=development

بعد، برنامه را اجرا کنید:

flask run

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

http://127.0.0.1:5000/

صفحه فهرست را با یک فیلد ورودی برای محتوای todo، دو دکمه رادیویی برای درجه اهمیت و یک دکمه ارسال خواهید دید.

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

اگر فرم را پر کنید و ارسال کنید، با ارسال یک درخواست POST به سرور، هیچ اتفاقی نمی افتد زیرا شما درخواست های POST را در مسیر / رسیدگی نکرده اید.

سرور را در حال اجرا بگذارید و یک پنجره ترمینال جدید باز کنید.

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

nano app.py

مسیر / را به شکل زیر ویرایش کنید:

flask_app/app.py

@app.route('/', methods=('GET', 'POST'))
def index():
    if request.method=='POST':
        content = request.form['content']
        degree = request.form['degree']
        todos.insert_one({'content': content, 'degree': degree})
        return redirect(url_for('index'))

    all_todos = todos.find()
    return render_template('index.html', todos=all_todos)

ذخیره کنید و فایل را ببندید.

در این تغییرات، شما درخواست های POST را در داخل شرط if request.method == ‘POST’ مدیریت می کنید. شما محتوای todo و درجه اهمیتی که کاربر ارسال می کند را از شی request.form استخراج می کنید.

شما از متد insert_one() در مجموعه todos برای اضافه کردن یک سند todo به آن استفاده می کنید. شما داده‌های todo را در فرهنگ لغت پایتون ارائه می‌دهید، «محتوا» را روی مقداری که کاربر در قسمت متن برای محتوای todo ارسال کرده است، تنظیم می‌کنید و کلید «درجه» را روی مقدار دکمه رادیویی که کاربر انتخاب می‌کند، تنظیم می‌کنید. سپس به صفحه فهرست هدایت می‌شوید، که صفحه را تازه می‌کند و آیتم جدید اضافه شده را نمایش می‌دهد.

برای نمایش تمام کارهای ذخیره شده، از متد find() خارج از کدی که مسئول رسیدگی به درخواست‌های POST است استفاده می‌کنید، که تمام اسناد todo موجود در مجموعه todos را برمی‌گرداند. کارهایی را که از پایگاه داده دریافت می کنید در متغیری به نام all_todos ذخیره می کنید و سپس فراخوانی تابع render_template() را ویرایش می کنید تا لیست اسناد todo را به قالب index.html منتقل کنید، که در قالب در متغیری به نام موجود خواهد بود. کارها

اگر صفحه فهرست را بازخوانی کنید، ممکن است پیامی از مرورگر دریافت کنید که از شما می خواهد ارسال مجدد فرم را تأیید کنید. اگر بپذیرید، مورد todo که قبلاً قبل از رسیدگی به درخواست‌های POST ارسال کرده‌اید، سپس به پایگاه داده اضافه می‌شود، زیرا کد رسیدگی به فرم‌ها اکنون در مسیر وجود دارد.

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

use flask_db

سپس از تابع find() برای دریافت همه موارد todo در پایگاه داده استفاده کنید:

db.todos.find()

اگر داده‌ای دوباره ارسال شد، آن را اینجا در خروجی خود خواهید دید.

سپس، قالب index.html را باز کنید تا محتویات لیست کارهایی که به آن ارسال کرده اید نمایش داده شود:

nano templates/index.html

فایل را با اضافه کردن یک شکست <hr> و یک حلقه Jinja برای بعد از فرم ویرایش کنید، به طوری که فایل به شکل زیر باشد:

flask_app/templates/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>FlaskApp</title>
    <style>
        .todo {
            padding: 20px;
            margin: 10px;
            background-color: #eee;
        }
    </style>
</head>
<body>
    <h1>FlaskTODO</h1>
    <hr>
    <div class="content">
    <form method="post">
        <p>
            <b><label for="content">Todo content</label></b>
        </p>
        <p>
            <input type="text" name="content"
                placeholder="Todo Content"></input>
        </p>

        <p>
            <b><label for="degree">Degree</label></b>
        </p>
        <p>
            <input id="degree-0" name="degree" required type="radio" value="Important">
            <label for="degree-0">Important</label>
        </p>
        <p>
            <input id="degree-1" name="degree" required type="radio" value="Unimportant">
            <label for="degree-1">Unimportant</label>
        </p>
        <button type="submit">Submit</button>
    </form>
    <hr>
    {% for todo in todos %}
        <div class="todo">
            <p>{{ todo['content'] }} <i>({{ todo['degree']}})</i></p>
        </div>
    {% endfor %}

    </div>
</body>
</html>

ذخیره کنید و فایل را ببندید.

در این فایل، یک تگ <hr> اضافه می‌کنید تا فرم وب و لیست کارها را جدا کنید.

شما از یک حلقه for در خط {% for todo in todos %} برای عبور از هر مورد در لیست کارها استفاده می کنید. شما محتوای todo و درجه اهمیت را در یک تگ <p> نمایش می دهید.

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

مرحله 4 – حذف Todos

در این مرحله، مسیری را اضافه می‌کنید که به کاربران اجازه می‌دهد تا با استفاده از یک دکمه، کارها را حذف کنند.

ابتدا، یک مسیر /id/delete جدید اضافه می‌کنید که درخواست‌های POST را می‌پذیرد. تابع view delete() جدید شما شناسه کاری را که باید از URL حذف شود دریافت می کند، سپس از آن شناسه برای حذف آن استفاده کنید.

برای حذف یک todo، شناسه آن را به عنوان یک رشته دریافت می‌کنید و باید قبل از ارسال آن به روش حذف مجموعه، آن را به ObjectId تبدیل کنید. بنابراین باید کلاس ObjectId() را از ماژول bson وارد کنید، که کدگذاری و رمزگشایی BSON (Binary JSON) را مدیریت می کند.

برای ویرایش app.py را باز کنید:

nano app.py

ابتدا وارد کردن زیر را در بالای فایل اضافه کنید:

flask_app/app.py

from bson.objectid import ObjectId

# ...

این کلاس ObjectId() است که از آن برای تبدیل شناسه رشته ها به اشیاء ObjectId استفاده می کنید.

سپس مسیر زیر را در پایان اضافه کنید:

flask_app/app.py

# ...


@app.post('/<id>/delete/')
def delete(id):
    todos.delete_one({"_id": ObjectId(id)})
    return redirect(url_for('index'))

ذخیره کنید و فایل را ببندید.

در اینجا، به جای استفاده از دکوراتور معمولی app.route، از دکوراتور app.post معرفی شده در Flask نسخه 2.0.0 استفاده می کنید که میانبرهایی را برای روش های رایج HTTP اضافه می کند. برای مثال، @app.post(“/login”) یک میانبر برای @app.route(“/login”، method=[“POST”]) است. این بدان معناست که این تابع view فقط درخواست‌های POST را می‌پذیرد، و پیمایش به مسیر /ID/delete در مرورگر شما، خطای 405 Method Not Allowed را برمی‌گرداند، زیرا مرورگرهای وب به‌طور پیش‌فرض درخواست‌های GET را دارند. برای حذف یک todo، کاربر روی دکمه ای کلیک می کند که درخواست POST را به این مسیر ارسال می کند.

تابع شناسه سند کاری را که باید حذف شود دریافت می کند. شما این شناسه را به متد ()delete_one در مجموعه todos ارسال می‌کنید و شناسه رشته‌ای را که دریافت می‌کنید با استفاده از کلاس ObjectId() که قبلاً وارد کرده‌اید به ObjectId تبدیل می‌کنید.

پس از حذف سند todo، کاربر را به صفحه فهرست هدایت می کنید.

سپس، قالب index.html را ویرایش کنید تا دکمه Delete Todo اضافه شود:

nano templates/index.html

حلقه for را با افزودن یک تگ <form> جدید ویرایش کنید:

flask_app/templates/index.html

    {% for todo in todos %}
        <div class="todo">
            <p>{{ todo['content'] }} <i>({{ todo['degree']}})</i></p>
            <form method="POST" action="{{ url_for('delete', id=todo['_id']) }}" >
                <input type="submit" value="Delete Todo"
                       onclick="return confirm('Are you sure you want to delete this entry?')">
            </form>
        </div>
    {% endfor %}

ذخیره کنید و فایل را ببندید.

در اینجا، یک فرم وب دارید که یک درخواست POST را به تابع view delete() ارسال می کند. شما به todo[‘_id’] منتقل می‌کنید تا کاری را که حذف می‌شود، مشخص کنید. شما از متد ()firm موجود در مرورگرهای وب برای نمایش پیام تایید قبل از ارسال درخواست استفاده می کنید.

اکنون صفحه فهرست خود را بازخوانی کنید و دکمه Delete Todo را در زیر هر مورد انجام دهید. روی آن کلیک کنید و حذف را تایید کنید. شما به صفحه فهرست هدایت می شوید و کار دیگر در آنجا وجود نخواهد داشت.

اکنون راهی برای حذف کارهای ناخواسته از پایگاه داده mongoDB خود در برنامه Flask خود دارید.

برای تایید حذف، پوسته مونگو خود را باز کنید و از تابع find() استفاده کنید:

db.todos.find()

باید ببینید که مواردی که حذف کرده اید دیگر در مجموعه کارهای شما نیستند.

نتیجه

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

 

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/

برچسب‌ها:اتصال به سرور MongoDBاتصال به سرور مجازیبرنامه Flaskبرنامه های کاربردی وبپایتونحذف Todosخرید سرور مجازیخرید سرور مجازی قویراه اندازی PyMongoسرور مجازینحوه استفاده از MongoDB

  • behnam gol mohamadi
  • ۰
  • ۰

نحوه ایجاد یک سرور Minecraft در اوبونتو 18.04

ورود به سایت

معرفی

Minecraft یک بازی ویدیویی محبوب sandbox است. این برنامه که در ابتدا در سال 2009 منتشر شد، به بازیکنان اجازه می‌دهد در دنیایی سه بعدی بسازند، بسازند، بسازند و زنده بمانند. از اوایل سال 2022، این بازی پرفروش ترین بازی ویدیویی تمام دوران بود. در این آموزش شما سرور Minecraft خود را ایجاد می کنید تا شما و دوستانتان با هم بازی کنید. به طور خاص، شما بسته های نرم افزاری لازم را برای اجرای Minecraft نصب می کنید، سرور را برای اجرا پیکربندی می کنید و سپس بازی را اجرا می کنید.

متناوبا، می‌توانید سرور DigitalOcean’s One-Click Minecraft: Java Edition را به‌عنوان مسیر نصب دیگری بررسی کنید.

پیش نیازها

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

  • یک سرور با نصب جدید اوبونتو 18.04، یک کاربر غیر ریشه با امتیازات sudo و SSH فعال. شما می توانید این راهنما را برای مقداردهی اولیه سرور خود دنبال کنید و این مراحل را کامل کنید. Minecraft می تواند منابع فشرده ای داشته باشد، بنابراین هنگام انتخاب اندازه سرور خود این را در نظر داشته باشید. اگر از DigitalOcean استفاده می کنید و به منابع بیشتری نیاز دارید، همیشه می توانید اندازه Droplet خود را تغییر دهید تا CPU و RAM بیشتری اضافه کنید.
  • یک کپی از Minecraft Java Edition که روی یک دستگاه Mac، Windows یا Linux محلی نصب شده است.

مرحله 1 – بسته های نرم افزاری لازم را نصب کرده و فایروال را پیکربندی کنید

با شروع اولیه سرور، اولین قدم شما نصب جاوا است. برای اجرای Minecraft به آن نیاز دارید. به طور پیش‌فرض، اوبونتو 18.04 نسخه جدید جاوا را برای اجرای جدیدترین نسخه‌های Minecraft ارائه نمی‌کند. خوشبختانه، نگهبانان شخص ثالثی وجود دارند که به ساخت بسته‌های جاوای جدیدتر برای نسخه‌های قدیمی‌تر اوبونتو ادامه می‌دهند و می‌توانید با افزودن PPA یا آرشیو بسته‌های شخصی آن‌ها به فهرست منابع بسته خود، آن‌ها را نصب کنید. با دستور زیر می توانید این کار را انجام دهید:

sudo add-apt-repository ppa:openjdk-r/ppa

سپس، منابع بسته خود را به‌روزرسانی کنید تا این افزوده را منعکس کند:

sudo apt update

در نهایت، OpenJDK نسخه 17 جاوا، به طور خاص JRE هدلس را نصب کنید. این نسخه حداقلی از جاوا است که پشتیبانی از برنامه های رابط کاربری گرافیکی را حذف می کند. این آن را برای اجرای برنامه های جاوا بر روی سرور ایده آل می کند:

sudo apt install openjdk-17-jre-headless

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

sudo apt install screen

اکنون که بسته‌ها را نصب کرده‌اید، باید فایروال را فعال کنیم تا ترافیک به سرور Minecraft ما وارد شود. در راه اندازی اولیه سرور که انجام دادید، فقط به ترافیک ssh اجازه دادید. اکنون باید اجازه دهید که ترافیک از طریق پورت 25565 وارد شود، که پورت پیش فرضی است که Minecraft برای اجازه دادن به اتصالات استفاده می کند. در برخی موارد ufw از قوانین ترافیکی نام‌گذاری شده استفاده می‌کند، مانند ssh، که همیشه به طور پیش‌فرض از پورت 22 استفاده می‌کند، اما در موارد کمتر رایج مانند این، شماره پورت را به صورت دستی مشخص می‌کنیم. با اجرای دستور زیر قانون فایروال لازم را اضافه کنید:

sudo ufw allow 25565

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

مرحله 2 – دانلود آخرین نسخه Minecraft

اکنون باید نسخه فعلی سرور Minecraft را دانلود کنید. می‌توانید این کار را با رفتن به وب‌سایت Minecraft و کپی کردن پیوندی که می‌گوید دانلود minecraft_server.X.X.X.jar انجام دهید، جایی که Xها آخرین نسخه سرور هستند.

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

wget https://launcher.mojang.com/v1/objects/125e5adf40c659fd3bce3e66e67a16bb49ecc1b9/server.jar

برنامه سرور به عنوان server.jar دانلود می شود. اگر نیاز به مدیریت نسخه‌های Minecraft دارید، یا اگر می‌خواهید سرور Minecraft خود را ارتقا دهید، ممکن است مفید باشد که server.jar دانلود شده را به minecraft_server_1.18.1.jar تغییر نام دهید و اعداد نسخه برجسته شده را با نسخه‌ای که تازه دانلود کرده‌اید مطابقت دهید:

mv server.jar minecraft_server_1.18.1.jar

اگر می‌خواهید نسخه قدیمی‌تر Minecraft را دانلود کنید، می‌توانید آن‌ها را در mcversions.net بایگانی کنید. اما این آموزش بر آخرین نسخه فعلی تمرکز خواهد کرد. اکنون که دانلود خود را دارید، بیایید پیکربندی سرور Minecraft خود را شروع کنیم.

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

اکنون که jar Minecraft را دانلود کرده اید، آماده اجرای آن هستید.

ابتدا یک جلسه صفحه نمایش را با اجرای دستور screen شروع کنید:

screen

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

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

java -Xms1024M -Xmx1024M -jar minecraft_server_1.18.1.jar nogui

قبل از بررسی خروجی این دستور، بیایید نگاهی دقیق‌تر به همه این آرگومان‌های خط فرمان که سرور شما را تنظیم می‌کنند بیاندازیم:

  • Xms1024M – این سرور را به گونه ای پیکربندی می کند که با 1024 مگابایت یا 1 گیگابایت رم در حال اجرا باشد. اگر می خواهید سرور شما با رم بیشتری شروع به کار کند، می توانید این محدودیت را افزایش دهید. هر دو M برای مگابایت و G برای گیگابایت گزینه های پشتیبانی می شوند. به عنوان مثال: Xms2G سرور را با 2 گیگابایت رم راه اندازی می کند.
  • Xmx1024M – این سرور را برای استفاده حداکثر از 1024M رم پیکربندی می کند. اگر می‌خواهید سرورتان در اندازه بزرگ‌تری اجرا شود، بازیکنان بیشتری را مجاز کنید، یا اگر احساس می‌کنید که سرورتان کند کار می‌کند، می‌توانید این محدودیت را افزایش دهید. برنامه های جاوا از این جهت منحصر به فرد هستند که همیشه از شما می خواهند حداکثر مقدار حافظه ای که می توانند استفاده کنند را مشخص کنید.
  • jar – این پرچم مشخص می کند که کدام فایل jar سرور اجرا شود.
  • nogui – این به سرور می گوید که رابط کاربری گرافیکی را راه اندازی نکند زیرا این یک سرور است و شما یک رابط کاربری گرافیکی ندارید.

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

 

Output

[22:05:31] [22:05:31] [main/ERROR]: Failed to load properties from file: server.properties
[22:05:31] [main/WARN]: Failed to load eula.txt
[22:05:31] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

این خطاها به این دلیل ایجاد شده‌اند که سرور نمی‌تواند دو فایل لازم برای اجرا را پیدا کند: EULA (توافقنامه مجوز کاربر نهایی) که در eula.txt یافت می‌شود و فایل پیکربندی server.properties. از آنجایی که سرور قادر به یافتن این فایل ها نبود، آنها را در فهرست کاری فعلی شما ایجاد کرد. Minecraft این کار را عمدا انجام می دهد تا مطمئن شود که EULA آن را خوانده اید و با آن موافقت کرده اید.

eula.txt را در nano یا ویرایشگر متن مورد علاقه خود باز کنید:

nano eula.txt

در داخل این فایل، پیوندی به EULA Minecraft مشاهده خواهید کرد. URL را کپی کنید:

~/eula.txt

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Tue Mar 24 22:05:31 UTC 2020
eula=false

URL را در مرورگر وب خود باز کنید و توافق نامه را بخوانید. سپس به ویرایشگر متن خود برگردید و آخرین خط را در eula.txt پیدا کنید. در اینجا eula=false را به eula=true تغییر دهید. سپس فایل را ذخیره کرده و ببندید. در نانو، این به این معنی است که Ctrl+X را برای خروج فشار دهید، سپس وقتی از شما خواسته شد ذخیره کنید، Y و سپس Enter کنید.

اکنون که EULA را پذیرفته اید، می توانید سرور را مطابق با مشخصات خود پیکربندی کنید.

در دایرکتوری فعلی خود، فایل server.properties ایجاد شده جدید را نیز خواهید یافت. این فایل شامل تمامی گزینه های پیکربندی سرور Minecraft شما می باشد. می‌توانید فهرست دقیقی از تمام ویژگی‌های سرور را در ویکی رسمی Minecraft پیدا کنید. قبل از راه اندازی سرور باید این فایل را با تنظیمات دلخواه خود تغییر دهید. این آموزش برخی از تنظیمات اساسی را پوشش می دهد:

nano server.properties

فایل شما به شکل زیر ظاهر می شود:

~/server.properties

#Minecraft server properties
#Thu Apr 30 23:42:29 UTC 2020
spawn-protection=16
max-tick-time=60000
query.port=25565
generator-settings=
force-gamemode=false
allow-nether=true
enforce-whitelist=false
gamemode=survival
broadcast-console-to-ops=true
enable-query=false
player-idle-timeout=0
difficulty=easy
spawn-monsters=true
broadcast-rcon-to-ops=true
op-permission-level=4
pvp=true
snooper-enabled=true
level-type=default
hardcore=false
enable-command-block=false
max-players=20
network-compression-threshold=256
resource-pack-sha1=
max-world-size=29999984
function-permission-level=2
rcon.port=25575
server-port=25565
server-ip=
spawn-npcs=true
allow-flight=false
level-name=world
view-distance=10
resource-pack=
spawn-animals=true
white-list=false
rcon.password=
generate-structures=true
online-mode=true
max-build-height=256
level-seed=
prevent-proxy-connections=false
use-native-transport=true
motd=A Minecraft Server
enable-rcon=false

بیایید نگاهی دقیق تر به برخی از مهم ترین ویژگی های این لیست بیندازیم:

دشواری (پیش‌فرض آسان) – این میزان سختی بازی را تعیین می‌کند، مانند میزان آسیب وارد شده و چگونگی تأثیر عناصر بر بازیکن شما. گزینه ها صلح آمیز، آسان، عادی و سخت هستند.
حالت بازی (بقای پیش فرض) – این حالت گیم پلی را تنظیم می کند. گزینه ها بقا، خلاقیت، ماجراجویی و تماشاگر هستند.
level-name (دنیای پیش فرض) – این نام سرور شما را تعیین می کند که در مشتری ظاهر می شود. ممکن است لازم باشد قبل از کاراکترهای خاص مانند آپوستروف، علامت معکوس وجود داشته باشد. شناخته شده است که این کاراکترهای فرار است، و زمانی که کاراکترهای خاص ممکن است به درستی در زمینه تجزیه و تحلیل نشوند، معمول است.
motd (سرور پیش فرض یک Minecraft) – پیامی که در لیست سرور مشتری Minecraft نمایش داده می شود.
pvp (پیش‌فرض درست) – نبرد بازیکن در مقابل بازیکن را فعال می‌کند. اگر روی true تنظیم شود، بازیکنان می‌توانند وارد جنگ شوند و به یکدیگر آسیب برسانند.
پس از تنظیم گزینه های مورد نظر، فایل را ذخیره کرده و ببندید.

اکنون می توانید سرور خود را با موفقیت راه اندازی کنید.

مانند دفعه قبل، بیایید سرور خود را با 1024M RAM راه اندازی کنیم. این بار، همچنین باید به Minecraft این امکان را بدهید که در صورت لزوم تا 4G از رم استفاده کند. به یاد داشته باشید که می توانید این شماره را متناسب با محدودیت های سرور یا نیازهای کاربر خود تنظیم کنید:

java -Xms1024M -Xmx4G -jar minecraft_server_1.18.1.jar nogui

چند لحظه به مقدار دهی اولیه بدهید. به زودی سرور Minecraft جدید شما شروع به تولید خروجی مشابه این خواهد کرد:

 

Output

[21:08:14] [Server thread/INFO]: Starting minecraft server version 1.15.2
[21:08:14] [Server thread/INFO]: Loading properties
[21:08:14] [Server thread/INFO]: Default game type: SURVIVAL
[21:08:14] [Server thread/INFO]: Generating keypair
[21:08:15] [Server thread/INFO]: Starting minecraft server on *:25565

پس از راه اندازی سرور، خروجی زیر را مشاهده خواهید کرد:

 

Output

[21:15:37] [Server thread/INFO]: Done (30.762s)! For help, type "help"

سرور شما اکنون در حال اجرا است و کنترل پنل مدیر سرور به شما نمایش داده شده است. راهنمای تایپ کردن را امتحان کنید:

help

خروجی به شکل زیر ظاهر می شود:

 

Output

[21:15:37] [Server thread/INFO]: /advancement (grant|revoke)
[21:15:37] [Server thread/INFO]: /ban <targets> [<reason>]
[21:15:37] [Server thread/INFO]: /ban-ip <target> [<reason>]
[21:15:37] [Server thread/INFO]: /banlist [ips|players]
...

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

مرحله 4 – نگه داشتن سرور در حال اجرا

اکنون که سرور خود را روشن کرده اید، می خواهید حتی پس از قطع اتصال از جلسه SSH، همچنان در حال اجرا باشد. از آنجایی که قبلاً از صفحه استفاده کرده اید، می توانید با فشار دادن Ctrl + A + D از این جلسه جدا شوید. باید ببینید که به پوسته اصلی خود برگشته اید:

 

Output

​​ubuntu@minecraft-1804:~$ screen
[detached from 3626.pts-0.minecraft-1804]
$

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

screen -list

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

 

Output

There is a screen on:
        3626.pts-0.minecraft-1804 (11/16/21 22:56:33) (Detached)
1 Socket in /run/screen/S-root.

برای از سرگیری جلسه خود، پرچم -r را به فرمان صفحه ارسال کنید و سپس شناسه جلسه خود را وارد کنید:

screen -r 3626

وقتی دوباره آماده خروج از ترمینال شدید، حتما با Ctrl + A + D از جلسه جدا شده و سپس از سیستم خارج شوید.

مرحله 5 – اتصال به سرور خود از مشتری Minecraft

اکنون که سرور شما راه اندازی شده است، بیایید از طریق مشتری Minecraft به آن متصل شویم. سپس می توانید بازی کنید!

نسخه Minecraft Java Edition خود را اجرا کنید و Multiplayer را در منو انتخاب کنید.

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

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

هنگامی که نام سرور و آدرس IP خود را وارد کردید، به صفحه Multiplayer بازگردانده می شوید، جایی که سرور شما اکنون لیست می شود.

از این پس سرور شما همیشه در این لیست ظاهر می شود. آن را انتخاب کرده و روی Join Server کلیک کنید.

شما در سرور خود هستید و آماده بازی هستید!

نتیجه

شما اکنون یک سرور Minecraft دارید که روی اوبونتو 18.04 اجرا می شود تا شما و همه دوستانتان با آن بازی کنید! از کاوش، کاردستی و زنده ماندن در یک دنیای خام سه بعدی لذت ببرید.

 

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/

برچسب‌ها:Minecraft نصباتصال به سرور مجازیاوبونتو 18.04ایجاد یک سرور Minecraftخرید سرور مجازیسرور Minecraftسرور مجازیسرور مجازی آمریکاسرور مجازی لهستان

  • behnam gol mohamadi
  • ۰
  • ۰

نحوه ایجاد یک سرور Minecraft در اوبونتو 18.04

  ورود به سایت

معرفی

Minecraft یک بازی ویدیویی محبوب sandbox است. این برنامه که در ابتدا در سال 2009 منتشر شد، به بازیکنان اجازه می‌دهد در دنیایی سه بعدی بسازند، بسازند، بسازند و زنده بمانند. از اوایل سال 2022، این بازی پرفروش ترین بازی ویدیویی تمام دوران بود. در این آموزش شما سرور Minecraft خود را ایجاد می کنید تا شما و دوستانتان با هم بازی کنید. به طور خاص، شما بسته های نرم افزاری لازم را برای اجرای Minecraft نصب می کنید، سرور را برای اجرا پیکربندی می کنید و سپس بازی را اجرا می کنید.

همچنین، می‌توانید سرور DigitalOcean’s One-Click Minecraft: Java Edition را به‌عنوان مسیر نصب دیگری کاوش کنید.

پیش نیازها

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

  • یک سرور با نصب جدید اوبونتو 18.04، یک کاربر غیر ریشه با امتیازات sudo و SSH فعال.
  • یک کپی از Minecraft Java Edition که بر روی یک ماشین محلی Mac، Windows یا Linux نصب شده است.

مرحله 1 – بسته های نرم افزاری لازم را نصب کرده و فایروال را پیکربندی کنید

با شروع اولیه سرور، اولین قدم شما نصب جاوا است. برای اجرای Minecraft به آن نیاز دارید. به‌طور پیش‌فرض، اوبونتو 18.04 نسخه جدید جاوا را برای اجرای جدیدترین نسخه‌های Minecraft ارائه نمی‌کند. خوشبختانه، نگهبانان شخص ثالثی وجود دارند که به ساخت بسته‌های جاوای جدیدتر برای نسخه‌های قدیمی‌تر اوبونتو ادامه می‌دهند و می‌توانید با افزودن PPA یا آرشیو بسته‌های شخصی آن‌ها به فهرست منابع بسته خود، آن‌ها را نصب کنید. با دستور زیر می توانید این کار را انجام دهید:

sudo add-apt-repository ppa:openjdk-r/ppa

سپس، منابع بسته خود را به‌روزرسانی کنید تا این افزوده را منعکس کند:

sudo apt update

در نهایت، OpenJDK نسخه 17 جاوا، به طور خاص JRE بدون هد را نصب کنید. این نسخه حداقلی از جاوا است که پشتیبانی از برنامه های رابط کاربری گرافیکی را حذف می کند. این آن را برای اجرای برنامه های جاوا بر روی سرور ایده آل می کند:

sudo apt install openjdk-17-jre-headless

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

sudo apt install screen

اکنون که بسته‌ها را نصب کرده‌اید، باید فایروال را فعال کنیم تا ترافیک به سرور Minecraft ما وارد شود. در راه اندازی اولیه سرور که انجام دادید، فقط به ترافیک ssh اجازه دادید. اکنون باید اجازه دهید که ترافیک از طریق پورت 25565 وارد شود، که پورت پیش فرضی است که Minecraft برای اجازه دادن به اتصالات استفاده می کند. در برخی موارد ufw از قوانین ترافیکی نام‌گذاری شده استفاده می‌کند، مانند ssh، که همیشه به طور پیش‌فرض از پورت 22 استفاده می‌کند، اما در موارد کمتر رایج مانند این، شماره پورت را به صورت دستی مشخص می‌کنیم. با اجرای دستور زیر قانون فایروال لازم را اضافه کنید:

sudo ufw allow 25565

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

مرحله 2 – دانلود آخرین نسخه Minecraft

اکنون باید نسخه فعلی سرور Minecraft را دانلود کنید. می‌توانید این کار را با رفتن به وب‌سایت Minecraft و کپی کردن پیوندی که می‌گوید دانلود minecraft_server.X.X.X.jar انجام دهید، جایی که Xها آخرین نسخه سرور هستند.

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

wget https://launcher.mojang.com/v1/objects/125e5adf40c659fd3bce3e66e67a16bb49ecc1b9/server.jar

برنامه سرور به عنوان server.jar دانلود می شود. اگر نیاز به مدیریت نسخه‌های Minecraft دارید، یا اگر می‌خواهید سرور Minecraft خود را ارتقا دهید، ممکن است مفید باشد که server.jar دانلود شده را به minecraft_server_1.18.1.jar تغییر نام دهید و اعداد نسخه برجسته شده را با نسخه‌ای که تازه دانلود کرده‌اید مطابقت دهید:

mv server.jar minecraft_server_1.18.1.jar

اگر می‌خواهید نسخه قدیمی‌تر Minecraft را دانلود کنید، می‌توانید آن‌ها را در mcversions.net بایگانی کنید. اما این آموزش بر آخرین نسخه فعلی تمرکز خواهد کرد. اکنون که دانلود خود را دارید، بیایید پیکربندی سرور Minecraft خود را شروع کنیم.

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

اکنون که jar Minecraft را دانلود کرده اید، آماده اجرای آن هستید.

ابتدا یک جلسه صفحه نمایش را با اجرای دستور screen شروع کنید:

screen

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

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

java -Xms1024M -Xmx1024M -jar minecraft_server_1.18.1.jar nogui

قبل از بررسی خروجی این دستور، بیایید نگاهی دقیق‌تر به همه این آرگومان‌های خط فرمان که سرور شما را تنظیم می‌کنند بیاندازیم:

  • Xms1024M – این سرور را به گونه ای پیکربندی می کند که با 1024 مگابایت یا 1 گیگابایت رم در حال اجرا باشد. اگر می خواهید سرور شما با رم بیشتری شروع به کار کند، می توانید این محدودیت را افزایش دهید. هر دو M برای مگابایت و G برای گیگابایت گزینه های پشتیبانی می شوند. به عنوان مثال: Xms2G سرور را با 2 گیگابایت رم راه اندازی می کند.
  • Xmx1024M – این سرور را برای استفاده حداکثر از 1024M رم پیکربندی می کند. اگر می‌خواهید سرورتان در اندازه بزرگ‌تری اجرا شود، بازیکنان بیشتری را مجاز کنید، یا اگر احساس می‌کنید که سرورتان کند کار می‌کند، می‌توانید این محدودیت را افزایش دهید. برنامه های جاوا از این جهت منحصر به فرد هستند که همیشه از شما می خواهند حداکثر مقدار حافظه ای که می توانند استفاده کنند را مشخص کنید.
  • jar – این پرچم مشخص می کند که کدام فایل jar سرور اجرا شود.
  • nogui – این به سرور می گوید که رابط کاربری گرافیکی را راه اندازی نکند زیرا این یک سرور است و شما یک رابط کاربری گرافیکی ندارید.

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

 

Output

[22:05:31] [22:05:31] [main/ERROR]: Failed to load properties from file: server.properties
[22:05:31] [main/WARN]: Failed to load eula.txt
[22:05:31] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

این خطاها به این دلیل ایجاد شده‌اند که سرور نمی‌تواند دو فایل لازم برای اجرا را پیدا کند: EULA (توافقنامه مجوز کاربر نهایی) که در eula.txt یافت می‌شود و فایل پیکربندی server.properties. از آنجایی که سرور قادر به یافتن این فایل ها نبود، آنها را در فهرست کاری فعلی شما ایجاد کرد. Minecraft این کار را عمدا انجام می دهد تا مطمئن شود که EULA آن را خوانده اید و با آن موافقت کرده اید.

eula.txt را در nano یا ویرایشگر متن مورد علاقه خود باز کنید:

nano eula.txt

در داخل این فایل، پیوندی به EULA Minecraft مشاهده خواهید کرد. URL را کپی کنید:

~/eula.txt

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Tue Mar 24 22:05:31 UTC 2020
eula=false

URL را در مرورگر وب خود باز کنید و توافق نامه را بخوانید. سپس به ویرایشگر متن خود برگردید و آخرین خط را در eula.txt پیدا کنید. در اینجا eula=false را به eula=true تغییر دهید. سپس فایل را ذخیره کرده و ببندید. در نانو، این به این معنی است که Ctrl+X را برای خروج فشار دهید، سپس وقتی از شما خواسته شد ذخیره کنید، Y و سپس Enter کنید.

اکنون که EULA را پذیرفته اید، می توانید سرور را مطابق با مشخصات خود پیکربندی کنید.

در دایرکتوری فعلی خود، فایل server.properties ایجاد شده جدید را نیز خواهید یافت. این فایل شامل تمامی گزینه های پیکربندی سرور Minecraft شما می باشد. می‌توانید فهرست دقیقی از تمام ویژگی‌های سرور را در ویکی رسمی Minecraft پیدا کنید. قبل از راه اندازی سرور باید این فایل را با تنظیمات دلخواه خود تغییر دهید. این آموزش برخی از تنظیمات اساسی را پوشش می دهد:

nano server.properties

فایل شما به شکل زیر ظاهر می شود:

~/server.properties

#Minecraft server properties
#Thu Apr 30 23:42:29 UTC 2020
spawn-protection=16
max-tick-time=60000
query.port=25565
generator-settings=
force-gamemode=false
allow-nether=true
enforce-whitelist=false
gamemode=survival
broadcast-console-to-ops=true
enable-query=false
player-idle-timeout=0
difficulty=easy
spawn-monsters=true
broadcast-rcon-to-ops=true
op-permission-level=4
pvp=true
snooper-enabled=true
level-type=default
hardcore=false
enable-command-block=false
max-players=20
network-compression-threshold=256
resource-pack-sha1=
max-world-size=29999984
function-permission-level=2
rcon.port=25575
server-port=25565
server-ip=
spawn-npcs=true
allow-flight=false
level-name=world
view-distance=10
resource-pack=
spawn-animals=true
white-list=false
rcon.password=
generate-structures=true
online-mode=true
max-build-height=256
level-seed=
prevent-proxy-connections=false
use-native-transport=true
motd=A Minecraft Server
enable-rcon=false

بیایید نگاهی دقیق تر به برخی از مهم ترین ویژگی های این لیست بیندازیم:

دشواری (پیش‌فرض آسان) – این میزان سختی بازی را تعیین می‌کند، مانند میزان آسیب وارد شده و چگونگی تأثیر عناصر بر بازیکن شما. گزینه ها صلح آمیز، آسان، عادی و سخت هستند.
حالت بازی (بقای پیش فرض) – این حالت گیم پلی را تنظیم می کند. گزینه ها بقا، خلاقیت، ماجراجویی و تماشاگر هستند.
level-name (دنیای پیش فرض) – این نام سرور شما را تعیین می کند که در مشتری ظاهر می شود. ممکن است لازم باشد قبل از کاراکترهای خاص مانند آپوستروف، علامت معکوس وجود داشته باشد. شناخته شده است که این کاراکترهای فرار است، و زمانی که کاراکترهای خاص ممکن است به درستی در زمینه تجزیه و تحلیل نشوند، معمول است.
motd (سرور پیش فرض یک Minecraft) – پیامی که در لیست سرور مشتری Minecraft نمایش داده می شود.
pvp (پیش‌فرض درست) – نبرد بازیکن در مقابل بازیکن را فعال می‌کند. اگر روی true تنظیم شود، بازیکنان می‌توانند وارد جنگ شوند و به یکدیگر آسیب برسانند.
پس از تنظیم گزینه های مورد نظر، فایل را ذخیره کرده و ببندید.

اکنون می توانید سرور خود را با موفقیت راه اندازی کنید.

مانند دفعه قبل، بیایید سرور خود را با 1024M RAM راه اندازی کنیم. این بار، همچنین باید به Minecraft این امکان را بدهید که در صورت لزوم تا 4G از رم استفاده کند. به یاد داشته باشید که می توانید این شماره را متناسب با محدودیت های سرور یا نیازهای کاربر خود تنظیم کنید:

java -Xms1024M -Xmx4G -jar minecraft_server_1.18.1.jar nogui

چند لحظه به مقدار دهی اولیه بدهید. به زودی سرور Minecraft جدید شما شروع به تولید خروجی مشابه این خواهد کرد:

 

Output

[21:08:14] [Server thread/INFO]: Starting minecraft server version 1.15.2
[21:08:14] [Server thread/INFO]: Loading properties
[21:08:14] [Server thread/INFO]: Default game type: SURVIVAL
[21:08:14] [Server thread/INFO]: Generating keypair
[21:08:15] [Server thread/INFO]: Starting minecraft server on *:25565

پس از راه اندازی سرور، خروجی زیر را مشاهده خواهید کرد:

 

Output

[21:15:37] [Server thread/INFO]: Done (30.762s)! For help, type "help"

سرور شما اکنون در حال اجرا است و کنترل پنل مدیر سرور به شما نمایش داده شده است. راهنمای تایپ کردن را امتحان کنید:

help

خروجی به شکل زیر ظاهر می شود:

 

Output

[21:15:37] [Server thread/INFO]: /advancement (grant|revoke)
[21:15:37] [Server thread/INFO]: /ban <targets> [<reason>]
[21:15:37] [Server thread/INFO]: /ban-ip <target> [<reason>]
[21:15:37] [Server thread/INFO]: /banlist [ips|players]
...

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

مرحله 4 – نگه داشتن سرور در حال اجرا

اکنون که سرور خود را روشن کرده اید، می خواهید حتی پس از قطع اتصال از جلسه SSH، همچنان در حال اجرا باشد. از آنجایی که قبلاً از صفحه استفاده کرده اید، می توانید با فشار دادن Ctrl + A + D از این جلسه جدا شوید. باید ببینید که به پوسته اصلی خود برگشته اید:

 

Output

​​ubuntu@minecraft-1804:~$ screen
[detached from 3626.pts-0.minecraft-1804]
$

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

screen -list

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

 

Output

There is a screen on:
        3626.pts-0.minecraft-1804 (11/16/21 22:56:33) (Detached)
1 Socket in /run/screen/S-root.

برای از سرگیری جلسه خود، پرچم -r را به فرمان صفحه ارسال کنید و سپس شناسه جلسه خود را وارد کنید:

screen -r 3626

وقتی دوباره آماده خروج از ترمینال شدید، حتما با Ctrl + A + D از جلسه جدا شده و سپس از سیستم خارج شوید.

مرحله 5 – اتصال به سرور خود از مشتری Minecraft

اکنون که سرور شما راه‌اندازی شده است، بیایید از طریق مشتری Minecraft به آن متصل شویم. سپس می توانید بازی کنید!

نسخه Minecraft Java Edition خود را اجرا کنید و Multiplayer را در منو انتخاب کنید.

 

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

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

 

هنگامی که نام سرور و آدرس IP خود را وارد کردید، به صفحه Multiplayer بازگردانده می شوید، جایی که سرور شما اکنون لیست می شود.

از این پس سرور شما همیشه در این لیست ظاهر می شود. آن را انتخاب کرده و روی Join Server کلیک کنید.

شما در سرور خود هستید و آماده بازی هستید!

نتیجه

شما اکنون یک سرور Minecraft دارید که روی اوبونتو 18.04 اجرا می شود تا شما و همه دوستانتان با آن بازی کنید! از کاوش، کاردستی و زنده ماندن در یک دنیای خام سه بعدی لذت ببرید.

 

 

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/

 

برچسب‌ها:Jenkinsاتصال به سرور مجازیاتصال به سرور مجازی لینوکسانواع سرور مجازیپیکربندی Webhooksخرید سرور مجازیدسترسی Jenkins به GitHubسرور اتوماسیون متن بازسرور اوبونتو 20.04

  • behnam gol mohamadi
  • ۰
  • ۰

 

نحوه راه اندازی خطوط لوله یکپارچه سازی مداوم در Jenkins در اوبونتو 20.04

 

ورود به سرور

 

 

 

معرفی

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

در راهنماهای قبلی، ما جنکینز را روی سرور اوبونتو 20.04 نصب کردیم و جنکینز را با SSL با استفاده از یک پراکسی معکوس Nginx پیکربندی کردیم. در این راهنما، نحوه راه‌اندازی Jenkins را برای آزمایش خودکار یک برنامه زمانی که تغییرات به یک مخزن منتقل می‌شوند، نشان خواهیم داد.

برای این آموزش، ما Jenkins را با GitHub ادغام خواهیم کرد تا زمانی که کد جدید به مخزن فرستاده می شود، جنکینز مطلع شود. وقتی جنکینز مطلع شد، کد را بررسی می‌کند و سپس آن را در کانتینرهای Docker آزمایش می‌کند تا محیط آزمایشی را از دستگاه میزبان جنکینز جدا کند. ما از یک نمونه برنامه Node.js برای نشان دادن نحوه تعریف فرآیند CI/CD برای یک پروژه استفاده خواهیم کرد.

پیش نیازها

برای پیروی از این راهنما، به یک سرور اوبونتو 20.04 با حداقل 1G RAM که با نصب ایمن جنکینز پیکربندی شده باشد، نیاز دارید. برای ایمن سازی مناسب رابط وب، باید یک نام دامنه به سرور جنکینز اختصاص دهید. برای یادگیری نحوه تنظیم Jenkins در قالب مورد انتظار، این راهنماها را دنبال کنید:

  • نحوه نصب جنکینز در اوبونتو 20.04
  • نحوه نصب Nginx در اوبونتو 20.04
  • چگونه Nginx را با Let’s Encrypt در اوبونتو 20.04 ایمن کنیم
  • نحوه پیکربندی جنکینز با SSL با استفاده از پروکسی معکوس Nginx

برای کنترل بهتر محیط آزمایش خود، آزمایش های برنامه خود را در کانتینرهای Docker اجرا می کنیم. پس از راه‌اندازی Jenkins، Docker را با انجام مراحل یک و دو این راهنما بر روی سرور نصب کنید:

  • نحوه نصب و استفاده از Docker در اوبونتو 20.04

هنگامی که راهنماهای فوق را کامل کردید، می توانید با این مقاله ادامه دهید.

 

کاربر Jenkins را به گروه Docker اضافه کنید

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

برای رفع این مشکل، باید کاربر jenkins را با استفاده از دستور usermod به گروه docker اضافه کنیم:

sudo usermod -aG docker jenkins

می‌توانید اعضای گروه docker را فهرست کنید تا تأیید کنید که کاربر jenkins با موفقیت اضافه شده است:

grep docker /etc/group

 

Output

docker:x:999:sammy,jenkins

برای اینکه جنکینز از عضویت جدید خود استفاده کند، باید فرآیند را مجدداً راه اندازی کنید:

sudo systemctl restart jenkins

اگر جنکینز را با افزونه‌های پیش‌فرض نصب کرده‌اید، ممکن است لازم باشد بررسی کنید که افزونه‌های docker و docker-pipeline نیز فعال هستند. برای انجام این کار، روی Manage Jenkins از نوار کناری و سپس Manage Plugins از منوی بعدی کلیک کنید. برای جستجوی افزونه های جدید، روی تب Available از منوی افزونه کلیک کنید و docker را در نوار جستجو تایپ کنید. اگر هر دو افزونه Docker Pipeline و Docker به عنوان گزینه برگردانده شدند، و انتخاب نشدند، هر دو را انتخاب کنید، و هنگامی که از شما خواسته شد، به Jenkins اجازه راه اندازی مجدد با فعال بودن افزونه های جدید را بدهید.

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

یک رمز دسترسی شخصی در GitHub ایجاد کنید

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

اگر قبلاً این کار را نکرده اید، با بازدید از GitHub و وارد شدن به حساب خود شروع کنید. پس از آن، روی نماد کاربر خود در گوشه سمت راست بالا کلیک کنید و تنظیمات را از منوی کشویی انتخاب کنید:

در صفحه زیر، بخش تنظیمات برنامه‌نویس را در منوی سمت چپ پیدا کرده و روی گزینه‌های دسترسی شخصی کلیک کنید:

در صفحه بعد روی دکمه Generate new token کلیک کنید:

شما به صفحه ای هدایت می شوید که در آن می توانید محدوده توکن جدید خود را مشخص کنید.

در کادر توضیحات Token، توضیحی اضافه کنید که به شما امکان می دهد بعداً آن را تشخیص دهید:

در بخش Select scopes، کادرهای repo:status، repo:public_repo و admin:org_hook را بررسی کنید. اینها به جنکینز اجازه می‌دهد تا وضعیت‌های commit را به‌روزرسانی کند و برای پروژه وب هوک ایجاد کند. اگر از یک مخزن خصوصی استفاده می کنید، باید مجوز عمومی مخزن را به جای موارد فرعی مخزن انتخاب کنید:

 

وقتی کارتان تمام شد، روی Generate token در پایین کلیک کنید.

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

 

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

اکنون که یک نشانه دسترسی شخصی برای حساب GitHub خود دارید، می‌توانیم جنکینز را برای تماشای مخزن پروژه شما پیکربندی کنیم.

رمز دسترسی شخصی GitHub را به جنکینز اضافه کنید

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

روی نام کاربری خود در گوشه سمت راست بالا کلیک کنید تا به تنظیمات کاربری خود دسترسی پیدا کنید و از آنجا روی Credentials در منوی سمت چپ کلیک کنید. :

در صفحه بعد، روی فلش کنار (جهانی) در محدوده جنکینز کلیک کنید. در کادری که ظاهر می‌شود، روی Add credentials کلیک کنید:

برای افزودن اعتبارنامه جدید به فرمی هدایت خواهید شد.

در زیر منوی کشویی Kind، Secret text را انتخاب کنید. در قسمت Secret، رمز دسترسی شخصی GitHub خود را جایگذاری کنید. قسمت توضیحات را پر کنید تا بتوانید بعداً این ورودی را شناسایی کنید. می توانید Scope را به صورت Global و قسمت ID را خالی بگذارید:

وقتی کارتان تمام شد روی دکمه OK کلیک کنید.

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

دسترسی Jenkins به GitHub را تنظیم کنید

در داشبورد اصلی جنکینز، روی Manage Jenkins در منوی سمت چپ کلیک کنید:

در لیست پیوندها در صفحه زیر، روی Configure System کلیک کنید:

در میان گزینه های صفحه بعد حرکت کنید تا قسمت GitHub را پیدا کنید. روی دکمه Add GitHub Server کلیک کنید و سپس GitHub Server را انتخاب کنید:

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

روی دکمه اتصال تست کلیک کنید. جنکینز یک تماس آزمایشی API با حساب شما برقرار می کند و اتصال را تأیید می کند:

پس از اتمام کار، روی دکمه ذخیره کلیک کنید تا تغییرات خود را اعمال کنید.

برنامه نمایش را در حساب GitHub خود تنظیم کنید

برای نشان دادن نحوه استفاده از جنکینز برای آزمایش یک برنامه، از یک برنامه “Hello world” ایجاد شده با Hapi.js استفاده خواهیم کرد. از آنجایی که ما Jenkins را برای واکنش به فشارهای مخزن تنظیم می کنیم، باید کپی خود را از کد نمایشی داشته باشید.

از مخزن پروژه دیدن کنید و روی دکمه Fork در گوشه سمت راست بالا کلیک کنید تا یک کپی از مخزن در حساب خود ایجاد کنید:

یک کپی از مخزن به حساب شما اضافه می شود.

مخزن حاوی یک فایل package.json است که وابستگی های زمان اجرا و توسعه و همچنین نحوه اجرای مجموعه آزمایشی ارائه شده را تعریف می کند. وابستگی ها را می توان با اجرای npm install نصب کرد و تست ها را می توان با استفاده از تست npm اجرا کرد.

ما یک Jenkinsfile را نیز به مخزن اضافه کرده ایم. جنکینز این فایل را می‌خواند تا اقداماتی را که باید در مقابل مخزن برای ساخت، آزمایش یا استقرار اجرا شود، تعیین کند. با استفاده از نسخه اعلانی Jenkins Pipeline DSL نوشته شده است.

Jenkinsfile موجود در مخزن hello-hapi به شکل زیر است:

Jenkinsfile

#!/usr/bin/env groovy

pipeline {

    agent {
        docker {
            image 'node'
            args '-u root'
        }
    }

    stages {
        stage('Build') {
            steps {
                echo 'Building...'
                sh 'npm install'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing...'
                sh 'npm test'
            }
        }
    }
}

خط لوله شامل کل تعریفی است که جنکینز ارزیابی خواهد کرد. در داخل، ما یک بخش agent داریم که مشخص می کند اقدامات در خط لوله کجا اجرا می شوند. برای جداسازی محیط‌هایمان از سیستم میزبان، در کانتینرهای Docker که توسط عامل docker مشخص شده است آزمایش خواهیم کرد.

از آنجایی که Hapi.js یک چارچوب برای Node.js است، از تصویر گره Docker به عنوان پایه خود استفاده خواهیم کرد. کاربر ریشه را در ظرف مشخص می‌کنیم تا کاربر بتواند هم‌زمان در جلد ضمیمه شده حاوی کد بررسی‌شده و هم در حجمی که اسکریپت خروجی خود را روی آن می‌نویسد بنویسد.

در مرحله بعد، فایل دو مرحله، یعنی تقسیمات منطقی کار را تعریف می کند. ما نام اولی را «ساخت» و دومی را «تست» گذاشته‌ایم. مرحله ساخت یک پیام تشخیصی را چاپ می کند و سپس npm install را برای به دست آوردن وابستگی های مورد نیاز اجرا می کند. مرحله تست پیام دیگری را چاپ می کند و سپس تست ها را همانطور که در فایل package.json تعریف شده است اجرا می کند.

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

یک خط لوله جدید در جنکینز ایجاد کنید

در مرحله بعد، می‌توانیم جنکینز را برای استفاده از نشانه دسترسی شخصی GitHub برای تماشای مخزن خود تنظیم کنیم.

در داشبورد اصلی جنکینز، روی آیتم جدید در منوی سمت چپ کلیک کنید:

در قسمت Enter an item name نامی را برای خط لوله جدید خود وارد کنید. پس از آن، Pipeline را به عنوان نوع مورد انتخاب کنید:

برای ادامه روی دکمه OK در پایین کلیک کنید.

در صفحه بعدی، کادر پروژه GitHub را علامت بزنید. در قسمت Project url که ظاهر می شود، URL مخزن GitHub پروژه خود را وارد کنید.

سپس، در بخش Build Triggers، محرک قلاب GitHub را برای کادر نظرسنجی GITScm بررسی کنید:

در قسمت Pipeline، باید به Jenkins بگوییم که خط لوله تعریف شده در Jenkinsfile را در مخزن ما اجرا کند. نوع Definition را از SCM به Pipeline script تغییر دهید.

در بخش جدیدی که ظاهر می شود، Git را در منوی SCM انتخاب کنید. در فیلد URL مخزن که ظاهر می‌شود، دوباره URL را به فورک مخزن وارد کنید:

وقتی کارتان تمام شد، روی دکمه ذخیره در پایین صفحه کلیک کنید.

انجام ساخت اولیه و پیکربندی Webhooks

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

در صفحه اصلی خط لوله خود، روی Build Now در منوی سمت چپ کلیک کنید:

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

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

پس از اتمام کار، روی آیتم بازگشت به پروژه در منوی سمت چپ کلیک کنید تا به نمای خط لوله اصلی بازگردید.

اکنون که یک بار پروژه را ساخته‌ایم، می‌توانیم از جنکینز بخواهیم که وب هوک‌ها را برای پروژه ما ایجاد کند. روی Configure در منوی سمت چپ خط لوله کلیک کنید:

هیچ تغییری در این صفحه لازم نیست، فقط روی دکمه ذخیره در پایین کلیک کنید. اکنون که جنکینز از فرآیند ساخت اولیه اطلاعاتی در مورد پروژه دارد، هنگامی که صفحه را ذخیره می کنید، یک هوک در پروژه GitHub ما ثبت می کند.

می‌توانید با رفتن به مخزن GitHub خود و کلیک کردن روی دکمه تنظیمات، این موضوع را تأیید کنید. در صفحه بعد از منوی کناری روی Webhooks کلیک کنید. شما باید وب هوک سرور جنکینز خود را در رابط اصلی ببینید:

 

اگر به هر دلیلی Jenkins نتوانست قلاب را ثبت کند (مثلاً به دلیل تغییرات API بالادست یا قطعی بین Jenkins و Github)، می‌توانید به سرعت خودتان یکی را با کلیک کردن روی Add webhook و اطمینان از اینکه URL Payload روی https:// تنظیم شده است اضافه کنید. my-jenkins-server:8080/github-webhook و نوع محتوا روی application/json تنظیم شده است، سپس دوباره روی Add webhook در پایین دستور کلیک کنید.

 

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

برای تقریبی این، در صفحه مخزن ما در GitHub، می توانید روی دکمه ایجاد فایل جدید در سمت چپ دکمه سبز رنگ Clone یا دانلود کلیک کنید:

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

وقتی کارتان تمام شد، روی دکمه Commit new file در پایین کلیک کنید.

اگر به رابط Jenkins خود بازگردید، خواهید دید که یک ساخت جدید به طور خودکار شروع شده است:

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

نتیجه

در این راهنما، ما جنکینز را برای تماشای یک پروژه GitHub پیکربندی کرده ایم و به طور خودکار هر تغییر جدیدی را که انجام می شود آزمایش می کنیم. جنکینز کد را از مخزن می کشد و سپس مراحل ساخت و آزمایش را از داخل کانتینرهای Docker ایزوله اجرا می کند. کد به دست آمده را می توان با افزودن دستورالعمل های اضافی به همان Jenkinsfile مستقر یا ذخیره کرد.

 

 

 

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/

 

Jenkinsاتصال به سرور مجازیاتصال به سرور مجازی لینوکسانواع سرور مجازیپیکربندی Webhooksخرید سرور مجازیدسترسی Jenkins به GitHubسرور اتوماسیون متن بازسرور اوبونتو 20.04

  • behnam gol mohamadi
  • ۰
  • ۰

نحوه تنظیم نوت بوک Jupyter برای Python 3

ورود به سایت

معرفی

Jupyter Notebook یک پوسته فرمان برای محاسبات تعاملی به عنوان یک برنامه وب ارائه می دهد. این ابزار را می توان با چندین زبان از جمله Python، Julia، R، Haskell و Ruby استفاده کرد. اغلب برای کار با داده ها، مدل سازی آماری و یادگیری ماشین استفاده می شود.

این آموزش شما را در راه اندازی نوت بوک Jupyter برای اجرا به صورت محلی یا از سرور اوبونتو 20.04 راهنمایی می کند و همچنین نحوه اتصال و استفاده از نوت بوک را به شما آموزش می دهد. نوت‌بوک‌های Jupyter (یا به سادگی نوت‌بوک‌ها) اسنادی هستند که توسط برنامه نوت‌بوک Jupyter تولید می‌شوند که حاوی کدهای کامپیوتری و عناصر متن غنی (پاراگراف، معادلات، شکل‌ها، پیوندها و غیره) هستند که به ارائه و به اشتراک‌گذاری تحقیقات قابل تکرار کمک می‌کنند.

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

پیش نیازها

برای دنبال کردن این آموزش، به یک محیط برنامه نویسی پایتون 3 نیز نیاز دارید

  • در دستگاه محلی شما، یا
  • روی سرور اوبونتو

تمام دستورات این آموزش باید به صورت یک کاربر غیر روت اجرا شوند. اگر دسترسی root برای دستور مورد نیاز باشد، قبل از دستور sudo قرار می گیرد. راه اندازی اولیه سرور با اوبونتو 20.04 نحوه اضافه کردن کاربران و دادن دسترسی sudo را توضیح می دهد.

مرحله 1 – نصب نوت بوک Jupyter

در این قسمت نوت بوک Jupyter را با pip نصب می کنیم.

محیط برنامه نویسی Python 3 را که می خواهید Jupyter Notebook را در آن نصب کنید، فعال کنید. در مثال خود، آن را در my_env نصب می‌کنیم، بنابراین مطمئن می‌شویم که در دایرکتوری آن محیط هستیم و آن را به این صورت فعال می‌کنیم:

cd ~/environments
. my_env/bin/activate

در مرحله بعد، می توانیم اطمینان حاصل کنیم که پیپ به آخرین نسخه ارتقا یافته است:

pip install –upgrade pip

حالا می توانیم Jupyter Notebook را با دستور زیر نصب کنیم:

pip install jupyter

در این مرحله Jupyter Notebook در محیط برنامه نویسی فعلی نصب می شود.

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

مرحله 2 (اختیاری) – استفاده از SSH Tunneling برای اتصال به نصب سرور

اگر نوت بوک Jupyter را روی سرور نصب کرده اید، در این بخش نحوه اتصال به رابط وب Jupyter Notebook با استفاده از تونل SSH را یاد می گیریم. از آنجایی که Jupyter Notebook بر روی یک پورت خاص روی سرور اجرا می شود (مانند :8888، :8889 و غیره)، تونل SSH شما را قادر می سازد تا به طور ایمن به پورت سرور متصل شوید.

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

SSH Tunneling

اگر از ویندوز استفاده می کنید، باید نسخه ای از OpenSSH را نصب کنید تا بتوانید از ترمینال ssh کنید. اگر ترجیح می دهید در PowerShell کار کنید، می توانید اسناد مایکروسافت را برای اضافه کردن OpenSSH به PowerShell دنبال کنید. اگر ترجیح می‌دهید یک محیط لینوکس کامل در دسترس داشته باشید، می‌توانید WSL، زیرسیستم ویندوز برای لینوکس را راه‌اندازی کنید، که به طور پیش‌فرض شامل ssh می‌شود. در نهایت، به عنوان گزینه سوم سبک، می‌توانید Git را برای ویندوز نصب کنید، که یک محیط ترمینال bash ویندوز که شامل دستور ssh می‌شود را فراهم می‌کند. هر کدام از این ها به خوبی پشتیبانی می شوند و هر کدام را که تصمیم به استفاده از آن داشته باشید به اولویت شما بستگی دارد.

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

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

SSH tunneling را می توان با اجرای دستور SSH زیر در یک پنجره ترمینال محلی جدید انجام داد:

ssh -L 8888:localhost:8888 your_server_username@your_server_ip

دستور ssh یک اتصال SSH را باز می کند، اما -L مشخص می کند که پورت داده شده در میزبان محلی (کلینت) باید به هاست و پورت در سمت راه دور (سرور) ارسال شود. این بدان معناست که هر چیزی که روی شماره پورت دوم (به عنوان مثال 8888) در سرور اجرا می شود، در اولین شماره پورت (مثلاً 8888) در رایانه محلی شما ظاهر می شود.

اگر پیامی دریافت کردید که پورت 8888 در دسترس نیست، می توانید آن را به شماره پورت دلخواه دیگری زیر 65535 تغییر دهید. پورت 8888 معنای مهمی ندارد اما اغلب برای دموهایی مانند این استفاده می شود.

server_username نام کاربری شما (به عنوان مثال sammy) در سروری است که ایجاد کرده اید و your_server_ip آدرس IP سرور شما است.

به عنوان مثال، برای نام کاربری sammy و آدرس سرور 203.0.113.0، دستور به صورت زیر خواهد بود:

ssh -L 8888:localhost:8888 sammy@203.0.113.0

اگر پس از اجرای دستور ssh -L خطایی نشان داده نشد، می توانید به محیط برنامه نویسی خود بروید و Jupyter Notebook را اجرا کنید:

jupyter notebook

خروجی را با URL دریافت خواهید کرد. از یک مرورگر وب در دستگاه محلی خود، رابط وب Jupyter Notebook را با URL که با http://localhost:8888 شروع می شود، باز کنید. اطمینان حاصل کنید که شماره رمز گنجانده شده است یا در صورت درخواست در http://localhost:8888 رشته شماره رمز را وارد کنید.

مرحله 3 – اجرای نوت بوک Jupyter

با نصب نوت بوک Jupyter، می توانید آن را در ترمینال خود اجرا کنید. برای این کار دستور زیر را اجرا کنید:

jupyter notebook

گزارشی از فعالیت های نوت بوک Jupyter در ترمینال چاپ می شود. هنگامی که Jupyter Notebook را اجرا می کنید، روی یک شماره پورت خاص اجرا می شود. اولین نوت‌بوکی که اجرا می‌کنید معمولاً روی پورت 8888 اجرا می‌شود. برای بررسی شماره پورت خاصی که Jupyter Notebook روی آن اجرا می‌شود، به خروجی دستور استفاده شده برای شروع آن مراجعه کنید:

 

Output

[I NotebookApp] Serving notebooks from local directory: /home/sammy
[I NotebookApp] 0 active kernels 
[I NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/
[I NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
...

اگر Jupyter Notebook را روی یک رایانه محلی (نه روی سرور) اجرا می کنید، مرورگر پیش فرض شما باید برنامه وب Jupyter Notebook را باز کرده باشد. اگر نه، یا اگر پنجره را ببندید، می توانید به URL ارائه شده در خروجی بروید یا برای اتصال به localhost:8888 بروید.

هر زمان که می‌خواهید فرآیند Jupyter Notebook را متوقف کنید، Ctrl+C را فشار دهید، زمانی که از شما خواسته شد Y را تایپ کنید و سپس Enter را برای تأیید فشار دهید.

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

 

Output

[C 12:32:23.792 NotebookApp] Shutdown confirmed
[I 12:32:23.794 NotebookApp] Shutting down kernels

Jupyter Notebook اکنون دیگر کار نمی کند.

مرحله 4 – استفاده از نوت بوک Jupyter

این بخش به اصول استفاده از نوت بوک Jupyter می پردازد. اگر در حال حاضر Jupyter Notebook را در حال اجرا ندارید، آن را با دستور jupyter notebook شروع کنید.

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

برای ایجاد یک فایل نوت بوک جدید، New > Python 3 را از منوی کشویی بالا سمت راست انتخاب کنید:

با این کار یک نوت بوک باز می شود. اکنون می‌توانیم کد پایتون را در سلول اجرا کنیم یا سلول را به markdown تغییر دهیم. برای مثال، با کلیک روی Cell > Cell Type > Markdown از نوار پیمایش بالا، اولین سلول را برای پذیرش Markdown تغییر دهید. اکنون می‌توانیم یادداشت‌هایی را با استفاده از Markdown بنویسیم و حتی معادلات نوشته‌شده در LaTeX را با قرار دادن آنها بین نمادهای $$ اضافه کنیم. به عنوان مثال، پس از تغییر سلول به علامت گذاری، عبارت زیر را در سلول تایپ کنید:

# Simple Equation

Let us now implement the following equation:
$$ y = x^2$$

where $x = 2$

برای تبدیل علامت گذاری به متن غنی، Ctrl+Enter را فشار دهید و نتایج زیر باید باشد:

می توانید از سلول های علامت گذاری برای یادداشت برداری و مستندسازی کد خود استفاده کنید. بیایید آن معادله ساده را پیاده سازی کنیم و نتیجه را چاپ کنیم. روی سلول بالا کلیک کنید، سپس Alt+Enter را فشار دهید تا یک سلول زیر آن اضافه شود. کد زیر را در سلول جدید وارد کنید.

x = 2
y = x**2
print(y)

برای اجرای کد، Ctrl+Enter را فشار دهید. نتایج زیر را دریافت خواهید کرد:

اکنون می توانید ماژول ها را وارد کنید و از نوت بوک مانند سایر محیط های توسعه پایتون استفاده کنید!

برای خاموش کردن نوت بوک Jupyter سمت سرور، به پنجره ترمینال که آن را از آنجا شروع کرده اید بازگردید و Ctrl+C را فشار دهید. این یک میانبر استاندارد برای پایان دادن به فرآیندهای ترمینال است و Jupyter از شما می خواهد قبل از خروج ذخیره کنید.

نتیجه

تبریک می گویم! اکنون باید بتوانید کدها و یادداشت های قابل تکرار پایتون را با استفاده از Jupyter Notebook در Markdown بنویسید. برای دریافت یک تور سریع از Jupyter Notebook از داخل رابط، Help > User Interface Tour را از منوی پیمایش بالا انتخاب کنید تا بیشتر بدانید.


 

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/

 

برچسب‌ها:SSH TunnelingUbuntu VPSاتصال به سرور مجازیخرید سرور مجازیسرور اوبونتو 20.04فروش سرور مجازینحوه تنظیم نوت بوک Jupyterنصب سرورنصب نوت بوک Jupyter

  • behnam gol mohamadi
  • ۰
  • ۰

نحوه نصب Node.js در اوبونتو 18.04

ورود به سایت

معرفی

Node.js یک پلت فرم جاوا اسکریپت برای برنامه نویسی همه منظوره است که به کاربران اجازه می دهد تا برنامه های شبکه را به سرعت بسازند. Node.js با استفاده از جاوا اسکریپت در قسمت جلویی و پشتیبان، توسعه را سازگارتر و یکپارچه تر می کند.

پیش نیازها

این راهنما فرض می کند که از اوبونتو 18.04 استفاده می کنید. قبل از شروع، باید یک حساب کاربری غیر ریشه با امتیازات sudo روی سیستم خود تنظیم کنید.

نصب Node.js از مخازن پیش فرض با Apt

اوبونتو 18.04 حاوی نسخه‌ای از Node.js در مخازن پیش‌فرض خود است که می‌توان از آن برای ارائه یک تجربه ثابت در چندین سیستم استفاده کرد. در زمان نگارش، نسخه موجود در مخازن 8.10.0 است. این آخرین نسخه نخواهد بود، اما باید پایدار و برای آزمایش سریع زبان کافی باشد.

برای دریافت این نسخه می توانید از apt package manager استفاده کنید. فهرست بسته محلی خود را تازه کنید:

sudo apt update

حالا Node.js را نصب کنید:

sudo apt install nodejs

تأیید کنید که Node.js را با موفقیت نصب کرده‌اید، با جستجو در node برای شماره نسخه آن:

node -v

 

Output

v8.10.0

اگر بسته موجود در مخازن با نیازهای شما مطابقت دارد، این تنها کاری است که برای راه اندازی Node.js باید انجام دهید. در بیشتر موارد، شما همچنین می خواهید npm، مدیر بسته Node.js را نیز نصب کنید. می توانید بسته npm را با apt نصب کنید:

sudo apt install npm

این به شما امکان می دهد ماژول ها و بسته هایی را برای استفاده با Node.js نصب کنید.

اکنون Node.js و npm را با استفاده از apt و مخازن نرم افزار پیش فرض اوبونتو با موفقیت نصب کرده اید. با این حال، ممکن است ترجیح دهید با نسخه‌های مختلف Node.js، آرشیو بسته‌ها یا مدیران نسخه کار کنید. مراحل بعدی این عناصر را به همراه روش‌های نصب انعطاف‌پذیرتر و قوی‌تر مورد بحث قرار خواهند داد.

نصب Node.js با Apt با استفاده از NodeSource PPA

برای نصب نسخه جدیدتر Node.js می توانید PPA (بایگانی بسته شخصی) را که توسط NodeSource نگهداری می شود اضافه کنید. این نسخه‌های به‌روز Node.js را نسبت به مخازن رسمی اوبونتو خواهد داشت و به شما امکان می‌دهد بین چندین نسخه موجود پلتفرم یکی را انتخاب کنید.

ابتدا PPA را نصب کنید تا به محتویات آن دسترسی داشته باشید. از فهرست اصلی خود، از curl برای بازیابی اسکریپت نصب نسخه دلخواه خود استفاده کنید، مطمئن شوید که 17.x را با رشته نسخه ترجیحی خود جایگزین کنید (در صورت متفاوت بودن):

cd ~
curl -sL https://deb.nodesource.com/setup_17.x -o nodesource_setup.sh

برای اطلاعات بیشتر در مورد نسخه های موجود می توانید به مستندات NodeSource مراجعه کنید.

در صورت تمایل، می توانید محتوای این اسکریپت را با nano (یا ویرایشگر متن دلخواه خود) بررسی کنید:

nano nodesource_setup.sh

هنگامی که از اجرای امن اسکریپت راضی شدید، از ویرایشگر متن خارج شوید. اگر از nano استفاده می‌کنید، می‌توانید با فشار دادن CTRL + X خارج شوید. سپس اسکریپت را با sudo اجرا کنید:

sudo bash nodesource_setup.sh

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

sudo apt install nodejs

با اجرای گره با پرچم -v، تأیید کنید که نسخه جدید را نصب کرده اید:

node -v

 

Output

v17.3.0

برخلاف آنچه در مخازن بسته پیش‌فرض اوبونتو وجود دارد، این بسته nodejs دارای هر دو نود و npm است، بنابراین نیازی به نصب جداگانه npm ندارید.

npm از یک فایل پیکربندی در فهرست اصلی شما برای پیگیری به‌روزرسانی‌ها استفاده می‌کند. اولین باری که npm را اجرا می کنید ایجاد می شود. برای اطمینان از نصب بودن npm و ایجاد فایل پیکربندی، دستور زیر را اجرا کنید:

npm -v

 

Output

8.3.0

برای اینکه برخی از بسته های npm کار کنند (مثلاً آنهایی که نیاز به کامپایل کد از منبع دارند)، باید بسته build-essential را نصب کنید:

sudo apt install build-essential

اکنون ابزارهای لازم برای کار با بسته های npm را دارید که نیاز به کامپایل کد از منبع دارند.

در این بخش، Node.js و npm را با استفاده از apt و NodeSource PPA با موفقیت نصب کردید. در مرحله بعد، از Node Version Manager برای نصب و مدیریت چندین نسخه Node.js استفاده خواهید کرد.

نصب Node با استفاده از Node Version Manager

یک جایگزین برای نصب Node.js استفاده از ابزاری به نام nvm، Node Version Manager (NVM) است. nvm به جای کار در سطح سیستم عامل، در سطح دایرکتوری مستقل در فهرست اصلی شما کار می کند. این بدان معناست که می‌توانید چندین نسخه مستقل Node.js را بدون تأثیر بر کل سیستم نصب کنید.

کنترل محیط خود با nvm به شما امکان می دهد به جدیدترین نسخه های Node.js دسترسی داشته باشید و نسخه های قبلی را حفظ و مدیریت کنید. با این حال، این یک ابزار متفاوت از apt است، و نسخه‌هایی از Node.js که با آن مدیریت می‌کنید با نسخه‌هایی که با apt مدیریت می‌کنید متمایز هستند.

برای نصب NVM در دستگاه اوبونتو 18.04، از صفحه GitHub پروژه بازدید کنید. دستور curl را از فایل README که در صفحه اصلی نمایش داده می شود کپی کنید تا آخرین نسخه اسکریپت نصب را دریافت کنید.

قبل از انتقال فرمان به bash، همیشه ایده خوبی است که اسکریپت را بررسی کنید تا مطمئن شوید که کاری را انجام نمی دهد که با آن موافق نیستید. با حذف | می توانید این کار را انجام دهید بخش bash در انتهای دستور curl:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh

خروجی را مرور کنید و مطمئن شوید که با تغییراتی که ایجاد می کند راحت هستید. پس از رضایت، همان دستور را با | اجرا کنید bash در انتها اضافه شده است. URL مورد استفاده شما بسته به آخرین نسخه NVM تغییر می کند، اما از هم اکنون، اسکریپت را می توان با اجرای موارد زیر دانلود و اجرا کرد:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

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

source ~/.bashrc

با نصب nvm، می توانید نسخه های ایزوله Node.js را نصب کنید. ابتدا از nvm بپرسید که چه نسخه هایی از Node موجود است:

nvm ls-remote

 

Output

...
        v14.18.2   (Latest LTS: Fermium)
        v15.0.0
        v15.0.1
        v15.1.0
        v15.2.0
        v15.2.1
        v15.3.0
        v15.4.0
        v15.5.0
        v15.5.1
        v15.6.0
        v15.7.0
        v15.8.0
        v15.9.0
       v15.10.0
       v15.11.0
       v15.12.0
       v15.13.0
       v15.14.0
        v16.0.0
        v16.1.0
        v16.2.0
        v16.3.0
        v16.4.0
        v16.4.1
        v16.4.2
        v16.5.0
        v16.6.0
        v16.6.1
        v16.6.2
        v16.7.0
        v16.8.0
        v16.9.0
        v16.9.1
       v16.10.0
       v16.11.0
       v16.11.1
       v16.12.0
       v16.13.0   (LTS: Gallium)
       v16.13.1   (Latest LTS: Gallium)
        v17.0.0
        v17.0.1
        v17.1.0
        v17.2.0
        v17.3.0

این یک لیست بسیار طولانی است، اما می توانید با وارد کردن هر یک از نسخه های منتشر شده لیست، نسخه ای از Node را نصب کنید. به عنوان مثال، برای دریافت نسخه v16.13.1، موارد زیر را اجرا کنید:

nvm install v16.13.1

Output
Now using node v16.13.1 (npm v8.1.2)

گاهی اوقات nvm به استفاده از آخرین نسخه نصب شده تغییر می کند. اما می‌توانید به nvm بگویید از نسخه‌ای که دانلود کرده‌اید استفاده کند (اگر متفاوت است):

nvm use v16.13.1

 

Output

Now using node v16.13.1 (npm v8.1.2)

گاهی اوقات nvm به استفاده از آخرین نسخه نصب شده تغییر می کند. اما می‌توانید به nvm بگویید از نسخه‌ای که دانلود کرده‌اید استفاده کند (اگر متفاوت است):

nvm use v16.13.1

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

node -v

 

Output

v16.13.1

اگر چندین نسخه Node را نصب کرده‌اید، می‌توانید ls را اجرا کنید تا لیستی از آنها را دریافت کنید:

nvm ls

 

Output

->     v16.13.1
         system
default -> v16.13.1
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v16.13.1) (default)
stable -> 16.13 (-> v16.13.1) (default)
lts/* -> lts/gallium (-> v16.13.1)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.8 (-> N/A)
lts/fermium -> v14.18.2 (-> N/A)
lts/gallium -> v16.13.1

همچنین می توانید به صورت پیش فرض یکی از نسخه ها را انتخاب کنید:

nvm alias default 16.13.1

 

Output

default -> 16.13.1 (-> v16.13.1)

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

nvm use default

 

Output

Now using node v16.13.1 (npm v8.1.2)

هر نسخه از Node بسته های خود را پیگیری می کند و npm برای مدیریت آنها در دسترس است.

همچنین می توانید بسته های نصب npm را در دایرکتوری ./node_modules پروژه Node.js داشته باشید. برای نصب ماژول اکسپرس از دستور زیر استفاده کنید:

npm install express

 

Output

added 50 packages, and audited 51 packages in 4s

2 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
npm notice
npm notice New minor version of npm available! 8.1.2 -> 8.3.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v8.3.0
npm notice Run npm install -g npm@8.3.0 to update!
npm notice

اگر می‌خواهید ماژول را به صورت سراسری نصب کنید و آن را با استفاده از نسخه مشابه Node.js برای پروژه‌های دیگر در دسترس قرار دهید، می‌توانید پرچم -g را اضافه کنید:

npm install -g express

 

Output

added 50 packages, and audited 51 packages in 1s

2 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

با این کار بسته در زیر نصب می شود:

~/.nvm/versions/node/16.13.1/lib/node_modules/express

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

npm link express

با اجرای موارد زیر می‌توانید درباره گزینه‌های موجود با nvm اطلاعات بیشتری کسب کنید:

nvm help

شما با استفاده از Node Version Manager، nvm، Node را با موفقیت نصب کرده اید تا نسخه های مختلف Node را نصب و مدیریت کنید.

حذف Node.js

بسته به نسخه ای که می خواهید هدف بگیرید، می توانید Node.js را با استفاده از apt یا nvm حذف نصب کنید. برای حذف نسخه پیش فرض مخزن، از apt در سطح سیستم استفاده خواهید کرد. این دستور بسته را حذف می کند و فایل های پیکربندی را حفظ می کند. اگر قصد دارید در آینده بسته را دوباره نصب کنید، این کار مفید است:

sudo apt remove nodejs

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

sudo apt purge nodejs

به عنوان آخرین مرحله، می‌توانید بسته‌های استفاده‌نشده را که به‌طور خودکار با بسته حذف شده نصب شده‌اند حذف کنید:

sudo apt autoremove

برای حذف نصب نسخه‌ای از Node.js که با استفاده از nvm فعال کرده‌اید، ابتدا مشخص کنید نسخه‌ای که می‌خواهید حذف کنید، نسخه فعال فعلی است یا خیر:

nvm current

اگر نسخه مورد نظر شما نسخه فعال فعلی نیست، می توانید اجرا کنید:

nvm uninstall node_version

 

Output

Uninstalled node node_version

این دستور نسخه انتخاب شده Node.js را حذف نصب می کند.

اگر نسخه ای که می خواهید حذف کنید نسخه فعال فعلی است، ابتدا باید nvm را غیرفعال کنید تا تغییرات خود را فعال کنید:

nvm deactivate

اکنون می توانید نسخه فعلی را با استفاده از دستور uninstall که قبلاً استفاده شده است، حذف نصب کنید. با این کار همه فایل‌های مرتبط با نسخه هدفمند Node.js به جز فایل‌های کش که می‌توانند برای نصب مجدد استفاده شوند، حذف می‌شوند.

نتیجه

راه‌های زیادی برای راه‌اندازی و اجرای Node.js در سرور اوبونتو 18.04 وجود دارد. شرایط شما تعیین می کند که کدام یک از روش ها برای نیازهای شما بهترین است. در حالی که استفاده از نسخه بسته بندی شده در مخزن اوبونتو یک روش است، استفاده از nvm یا NodeSource PPA انعطاف پذیری بیشتری را ارائه می دهد.

 

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/

 

برچسب‌ها:UbuntuUbuntu 18.04اتصال به سرور مجازیانواع سرور مجازیاوبونتو 18.04پلت فرم جاوا اسکریپتجاوا اسکریپتخرید سرور مجازینصب Node.js

  • behnam gol mohamadi
  • ۰
  • ۰

نحوه پیکربندی Suricata به عنوان یک سیستم پیشگیری از نفوذ (IPS) در راکی لینوکس 8

معرفی

در این آموزش نحوه پیکربندی حالت داخلی سیستم پیشگیری از نفوذ (IPS) Suricata را در راکی ​​لینوکس 8 خواهید آموخت. به طور پیش فرض Suricata به گونه ای پیکربندی شده است که به عنوان یک سیستم تشخیص نفوذ (IDS) اجرا شود، که فقط هشدارها را تولید می کند و ترافیک مشکوک را ثبت می کند. هنگامی که حالت IPS را فعال می کنید، Suricata می تواند به طور فعال ترافیک شبکه مشکوک را علاوه بر ایجاد هشدار برای تجزیه و تحلیل بیشتر، حذف کند.

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

در قسمت اول این آموزش، امضاهایی را که نصب و فعال کرده اید بررسی می کنید. همچنین یاد خواهید گرفت که چگونه امضاهای خود را وارد کنید. هنگامی که بدانید از کدام امضاها می خواهید در حالت IPS استفاده کنید، عملکرد پیش فرض آنها را به حذف یا رد ترافیک تبدیل می کنید. با امضای خود، یاد خواهید گرفت که چگونه ترافیک شبکه را از طریق Suricata با استفاده از netfilter NFQUEUE iptables target ارسال کنید و سپس مقداری ترافیک شبکه نامعتبر ایجاد کنید تا اطمینان حاصل کنید که Suricata آن را همانطور که انتظار می رود حذف می کند.

پیش نیازها

  •  Suricata را روی سرور Rocky Linux 8 اجرا کنید.
  • همچنین باید مجموعه قوانین باز ET را با استفاده از دستور suricata-update دانلود کرده و در امضاهای Suricata خود قرار دهید.
  • خط فرمان jq ابزار پردازش JSON. اگر آن را از آموزش قبلی نصب نکرده اید، می توانید با استفاده از دستور dnf این کار را انجام دهید:

sudo dnf install jq

 

مرحله 1 – شامل امضاهای سفارشی

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

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

ip -brief address show

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

 
Output
lo               UNKNOWN        127.0.0.1/8 ::1/128
eth0             UP             203.0.113.0.5/20 10.20.0.5/16 2001:DB8::1/32 fe80::94ad:d4ff:fef9:cee0/64
eth1             UP             10.137.0.2/16 fe80::44a2:ebff:fe91:5187/64

آدرس(های) IP عمومی شما مشابه آی پی های هایلایت شده 203.0.113.0.5 و 2001:DB8::1/32 در خروجی خواهد بود.

اکنون اجازه دهید امضای سفارشی زیر را برای اسکن ترافیک SSH به پورت های غیر SSH ایجاد کنیم و آن را در فایلی به نام /var/lib/suricata/rules/local.rules قرار دهیم. فایل را با nano یا ویرایشگر دلخواه خود باز کنید:

sudo vi /var/lib/suricata/rules/local.rules

امضای زیر را کپی و پیست کنید:

Invalid SSH Traffic Signature
alert ssh any any -> 203.0.113.0.5 !22 (msg:"SSH TRAFFIC on non-SSH port"; flow:to_client, not_established; classtype: misc-attack; target: dest_ip; sid:1000000;)
alert ssh any any -> 2001:DB8::1/32 !22 (msg:"SSH TRAFFIC on non-SSH port"; flow:to_client, not_established; classtype: misc-attack; target: dest_ip; sid:1000001;)

آدرس IP عمومی سرور خود را به جای آدرس های 203.0.113.5 و 2001:DB8::1/32 در قانون جایگزین کنید. اگر از IPv6 استفاده نمی کنید، می توانید از افزودن آن امضا در این قوانین و قوانین زیر صرفنظر کنید.

بسته به شبکه و برنامه های خود می توانید به افزودن امضاهای سفارشی به این فایل local.rules ادامه دهید. به عنوان مثال، اگر می خواهید در مورد ترافیک HTTP به پورت های غیر استاندارد هشدار دهید، می توانید از امضاهای زیر استفاده کنید:

HTTP traffic on non-standard port signature
alert http any any -> 203.0.113.0.5 !80 (msg:"HTTP REQUEST on non-HTTP port"; flow:to_client, not_established; classtype:misc-activity; sid:1000002;)
alert http any any -> 2001:DB8::1/32 !80 (msg:"HTTP REQUEST on non-HTTP port"; flow:to_client, not_established; classtype:misc-activity; sid:1000003;)

برای افزودن امضایی که ترافیک TLS را به پورت هایی غیر از 443 پیش فرض برای سرورهای وب بررسی می کند، موارد زیر را اضافه کنید:

TLS traffic on non-standard port signature
alert tls any any -> 203.0.113.0.5 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; flow:to_client, not_established; classtype:misc-activity; sid:1000004;)
alert tls any any -> 2001:DB8::1/32 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; flow:to_client, not_established; classtype:misc-activity; sid:1000005;)

پس از تکمیل امضا، فایل را ذخیره کرده و ببندید. اگر از vi استفاده می کنید، ESC و سپس 😡 و سپس ENTER را برای ذخیره و خروج فشار دهید.

اکنون که تعدادی امضای سفارشی تعریف کرده‌اید، فایل پیکربندی Suricata /etc/suricata/suricata.yaml را با استفاده از nano یا ویرایشگر دلخواه خود ویرایش کنید تا آنها را در بر بگیرد:

sudo vi /etc/suricata/suricata.yaml

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

بخش را ویرایش کنید و خط برجسته شده زیر را اضافه کنید – local.rules:

/etc/suricata/suricata.yaml
. . .
rule-files:
  - suricata.rules
  - local.rules
. . .

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

sudo suricata -T -c /etc/suricata/suricata.yaml -v

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

هنگامی که از امضاهایی که با استفاده از ابزار suricata-update ایجاد یا اضافه کرده اید راضی شدید، می توانید به مرحله بعدی بروید، جایی که عملکرد پیش فرض امضاهای خود را از هشدار یا ثبت به حذف فعال ترافیک تغییر دهید.

مرحله 2 – پیکربندی اقدامات امضا

اکنون که امضاهای سفارشی خود را آزمایش کرده‌اید و با Suricata کار می‌کنید، می‌توانید عمل را به حذف یا رد تغییر دهید. وقتی Suricata در حالت IPS کار می کند، این اقدامات به طور فعال ترافیک نامعتبر را برای هر امضای منطبق مسدود می کند.

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

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

فایل /var/lib/suricata/rules/local.rules خود را با استفاده از nano یا ویرایشگر دلخواه خود باز کنید و عمل هشدار را در ابتدای هر خط در فایل تغییر دهید تا رها شود:

sudo vi /var/lib/suricata/rules/local.rules

/var/lib/suricata/rules/local.rules
drop ssh any any -> 203.0.113.0.5 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000000;)
drop ssh any any -> 2001:DB8::1/32 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000001;)

مرحله بالا را برای هر گونه امضا در /var/lib/suricata/rules/suricata.rules که می‌خواهید به حالت رها یا رد تبدیل کنید، تکرار کنید.

هنگامی که همه امضاها را با عملکردی که می خواهید انجام دهند پیکربندی کردید، مرحله بعدی پیکربندی مجدد و سپس راه اندازی مجدد Suricata در حالت IPS است.

مرحله 3 – فعال کردن حالت nfqueue

Suricata به طور پیش فرض در حالت IDS اجرا می شود، به این معنی که به طور فعال ترافیک شبکه را مسدود نمی کند. برای تغییر به حالت IPS، باید فایل پیکربندی /etc/sysconfig/suricata Suricata را ویرایش کنید.

فایل را در nano یا ویرایشگر دلخواه خود باز کنید:

sudo vi /etc/sysconfig/suricata

خط OPTIONS=”-i eth0 –user suricata” را پیدا کنید و با اضافه کردن یک # به ابتدای خط آن را نظر دهید. سپس یک خط جدید OPTIONS=”-q 0 -vvv –user suricata” اضافه کنید که به Suricata می گوید در حالت IPS اجرا شود.

پس از اتمام ویرایش، فایل شما باید دارای خطوط برجسته زیر باشد:

/etc/sysconfig/suricata
. . .
# OPTIONS="-i eth0 --user suricata"
OPTIONS="-q 0 -vvv --user suricata"
. . .

ذخیره کنید و فایل را ببندید. اکنون می توانید Suricata را با استفاده از systemctl مجددا راه اندازی کنید:

sudo systemctl restart suricata.service

وضعیت Suricata را با استفاده از systemctl بررسی کنید:

sudo systemctl status suricata.service

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

 
Output
● suricata.service - Suricata Intrusion Detection Service
   Loaded: loaded (/usr/lib/systemd/system/suricata.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-12-14 16:52:07 UTC; 6s ago
     Docs: man:suricata(1)
  Process: 44256 ExecStartPre=/bin/rm -f /var/run/suricata.pid (code=exited, status=0/SUCCESS)
 Main PID: 44258 (Suricata-Main)
    Tasks: 10 (limit: 11188)
   Memory: 52.8M
   CGroup: /system.slice/suricata.service
           └─44258 /sbin/suricata -c /etc/suricata/suricata.yaml --pidfile /var/run/suricata.pid -q 0 -vvv --user suricata

. . .
Dec 14 16:52:07 suricata suricata[44258]: 14/12/2021 -- 16:52:07 - <Notice> - all 4 packet processing threads, 4 management threads initialized, engine started.

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

با این تغییر اکنون در مرحله بعد آماده ارسال ترافیک به Suricata با استفاده از Firewalld هستید.

مرحله 4 – پیکربندی فایروالد برای ارسال ترافیک به Suricata

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

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

sudo firewall-cmd –permanent –direct –add-rule ipv4 filter INPUT 0 -p tcp –dport 22 -j NFQUEUE –queue-bypass

sudo firewall-cmd –permanent –direct –add-rule ipv4 filter OUTPUT 0 -p tcp –sport 22 -j NFQUEUE –queue-bypass

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

با استفاده از دستورات زیر قوانین مشابهی را برای IPv6 اضافه کنید:

sudo firewall-cmd –permanent –direct –add-rule ipv6 filter INPUT 0 -p tcp –dport 22 -j NFQUEUE –queue-bypass

sudo firewall-cmd –permanent –direct –add-rule ipv6 filter OUTPUT 0 -p tcp –sport 22 -j NFQUEUE –queue-bypass

در مرحله بعد، قوانین FORWARD را اضافه کنید تا مطمئن شوید که اگر سرور شما به عنوان دروازه ای برای سیستم های دیگر عمل می کند، تمام آن ترافیک نیز برای پردازش به Suricata می رود.

sudo firewall-cmd –permanent –direct –add-rule ipv4 filter FORWARD 0 -j NFQUEUE

sudo firewall-cmd –permanent –direct –add-rule ipv6 filter FORWARD 0 -j NFQUEUE

دو قانون نهایی INPUT و OUTPUT تمام ترافیک باقیمانده را که ترافیک SSH نیستند برای پردازش به Suricata ارسال می کند.

sudo firewall-cmd –permanent –direct –add-rule ipv4 filter INPUT 1 -j NFQUEUE

sudo firewall-cmd –permanent –direct –add-rule ipv4 filter OUTPUT 1 -j NFQUEUE

دستورات را برای ترافیک IPv6 تکرار کنید:

sudo firewall-cmd –permanent –direct –add-rule ipv6 filter INPUT 1 -j NFQUEUE

sudo firewall-cmd –permanent –direct –add-rule ipv6 filter OUTPUT 1 -j NFQUEUE

اکنون فایروالد را مجدداً بارگیری کنید تا قوانین پایدار بماند:

sudo firewall-cmd –reload

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

آخرین مرحله در این آموزش این است که تأیید کنید Suricata ترافیک را به درستی حذف می کند.

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

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

امضای sid:2100498 را از آموزش قبلی به یاد بیاورید، که در این مثال برای رها کردن بسته های منطبق اصلاح شده است:

sid:2100498
drop ip any any -> any any (msg:"GPL ATTACK_RESPONSE id check returned root"; content:"uid=0|28|root|29|"; classtype:bad-unknown; sid:2100498; rev:7; metadata:created_at 2010_09_23, updated_at 2010_09_23;)

قانون را در فایل /var/lib/suricata/rules/suricata.rules خود پیدا کرده و ویرایش کنید تا اگر امضا را در آنجا دارید، از عمل drop استفاده کنید. در غیر این صورت، قانون را به فایل /var/lib/suricata/rules/local.rules خود اضافه کنید.

سیگنال SIGUSR2 را برای Suricata ارسال کنید تا امضاهایش را دوباره بارگیری کند:

sudo kill -usr2 $(pidof suricata)

حالا قانون را با استفاده از curl تست کنید:

curl –max-time 5 http://testmynids.org/uid/index.html

باید خطایی دریافت کنید که زمان درخواست به پایان رسیده است، که نشان می دهد Suricata پاسخ HTTP را مسدود کرده است:

 
Output
curl: (28) Operation timed out after 5000 milliseconds with 0 out of 39 bytes received

می‌توانید تأیید کنید که Suricata پاسخ HTTP را با استفاده از jq برای بررسی فایل eve.log حذف کرده است:

sudo jq ‘select(.alert .signature_id==2100498)’ /var/log/suricata/eve.json

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

 
Output
{
. . .
  "community_id": "1:SbOgFh2T3DZvwsoyMH4xfxOoVas=",
  "alert": {
    "action": "blocked",
    "gid": 1,
    "signature_id": 2100498,
    "rev": 7,
    "signature": "GPL ATTACK_RESPONSE id check returned root",
    "category": "Potentially Bad Traffic",
    "severity": 2,
    "metadata": {
      "created_at": [
        "2010_09_23"
      ],
      "updated_at": [
        "2010_09_23"
      ]
    }
  },
  "http": {
    "hostname": "testmynids.org",
    "url": "/uid/index.html",
    "http_user_agent": "curl/7.61.1",
    "http_content_type": "text/html",
    "http_method": "GET",
    "protocol": "HTTP/1.1",
    "status": 200,
    "length": 39
  },
. . .

خط برجسته “اقدام”: “blocked” تأیید می کند که امضا مطابقت دارد و Suricata درخواست HTTP آزمایشی را رد یا رد کرده است.

نتیجه

در این آموزش شما Suricata را برای مسدود کردن ترافیک شبکه مشکوک با استفاده از حالت IPS داخلی خود در راکی لینوکس 8 پیکربندی کرده‌اید. همچنین امضاهای سفارشی را برای بررسی و مسدود کردن ترافیک SSH، HTTP و TLS در پورت‌های غیر استاندارد اضافه کرده‌اید. برای گره زدن همه چیز به هم، قوانین فایروال را نیز برای هدایت ترافیک از طریق Suricata برای پردازش اضافه کردید.

اکنون که Suricata را در حالت IPS نصب و پیکربندی کرده‌اید و می‌توانید امضاهای خود را بنویسید که ترافیک مشکوک را هشدار می‌دهد یا آن را رها می‌کند، می‌توانید به نظارت بر سرورها و شبکه‌های خود ادامه دهید و امضاهای خود را اصلاح کنید.

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

 

 

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/

برچسب‌ها:

  • behnam gol mohamadi