Ubuntu 18.04, دسته‌بندی نشده

نحوه استفاده از Vuls به عنوان یک اسکنر آسیب پذیری در اوبونتو 18.04

معرفی

Vuls یک اسکنر آسیب‌پذیری منبع باز و بدون عامل است که در Go نوشته شده است. تجزیه و تحلیل آسیب پذیری امنیتی نرم افزار نصب شده بر روی یک سیستم را خودکار می کند، که می تواند برای مدیران سیستم به صورت دستی در یک محیط تولید کار سنگینی باشد. Vuls از چندین پایگاه داده آسیب‌پذیری معروف مانند پایگاه داده ملی آسیب‌پذیری (NVD) استفاده می‌کند. با توجه به منابع، Vuls این توانایی را دارد که چندین سیستم را به طور همزمان اسکن کند و گزارش ها را از طریق ایمیل یا Slack ارسال کند. دارای سه حالت اسکن (سریع، سریع روت و عمیق) است که می توانید با توجه به شرایط آن را انتخاب کنید.

Vuls یک اسکنر امنیتی فناوری اطلاعات گسترده نیست. به عنوان مثال، ترافیک شبکه را کنترل نمی کند یا در برابر حملات brute-force لاگین محافظت نمی کند. با این حال، Vuls راهی برای خودکار کردن گزارش آسیب‌پذیری برای بسته‌های لینوکس ارائه می‌کند. هنگامی که پایگاه‌های داده‌ای که Vuls استفاده می‌کند از رفع آسیب‌پذیری‌های خاص مطلع می‌شوند، Vuls این اطلاعات اصلاحی را نیز در گزارش‌های خود می‌آورد. هنگام تولید گزارش ها، Vuls با استفاده از سیستم رتبه بندی ایجاد شده از پایگاه داده، فوری ترین آسیب پذیری ها را اولویت بندی می کند.

در این آموزش، Vuls را در سرور اوبونتو 18.04 مستقر خواهید کرد. این شامل ساخت Vuls و وابستگی‌های آن از کد منبع، پیکربندی اسکن و گزارش‌دهی به Slack و اتصال اختیاری آن به ماشین‌های هدف برای فعال کردن اسکن از راه دور است. در پایان، شما یک سیستم خودکار گزارش‌دهی آسیب‌پذیری خواهید داشت که به شما در مورد آسیب‌پذیری‌ها هشدار می‌دهد و نیاز به بررسی دستی را از بین می‌برد.

پیش نیازها

برای تکمیل این آموزش، شما نیاز دارید:

  • سروری با حداقل 2 گیگابایت رم که اوبونتو 18.04 را با دسترسی روت اجرا می کند و یک حساب ثانویه غیر روت.
  • فضای کاری Slack که شما عضو آن هستید.
  • (اختیاری) چندین سرور در حال اجرا (ترجیحا) Ubuntu 18.04 با دسترسی ریشه و یک حساب ثانویه و غیر ریشه، اگر می‌خواهید Vuls را برای اسکن از راه دور تنظیم کنید.

مرحله 1 – نصب Dependencies

در این بخش، پوشه ای برای ذخیره داده های Vuls ایجاد می کنید، آخرین نسخه زبان برنامه نویسی Go را نصب می کنید و سایر بسته های مورد نیاز Vuls و وابستگی های آن را نصب می کنید.

برای این آموزش، تمام داده های مربوط به Vuls را در پوشه /usr/share/vuls-data ذخیره می کنید. با اجرای دستور زیر آن را ایجاد کنید:

sudo mkdir /usr/share/vuls-data

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

sudo chown -R sammy /usr/share/vuls-data

اکنون پوشه vuls-data را ایجاد کرده اید که فضای کاری شما خواهد بود. قبل از ادامه نصب بسته‌های مورد نیاز، ابتدا حافظه پنهان بسته منیجر را به‌روزرسانی کنید:

sudo apt update

برای دانلود و کامپایل وابستگی ها، git، gcc، make، sqlite، debian-goodies و wget را نصب خواهید کرد.

sqlite یک سیستم پایگاه داده است که در اینجا برای ذخیره اطلاعات آسیب پذیری از آن استفاده خواهید کرد. debian-goodies حاوی ابزار checkrestart است که اطلاعاتی را در مورد اینکه چه بسته هایی می توانند و باید در هر لحظه از زمان راه اندازی مجدد شوند را ارائه می دهد.

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

