Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

Nmap till e-post, delningsklara CVE-pdf:er

Rickard Andersson Partner, Nodenordic.se

Rå Nmap-utdata är användbar, men det är inget du kan klistra in i ett mejl och förvänta dig att folk agerar på. Du slutar med att copy-pasta portar, googla CVE:er och skriva om samma ”risköversikt” för tionde gången.

Den här automatiseringen för Nmap CVE-rapporter träffar SecOps-team först, ärligt talat. Men IT-chefer och konsulter som gör kundrevisioner känner också av det, för det är i rapporteringen tiden försvinner.

Det här arbetsflödet kör en scan, berikar fynd från NVD, genererar en lösenordsskyddad PDF och skickar den via e-post (och Telegram om du vill). Du ser vad det automatiserar, vad du får ut av det och vad du ska se upp med när du driftsätter det.

Så fungerar automatiseringen

Hela n8n-arbetsflödet, från trigger till slutlig leverans:

n8n Workflow Template: Nmap till e-post, delningsklara CVE-pdf:er

Problemet: Nmap-resultat leder inte till åtgärd

En Nmap-scan visar vad som är öppet och vad som körs. Den säger inte vad som är viktigast. Så det riktiga arbetet börjar efter scannen: mappa tjänster till CPE:er, söka CVE:er, bedöma allvarlighetsgrad och sedan paketera allt i något som en intressent faktiskt läser. Det är också här misstagen smyger sig in. En missad CVE, ett felaktigt antagande om version, en rapport som skickas utan kontext. Och när du behöver detta varje vecka eller månad blir det en återkommande tidsskatt.

Var för sig känns de här uppgifterna små. Tillsammans gör de ”kör en scan” till ett halvdagsjobb.

  • Att hitta CVE:er tjänst för tjänst tvingar fram repetitiv research och inkonsekventa sammanfattningar.
  • Intressenter får rå utdata, vilket ofta betyder fördröjd åtgärd eller ingen åtgärd alls.
  • PDF-rapporter byggs ofta manuellt, så formatering och severity-märkning varierar från scan till scan.
  • Att skicka resultaten till rätt personer är ytterligare ett manuellt steg som ofta hoppas över när det är mycket.

Lösningen: automatiserad Nmap-scanning + CVE-berikning + PDF-leverans

Det här arbetsflödet gör ”scan-utdata” till en färdig sårbarhetsrapport du kan dela. Det kan starta från en schemalagd körning, en manuell körning, ett webhook-anrop eller ett enkelt webbformulär. När det triggas kör det en Nmap-scan med service-/versionsdetektering mot ditt mål, extraherar servicedetaljer och använder datan för att slå upp relaterade CVE:er i National Vulnerability Database (NVD). Därefter bygger det ett strukturerat dataset (värdar, portar, tjänster, CVE-ID:n, CVSS-poäng, beskrivningar och referenser), genererar en professionell HTML-rapport och konverterar den till en lösenordsskyddad PDF med Prince XML. Till sist levererar det PDF:en via e-post, med valfri Telegram-sändning för snabb intern synlighet.

Arbetsflödet börjar med din valda trigger och ett målnät/IP. Därifrån scannar Nmap, NVD berikar och rapportgenereringen paketerar allt i en ledningssammanfattning plus detaljerade fynd. Leveransen sker i slutet, så du får en konsekvent rapport utan att behöva passa processen.

Det du får: automatisering vs. resultat

Exempel: så här ser det ut

Säg att du kör en veckoscan för ett litet kontorssubnät och skickar resultat till tre personer. Manuellt kan du lägga cirka 30 minuter på att köra och kontrollera scannen, sedan ungefär 2 timmar på att slå upp CVE:er och skriva om en sammanfattning, plus ytterligare 10 minuter för export och mejl av rapporten. Med det här arbetsflödet tar det en minut att skicka in målet via formulär eller webhook, scannen kör i bakgrunden (ofta 10–30 minuter beroende på omfattning) och den färdiga PDF:en landar i inkorgen automatiskt. Du gör i princip bara granskning och fördelar åtgärder.

Det här behöver du

  • n8n-instans (testa n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • Nmap för att köra service- och versionsdetektering.
  • Prince XML för att konvertera HTML till skyddade PDF:er.
  • SMTP- eller Gmail-uppgifter (konfigureras i n8n Credentials).
  • Telegram Bot-token (valfritt) (hämta den från BotFather i Telegram).

Kompetensnivå: Medel. Du konfigurerar credentials, sätter scan-mål på ett ansvarsfullt sätt och är bekväm med att köra kommando-baserade noder på din n8n-host.

Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).

