خودکارسازی اسکن Nessus | چگونه اسکن‌های Nessus را به صورت زمان‌بندی‌شده و خودکار انجام دهیم؟

چگونه اسکن‌های Nessus را به صورت زمان‌بندی‌شده و خودکار انجام دهیم؟ (+ اسکریپت‌های آماده برای دانلود)

زمان، یکی از ارزشمندترین دارایی‌های شما در دنیای امنیت سایبری است. هر دقیقه‌ای که یک آسیب‌پذیری بدون شناسایی باقی بماند، فرصتی طلایی برای مهاجمان فراهم شده است. حالا تصور کنید بتوانید بدون نیاز به نظارت مداوم، اسکن‌های امنیتی را به‌صورت کاملاً خودکار و زمان‌بندی‌شده اجرا کنید؛ این دقیقاً همان کاری است که با استفاده از Nessus می توانید اجرایی کنید.

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

در این مقاله از ستاره امنیت، به‌صورت گام‌به‌گام و حرفه‌ای به شما آموزش می‌دهیم که چگونه اسکن‌های Nessus  را با استفاده از قابلیت‌های داخلی ابزار، اسکریپت‌های Bash و PowerShell، و حتی API رسمی Nessus به‌صورت خودکار و برنامه‌ریزی‌شده اجرا کنید.

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

🔗راهنمای جامع اسکن آسیب‌پذیری با Nessus

🔗معرفی کامل Nessus Scanner و قابلیت‌های آن

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

زمان‌بندی اسکن‌ها در محیط گرافیکی Nessus (روش رسمی و ساده)

Nessus  دارای قابلیت داخلی قدرتمندی برای زمان‌بندی اسکن‌هاست که به شما اجازه می‌دهد بدون نیاز به هیچ‌گونه اسکریپت‌نویسی، فرآیند اسکن را در بازه‌های زمانی مشخص و به‌صورت خودکار اجرا کنید. این روش برای اغلب تیم‌های امنیتی کاملاً کافی و کارآمد است.

مراحل تنظیم اسکن زمان‌بندی‌شده در Nessus :

1️⃣ ورود به پنل مدیریت Nessus :

ورود به پنل مدیریت Nessus با صفحه لاگین شامل فیلد یوزرنیم و پسورد

ابتدا وارد محیط وب Nessus شوید. آدرس پیش‌فرض معمولاً به این صورت است:

https://localhost:8834/

2️⃣ ساخت یک اسکن جدید:

از بخش Scans روی گزینه New Scan  کلیک کنید و اسکن موردنظر خود را بر اساس نیازتان تنظیم کنید (می‌توانید از Policyهای آماده یا تنظیمات دلخواه استفاده کنید).

Nessus New Scan GUI – انتخاب الگو و ساخت اسکن جدید

3️⃣ تنظیم زمان‌بندی (Schedule) :

بعد از تنظیم Targetها و سایر پارامترهای اسکن، به تب Schedule بروید.

4️⃣ فعال‌سازی زمان‌بندی:

گزینه Enable Scheduling را فعال کنید تا بتوانید زمان‌بندی را تنظیم نمایید.

5️⃣ انتخاب بازه زمانی:

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

✔️ Daily (روزانه)

✔️ Weekly (هفتگی)

✔️ Monthly (ماهانه)

✔️ On Specific Date (تاریخ خاص)

✔️ After Scan Completes (بعد از پایان اسکن دیگر)

تنظیم دقیق زمان اجرا:

ساعت دقیق اجرای اسکن را تعیین کنید (به‌صورت ساعت محلی سرور Nessus).

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

6️⃣ فعال‌سازی و ذخیره تنظیمات:

پس از تنظیمات، اسکن خود را ذخیره کنید. از این به بعد، Nessus به‌صورت خودکار طبق برنامه زمان‌بندی‌شده، اسکن را اجرا خواهد کرد.

نکته بسیار مهم:

بهتر است اسکن‌های زمان‌بندی‌شده را در ساعاتی تنظیم کنید که ترافیک شبکه پایین است؛ مثلاً آخر شب یا ساعات کم‌کار، تا فشار اسکن روی سرورها و سرویس‌ها به حداقل برسد.