sudo apt install sqlite git debian-goodies gcc make wget -y

اکنون بسته های مورد نیاز را نصب کرده اید. سپس با اجرای دستور زیر، Go را با استفاده از مدیریت بسته snap نصب کنید:

sudo snap install go –classic

شما از snap برای نصب Go استفاده می‌کنید زیرا آخرین نسخه زبان را نصب می‌کند، برخلاف apt، که ممکن است نسخه قدیمی‌تر را نصب کند. کار با نسخه قدیمی توصیه نمی شود و ممکن است شما را از تکمیل این آموزش باز دارد.

برای کار کردن، Go به چند متغیر محیطی نیاز دارد که شما آنها را تنظیم خواهید کرد: GOPATH و PATH. GOPATH دایرکتوری کاری Go را مشخص می کند. PATH که شامل دایرکتوری هایی است که برنامه ها در آنها قرار می گیرند، باید گسترش یابد تا به سیستم بگوید که خود Go را کجا پیدا کند.

این متغیرهای محیطی باید هر بار که کاربر وارد سیستم می شود تنظیم شود. برای خودکار کردن این کار، یک فایل اجرایی جدید به نام go-env.sh در زیر /etc/profile.d ایجاد خواهید کرد. این باعث می شود که هر بار که کاربر وارد می شود دایرکتوری اجرا شود.

go-env.sh را با استفاده از ویرایشگر متن خود ایجاد کنید:

sudo nano /etc/profile.d/go-env.sh

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

/etc/profile.d/go-env.sh
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin:/snap/bin

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

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

در حال حاضر، go-env.sh قابل اجرا نیست. برای رفع این مشکل، با اجرای دستور زیر آن را به عنوان قابل اجرا علامت گذاری کنید:

sudo chmod +x /etc/profile.d/go-env.sh

برای جلوگیری از ورود مجدد به سیستم، می توانید go-env.sh را با اجرای:

source /etc/profile.d/go-env.sh

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

در این بخش، زبان Go را نصب کرده‌اید، متغیرهای محیطی آن را تنظیم کرده‌اید و بسته‌هایی را نصب کرده‌اید که بعداً به آنها نیاز خواهید داشت. در مراحل بعدی، برنامه های Go را که Vuls نیاز دارد دانلود و کامپایل خواهید کرد. این برنامه‌ها go-cve-dictionary و goval-dictionary هستند که Vuls از آنها برای جستجو در پایگاه‌های داده آسیب‌پذیری استفاده می‌کند.

مرحله 2 – نصب و اجرای go-cve-dictionary

در این بخش، go-cve-dictionary را دانلود و کامپایل می‌کنید، یک بسته Go که دسترسی به NVD (پایگاه ملی آسیب‌پذیری) را فراهم می‌کند. سپس، آن را اجرا می‌کنید و داده‌های آسیب‌پذیری را برای Vuls واکشی می‌کنید تا از آن استفاده کند. NVD مخزن آسیب‌پذیری‌های امنیت سایبری گزارش‌شده عمومی توسط دولت ایالات متحده است که حاوی شناسه‌های آسیب‌پذیری (CVE – آسیب‌پذیری‌های رایج و مواجهه‌ها)، خلاصه‌ها و تجزیه و تحلیل تأثیر است و در قالب قابل خواندن توسط ماشین در دسترس است.

برو بسته‌ها را تحت $GOPATH/src/ ذخیره می‌کند. شما می توانید این را با استفاده از زیر شاخه ها برای یادداشت مبدا گسترش دهید. به عنوان مثال، بسته‌های GitHub که توسط کاربر مثال کاربر ساخته شده است، در $GOPATH/src/github.com/example-user ذخیره می‌شوند.

ابتدا go-cve-dictionary را با شبیه سازی بسته Go از GitHub و سپس کامپایل کردن آن نصب خواهید کرد.

با ایجاد یک دایرکتوری برای ذخیره آن، مطابق مسیر مثال، شروع کنید:

mkdir -p $GOPATH/src/github.com/vulsio

با اجرای زیر به آن بروید:

cd $GOPATH/src/github.com/vulsio

اکنون با اجرای:

git clone https://github.com/vulsio/go-cve-dictionary.git

سپس به ریشه بسته بروید:

cd go-cve-dictionary

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

make install

