Shodan har funnits i över ett decennium, men svenska säkerhetsteam har på allvar börjat använda verktyget de senaste åren för att kartlägga sin egen exponering innan en angripare gör det åt dem. Sökmotorn indexerar internetuppkopplade system, från routrar och kameror till industriella styrsystem och felkonfigurerade databaser, och gör det möjligt att se nätverket som utomstående ser det. I den här guiden går vi igenom hur du kommer igång med Shodan från grunden, bygger ett eget bevakningsflöde och kopplar resultaten till CISA:s KEV-katalog för att prioritera rätt.

Du får 12 konkreta steg, sju kodexempel, tre datatabeller och ett komplett övervakningsprojekt du kan sätta i drift samma dag. Guiden utgår från CLI-verktyget och Python-biblioteket, men principerna fungerar lika bra om ni redan använder webbgränssnittet och bara vill bygga en mer systematisk process ovanpå det.

Vad är Shodan och varför spelar det roll för din säkerhet

Shodan skiljer sig från Google genom att det inte indexerar webbsidor utan banners, alltså de svarsmeddelanden en tjänst skickar när någon ansluter till en öppen port. Resultatet är en sökbar katalog över servrar, kameror, styrsystem och IoT-enheter som är nåbara direkt från internet. John Matherly, som grundade Shodan, har beskrivit grundproblemet rakt av: “Of course there’s no security on these things. They don’t belong on the Internet in the first place”, sa han i en tidig intervju om tjänsten. Poängen gäller fortfarande 2026: det är inte sökmotorn som skapar risken, det är att systemet redan låg öppet.

För ett svenskt säkerhetsteam fyller Shodan en specifik lucka. Interna sårbarhetsskannrar som Nessus eller OpenVAS ser bara det ni redan känner till i er egen inventering. Shodan ser internet från utsidan och fångar upp glömda testservrar, filialkontor som skaffat egen internetuppkoppling utan att it-avdelningen vet om det, och leverantörer som exponerat en databas de trodde var skyddad av en brandvägg. Kombinerat med Nmap för aktiv nätverksskanning får du både ett utifrån-perspektiv och ett inifrån-perspektiv på samma infrastruktur.

Användningen delar sig i praktiken i två spår. Röda team och penetrationstestare använder Shodan i den tidiga rekognoseringsfasen för att kartlägga vad en angripare skulle se utan att behöva skicka en enda paket mot målet själva. Blå team och säkerhetsavdelningar använder samma verktyg tvärtom, som ett kontinuerligt kontrollverktyg för att upptäcka sin egen oavsiktliga exponering innan ett rött team, eller en verklig angripare, hinner dit först. Den här guiden är skriven för det andra spåret, men teknikerna i stegen nedan fungerar oavsett vilken sida av bordet du sitter på.

Matherly har också varit tydlig om att exponering ofta beror på ren slentrian snarare än medveten risk. “There’s no reason these systems should be exposed that way,” konstaterade han i en intervju med Sydney Morning Herald. Det är precis den typen av onödig exponering, en RDP-port som glömts öppen eller en administrationspanel utan autentisering, som den här guiden hjälper dig att hitta hos er egen organisation innan någon annan gör det.

Shodan publicerar ingen officiell siffra på exakt hur många enheter tjänsten indexerar vid ett givet tillfälle, och en artikel som påstår sig ange en exakt total bör du läsa med skepsis. Det som går att säga med säkerhet är att insamlingen är kontinuerlig och global, vilket betyder att en enhet som exponeras i dag oftast dyker upp i sökresultaten inom några dagar, inte veckor. För industrisektorn och energibolag i Norden, där styrsystem (OT) ibland kopplas upp mot internet för fjärrunderhåll utan att it-säkerhet varit inblandad i beslutet, är den snabba upptäckten en poäng i sig: ni hinner stänga en port innan den hamnar i någon annans sökresultat.

Det är också värt att skilja på två typer av krediter innan du går vidare: sökkrediter (query credits) används när du söker i redan insamlad data, medan skankrediter (scan credits) används när du aktivt ber Shodan skanna ett specifikt mål ni äger. En sökkredit ger tillgång till upp till 100 resultatrader. Den distinktionen avgör hur snabbt ni förbrukar er månadskvot, och vi återkommer till den när vi går igenom priserna.