Så fungerar det

En scan-begäran kommer in. Arbetsflödet kan starta på schema, från en manuell testkörning, från ett webhook-anrop eller från ett enkelt webbformulär där någon skriver in målnätet.

Arbetsflödet förbereder scan-miljön. Det sätter parametrar som mål och PDF-lösenord och säkerställer sedan att hjälptygen finns tillgängliga så att scan-utdata kan göras om till strukturerad data.

Nmap körs, sedan berikas CVE:er. Efter att Nmap upptäckt portar och tjänster extraherar arbetsflödet servicedetaljer och frågar NVD API för att hämta CVE-ID:n, beskrivningar och CVSS-allvarlighetsgrad där matchningar finns. Rate limiting respekteras, vilket är viktigt när du scannar större nät.

En rapport genereras och levereras. Fynd slås ihop till ett rapportdataset, renderas till HTML, konverteras till en lösenordsskyddad PDF och skickas sedan via SMTP (och Telegram om det är aktiverat).

Du kan enkelt justera scan-flaggorna för att snäva in eller bredda täckningen efter behov. Se hela implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementering

Steg 1: Konfigurera den schemalagda automationstriggern

Konfigurera arbetsflödets startpunkter för schemalagda, manuella, formulär- och webhook-baserade skanningar.

  1. Öppna Scheduled Automation Trigger och ställ in schemaregeln så att den körs dagligen vid 1 (Trigger At Hour).
  2. Låt Manual Execution Start vara aktiverad för ad hoc-testning och manuella skanningskörningar.
  3. Konfigurera Form Submission Trigger med Form Title satt till Add scan parameters och Path satt till target så att användare kan skicka in ett målnätverk.
  4. Konfigurera Inbound Webhook Trigger med HTTP Method satt till POST och Path satt till e1e1da83-efe3-4f81-8428-09f31ad3531a.
  5. Verifiera att svarsdata från Inbound Webhook Trigger är Process started! för externa anropare.

⚠️ Vanlig fallgrop: Webhook- och formulär-URL:er blir aktiva först efter att arbetsflödet har sparats och aktiverats.

Steg 2: Koppla mål och skanningsinställningar

Definiera standardmålet och centrala skanningsvariabler som används i hela arbetsflödet.

  1. I Preset Target Host ställer ni in värdet network till scanme.nmap.org som standardmål.
  2. I Initialize Scan Settings ställer ni in network till ={{ $json.network }}{{ $json.body.network }}.
  3. I Initialize Scan Settings ställer ni in timestamp till ={{ $now.format('yyyyMMdd_HHmmss') }}.
  4. I Initialize Scan Settings ställer ni in report_password till [CONFIGURE_YOUR_PASSWORD] för PDF-kryptering.
  5. I Set Optional Scan Flags konfigurerar ni följande värden: setter -, max-retries max-retries 2, min-parallelism min-parallelism 40, max-parallelism max-parallelism 250 och timing -T4.

⚠️ Vanlig fallgrop: Om report_password fortfarande är [CONFIGURE_YOUR_PASSWORD] kommer steget för PDF-konvertering att misslyckas. Ersätt det med ett riktigt lösenord.

Steg 3: Installera och kör nätverksskanningen

Installera beroenden och kör Nmap-skanningskommandot som genererar den råa skanningsutdata.

  1. I Install Nmap Helper ställer ni in Command till =apk add --no-cache git make rust cargo cd /tmp git clone https://github.com/net-shaper/nmap-helper.git cd nmap-helper make make install .
  2. I Run Nmap Scan Command ställer ni in Command till =installdependencies=$(apk add util-linux-misc ncurses nmap nmap-scripts) runnmapscan=$(script -q -c "nmap -sV -sC -p- -sS {{ $json.timing }} {{ $json.setter }}{{ $json.setter }}{{ $json['min-parallelism'] }} {{ $json.setter }}{{ $json.setter }}{{ $json['max-parallelism'] }} {{ $json.setter }}{{ $json.setter }}{{ $json['max-retries'] }} -oX /tmp/nmap_{{ $('Initialize Scan Settings').item.json.timestamp }}.xml {{ $('Initialize Scan Settings').item.json.network }}" /dev/null) correctxml=$(sed -i 's/type="user"/type="USER"/g' /tmp/nmap_{{ $('Initialize Scan Settings').item.json.timestamp }}.xml) convertxmltojson=$( /tmp/nmap-helper/target/release/nmap-helper convert /tmp/nmap_{{ $('Initialize Scan Settings').item.json.timestamp }}.xml -o /tmp/nmap_{{ $('Initialize Scan Settings').item.json.timestamp }}.json) tput reset cat /tmp/nmap_{{ $('Initialize Scan Settings').item.json.timestamp }}.json.
  3. Bekräfta flödet: Initialize Scan SettingsInstall Nmap HelperSet Optional Scan FlagsRun Nmap Scan Command.