به خاطر داشته باشید که اتمام این دستور ممکن است کمی طول بکشد. برای در دسترس قرار دادن آن در سطح سیستم، آن را در /usr/local/bin کپی کنید:

sudo cp $GOPATH/bin/go-cve-dictionary /usr/local/bin

go-cve-dictionary نیاز به دسترسی به دایرکتوری خروجی log دارد و به طور پیش فرض /var/log/vuls است. آن را با اجرا ایجاد کنید:

sudo mkdir /var/log/vuls

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

sudo chmod 700 /var/log/vuls

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

sudo chmod 700 /var/log/vuls

تنظیم پرچم های مجوز روی 700 دسترسی فقط به مالک را محدود می کند.

برای اینکه سامی یا کاربر دیگری به آن دسترسی داشته باشد، دستور زیر را اجرا کنید:

sudo chown -R sammy /var/log/vuls

اکنون، داده‌های آسیب‌پذیری را از NVD دریافت کرده و در فضای کاری Vuls خود ذخیره می‌کنید (/usr/share/vuls-data):

go-cve-dictionary fetch nvd –dbpath /usr/share/vuls-data/cve.sqlite3

این دستور داده‌های آسیب‌پذیری NVD را از سال 2002 تا سال جاری دریافت می‌کند و آن‌ها را در پایگاه داده تحت /usr/share/vuls-data ذخیره می‌کند.

در این مرحله، go-cve-dictionary را دانلود و نصب کرده‌اید و داده‌های NVD را برای Vuls برای استفاده بعدی واکشی کرده‌اید. در بخش بعدی، goval-dictionary را دانلود و نصب می‌کنید و داده‌های OVAL را برای اوبونتو واکشی می‌کنید.

مرحله 3 – نصب و اجرای Goval-Dictionary

در این بخش، goval-dictionary را دانلود و کامپایل می‌کنید، یک بسته Go که دسترسی به پایگاه داده OVAL را برای اوبونتو فراهم می‌کند. سپس آن را اجرا می‌کنید و داده‌های آسیب‌پذیری را برای استفاده Vuls واکشی می‌کنید. OVAL مخفف Open Vulnerability and Assessment Language است که یک زبان باز است که برای بیان بررسی‌ها برای تعیین اینکه آیا آسیب‌پذیری‌های نرم‌افزاری در یک سیستم خاص وجود دارد یا خیر استفاده می‌شود.

به پوشه $GOPATH/src/github.com/vulsio بروید:

cd $GOPATH/src/github.com/vulsio

با اجرای دستور زیر بسته را از GitHub کلون کنید:

git clone https://github.com/vulsio/goval-dictionary.git

وارد پوشه بسته شوید:

cd goval-dictionary

آن را با make کامپایل و نصب کنید:

make install

برای دسترسی جهانی آن را در /usr/local/bin کپی کنید:

sudo cp $GOPATH/bin/goval-dictionary /usr/local/bin

سپس، با اجرای دستور زیر، داده های OVAL را برای Ubuntu 18.x واکشی کنید:

sudo goval-dictionary fetch ubuntu –dbpath=/usr/share/vuls-data/oval.sqlite3 18

در این مرحله، goval-dictionary را دانلود و نصب کرده اید و داده های OVAL را برای Ubuntu 18.x واکشی کرده اید. در مرحله بعدی، gost را دانلود و نصب می‌کنید و داده‌های ردیاب امنیتی Debian را واکشی می‌کنید.

مرحله 4 – نصب و اجرای gost

در این بخش، gost را دانلود و کامپایل می‌کنید، بسته Go که دسترسی به ردیاب اشکال امنیتی دبیان را فراهم می‌کند. سپس آن را اجرا می‌کنید و داده‌های آسیب‌پذیری را برای Vuls واکشی می‌کنید تا از آن استفاده کند. ردیاب امنیتی اوبونتو تمام اطلاعات مربوط به وضعیت آسیب پذیری بسته های توزیع شده با اوبونتو را جمع آوری می کند.

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

cd $GOPATH/src/github.com/vulsio

با اجرای زیر بسته را از GitHub کلون کنید:

git clone https://github.com/vulsio/gost.git

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

cd gost

آن را با make کامپایل و نصب کنید:

make install

برای دسترسی جهانی آن را در /usr/local/bin کپی کنید:

sudo cp $GOPATH/bin/gost /usr/local/bin

سپس یک فهرست فایل log برای gost ایجاد کنید:

sudo mkdir /var/log/gost

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