Förutsättningar: verktyg och versioner

  • Ett Shodan-konto (gratisnivån räcker för att följa de första stegen, men vissa filter kräver betald nivå)
  • Python 3.10 eller senare installerat lokalt
  • pip, Pythons pakethanterare, för att installera Shodan CLI och biblioteket
  • Grundläggande kommandoradsvana i Linux, macOS eller Windows Terminal
  • Skriftlig bekräftelse på vilka IP-intervall och domäner du har mandat att undersöka (viktigt innan du går vidare till steg 1)
  • Valfritt: ett konto hos er incidenthanteringsplattform eller Slack/Teams-webhook för att ta emot varningar senare i guiden
  • Valfritt men rekommenderat: en lista över era kända publika IP-intervall, hämtad från nätverksteamet, så att ni inte behöver gissa vad som faktiskt tillhör er

Allt i guiden går att köra på en vanlig arbetsdator. Du behöver inte ett eget skanningsnätverk eftersom Shodan redan har gjort skanningen åt dig, det du bygger är sökningar, filter och automatisering ovanpå den datan. Installera alltid pip-paket i en virtuell miljö (python -m venv .venv) snarare än globalt, så att versionerna i detta projekt inte krockar med andra Python-verktyg ni redan har installerat.

Steg 1: Skapa ett Shodan-konto och hämta API-nyckeln

Registrera dig på Shodans webbplats med en e-postadress du kontrollerar, gärna en som redan är kopplad till er organisations domän så att nyckeln går att spåra till ett team snarare än en privatperson. Efter registreringen hittar du din API-nyckel på kontosidan. Behandla den som ett lösenord: lägg den aldrig i ett offentligt Git-repo och rotera den om du misstänker att den läckt.

Om fler än en person i teamet ska arbeta med sökningarna, överväg att registrera ett gemensamt konto kopplat till en delad brevlåda istället för en enskild medarbetares privata e-post. Det undviker den vanliga situationen där nyckeln, bevakningslistorna och den historiska sökdatan blir låsta till en person som sedan slutar eller byter roll, och ingen annan vet hur man kommer åt kontot igen.

Shodan erbjuder flera nivåer. Gratiskontot ger kraftigt begränsad resultatvy och saknar flera av de filter du behöver för systematiskt arbete, medan betalnivåerna öppnar fler sökkrediter och filter. Vi går igenom priserna i detalj längre ner i artikeln, men för att följa stegen nedan räcker gratisnivån för det mesta utom de mest avancerade filtren som vuln och tag. Du hittar den fullständiga filterlistan och syntaxen i Shodans utvecklardokumentation, värd att bokmärka innan du går vidare.

Steg 2: Installera och konfigurera Shodan CLI

Shodans kommandoradsverktyg installeras via pip och ger dig tillgång till samma data som webbgränssnittet, men skriptbart. Paketet, som finns publicerat på PyPI, innehåller både CLI:n och Python-biblioteket du använder längre fram i guiden. Öppna en terminal och kör installationen:

pip install shodan
shodan version
# Verifiera att kommandot hittas
shodan --help

När paketet är installerat kopplar du det till ditt konto med init-kommandot. Byt ut DIN_API_NYCKEL mot nyckeln du hämtade i föregående steg:

shodan init DIN_API_NYCKEL
shodan info
# info-kommandot visar kvarvarande sökkrediter och kontonivå

Om shodan info svarar med ditt konto-id och antal krediter är kopplingen klar. Ett typiskt svar ser ut ungefär så här, även om era egna siffror skiljer sig beroende på kontonivå:

Query credits available: 98
Scan credits available: 100
Plan: freelancer
HTTPS enabled: True

Om du istället får ett autentiseringsfel, dubbelkolla att nyckeln kopierades utan mellanslag eller radbrytning, det är den vanligaste orsaken till att init-kommandot misslyckas. Notera även hur snabbt sökkrediterna sjunker under de första testerna, så att du har en känsla för budgeten innan du skalar upp till schemalagda körningar senare i guiden.

Steg 3: Lär dig sökfilter och bygg din första dork

Shodans sökspråk bygger på nyckel-värde-filter som kombineras i en sökfråga, ungefär som avancerad sökning i en databas. De filter du använder mest är dessa:

  • country:SE avgränsar till system registrerade i Sverige
  • port:3389 hittar system som exponerar RDP, en klassisk angreppsvektor
  • product:Apache filtrerar på identifierad programvara i bannern
  • org:"Exempelbolag AB" avgränsar till en specifik organisation
  • vuln:CVE-2021-44228 hittar system kopplade till en känd sårbarhet, men kräver betald nivå

Filtren går att kombinera fritt. En sökning efter country:SE port:3389 ger dig alla system i Sverige som svarar på RDP-porten, oavsett om det är rätt eller fel att de gör det. Det är din uppgift att avgöra vilka träffar som är legitima fjärrskrivbord med rätt skydd, och vilka som är en olåst dörr.

Nedanstående tabell sammanfattar filtren du använder mest i den här guiden, vilken kontonivå som krävs för varje filter, och ett typiskt användningsfall:

FilterExempelLägsta kontonivåAnvändningsfall
countrycountry:SEGratisAvgränsa till ett land eller en region
portport:3389GratisHitta system som exponerar en specifik tjänst
productproduct:ApacheGratisFiltrera på identifierad programvara
orgorg:”Ert Bolag”GratisAvgränsa till en specifik organisation
netnet:203.0.113.0/24GratisSök inom ett specifikt IP-intervall
vulnvuln:CVE-2021-44228Small BusinessHitta system kopplade till en känd CVE
tagtag:icsCorporateFiltrera på fördefinierade enhetskategorier, till exempel styrsystem

Spara de frågor ni använder regelbundet i en textfil eller ett internt wiki, så att nästa person i teamet inte behöver uppfinna samma sökning på nytt. Det är ofta den enkla delen av arbetet som glöms bort när ett verktyg införs: dokumentationen av vilka frågor som faktiskt är meningsfulla för er egen miljö.

Steg 4: Hitta exponerade tjänster i Sverige och Norden

Med grundfiltren på plats kör du din första riktiga sökning via CLI. Kommandot nedan listar IP, port och organisation för system i Sverige som exponerar RDP:

shodan search "port:3389 country:SE" --fields ip_str,port,org --limit 20

Ett typiskt utdrag ur resultatet ser ut som i exemplet nedan, med IP-adress, port och organisation på separata rader:

198.51.100.22    3389  Exempelbolag AB
203.0.113.47     3389  Kommunalt IT-kontor
192.0.2.118      3389  Privat hosting AB

Byt ut porten mot 5900 för VNC, 27017 för en öppen MongoDB-instans eller 502 för Modbus, protokollet som många industriella styrsystem fortfarande använder utan kryptering. Varje sökning kostar en sökkredit per 100 resultat, så håll limit-flaggan nere medan du testar frågor, och höj den först när du vet att frågan ger relevanta träffar.

Gör samma sökning avgränsad till er egen organisation med org:"Ert Bolag" istället för landskoden. Det är den sökningen som faktiskt är arbetet, kartläggningen av landet i stort är bara för att förstå sammanhanget ni verkar i. Om organisationsnamnet inte ger träffar alls, testa att söka direkt på era kända publika IP-intervall med net-filtret istället, eftersom WHOIS-registreringen bakom org-attributet inte alltid matchar det namn ni själva använder.

Steg 5: Automatisera sökningar med Python

CLI:n räcker för enstaka sökningar, men ett återkommande bevakningsflöde kräver kod. Installera Python-biblioteket, som följer med samma pip-installation som CLI:n, och skriv ett skript som loopar igenom resultat och sparar dem strukturerat:

import shodan
import csv

api = shodan.Shodan("DIN_API_NYCKEL")

query = 'org:"Ert Bolag" country:SE'
results = api.search(query)

with open("exponerade_system.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["ip", "port", "org", "produkt", "senast_sedd"])
    for match in results["matches"]:
        writer.writerow([
            match.get("ip_str"),
            match.get("port"),
            match.get("org"),
            match.get("product"),
            match.get("timestamp"),
        ])

print(f"Hittade {results['total']} träffar, sparade till exponerade_system.csv")

Skriptet skapar en CSV-fil du kan öppna i Excel eller importera i ert ärendesystem, och skriver samtidigt en sammanfattning till terminalen:

Hittade 7 träffar, sparade till exponerade_system.csv

Kör det en gång manuellt, granska resultatet rad för rad, och lägg det sedan i ett schemalagt jobb först när du är säker på att frågan ger meningsfull data utan brus. Varje anrop till api.search() drar sökkrediter enligt samma princip som CLI-sökningarna, så ett dagligt schemalagt jobb mot en snäv, väldefinierad fråga är betydligt billigare över en månad än upprepade breda sökningar ni kör manuellt.

Steg 6: Korsreferera fynd mot CISA KEV-katalogen

En lista med exponerade tjänster säger inte i sig om något är akut. Det du behöver är att väga exponering mot verklig exploateringsrisk, och där kommer CISA:s KEV-katalog in. KEV-katalogen, som finns publikt som en nedladdningsbar JSON-fil, listar sårbarheter som har bekräftad, aktiv exploatering i det fria, vilket gör den till ett bra filter för att sortera brus från det som faktiskt kräver åtgärd idag.

import requests
import json

kev = requests.get(
    "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json",
    timeout=20,
).json()

kev_products = {v["product"].lower() for v in kev["vulnerabilities"]}

# Jämför mot produkter Shodan rapporterat för era system
for match in results["matches"]:
    produkt = (match.get("product") or "").lower()
    if any(p in produkt for p in kev_products):
        print(f"Möjlig KEV-träff: {match['ip_str']} ({produkt})")

Matchningen ovan är medvetet enkel, en grov textjämförelse mellan produktnamn. I praktiken bör du komplettera med CVSS- och CVE-baserad bevakning för att få en mer exakt bild, eftersom produktnamn i Shodans banners kan skilja sig från KEV-katalogens namngivning. Betrakta skriptet som ett första filter, inte en slutgiltig sanning.

Tänk på att KEV-medlemskap och Shodan-exponering mäter två olika saker. KEV-katalogen säger att en sårbarhet har blivit utnyttjad någonstans i världen, inte att er specifika exponerade instans redan är komprometterad. Ett system som matchar både en Shodan-träff och en KEV-post är dock en betydligt starkare prioriteringssignal än exponering eller sårbarhet var för sig, och det är den kombinationen som bör trigga en akut åtgärd snarare än en biljett i nästa sprintplanering.

Steg 7: Bygg bevakning, varningar och export av resultat

Shodan Monitor låter dig lägga in specifika IP-adresser eller intervall och få besked när något ändras, till exempel när en ny port öppnas eller en tjänst byter version. Det är den funktion som gör Shodan användbart som löpande kontroll snarare än en engångsgenomgång. Lägg till era publika IP-intervall så att ni får en avvikelserapport istället för att behöva köra manuella sökningar varje vecka.

# Skapa en bevakning för ett specifikt nätverksintervall
shodan alert create "Produktionsnät" 203.0.113.0/24

# Lista aktiva bevakningar
shodan alert list

# Koppla en webhook som triggas vid förändring
shodan alert triggers 203.0.113.0/24 enable change_port

Byt 203.0.113.0/24 mot era faktiska publika intervall. Hur stor övervakningskapacitet ni får beror på kontonivån, vilket vi går igenom i prisjämförelsen längre fram. För export av historiska sökresultat, utöver det löpande CSV-skriptet från steg 5, kan du använda shodan download för att spara rådata lokalt och shodan parse för att göra om den till ett format ni kan ladda in i Excel eller ett BI-verktyg.

shodan download resultat_sverige "org:\"Ert Bolag\" country:SE"
shodan parse --fields ip_str,port,org,product resultat_sverige.json.gz

För att slippa köra Python-skriptet från steg 5 manuellt varje dag lägger du det i en crontab på en server eller en liten molnfunktion. Ett enkelt exempel som kör sökningen varje morgon klockan 06:00 och loggar resultatet:

# Redigera crontab med: crontab -e
0 6 * * * /usr/bin/python3 /home/sakerhet/shodan_bevakning.py >> /var/log/shodan_bevakning.log 2>&1

Lägg gärna en enkel kontroll i slutet av skriptet som jämför dagens antal träffar mot gårdagens. En plötslig ökning, till exempel från 7 till 40 exponerade system över natten, är ofta ett tecken på att en brandväggsregel ändrats eller en migrering gått fel, och det är precis den typen av avvikelse ett dagligt jobb är till för att fånga innan det hunnit bli en vecka gammalt problem.

Steg 8: Bygg det kompletta övervakningsprojektet och rapportera fynd ansvarsfullt

Nu sätter du ihop delarna till ett sammanhängande projekt. Strukturen nedan fungerar som utgångspunkt för ett produktionsklart bevakningsflöde:

  • Ett schemalagt jobb (cron eller en molnfunktion) som kör sökskriptet från steg 5 en gång per dygn mot era egna IP-intervall
  • KEV-jämförelsen från steg 6 som filtrerar bort allt utom träffar mot kända, aktivt exploaterade sårbarheter
  • Shodan Monitor-bevakningen från steg 7 som fångar nya öppningar mellan de schemalagda körningarna
  • En Slack- eller Teams-webhook som skickar en sammanfattning, inte en rad per träff, för att undvika larmtrötthet
  • En dokumenterad process för vad som händer när ni hittar en exponering hos en tredje part, inte bara hos er själva

Den sista punkten är ofta den som glöms bort. Om ni under arbetet hittar en exponerad databas eller ett sårbart styrsystem som tillhör en annan organisation, är det inte er uppgift att logga in, testa standardlösenord eller hämta data för att “bevisa” allvaret. Rapportera fyndet privat till ägaren eller via en etablerad kanal, exempelvis en vulnerability disclosure-process mot CERT-SE, och undvik att publicera identifierande detaljer offentligt.

Beskrivet som ett flöde ser hela projektet ut så här, från insamling till åtgärd:

  1. Schemalagt Python-skript (steg 5) hämtar dagens Shodan-resultat för era egna IP-intervall och organisationsnamn
  2. Resultatet sparas som CSV och jämförs mot föregående dags fil för att identifiera nya exponeringar
  3. KEV-jämförelsen (steg 6) flaggar de träffar som matchar en aktivt exploaterad sårbarhet
  4. Shodan Monitor (steg 7) fångar förändringar mellan de schemalagda körningarna i realtid
  5. En webhook skickar en samlad sammanfattning till Slack eller Teams, med KEV-flaggade fynd högst upp
  6. Ert ärendesystem skapar automatiskt ett ärende för varje KEV-flaggad träff, medan övriga fynd samlas i en veckorapport

Om ni redan driver ett eget SIEM eller SOC kan hela flödet mata in i samma plattform som annan telemetri, till exempel om ni byggt er loggpipeline med Wazuh, eller om ni samlar underrättelser i en MISP-instans. Då blir Shodan-resultaten en källa till bland flera, inte ett fristående Excel-ark som bara en person i teamet tittar på.

Tänk också på GDPR när ni lagrar sökresultat. En IP-adress kan räknas som personuppgift om den går att koppla till en identifierbar person, vilket betyder att ni bör ha en dokumenterad laglig grund för lagringen, begränsa vad ni samlar in till det som behövs, och sätta en rimlig gallringstid på CSV-filerna och loggarna skriptet genererar. GDPR:s artikel 5 om uppgiftsminimering och lagringsbegränsning är den del av förordningen som är mest direkt relevant för en bevakningsprocess som den vi byggt här.

Vanliga misstag att undvika

De flesta misstagen nedan handlar inte om tekniken i sig utan om hur verktyget hanteras i en organisation med flera inblandade team. Ett Shodan-konto utan tydligt ägarskap, en process utan dokumenterad gallring, eller en sökning som ingen dubbelkollat innan den automatiserades, orsakar oftare problem än att själva API-anropet skulle fallera.

  • Att förväxla exponering med intrång. En Shodan-träff visar att en tjänst svarar på en port, inte att systemet är hackat. Dra inte för stora växlar på en enskild sökning.
  • Att testa inloggning mot system ni inte äger. Att se en banner är inte tillstånd att logga in, prova standardlösenord eller skicka trafik utöver det som krävs för att identifiera tjänsten.
  • Att bränna sökkrediter på breda frågor. En query utan avgränsning i land eller organisation kan generera tiotusentals träffar och äta upp månadens kvot på en enda sökning.
  • Att lagra rådata utan gallringsplan. IP-listor med organisationsnamn och tidsstämplar samlas snabbt på hög utan att någon tar ägarskap för att rensa dem.
  • Att lita blint på produktidentifieringen. Shodans bannerbaserade identifiering kan vara fel eller inaktuell, verifiera alltid manuellt innan ni agerar på ett fynd som rör kritisk infrastruktur.
  • Att glömma bevakning av dynamiska IP-intervall. Moln-IP:er byter ofta ägare. En bevakning satt upp för ett år sedan kan nu övervaka någon annans infrastruktur.
  • Att dela sökresultat brett internt utan filtrering. En lista med exponerade system och organisationsnamn är känslig information i fel händer. Begränsa åtkomsten till de som faktiskt ska åtgärda fynden.

Felsökning: vanliga problem och lösningar

De flesta problem med Shodan CLI och API:et handlar om autentisering, kreditbudget eller filtersyntax snarare än buggar i verktyget själv. Tabellen nedan samlar de problem supportforum och interna erfarenheter återkommande visar, tillsammans med den lösning som brukar fungera direkt.

ProblemTrolig orsakLösning
“Invalid API key” vid initNyckeln kopierades med extra mellanslag eller radbrytningKopiera nyckeln igen direkt från kontosidan och köra shodan init på nytt
Sökningen ger noll resultatFiltersyntaxen är fel, ofta saknas kolon eller citattecken runt org-namnTesta frågan i webbgränssnittet först för att validera syntaxen
“Request timed out” i Python-skriptetNätverksfiltrering eller en tillfällig driftstörning hos API:etLägg till retry-logik med exponentiell backoff runt anropet
vuln-filtret ger “upgrade required”Kontot ligger på gratisnivå eller Freelancer, som saknar filtretUppgradera till en nivå som inkluderar filtret, eller använd produktnamn som proxy istället
CSV-filen innehåller tomma kolumnerFältet saknades i den specifika bannern, inte alla träffar har alla attributHantera saknade fält explicit med .get() och ett standardvärde i skriptet
Krediterna tar slut mitt i månadenFör breda frågor eller för hög limit-flagga under testningSänk limit under utveckling och spara endast de filter ni vet fungerar
Alert triggas inte vid förändringTriggern är inte aktiverad för rätt händelsetypKontrollera med shodan alert triggers att rätt händelser är aktiverade
KEV-matchningen missar uppenbara träffarProduktnamnen i Shodan och KEV-katalogen stavas eller formateras olikaKomplettera textjämförelsen med en manuell genomgång av de vanligaste produkterna i er miljö

Shodan vs Censys vs ZoomEye: funktioner och priser 2026

Shodan är inte ensam i sin kategori. Censys är den vanligaste jämförelsepunkten och fokuserar mer på certifikat- och attack-ytanalys för större organisationer, medan ZoomEye är ett alternativ med liknande upplägg som Shodan men med annan geografisk täckning, mer inriktad mot den asiatiska marknaden. Ingen oberoende rapport ger en entydig rangordning av vilken tjänst som har störst eller mest komplett index, så betrakta valet som en fråga om vilket gränssnitt och vilka filter som passar er arbetsprocess, snarare än en fråga om vem som “vinner”.

I praktiken använder många mogna säkerhetsteam mer än ett verktyg parallellt. Shodans enkla sökspråk och låga tröskel gör det till ett naturligt förstahandsval för att snabbt svara på frågan “är det här öppet mot internet”, medan Censys ofta kommer in när ni redan vet att ni behöver en djupare certifikatinventering över ett stort antal domäner. Ingen av verktygen ersätter en riktig sårbarhetsskanner, de svarar på en annan fråga: vad är synligt, inte hur sårbart är det i detalj.

NivåPrisSökkrediterSkankrediterIP-bevakning
Freelancer$69/månad10 0005 1205 120 IP:er
Small Business$359/månad200 00065 53665 536 IP:er
Corporate$1 099/månadObegränsat327 680327 680 IP:er
EnterpriseAnpassad offertAvtalsenligtAvtalsenligtAvtalsenligt

Observera att Freelancer-nivån saknar filtren vuln och tag, Small Business saknar tag, medan Corporate och Enterprise har tillgång till samtliga filter. Om ert användningsfall bygger på att korsreferera mot specifika CVE-nummer, som vi gjorde i steg 6, behöver ni minst Small Business-nivån för att göra det direkt via vuln-filtret, annars får textjämförelsen mot KEV-katalogen bli er huvudmetod.

För en mindre organisation som bara vill övervaka ett fåtal publika IP-intervall är Freelancer-nivån ofta fullt tillräcklig, särskilt om ni kompletterar med den KEV-baserade textjämförelsen från steg 6 istället för att betala för vuln-filtret direkt. Det är först när antalet övervakade system eller antalet dagliga sökningar växer påtagligt att kostnaden för en högre nivå börjar bli motiverad jämfört med den tid ni annars lägger på manuell filtrering.

Avancerade tips för mognare säkerhetsteam

När grundflödet är på plats finns flera sätt att höja ambitionsnivån. Shodan Images ger en visuell genomgång av kameraflöden och liknande tjänster, användbart för att snabbt avgöra om en träff är en legitim övervakningskamera med autentisering eller en helt öppen videoström. Shodan Exploits kopplar ihop identifierade produkter och versioner med känd exploateringsinformation, vilket kan fungera som ett komplement till KEV-jämförelsen från steg 6, men samma försiktighetsprincip gäller: identifiering är inte bevis på intrång, och funktionen ska användas för att validera er egen exponering, inte för att testa andras system.

För team som redan driver ett SOC kan Shodan-resultat matas in i samma pipeline som annan telemetri. Lägg strukturerade sökresultat i ert loggsystem tillsammans med brandväggs- och EDR-data, så att en analytiker kan se att en intern varning om ovanlig trafik mot en port sammanfaller med en extern exponering på samma system. Det gör ett isolerat larm till en komplett incidentbild istället för två separata datapunkter som ingen kopplar ihop.

Ett annat tips är att schemalägga sökningar per affärsenhet snarare än för hela organisationen i en enda fråga. Det gör resultaten lättare att äga, eftersom varje affärsenhets it-ansvarig kan få sin egen rapport istället för en gemensam lista på tusentals rader som ingen känner ansvar för att gå igenom.

Om ni har en formell leverantörsgranskningsprocess, lägg in en Shodan-sökning på leverantörens kända domäner och IP-intervall som en obligatorisk punkt innan ett avtal skrivs under, inte bara vid den årliga säkerhetsrevisionen. Det är betydligt billigare att upptäcka en exponerad administrationspanel hos en ny leverantör innan ni delar data med dem, än att upptäcka den efter att integrationen redan är i produktion.

Mät effekten: nyckeltal för er exponeringsbevakning

Ett bevakningsflöde som ingen tittar på rapporten från är bortkastad tid, oavsett hur välskrivet skriptet är. Sätt upp ett litet antal nyckeltal från start så att ni kan se om processen faktiskt gör skillnad över tid, inte bara producerar en lista ni skickar vidare och glömmer.

  • Antal nya exponeringar per vecka. Ett stabilt eller fallande tal betyder att processen fångar upp och åtgärdar fynd innan de hinner bli ett mönster.
  • Medeltid till åtgärd. Räkna från att en exponering upptäcks till att porten stängs eller tjänsten skyddas, uppdelat på vanliga fynd och KEV-flaggade fynd.
  • Andel fynd som var kända sedan tidigare. Om samma system dyker upp som nytt fynd månad efter månad har ni ett processproblem snarare än ett upptäcktsproblem.
  • Antal KEV-matchningar som lett till ett ärende. Skiljer sig detta kraftigt från antalet KEV-matchningar som genererats är det ett tecken på att larmen ignoreras eller filtreras bort för aggressivt.

Rapportera nyckeltalen till samma forum som redan följer upp annan säkerhetsstatistik, till exempel ett månatligt säkerhetsmöte eller en ledningsgruppsrapport. Exponeringsbevakning som en isolerad aktivitet utanför den övriga säkerhetsstyrningen tenderar att tappa prioritet så fort den som byggde den första versionen byter roll.

Så gäller detta för svenska och nordiska organisationer

För organisationer som omfattas av NIS2 är extern exponeringskartläggning inte bara bra praxis, det är ett naturligt led i det riskhanteringsarbete lagen kräver. Att kunna visa att ni systematiskt letar efter oavsiktligt exponerade system, och har en process för att åtgärda fynd, stärker både er faktiska säkerhet och er förmåga att dokumentera efterlevnad vid en revision eller efter en incident.

Det gäller särskilt för sektorer som energi, vatten, transport och tillverkning, där ett enskilt felkonfigurerat styrsystem kan få konsekvenser utanför det egna bolaget. En extern exponeringskontroll är billig att genomföra jämfört med kostnaden för en driftstörning i kritisk infrastruktur, och den kompletterar snarare än ersätter de interna skanningar och penetrationstester ni redan kör.

Kom ihåg att hanteringen av insamlad data ska följa GDPR, vilket i Sverige tillsyns av Integritetsskyddsmyndigheten (IMY). Om era sökresultat innehåller uppgifter som kan knytas till enskilda personer, exempelvis en hemkontorsenhet med ett personnamn i värdnamnet, behöver ni behandla den informationen med samma försiktighet som annan personuppgiftsbehandling, inte bara som teknisk loggdata.

Shodans grundare har själv varit tydlig om varför verktyget existerar trots riskerna med att synliggöra svagheter: “Hackers will find vulnerabilities,” sa Matherly i en intervju med Raconteur. Resonemanget är att den som hittar bristen först, ni själva eller en angripare, avgör om fyndet blir en åtgärdad brist eller en rubrik. Det är precis det racet den här guiden hjälper er att vinna.

Vanliga frågor

Är det lagligt att använda Shodan i Sverige?

Att söka i Shodans redan insamlade bannerdata är inte i sig olagligt, eftersom Shodan gör den passiva insamlingen. Det som kan bli ett brottsligt dataintrång är om ni därefter försöker logga in på, exploatera eller på annat sätt komma åt ett system ni inte har tillstånd att testa. Avgränsa alltid era egna aktiva tester till tillgångar ni äger eller har skriftligt mandat att undersöka.

Vad kostar Shodan 2026?

Shodans betalda API-nivåer sträcker sig från Freelancer på $69 per månad till Corporate på $1 099 per månad, med en anpassad Enterprise-nivå för de största behoven. En begränsad gratisnivå finns också, men saknar flera av de filter som krävs för systematiskt arbete.

Vad är skillnaden mellan Shodan och Censys?

Båda indexerar internetuppkopplade system, men Censys lägger historiskt mer vikt vid certifikatanalys och större attack-ytövervakning för företag, medan Shodan är mer inriktat på enskilda enheter, IoT och industriella system med ett enklare sökspråk. Vilket som passar bäst beror på om ni primärt vill kartlägga certifikat och molninfrastruktur eller enskilda exponerade tjänster.

Kan jag använda Shodan gratis?

Ja, men gratiskontot har en kraftigt begränsad resultatvy och saknar filter som vuln och tag. Det räcker för att lära sig grunderna och testa enkla sökningar, men ett löpande bevakningsflöde som det vi byggt i den här guiden kräver i praktiken en betald nivå.

Hur hittar jag exponerade system i mitt eget nätverk?

Använd org:"Ert Bolagsnamn" eller sök direkt på era publika IP-intervall. Om organisationsnamnet inte ger träffar, prova att söka på era kända IP-block istället, eftersom Shodans organisationsattribut baseras på WHOIS-data som inte alltid stämmer exakt med det namn ni använder internt.

Vad gör jag om jag hittar en allvarlig sårbarhet hos en annan organisation?

Rapportera fyndet privat och ansvarsfullt, utan att testa vidare eller publicera detaljer offentligt. Använd organisationens angivna säkerhetskontakt om en sådan finns, eller en etablerad kanal för samordnat utlämnande som CERT-SE, och ge ägaren rimlig tid att åtgärda innan ni går vidare. Dokumentera vad ni sett, när ni sett det och vilken sökfråga som gav fyndet, men undvik att spara eller vidarebefordra faktiskt innehåll från systemet utöver det som krävs för att beskriva problemet.

Fungerar Shodan CLI på Windows?

Ja, CLI:n är skriven i Python och fungerar på Windows, macOS och Linux så länge Python och pip är installerade. På Windows kör du samma kommandon i PowerShell eller Command Prompt som i exemplen i den här guiden.

Hur skiljer sig Shodan från en vanlig sårbarhetsskanner som Nessus eller OpenVAS?

Nessus och OpenVAS gör aktiva, djupgående skanningar mot system ni pekar ut, och kräver i regel att ni redan känner till tillgången. Shodan gör ingen ny skanning när du söker, det visar redan insamlad data från internetuppkopplade system globalt, vilket gör det bättre lämpat för att upptäcka tillgångar ni inte visste existerade. De bästa resultaten får ni genom att använda båda: Shodan för att hitta det okända, och en traditionell skanner för att gå på djupet när ni väl vet vad som finns där.