🔗 اگر هنوز با ساختار اسکن‌ها و سیاست‌های اسکن در Nessus آشنایی کامل ندارید، پیشنهاد می‌کنم حتماً مقاله زیر را مطالعه کنید: راهنمای جامع اسکن آسیب‌پذیری با Nessus

خودکارسازی اسکن Nessus با اسکریپت Bash و Cron (روش پیشرفته در لینوکس)

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

اینجاست که API قدرتمند Nessus به کمک شما می‌آید و می‌توانید با استفاده از اسکریپت‌های ساده Bash در لینوکس، کنترل کامل روی زمان‌بندی، اجرا، و دریافت گزارش‌ها داشته باشید.

✅ مراحل کار:

✔️ دریافت API Token از Nessus

✔️ایجاد اسکن جدید از طریق API

✔️ اجرای اسکن به صورت خودکار

✔️ زمان‌بندی اسکریپت با Cron در لینوکس

📌 مثال عملی اسکریپت Bash برای اجرای اسکن خودکار Nessus :

#!/bin/bash
NESSUS_URL=”https://localhost:8834″
USER=”admin”; PASS=”YourPassword”
# دریافت توکن
TOKEN=$(curl -s -k -X POST -H “Content-Type:application/json” -d “{\”username\”:\”$USER\”,\”password\”:\”$PASS\”}” $NESSUS_URL/session | jq -r ‘.token’)
# ایجاد اسکن
SCAN_ID=$(curl -s -k -X POST -H “X-Cookie: token=$TOKEN” -H “Content-Type:application/json” \
-d “{\”uuid\”:\”<policy_uuid>\”,\”settings\”:{\”name\”:\”AutoScan\”,\”text_targets\”:\”192.168.1.0/24\”}}” \
$NESSUS_URL/scans | jq -r ‘.scan.id’)
# اجرای اسکن
curl -s -k -X POST -H “X-Cookie: token=$TOKEN” $NESSUS_URL/scans/$SCAN_ID/launch
echo “Scan launched: $SCAN_ID”

✅ توضیحات:

✔️ jq برای پردازش JSON لازم است (نصب: apt install jq)

✔️ مقادیر <policy_uuid> و <target> را با Policy و IP شبکه خودتان جایگزین کنید.

✔️ این اسکریپت، یک اسکن جدید ساخته و فوراً اجرا می‌کند.

📅 زمان‌بندی با Cron :

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

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

0 2 * * * /path/to/automate_scan.sh

✅ مزیت این روش:

✔️ کاملاً خودکار و قابل شخصی‌سازی

✔️ امکان اضافه کردن قابلیت‌های دیگر مثل ارسال گزارش خودکار

✔️ مناسب شبکه‌های بزرگ و تیم‌های SOC

🎯مقاله مرتبط: برای درک بهتر ساختار اسکن‌ها و آشنایی با نحوه گزارش‌گیری دقیق در Nessus، مقاله زیر را از بلاگ ما بخوانید: تحلیل گزارش‌های Nessus و روش بهینه‌سازی آن‌ها

در بخش بعدی مقاله، دقیق‌تر وارد دنیای اسکریپت‌نویسی با PowerShell (برای ویندوز) و همچنین Python  می‌شویم تا ببینید چگونه می‌توان این خودکارسازی را در محیط‌های مختلف پیاده‌سازی کرد.

خودکارسازی اسکن Nessus در ویندوز با PowerShell و در لینوکس/ویندوز با Python (پیشرفته و قدرتمند)

اگر شبکه شما مبتنی بر ویندوز باشد یا به دنبال انعطاف بیشتری در فرآیند اسکن و تحلیل باشید، استفاده از PowerShell و Python  بهترین گزینه‌های شما هستند. هر دو زبان قابلیت تعامل با Nessus از طریق API رسمی را دارند و می‌توانند اسکن را خودکار، گزارش‌ها را دریافت و حتی به سیستم‌های دیگر منتقل کنند.

✅ روش اول: استفاده از PowerShell در ویندوز

📌 نمونه اسکریپت ساده PowerShell برای اجرای اسکن Nessus :

# مشخصات کاربری Nessus
$NessusURL = “https://localhost:8834”
$Username = “admin”
$Password = “YourPassword”

# دریافت توکن
$response = Invoke-RestMethod -Uri “$NessusURL/session” -Method Post -Body (@{username=$Username;password=$Password} | ConvertTo-Json) -ContentType “application/json” -SkipCertificateCheck
$token = $response.token

# ایجاد اسکن
$headers = @{ “X-Cookie” = “token=$token” }
$scanData = @{
uuid = “<policy_uuid>”
settings = @{
name = “Automated Scan”
text_targets = “192.168.1.0/24”
}
}
$response = Invoke-RestMethod -Uri “$NessusURL/scans” -Method Post -Headers $headers -Body ($scanData | ConvertTo-Json -Depth 3) -ContentType “application/json” -SkipCertificateCheck
$scanId = $response.scan.id

# اجرای اسکن
Invoke-RestMethod -Uri “$NessusURL/scans/$scanId/launch” -Method Post -Headers $headers -SkipCertificateCheck

Write-Host “Scan Launched Successfully with ID: $scanId”

اجرای اسکریپت PowerShell برای خودکارسازی اسکن Nessus و استفاده از توابع Get-NessusSession

✅ زمان‌بندی این اسکریپت:

با استفاده از Task Scheduler ویندوز می‌توانید اجرای این اسکریپت را به‌صورت خودکار در هر زمان دلخواه تنظیم کنید.

✅ روش دوم: خودکارسازی حرفه‌ای با Python و API رسمی Nessus

برای افرادی که به دنبال یک روش قابل حمل و بسیار انعطاف‌پذیر هستند، استفاده از Python بسیار ایده‌آل است.
کتابخانه‌هایی مثل requests و tenable.io به سادگی امکان تعامل با API Nessus را فراهم می‌کنند.

📌 نمونه اسکریپت Python (مبتدی تا متوسط):

import requests
import json

NESSUS_URL = “https://localhost:8834”
USERNAME = “admin”
PASSWORD = “YourPassword”

# دریافت توکن
session = requests.post(f”{NESSUS_URL}/session”, json={“username”: USERNAME, “password”: PASSWORD}, verify=False)
token = session.json()[‘token’] headers = {“X-Cookie”: f”token={token}”}

# ایجاد اسکن
scan_data = {
“uuid”: “<policy_uuid>”,
“settings”: {
“name”: “Automated Scan”,
“text_targets”: “192.168.1.0/24″
}
}
scan = requests.post(f”{NESSUS_URL}/scans”, headers=headers, json=scan_data, verify=False)
scan_id = scan.json()[‘scan’][‘id’]

# اجرای اسکن
requests.post(f”{NESSUS_URL}/scans/{scan_id}/launch”, headers=headers, verify=False)

print(f”Scan launched successfully with ID: {scan_id}”)

✅ امکانات بیشتر با Python:

✔️ دریافت و ذخیره گزارش اسکن به‌صورت PDF یا CSV

✔️ ارسال نتایج به دیتابیس یا ایمیل

✔️ لاگ‌گیری دقیق از اجرای اسکن‌ها

اجرای اسکریپت پایتون برای ارتباط با API رسمی Nessus جهت شروع خودکار اسکن آسیب‌پذیری

✅ مقایسه PowerShell و Python :

ویژگی

PowerShell

Python

مناسب برای

ویندوز

ویندوز و لینوکس

پیچیدگی کد

کمتر برای کارهای ساده

انعطاف بسیار بالا

امنیت و رمزنگاری

متوسط

بالا (با ماژول‌های پیشرفته)

امکان گسترش

محدود

بسیار زیاد (API, DB, Email)

🎯 اگر علاقه‌مند به یادگیری نحوه بهینه‌سازی گزارش‌ها و تحلیل دقیق خروجی‌های Nessus هستید، این مقاله بلاگ ما را از دست ندهید:تحلیل حرفه‌ای گزارش‌های Nessus و نحوه استخراج سریع آسیب‌پذیری‌ها

دانلود خودکار گزارش‌ها، ارسال به ایمیل و Best Practice

✅ مرحله ۱: دانلود خودکار گزارش اسکن Nessus (با API و اسکریپت Bash یا Python)

بعد از اتمام اسکن، Nessus به شما اجازه می‌دهد خروجی اسکن را در فرمت‌های مختلف (HTML، PDF، CSV و Nessus) دریافت کنید.

📌 نمونه Bash برای دانلود خروجی PDF:

# Export اسکن به PDF
EXPORT_ID=$(curl -s -k -X POST -H “X-Cookie: token=$TOKEN” -H “Content-Type: application/json” \
-d ‘{“format”:”pdf”,”chapters”:”vuln_hosts_summary”}’ \
$NESSUS_URL/scans/$SCAN_ID/export | jq -r ‘.file’)

# صبر برای آماده شدن فایل
while true; do
STATUS=$(curl -s -k -X GET -H “X-Cookie: token=$TOKEN” \
$NESSUS_URL/scans/$SCAN_ID/export/$EXPORT_ID/status | jq -r ‘.status’)
if [[ “$STATUS” == “ready” ]]; then
break
fi
sleep 5
done

# دانلود فایل
curl -s -k -X GET -H “X-Cookie: token=$TOKEN” \
$NESSUS_URL/scans/$SCAN_ID/export/$EXPORT_ID/download –output report_$SCAN_ID.pdf

این اسکریپت یک فایل PDF از گزارش Nessus دریافت و ذخیره می‌کند.

✅ مرحله ۲: ارسال خودکار گزارش به ایمیل (با ابزار sendmail یا Python)

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

📌 نمونه Bash با sendmail :

echo “Subject: Nessus Scan Report
From: scanner@example.com
To: admin@example.com
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=\”FILEBOUNDARY\”

–FILEBOUNDARY
Content-Type: text/plain

Report attached.

–FILEBOUNDARY
Content-Type: application/pdf
Content-Disposition: attachment; filename=\”report_$SCAN_ID.pdf\”
Content-Transfer-Encoding: base64

$(base64 report_$SCAN_ID.pdf)
–FILEBOUNDARY–” | sendmail -t

یا استفاده از Python (کتابخانه smtplib) برای ارسال ایمیل حرفه‌ای.

✅ مرحله ۳: نکات بسیار مهم برای امنیت و کارایی (Best Practices)

✔️ توکن‌ها و رمزهای API را در فایل جداگانه و رمزنگاری‌شده نگه دارید.

✔️ برای شبکه‌های بزرگ، اسکن‌ها را در ساعات کم‌ترافیک اجرا کنید (مثلاً شب‌ها یا آخر هفته‌ها).

✔️ قبل از اجرای هر اسکن جدید، خروجی اسکن قبلی را آرشیو کنید.

✔️ وضعیت اسکن‌ها را به‌طور خودکار مانیتور کنید و در صورت خطا، هشدار فوری (مثلاً ایمیل یا Slack) دریافت کنید.

✔️هرچند وقت یکبار تنظیمات و سیاست‌های اسکن را بازبینی کنید تا با تهدیدات جدید به‌روز باشید.

🔗 جهت انتخاب بهترین نوع لایسنس Nessus و امکاناتی که هر لایسنس برای خودکارسازی ارائه می‌دهد، پیشنهاد می‌کنم حتماً این مقاله را از بلاگ ما بخوانید: راهنمای خرید لایسنس Nessus و مقایسه نسخه‌های مختلف

نتیجه‌گیری نهایی:

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

✔️ صرفه‌جویی عظیمی در زمان ایجاد می‌کند.

✔️ خطاهای انسانی را کاهش می‌دهد.

✔️ امنیت شبکه شما را به شکل پیوسته تقویت می‌کند.

اگر هنوز از این قابلیت‌ها استفاده نمی‌کنید، همین امروز شروع کنید!

نظر دهید