sudo chmod 700 /var/log/gost

همانطور که قبلاً ذکر شد، تنظیم پرچم های مجوز روی 700 دسترسی فقط به مالک را محدود می کند.

برای اینکه سامی یا کاربر دیگری به آن دسترسی داشته باشد، دستور زیر را اجرا کنید:

sudo chown -R sammy /var/log/gost

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

gost fetch ubuntu –dbpath=/usr/share/vuls-data/gost.sqlite3

خروجی طولانی خواهد بود و احتمالاً به درستی پاک نمی شود. برای پاک کردن آن می توانید دستور clear را اجرا کنید.

در این مرحله شما gost را دانلود و نصب کرده اید و داده ها را برای دبیان واکشی کرده اید. در مرحله بعد، Vuls را دانلود و نصب خواهید کرد.

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

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

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

mkdir -p $GOPATH/src/github.com/future-architect

به آن بروید:

cd $GOPATH/src/github.com/future-architect

با اجرای دستور زیر، Vuls را از GitHub کلون کنید:

git clone https://github.com/future-architect/vuls.git

وارد پوشه بسته شوید:

cd vuls

کامپایل و همزمان با اجرای:

make install

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

برای دسترسی جهانی آن را در /usr/local/bin کپی کنید:

sudo cp $GOPATH/bin/vuls /usr/local/bin

اکنون، یک فایل پیکربندی برای Vuls ایجاد خواهید کرد. به /usr/share/vuls-data برگردید:

cd /usr/share/vuls-data

Vuls پیکربندی خود را در یک فایل TOML ذخیره می کند که شما آن را config.toml می نامید. آن را با استفاده از ویرایشگر متن خود ایجاد کنید:

sudo nano config.toml

پیکربندی زیر را وارد کنید:

/usr/share/vuls-data/config.toml
[cveDict]
type = "sqlite3"
SQLite3Path = "/usr/share/vuls-data/cve.sqlite3"

[ovalDict]
type = "sqlite3"
SQLite3Path = "/usr/share/vuls-data/oval.sqlite3"

[gost]
type = "sqlite3"
SQLite3Path = "/usr/share/vuls-data/gost.sqlite3"

[servers]

[servers.localhost]
host = "localhost"
port = "local"
scanMode = [ "fast" ]
#scanMode = ["fast", "fast-root", "deep", "offline"]

 

دو بخش اول این پیکربندی (cveDict و ovalDict) Vuls را به پایگاه‌های آسیب‌پذیری که در دو مرحله آخر ایجاد کردید، نشان می‌دهند. بخش بعدی (سرورها) شروع اطلاعات مربوط به سرور را نشان می دهد. بخش های جداگانه اطلاعات مربوط به هر سرور را گروه بندی می کند. تنها سروری که Vuls با این پیکربندی مشخص شده اسکن می‌کند، سرور محلی (localhost) است.

Vuls چهار حالت اسکن را ارائه می دهد:

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

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

vuls configtest

خروجی شبیه به این خواهد بود:

Output
[Dec 14 09:07:28]  INFO [localhost] vuls-v0.19.0-build-20211214_090234_2b7294a
[Dec 14 09:07:28]  INFO [localhost] Validating config...
[Dec 14 09:07:28]  INFO [localhost] Detecting Server/Container OS...
[Dec 14 09:07:28]  INFO [localhost] Detecting OS of servers...
[Dec 14 09:07:28]  INFO [localhost] (1/1) Detected: localhost: ubuntu 18.04
[Dec 14 09:07:28]  INFO [localhost] Detecting OS of containers...
[Dec 14 09:07:28]  INFO [localhost] Checking Scan Modes...
[Dec 14 09:07:28]  INFO [localhost] Checking dependencies...
[Dec 14 09:07:28]  INFO [localhost] Dependencies... Pass
[Dec 14 09:07:28]  INFO [localhost] Checking sudo settings...
[Dec 14 09:07:28]  INFO [localhost] sudo ... No need
[Dec 14 09:07:28]  INFO [localhost] It can be scanned with fast scan mode even if warn or err messages are displayed due to lack of dependent packages or sudo settings in fast-root or deep scan mode
[Dec 14 09:07:28]  INFO [localhost] Scannable servers are below...
localhost

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

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

مرحله 6 – اجرای یک اسکن محلی

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

برای اجرای اسکن، دستور زیر را اجرا کنید:

vuls scan

