زمان، یکی از ارزشمندترین داراییهای شما در دنیای امنیت سایبری است. هر دقیقهای که یک آسیبپذیری بدون شناسایی باقی بماند، فرصتی طلایی برای مهاجمان فراهم شده است. حالا تصور کنید بتوانید بدون نیاز به نظارت مداوم، اسکنهای امنیتی را بهصورت کاملاً خودکار و زمانبندیشده اجرا کنید؛ این دقیقاً همان کاری است که با استفاده از Nessus می توانید اجرایی کنید.
Nessus بهعنوان یکی از قدرتمندترین ابزارهای اسکن آسیبپذیری، این قابلیت را فراهم کرده که اسکنهای امنیتی نه تنها دقیق و سریع باشند، بلکه بتوانید آنها را بهصورت زمانبندی شده اجرا کنید؛ درست مثل یک سیستم نگهبان که در زمانهای معین، کل شبکه شما را اسکن کرده و گزارش کامل تحویل دهد.
در این مقاله از ستاره امنیت، بهصورت گامبهگام و حرفهای به شما آموزش میدهیم که چگونه اسکنهای Nessus را با استفاده از قابلیتهای داخلی ابزار، اسکریپتهای Bash و PowerShell، و حتی API رسمی Nessus بهصورت خودکار و برنامهریزیشده اجرا کنید.
اگر هنوز با قابلیتهای اسکن Nessus بهطور کامل آشنا نیستید، پیشنهاد میکنم پیش از شروع این مقاله، حتماً این آموزشهای پایه را بخوانید:
🔗راهنمای جامع اسکن آسیبپذیری با Nessus
🔗معرفی کامل Nessus Scanner و قابلیتهای آن
در ادامه، علاوه بر تنظیم خودکار اسکنها، یاد میگیرید که چطور نتایج را بهصورت خودکار دریافت و گزارشها را مستقیماً به ایمیل خود ارسال کنید تا هیچ تهدیدی از چشم شما پنهان نماند.
Nessus دارای قابلیت داخلی قدرتمندی برای زمانبندی اسکنهاست که به شما اجازه میدهد بدون نیاز به هیچگونه اسکریپتنویسی، فرآیند اسکن را در بازههای زمانی مشخص و بهصورت خودکار اجرا کنید. این روش برای اغلب تیمهای امنیتی کاملاً کافی و کارآمد است.
ابتدا وارد محیط وب Nessus شوید. آدرس پیشفرض معمولاً به این صورت است:
https://localhost:8834/
از بخش Scans روی گزینه New Scan کلیک کنید و اسکن موردنظر خود را بر اساس نیازتان تنظیم کنید (میتوانید از Policyهای آماده یا تنظیمات دلخواه استفاده کنید).
بعد از تنظیم Targetها و سایر پارامترهای اسکن، به تب Schedule بروید.
گزینه Enable Scheduling را فعال کنید تا بتوانید زمانبندی را تنظیم نمایید.
در این بخش، بازههای زمانی زیر را میتوانید انتخاب کنید:
✔️ Daily (روزانه)
✔️ Weekly (هفتگی)
✔️ Monthly (ماهانه)
✔️ On Specific Date (تاریخ خاص)
✔️ After Scan Completes (بعد از پایان اسکن دیگر)
ساعت دقیق اجرای اسکن را تعیین کنید (بهصورت ساعت محلی سرور Nessus).
پس از تنظیمات، اسکن خود را ذخیره کنید. از این به بعد، Nessus بهصورت خودکار طبق برنامه زمانبندیشده، اسکن را اجرا خواهد کرد.
بهتر است اسکنهای زمانبندیشده را در ساعاتی تنظیم کنید که ترافیک شبکه پایین است؛ مثلاً آخر شب یا ساعات کمکار، تا فشار اسکن روی سرورها و سرویسها به حداقل برسد.
🔗 اگر هنوز با ساختار اسکنها و سیاستهای اسکن در Nessus آشنایی کامل ندارید، پیشنهاد میکنم حتماً مقاله زیر را مطالعه کنید: راهنمای جامع اسکن آسیبپذیری با Nessus
در بسیاری از سازمانها، اسکنهای زمانبندیشده صرفاً به اجرای خودکار بسنده نمیکنند. گاهی لازم است اسکنها با شرایط خاص اجرا شوند یا در پایان اسکن، خروجیها بهصورت خودکار ذخیره و ایمیل شوند.
اینجاست که API قدرتمند Nessus به کمک شما میآید و میتوانید با استفاده از اسکریپتهای ساده Bash در لینوکس، کنترل کامل روی زمانبندی، اجرا، و دریافت گزارشها داشته باشید.
#!/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 Job اضافه کنید.
مثال: اجرای اسکریپت هر روز ساعت ۲ بامداد:
0 2 * * * /path/to/automate_scan.sh
✔️ کاملاً خودکار و قابل شخصیسازی
✔️ امکان اضافه کردن قابلیتهای دیگر مثل ارسال گزارش خودکار
✔️ مناسب شبکههای بزرگ و تیمهای SOC
🎯مقاله مرتبط: برای درک بهتر ساختار اسکنها و آشنایی با نحوه گزارشگیری دقیق در Nessus، مقاله زیر را از بلاگ ما بخوانید: تحلیل گزارشهای Nessus و روش بهینهسازی آنها
در بخش بعدی مقاله، دقیقتر وارد دنیای اسکریپتنویسی با PowerShell (برای ویندوز) و همچنین Python میشویم تا ببینید چگونه میتوان این خودکارسازی را در محیطهای مختلف پیادهسازی کرد.
اگر شبکه شما مبتنی بر ویندوز باشد یا به دنبال انعطاف بیشتری در فرآیند اسکن و تحلیل باشید، استفاده از PowerShell و Python بهترین گزینههای شما هستند. هر دو زبان قابلیت تعامل با Nessus از طریق API رسمی را دارند و میتوانند اسکن را خودکار، گزارشها را دریافت و حتی به سیستمهای دیگر منتقل کنند.
# مشخصات کاربری 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”
با استفاده از Task Scheduler ویندوز میتوانید اجرای این اسکریپت را بهصورت خودکار در هر زمان دلخواه تنظیم کنید.
برای افرادی که به دنبال یک روش قابل حمل و بسیار انعطافپذیر هستند، استفاده از Python بسیار ایدهآل است.
کتابخانههایی مثل requests و tenable.io به سادگی امکان تعامل با API Nessus را فراهم میکنند.
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}”)
✔️ دریافت و ذخیره گزارش اسکن بهصورت PDF یا CSV
✔️ ارسال نتایج به دیتابیس یا ایمیل
✔️ لاگگیری دقیق از اجرای اسکنها
|
ویژگی |
PowerShell |
Python |
|
مناسب برای |
ویندوز |
ویندوز و لینوکس |
|
پیچیدگی کد |
کمتر برای کارهای ساده |
انعطاف بسیار بالا |
|
امنیت و رمزنگاری |
متوسط |
بالا (با ماژولهای پیشرفته) |
|
امکان گسترش |
محدود |
بسیار زیاد (API, DB, Email) |
🎯 اگر علاقهمند به یادگیری نحوه بهینهسازی گزارشها و تحلیل دقیق خروجیهای Nessus هستید، این مقاله بلاگ ما را از دست ندهید:تحلیل حرفهای گزارشهای Nessus و نحوه استخراج سریع آسیبپذیریها
بعد از اتمام اسکن، Nessus به شما اجازه میدهد خروجی اسکن را در فرمتهای مختلف (HTML، PDF، CSV و Nessus) دریافت کنید.
# 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 دریافت و ذخیره میکند.
بعد از دریافت گزارش، میتوان آن را به ایمیل مشخصی ارسال کرد.
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
✔️ توکنها و رمزهای API را در فایل جداگانه و رمزنگاریشده نگه دارید.
✔️ برای شبکههای بزرگ، اسکنها را در ساعات کمترافیک اجرا کنید (مثلاً شبها یا آخر هفتهها).
✔️ قبل از اجرای هر اسکن جدید، خروجی اسکن قبلی را آرشیو کنید.
✔️ وضعیت اسکنها را بهطور خودکار مانیتور کنید و در صورت خطا، هشدار فوری (مثلاً ایمیل یا Slack) دریافت کنید.
✔️هرچند وقت یکبار تنظیمات و سیاستهای اسکن را بازبینی کنید تا با تهدیدات جدید بهروز باشید.
🔗 جهت انتخاب بهترین نوع لایسنس Nessus و امکاناتی که هر لایسنس برای خودکارسازی ارائه میدهد، پیشنهاد میکنم حتماً این مقاله را از بلاگ ما بخوانید: راهنمای خرید لایسنس Nessus و مقایسه نسخههای مختلف
خودکارسازی اسکن Nessus، دانلود گزارشها و ارسال خودکار آنها، یکی از حرفهایترین راهکارهای مدیریت امنیت سایبری است که:
✔️ صرفهجویی عظیمی در زمان ایجاد میکند.
✔️ خطاهای انسانی را کاهش میدهد.
✔️ امنیت شبکه شما را به شکل پیوسته تقویت میکند.
اگر هنوز از این قابلیتها استفاده نمیکنید، همین امروز شروع کنید!