⚠️ Vanlig fallgrop: Noderna som kör kommandon kräver en runtime som stödjer apk (Alpine) och skalåtkomst. Säkerställ att er n8n-miljö tillåter dessa operationer.

Steg 4: Tolka och berika skanningsresultat

Extrahera servicedetaljer från Nmap-utdata, berika sårbarheter från NVD och aggregera resultaten.

  1. I Extract Service Details behåller ni JavaScript-koden som den är för att tolka öppna portar och bygga servicerecords.
  2. Konfigurera Store Raw Scan File med Operation write, File Name =/tmp/scan_data_{{ $('Initialize Scan Settings').item.json.timestamp }}.json och Data Property Name =data.
  3. I Enrich Vulnerability Data behåller ni JavaScript-koden för att fråga NVD API och bygga berikad CVE-data per service.
  4. Konfigurera Save Enriched Results med Operation write, File Name =/tmp/enriched_data_{{ $('Initialize Scan Settings').item.json.timestamp }}.json och Data Property Name =data.
  5. Ställ in Combine Scan Records till Include specifiedFields, Aggregate aggregateAllItemData och Fields To Include enriched, services.

Tips: NVD API har rate limits; den befintliga koden i Enrich Vulnerability Data inkluderar en fördröjning på 1 sekund per service för att minska risken för throttling.

Steg 5: Bygg HTML- och PDF-rapporterna

Omvandla den berikade skanningsdatan till en detaljerad HTML-rapport och konvertera den till en PDF.

  1. I Build Report Dataset behåller ni JavaScript-logiken som bygger rapportmetadata, statistik och värdsammanfattningar.
  2. I Compose HTML Report behåller ni HTML-mallgeneratorn som skapar vulnerability_report.html.
  3. Konfigurera Write Report HTML File med Operation write, File Name =/tmp/vulnerability_report_{{ $('Initialize Scan Settings').item.json.timestamp }}.html och Data Property Name =data.
  4. Konfigurera Load Report HTML File med File Selector =/tmp/vulnerability_report_{{ $('Initialize Scan Settings').item.json.timestamp }}.html.
  5. I Convert HTML to PDF ställer ni in Command till =apk add --no-cache wget tar giflib libwebp libwebpdemux libavif lcms2 fontconfig cd /tmp wget https://www.princexml.com/download/prince-16.1-alpine3.20-x86_64.tar.gz tar -xf prince-16.1-alpine3.20-x86_64.tar.gz /tmp/prince-16.1-alpine3.20-x86_64/lib/prince/bin/prince /tmp/vulnerability_report_{{ $('Initialize Scan Settings').item.json.timestamp }}.html -o /tmp/vulnerability_report_{{ $('Initialize Scan Settings').item.json.timestamp }}.pdf --media=print --encrypt --user-password={{ $('Initialize Scan Settings').item.json.report_password }} --css-dpi=128 .
  6. Konfigurera Load PDF Report File med File Selector =/tmp/vulnerability_report_{{ $('Initialize Scan Settings').item.json.timestamp }}.pdf och Data Property Name =vulnerability_report.

⚠️ Vanlig fallgrop: Säkerställ att er miljö kan installera PrinceXML via wget, eller ersätt detta steg med en PDF-konverterare som finns tillgänglig i er infrastruktur.

Steg 6: Konfigurera utdata för leverans av rapport

Skicka PDF-rapporten via Telegram och e-post när rapporten har genererats.

  1. I Send Report via Telegram ställer ni in Chat ID till [YOUR_ID], aktiverar Binary Data och ställer in Binary Property Name till =vulnerability_report.
  2. Autentiseringsuppgifter krävs: Koppla era telegramApi-autentiseringsuppgifter till Send Report via Telegram.
  3. I Email Report via SMTP ställer ni in To Email till [YOUR_EMAIL] och From Email till [YOUR_EMAIL].
  4. Ställ in Subject till =Automatic NMAP Report for '{{ $('Initialize Scan Settings').item.json.network }}' och Text till =The requested Automatic NMAP Scan finished, we attached the Report for '{{ $('Initialize Scan Settings').item.json.network }}'.
  5. Autentiseringsuppgifter krävs: Koppla era smtp-autentiseringsuppgifter till Email Report via SMTP.
  6. Bekräfta parallell körning: Load PDF Report File skickar utdata till både Send Report via Telegram och Email Report via SMTP parallellt.