خروجی شبیه به این خواهد بود:

[Dec 14 09:07:47]  INFO [localhost] vuls-v0.19.0-build-20211214_090234_2b7294a
[Dec 14 09:07:47]  INFO [localhost] Start scanning
[Dec 14 09:07:47]  INFO [localhost] config: /usr/share/vuls-data/config.toml
[Dec 14 09:07:47]  INFO [localhost] Validating config...
[Dec 14 09:07:47]  INFO [localhost] Detecting Server/Container OS...
[Dec 14 09:07:47]  INFO [localhost] Detecting OS of servers...
[Dec 14 09:07:47]  INFO [localhost] (1/1) Detected: localhost: ubuntu 18.04
[Dec 14 09:07:47]  INFO [localhost] Detecting OS of containers...
[Dec 14 09:07:47]  INFO [localhost] Checking Scan Modes...
[Dec 14 09:07:47]  INFO [localhost] Detecting Platforms...
[Dec 14 09:07:47]  INFO [localhost] (1/1) localhost is running on other
[Dec 14 09:07:47]  INFO [localhost] Scanning OS pkg in fast mode
[Dec 14 09:07:47]  INFO [localhost] Scanning listen port...
[Dec 14 09:07:47]  INFO [localhost] Using Port Scanner: Vuls built-in Scanner


Scan Summary
================
localhost       ubuntu18.04     539 installed


To view the detail, vuls tui is useful.
To send a report, run vuls report -h.

Vuls کارهایی که در این فرآیند انجام داده را ثبت کرده است. برای مشاهده گزارشی از آسیب پذیری هایی که شناسایی کرده است، اجرا کنید:

vuls tui

Vuls نمای گزارش را به چهار پانل تقسیم می کند:

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

می توانید با فشار دادن ENTER مکان نما را در پانل ها بچرخانید و با فلش های صفحه کلید حرکت کنید. وقتی کارتان تمام شد، CTRL+C را برای خروج فشار دهید.

در این مرحله، یک اسکن محلی را اجرا کرده و نتایج را بررسی کردید. در بخش بعدی (اختیاری)، Vuls را برای اسکن چندین ماشین هدف پیکربندی خواهید کرد.

مرحله 7 – (اختیاری) پیکربندی ماشین‌های هدف چندگانه

در این بخش، Vuls را برای اسکن چندین ماشین هدف پیکربندی می‌کنید. این مستلزم پیکربندی /etc/sudoers روی هدف و پیکربندی Vuls برای اسکن هدف است.

در مرحله قبل، Vuls را برای اسکن ماشین محلی (localhost) پیکربندی کردید. شما می توانید هر تعداد سرور که می خواهید اضافه کنید، به شرطی که موارد زیر را داشته باشید:

  • IP سرور مورد نظر
  • دسترسی ریشه به سرور مورد نظر
  • یک حساب کاربری موجود در سرور مورد نظر

شما فقط می توانید از یک حساب کاربری غیر ریشه در سرور مورد نظر برای اسکن در حالت سریع استفاده کنید. برای فعال کردن اسکن در حالت‌های روت سریع و عمیق، باید فایل /etc/sudoers را در ماشین(های) مورد نظر ویرایش کنید. فایل sudoers کنترل می کند که کاربران می توانند چه دستوراتی را اجرا کنند و همچنین اینکه آیا برای دستورات مشخص شده به رمز عبور نیاز دارید یا خیر.

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

در سرور هدف، به عنوان root وارد شوید و با اجرای visudo، sudoers را برای ویرایش باز کنید:

visudo

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

/etc/sudoers
sammy-shark ALL=(ALL) NOPASSWD: /usr/bin/apt-get update, /usr/bin/stat *, /usr/sbin/checkrestart

این خط به sudo دستور می دهد تا به کاربر sammy-shark اجازه دهد تا آپدیت apt-get، checkrestart و هر دستوری که از stat در دسترس است را بدون ارائه رمز عبور اجرا کند.

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

Vuls از ابزار checkrestart برای بررسی بسته هایی که به روز شده اند، اما نیاز به راه اندازی مجدد دارند، استفاده می کند. برای اطمینان از اینکه سرور هدف آن را دارد، با اجرای دستور زیر آن را نصب کنید:

apt install debian-goodies -y

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

برای افزودن یک سرور جدید برای اسکن، config.toml را باز کنید و خطوط زیر را زیر علامت [سرورها] اضافه کنید:

/usr/share/vuls-data/config.toml
[servers.target_name]
host = "target_ip"
port = "22"
user = "account_username"
keyPath = "/home/sammy/.ssh/id_rsa"
scanMode = [ "deep" ] # "fast", "fast-root" or "deep"

خطوط بالا به عنوان الگویی برای افزودن سرورهای جدید عمل می کنند. به یاد داشته باشید که target_name را با نام دلخواه، target_ip را با IP سرور مورد نظر، account_username را با نام کاربری جایگزین کنید و مسیر کلید RSA خصوصی خود را ارائه دهید. Vuls از احراز هویت رمز عبور SSH پشتیبانی نمی کند، بنابراین تعیین یک مسیر کلیدی ضروری است.

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

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

ssh sammy-shark@target_ip -i /home/sammy/.ssh/id_rsa

به یاد داشته باشید که مسیر کلید RSA خصوصی خود را وارد کنید. وقتی از شما پرسیده شد که آیا می خواهید به اتصال ادامه دهید، بله را وارد کنید، سپس با فشار دادن CTRL + D از سیستم خارج شوید.

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

chmod 600 account_rsa_key

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

برای بررسی اعتبار پیکربندی جدید، دستور زیر را اجرا کنید:

vuls configtest

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

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

مرحله 8 – پیکربندی اسکن دوره ای و گزارش به Slack

در این بخش، Vuls را پیکربندی می‌کنید تا گزارش‌ها را به Slack ارسال کند و یک cron job برای اجرای دوره‌ای اسکن Vuls ایجاد کنید.

برای استفاده از ادغام Slack، باید یک وب هوک ورودی در Slack برای فضای کاری خود داشته باشید. وب هوک های ورودی یک راه ساده برای یک برنامه کاربردی برای ارائه اطلاعات بلادرنگ از سایر برنامه ها است. در این مورد، Vuls را برای گزارش به کانال Slack خود پیکربندی می‌کنید.

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

به صفحه تنظیمات برنامه جدید هدایت خواهید شد. روی Incoming Webhooks در نوار ناوبری سمت چپ کلیک کنید.

با چرخاندن دکمه سوئیچ در کنار عنوان فعال سازی وب هوک های ورودی، وب هوک ها را فعال کنید.

بخش جدیدی در پایین صفحه باز خواهد شد. به پایین بروید و روی دکمه Add New Webhook to Workspace کلیک کنید. در صفحه بعد کانالی که می خواهید گزارش ها به آن ارسال شود را انتخاب کنید و روی Allow کلیک کنید.

به صفحه تنظیمات مربوط به وب هوک ها هدایت می شوید و یک وب هوک جدید را در جدول می بینید. روی Copy کلیک کنید تا آن را در کلیپ بورد کپی کنید و برای استفاده بعدی یادداشت کنید.

سپس، config.toml را برای ویرایش باز کنید:

sudo nano config.toml

خطوط زیر را اضافه کنید:

/usr/share/vuls-data/config.toml
[slack]
hookURL      = "your_hook_url"
channel      = "#your_channel_name"
authUser     = "your_username"
#notifyUsers  = ["@username"]

your_hook_URL را با URL webhook که قبلاً ذکر کردید، your_channel_name را با نام کانال مورد نظر، و your_username را با نام کاربری که وب‌هوک را ایجاد کرده است، جایگزین کنید. ذخیره کنید و فایل را ببندید.

برای آزمایش ادغام، می‌توانید با اجرای گزارش vuls گزارشی مانند زیر ایجاد کنید:

sudo vuls report -to-slack

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

می توانید برنامه Slack را بررسی کنید و تأیید کنید که Vuls با موفقیت گزارش را ارسال کرده است.

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

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

crontab -e

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

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

0 0 * * * vuls scan -config=/usr/share/vuls-data/config.toml; vuls report -config=/usr/share/vuls-data/config.toml > /dev/null 2>&1

خط بالا به cron دستور می دهد که اسکن vuls و گزارش vuls را با پیکربندی داده شده هر روز در ظهر اجرا کند (در نحو cron با 0 0 * * * مشخص می شود).

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

در این مرحله، Vuls را به فضای کاری Slack خود متصل کرده‌اید و cron را برای اجرای اسکن Vuls و گزارش هر روز در ظهر پیکربندی کرده‌اید.

نتیجه

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

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

 


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/