Steg 7: Testa och aktivera ert arbetsflöde

Validera end-to-end-körning och aktivera arbetsflödet för schemalagd användning.

  1. Använd Manual Execution Start för att köra en fullständig testskanning och bekräfta flödet från Preset Target Host via Email Report via SMTP och Send Report via Telegram.
  2. Verifiera att filer skapas i /tmp med tidsstämplade namn för skannings-JSON, HTML-rapport och PDF-rapport.
  3. Bekräfta att ett Telegram-dokument och ett SMTP-mejl anländer med PDF-bilagan namngiven från Load PDF Report File.
  4. Aktivera arbetsflödet så att Scheduled Automation Trigger, Form Submission Trigger och Inbound Webhook Trigger kan köras i produktion.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • SMTP- eller Gmail-uppgifter kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först teststatusen för n8n Credentials och din e-postleverantörs inställningar för ”app-lösenord”.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
  • Prince XML och kommandoexekvering beror på miljön på din n8n-host. Om PDF-konverteringen misslyckas, kontrollera serverloggar och bekräfta att Prince-binära filen är installerad och kan nås från noden Execute Command.

Vanliga frågor

Hur lång tid tar det att sätta upp den här automatiseringen för Nmap CVE-rapporter?

Cirka en timme om din n8n-host är redo att köra kommandoradsverktyg.

Behöver jag kunna koda för att automatisera Nmap CVE-rapporter?

Nej, ingen kodning krävs för att köra den. Du gör viss konfiguration och kan justera några rapportfält om du vill ha egen branding.

Är n8n gratis att använda för det här arbetsflödet för Nmap CVE-rapporter?

Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna med Prince XML-licensiering för produktionsbruk.

Var kan jag hosta n8n för att köra den här automatiseringen?

Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.

Kan jag anpassa det här arbetsflödet för Nmap CVE-rapporter för intern leverans utan Telegram?

Ja, och det är enkelt. Inaktivera eller ta bort noden ”Send Report via Telegram” och behåll noden ”Email Report via SMTP” aktiv. Vanliga anpassningar är att ändra ämnesrad i mejlet, lägga till flera mottagare, uppdatera rapporttiteln i kodnoden som bygger rapporten och byta standardlösenordet för PDF i noden ”Initialize Scan Settings”.

Varför misslyckas min Nmap-anslutning i det här arbetsflödet?

Oftast är det inte ”Nmap” i sig, utan miljön. Execute Command-noderna behöver behörighet att köra binärer på n8n-hosten, och Nmap måste vara installerat och nåbart i PATH. Om scannen fungerar men berikningen är tom kan servicedatan sakna en användbar CPE för NVD-uppslag, eller så kan du slå i NVD:s rate limits vid större scannar.

Hur många scannar klarar den här automatiseringen för Nmap CVE-rapporter?

Det beror mer på scan-tid och NVD:s rate limits än på n8n i sig. På n8n Cloud Starter är du begränsad av månatliga körningar, medan self-hosting inte har någon plattformsgräns för körningar (serverresurserna blir flaskhalsen). I praktiken kör många team detta dagligen eller veckovis för några subnät och håller omfattningen rimlig så att scannen avslutas stabilt och NVD-uppslag inte köar i evighet.

Är den här automatiseringen för Nmap CVE-rapporter bättre än att använda Zapier eller Make?

För det här användningsfallet, ja. Zapier och Make är bra för SaaS-till-SaaS, men det här arbetsflödet bygger på att köra kommandoradsscannar, läsa/skriva lokala filer och konvertera HTML till PDF, vilket är betydligt mer naturligt i n8n. Du får också branching, filhantering och self-hosting på ett ställe, så du kan ha säkerhetsverktygen närmare ditt nät. Om du bara behöver ”skicka ett mejl när något händer” kan det vara överdrivet, men för riktig scan-till-rapport-leverans passar det. Prata med en automationsexpert om du vill ha en second opinion på bästa upplägg.

När det här väl är igång blir scannen den enkla delen igen. Arbetsflödet sköter paketering och leverans så att du kan fokusera på att åtgärda det som spelar roll.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal