Cisco Catalyst – Konfigurera VLAN

Introduktion

VLAN är ett bra verktyg för att logiskt dela in ett större LAN i mindre delar. Ett interface i VLAN-sammanhang kan befinna sig i två olika lägen. Det kan vara ett access-interface som befinner sig i ett VLAN, eller också så kan interfacet vara i läge trunking för att skicka data från flera VLAN. Trunking används för förbindelser mellan swicthar eller för anslutning till router och andra enheter. För att skilja meddelanden från olika VLAN från varandra används taggar. En vanlig standard för detta är IEEE 802.1q.

Exempel

För att konfigurera VLAN så behöver man utföra ett antal steg. JAg har valt att göra detta som ett exempel enligt nedanstående figur.

PRincipskiss Switch VLAN

Vi har en switch med 10 portar. I mitt exempel är det en Catalyst 2960. De fyra första portarna, Gi0/1-Gi0/4, ska konfigureras som accessinterface för VLAN 10. Nästa fyra portar, Gi0/5-Gi0/8, ska vara accessportar för VLAN 20. Slutligen ska de två sista portarna, Gi0/9 och Gi0/10, konfigureras för trunking.

Kommandon

Det första som måste göras är att från det globala konfigurationsläget tala om att vi vill aktivera ett VLAN. Samtidigt går vi in i konfigurationsläget. Kommandot för detta är vlan nummer.

I mitt exempel startar jag då med VLAN 10. I konfigurationsläget för VLAN 10 kan jag ge mitt VLAN en beskrivning eller namn med kommandot name.

När jag skapat mina VLAN och gett dem namn så är det dags att placera interface i ett VLAN eller konfigurera dem för trunking.

För att få konfigurationen för accessportarna som beskrivits i exemplet så utförs följande kommandon:

  •  interface range Gi0/1-4
  • switchport access vlan 10
  • swicthport mode access
  • interface range Gi0/5-8
  • switchport access vlan 20
  • switchport mode access

För att konfigurera trunking så går vi in i de interface som ska använda trunking. Där skriver vi switchport mode trunk.

Förutom de två lägen som vi har använt (access och trunk) så finns det två andra lägen som kan användas. Dessa är dynamic auto respektive dynamic desirable. Båda dessa sätter ett interface till trunk eller access beroende på vad som läget är på andra sidan av anslutningen. Skillnaden är att med dynamic desirable så kommer interfacet att föredra trunk och om vi då ansluter till ett interface med dynamic auto så kommer vi att få trunking. Detta händer inte om vi har dynamic auto på båda anslutningarna.

VLAN Trunking Protocol

Cisco har ett äldre eget trunkingprotokoll som heter VTP. Detta bör inte användas. Man kan se om VTP fortfarande är aktivt med show vtp status. Om det är aktivt stäng av det eller sätt det i transparent läge. Detta görs med vtp mode off, respektive vtp mode transparent. 

 

 

Cisco – Interface på en switch

Grundläggande inställningar på ett interface

Från det globala konfigurationsläget som vi kan nå via configure terminal så kan vi hoppa direkt till ett interface genom att ge dess namn, exempelvis interface Gi0/2. Väl där så kan vi göra ett antal inställningar. Några exempel är följande:

  • shutdown – stänger av ett interface. När vi listar status på interfacet så anges status till disabled. I vissa listningar ser vi också benämningen administratively down.
  • no shutdown – aktiverar ett interface. (OBS! ordet no används frekvent för att utföra motsatsen till ett kommando.)
  • duplex full respektive duplex half – sätter ett önskat duplexläge på interfacet. Detta ändrar de inställningar som förhandlats fram vid anslutning till switchen. För att använda den förhandlade inställningar använder man duplex auto eller no duplex.
  • speed hastighet – sätter hastigheten. Hastigheten anges i Mbps (exempelvis 10/100/1000.) Även här kan man använda den förhandlade hastigheten med speed auto eller no speed.
  • description – Används för att ge en beskrivning av interfacet. Exempelvis description filserver, vilket kan användas för att visa att vår filserver ska anslutas till detta interface. Med bra beskrivningar så underlättas felsökning.

Arbeta med flera interface samtidigt

Ofta så vill man ha samma inställningar för flera interface. Som exempel antag att vi inte har några hostar eller andra switchar anslutna till interface Gi0/7 och Gi0/8. Det man då vill göra är att stänga dessa interface så att en eventuell angripare som lyckas ansluta inte ska få tillgång till nätet.

Det kommando som då används är att ange range som ger ett intervall. För vårt exempel ovan så skriver vi interface range Gi0/7 – 8. (Ofta anger vi det kortare skrivsättet, int ran Gi0/7 – 8.) Sedan kan vi stänga ner interfacen med shutdown.

Port security

Ett problem vi har i dagens nätverk är att angripare försöker ansluta till vårt nät. För att försvåra angrepp så kan vi använda något som kallas port security. Med port security så kan vi sätta regler för vilka hostar som får ansluta. En sak som är viktigt att notera är att ett krav för att få sätta port security är att porten måste vara antingen access- eller trunk-interface. (Används för VLAN) Vi startar därför med switchport mode access eller switchport mode trunk.

För att tala om för en switch att vi vill ha port security för ett interface skriver vi switchport port-security. Därefter har vi ett antal alternativ beroende på vad vi vill åstadkomma.

  • switchport port-security maximum antal – sätter begränsningar så att maximalt antal stycken MAC-adress tillåts skicka data Ethernet-ramar via detta interface. Observera att detta inte anger vilka MAC-adress utan bara hur många olika.
  • switchport port-security violation åtgärd – talar om för switchen vilken åtgärd som ska utföras när den upptäcker ett brott mot villkoren. De åtgärder som används är protect, restrict eller shutdown. Protect betyder att man kastar de ramar som kommer från okänt MAC-adress. Restrict loggar dessutom överträdelsen genom att räkna upp en räknare för överträdelser samt skickar logg och SNMP-meddelande. Shutdown som är default-inställningen stänger ner porten vilket får till följd att även legitim trafik blockeras. Observera att vid överträdelse så kommer status inte att visas som shutdown utan som error disabled (err-disabled). För att återställa ett interface så måste man först stänga ner det med shutdown och därefter starta det igen.
  • switchport port-security  mac-address adress – talar om att MAC-adressen tillåts för denna port. Vi kan upprepa kommandot om vi vill tillåta flera MAC-adresser till en port. Detta är en bra inställning om vi på förhand vet vilken host som är ansluten till en viss port. Om vi byter dator eller byter nätverkskort måste vi gå in och konfigurera om inställningarna. Detta kanske går att göra i en hemmiljö men i en större organisation är detta inte hanterbart i praktiken. Vi kan då använda följande alternativ.
  • switchport port-security  mac-address sticky – här lär sig switchen själv vilken MAC-adress som ska få tillgång. När en host ansluter så ser switchen MAC-adressen. Under förutsättningen att maximalt antal hostar inte är nådda så lagras MAC-adressen. Denna inställning lagras bara i running-config vilket gör att sticky försvinner om switchen startas om. Detta utnyttjas både för administration då man startar om switchen om man har en ny dator ansluten till ett interface. Då lagras den nya adressen i stället för den gamla. Tyvärr kan detta utnyttjas av en angripare om hen lyckas tvinga switchen till en omstart.
  • show port-security interface namn – visar status för port-security för ett interface.

Listning av MAC-adresser och port security

Ett knep som används för att filtrera statiska default adresser som finns lagrade i switchens MAC-tabell så skriver man ofta show mac address-table dynamic. Detta fungerar inte när vi använder port security. En port som använder port security är inte dynamisk utan statisk. Men vi vill inte se den tillsammans med  övriga statiska default-adresser. För att kontrollera MAC-tabellen för portar med port security används: show mac address-table secure

 

WPA2 – Professional (WPA-EAP)

För organisationer som inte vill använda ett delat lösenord till sitt trådlösa nätverk utan i stället kräver inloggning med användarnamn och lösenord så kan man använda EAP. (WPA Professional, 802.1X)

Det som krävs här är dels en AP som talar 802.1X, samt en central RADIUS som kan hantera användarnamn och lösenord. I Windows-miljöer är det vanligt att man låter RADIUS i sin tur tala med domänkontrollanten.

Här är några länkar som jag tyckte var bra för att förstå samt som hjälp för konfiguration.

http://tldp.org/HOWTO/html_single/8021X-HOWTO/

https://blogs.technet.microsoft.com/networking/2012/05/30/creating-a-secure- 802-1x-wireless-infrastructure-using-microsoft-windows/

http://www.windowsnetworking.com/articles-tutorials/windows-server- 2008/Setting-up-Wi-Fi-Authentication-Windows-Server-2008-Part1.html

 

http://www.windowsnetworking.com/articles-tutorials/windows-server- 2008/Setting-up-Wi-Fi-Authentication-Windows-Server-2008-Part2.html

 

Cisco Catalyst – Management och Säkerhet

Bakgrund

En switch eller router som kan konfigureras med hjälp av kommandotolk via konsolkabel eller via nätverk behöver konfigureras för att göra det svårare för en angripare att få access. Utan detta skydd så kan en angripare göra inställningar på enheten som påverkar säkerheten i hela nätet. Om vi exempelvis har separerat vårt nät i logiska subnät och VLAN så kan en angripare göra så nät som skulle vara åtskilda istället blir sammankopplade.

Extra viktigt är detta när man inte längre behöver fysisk access via konsol utan man kan konfigurera enheten via nätet. Naturligtvis bör man även se över den fysiska säkerheten för att göra det svårare med access.

Lösenordsskydd

En av de första skydden man kan lägga till är att man måste logga in på enheten innan man får access. Detta kan göras på några olika sätt.

  1. Gemensamt lösenord. I denna metod så har alla användare samma lösenord för access. Det som skyddas är access till ett visst gränssnitt. Det betyder att vi kan ha olika lösenord för konsolen och nätverksanslutningarna.För att sätta ett gemensamt lösenord så flyttar man till konfigurationsläget för aktuell anslutning. Därefter anger man login för att tala om att gemensamt lösenord ska användas. Efter detta steg anger man lösenord med password lösenord.

    Exempel för konsol:
    line console 0
    login
    password 
    Passwd

    Observera följande! Denna metod skapar visserligen ett lösenord men lösenordet delas av alla användare. Dessutom så syns lösenordet i klartext om man listar running-config.

  2. Skapa lokala användarnamn och lösenord. Denna teknik är något säkrare jämfört med bara ett enkelt lösenord. På enheten skapas en användarlista med användarnamn och ett lösenord. Förutom fördelen med att varje användare har sitt egna lösenord så lagras inte lösenordet i klartext. Vid lagring av lösenord så används en hash-funktion (md5).För att skapa en användardatabas så skriver vi följande i det globala konfigurationsläget: username namn secret lösenord.  När användarna sedan har skapats så talar vi om att vi vill använda användardatabasen genom att gå in på aktuell anslutning och skriva login local.
  3. Centraliserade användardatabas. Med lokala användare så måste man skapa användardatabas på alla enheter. Detta är ett väldigt omständligt steg samt ger flera felkällor. Om en användare vill byta lösenord så måste man se till att byta på alla enheter var för sig. Ett modernare alternativ är att ha en centraliserad användarlista och sedan låta enheten autentisera användarna användarna med hjälp av RADIUS som ansluter till den centrala databasen.

Säkra enable mode

Förutom att kräva att användarna måste logga in innan de får ansluta till enheterna så kan man även tvinga ett nytt lösenord när man vill gå från user till enable-mode. För att konfigurera ett enable-lösenord skriver man: enable secret lösenord.

Det finns även ett äldre sätt där man skriver enable password lösenord. Vid en första anblick ser det ut som om dessa metoder är samma sak men de har en viktig skillnad. Med enable secret så lagras inte lösenordet i klartext utan en hashfunktion används. Däremot så lagras det i klartext med enable password.

Ge en switch en IP-adress

En switch har inget behov av en IP-adress i sin normala funktion. Det är faktiskt så att inte ens MAC-adressen är viktigt för hur en switch skickar vidare ramar. Anledningen till att man vill sätta en IP-adress är om man vill kunna konfigurera switchen via nätverket i stället för att hålla på med konsol-kabeln.

För att vara noggrann så är det inte switchen som har en ip-adress. I stället är det den inbyggda datorn som konfigurerar switchen som får en IP-adress. Den inbyggda datorn har ingen fysisk anslutning till nätet. I stället ansluter den via ett virtuellt interface som är anslutet till ett VLAN. Alltså måste man konfigurera VLAN för att därefter tilldela ett virtuellt interface anslutet till ett VLAN en IP-adress. De steg som utförs är följande:

  • Gå till läget för det virtuella interfacet med interface vlan id.
  • Sätt en IP-adress med ip address ip-adress nätmask. (Vi kan även få ip via DHCP med ip address dhcp)
  • Starta det virtuella interfacet med no shutdown.
  • Från det globala konfigurationsläget så kan vi ställa in default gateway och DNS-server med kommandona: ip default-gateway ip-address, respektive ip name-server ip-address.

Telnet

För att ansluta via nätet så kan vi använda det gamla telnet-protokollet. Detta fungerar men rekommenderas inte då alla kommandon skickas i klartext. Om vi dessutom väljer att lista konfigurationen med så kommer även den att skickas i klartext. Men om man trots detta väljer att konfigurera Telnet så kommer här en kort guide. Man behöver i princip enbart utföra följande tre korta steg som är beskrivna tidigare.

  1. Sätt IP-adress på ett virtuellt VLAN-interface.
  2. Skapa ett lösenord som krävs för anslutning via nätverk. (line vty)
  3. Sätt ett lösenord för att gå till enable-mode.

SSH

Ett bättre och säkrare alternativ till telnet är SSH. Med SSH skapas en krypterad anslutning vilket gör det svårare för en angripare att avlyssna. Vi måste dessutom ansluta med användarnamn och lösenord till enheten.

För att konfigurera enheten för SSH så ska följande steg utföras:

  1. Sätt IP-adress på ett virtuellt VLAN-interface.
  2. Skapa användare och lösenord.
  3. Ställ in inlogg via nätverk (line vty) till att använda både användarnamn och lösenord. (login local)
  4. Sätt ett lösenord (secret) för att nå enable-mode.
  5. Skapa ett nyckelpar som ska användas för SSH. För att göra detta behöver vi utföra flera delsteg. Vi måste ge enheten ett namn i en DNS-zon (FQDN) med följande kommandon: hostname namn och ip domain-name DNS-domän.  När enheten har ett FQDN så kan vi skapa ett nyckelpar med crypto key generate rsa. (I skarpa miljöer så kan vi utnyttja riktiga certifikat i stället för självsignerade.)
  6. Vi måste inte men det är bra från ett säkerhetsperspektiv att sätta SSH-versionen till 2 i stället för default 1.99. Detta görs med ip ssh version 2.
  7. Om vi vill tillåta endast anslutning via SSH och inte via telnet så ställs detta in med: transport input ssh (Om man vill tillåta båda så gäller input all, medan om vi bara vill ha telnet input telnet.) Observera att för routrar så kan default vara input none vilket gör att man varken kan ansluta med SSH eller telnet.

Loggning

Resultatet från kommandon ger ibland ett svar från enheten som listas i kommandoraden. Ett problem är att denna text har en förmåga att nästla sig in i nya kommandon vilket gör det svårläst. För att lösa detta kan vi antingen ta bort utmatningen helt med no logging console. Alternativt kan vi välja att utmatningen sker vid mer kontrollerade tillfällen med logging synchronous.

En annan sak som kan vara frustrerande är att om man skriver fel i namnet på ett kommando så verkar det som om enheten låser sig. Det som sker är att enheten tror att vi angett en nätverksplats och enheten kontaktar då DNS för att lösa IP-adressen. Detta kan vara bra om vi vill nå en nätverksenhet men oftast är det vi som råkat stava fel. För att stoppa enheten från att kolla med DNS så skriver man no ip domain-lookup.

Vi kan också ändra den tid av inaktivitet som krävs innan man blir automatiskt utloggad från enheten. Detta görs med kommandot exec-timeout minuter sekunder.

 

Cisco Catalyst Switch – Analys

MAC tabeller

En switch lär sig MAC-adresser för anslutna hostar genom att inspektera avsändaradressen i Ethernet-ramar. De adresser som en switch lär sig lagras i tabeller. För att få fram dessa tabeller i en Cisco Catalyst switch så kan vi skriva show mac address-table. Oftast är vi endast intresserade av adresser som switchen lärt sig genom inspektion av ramar. Dessa adresser kallas för dynamiska. Det slutliga kommandot vi oftast är intresserade av blir då:
show mac address-table dynamic

Ibland vill vi filtrera resultatet för att se en specifik MAC-adress, efter ett visst interface eller för ett specifikt vlan. Detta åstadkommer vi med följande tre alternativ:

  • show mac address-table dynamic address MAC-adress
  • show mac address-table dynamic interface interfacebenämning
  • show mac address-table dynamic address vlan id

Adresser stannar i MAC-tabellen i en viss tid även om inga nya ramar skickas från en adress. Hur länge denna tid är beror på något som kallas för aging-time. Som default är denna satt till 300 sekunder. För att lista storleken på aging time används kommandot show mac address-table aging-time. Adresser kan även raderas innan tiden runnit ut för dem om minnet blir fullt. Då raderas de äldsta raderna ut tabellen. För att se storlek på tabellen fast inte tabellen i sig så kan vi skriva show mac address-table count.

Om vi vill kan vi radera alla dynamiska adresser från mac-tabellen med clear mac address-table dynamic.

Interface

För att inspektera de olika interface (portar) som finns på switchen används show interface status. Med detta kommando så listas alla interface med deras namn. Dessutom får vi reda på om någon host är ansluten, vilket vlan som interfacet tillhör, samt duplex och hastighet.

Det finns flera andra alternativ som kan vara intressanta. Om vi inte tar med alternativet status så får vi betydligt mer information. Denna information kan vara intressant för att få fram för individuella interface men jag ser ingen större användning av att lista den kompletta informationen för alla interface.

Om vi vill ha information om ett specifikt interface, exempelvis Gi0/2 kan vi skriva show interface Gi0/2 status för kort information eller show interface Gi0/2 för komplett information. Ibland vill vi ha statistik över trafiken som har passerat ett visst interface. Detta kan vi få genom att ange counters, exempelvis enligt följande show interfaces Gi0/3 counters. Med statistiken ser vi antal ingående och utgående ramar indelat i unicast, multicast och broadcast.

 

Grunder i Cisco CLI

Anslutning

För att administrera Ciscos nätverksutrustning på en grundläggande nivå är via deras kommandogränssnitt (CLI) via seriell konsol-anslutning. För att göra detta används följande steg:

  1. Koppla en Cisco-konsolkabel till uttaget. Observera att uttaget ser ut som en vanlig RJ45-ethernetport men det är en seriell anslutning. Andra änden ansluts till seriellt uttag eller via dongel till USB.
  2. Anslut med terminalprogram. Lämpliga program är putty eller Tera Term. Följande inställningar ska användas för den seriella anslutningen: 9600 bps, ingen flödeskontroll, 8-bitars ASCII, ingen paritet och 1 stoppbit. Om allt fungerar som de ska får du följande prompt i terminalprogrammet: namn>
    namn är namnet på enheten, exempelvis switch1

Förutom att ansluta med konsolkabel så kan man konfigurera enheten för anslutning via nätverk med Telnet (osäkert) eller SSH (säkrare). Principer för att konfigurera detta kommer senare.

Mode (lägen)

En Cisco-enhet använder sig av olika modes (lägen). För varje mode kan man utföra olika kommandon. Tanken bakom detta är att minimera påverkan om man skriver fel i ett kommando. Som exempel: Om man vill stänga av ett visst interface så måste man först ange att man vill göra inställningar till just detta interface och därefter stänga interface. På detta sätt undviker man att stänga ner fel interface. (Under förutsättning att man inte angett fel interface när man väljer läge.) De olika mode kan beskrivas enligt följande.

  1. user mode. Detta är det första läge man kommer till och kännetecknas av att prompten ser som följande: namn>Denna mode som kallas för user mode heter egentligen user EXEC mode. I detta läge kan man göra väldigt begränsade saker, såsom att pinga en annan enhet och inte minst hoppa vidare till nästa kraftfullare steg.
  2. enable mode, som också kallas privileged EXEC mode. Detta läge nås genom kommandot enable och kännetecknas av att prompten byter utseende till namn#
  3. configuration mode, är ett grundläge för att göra inställningar. För att nå detta läge skriver man configure terminal. Man ser att man hamnat i konfigurationsläget genom att prompten ändrats till namn(config)#
    För att lämna detta läge och gå tillbaks till enable mode så skriver man end eller Ctrl+Z. Från det grundläggande konfigurationsläget kan man sedan gå vidare till mer specifika lägen. Dessa är olika beroende på enhet men för en switch används typiskt följande; interface, vlan, line console 0 och line vty. Från dessa mer specifika lägen går vi tillbaks till grundläggande konfigurationsläge med exit.

    Hjälp

Eftersom de flesta personer inte dagligen arbetar med alla kommandon så är det svårt att komma ihåg exakt hur ett kommando ser ut. Cisco har därför utvecklat hjälpfunktioner i gränssnittet. För att få hjälp skriver vi ?, alltså ett frågetecken.

Vi kan dessutom få hjälp med ett visst kommando genom att skriva kommando?, där kommando är namnet på ett kommando. Om man då inte kommer ihåg hela namnet på ett kommando kan man skriva början på ett kommando och sedan ?.

För eventuella parametrar till ett kommando så anger vi kommando param?

I Cisco CLI så kan vi komplettera ett kommando med <TAB> precis som för många andra OS. Det fungerar också att ange kortkommando för ett kommando om man vill spara tangenttryckningar. En sak som jag upptäckt är att tekniker anser sig mer kunniga och duktiga genom att aldrig använda hela namnet utan bara kortkommandot.

Minne och Konfigurationsfiler

Ciscoenheter är normalt utrustande med följande minnestyper.

RAM

Arbetsminne samt nuvarande konfiguration, running config

Flash

Cisco IOS

ROM

Används vid bootning av enheten. I princip enkel uppstart samt laddning av OS i Flash-minnet. Jämför med BIOS

NVRAM

Här lagras den konfigurationsfil som enheten startar med efter uppstart, startup config.

Vid uppstart laddas startup config från NVRAM till RAM och blir därefter running config. De ändringar och konfigurationer som vi gör därefter sparas i running config. En konsekvens av detta är att konfigurationerna försvinner vid en omstart.

För att lagra de ändringar vi gjort så kan vi skriva över startup config med kommandot copy running-config startup-config. 

Ibland så vill man rensa enheten och starta om från början. För att göra detta kan vi använda något av följande tre sätt för att radera startup-config: write erase, erase startup-config, erase nvram. Därefterstartar vi om enheten med reload.

 

Kommandon

  • enable
    Byter från user mode till enable mode.
  • disable
    Byter från enable mode till user mode.
  • reload
    Bootar om (omstart) enheter.
  • configure terminal
    Går från enable till konfigurationsläget.
  • end
    Går från konfigurations- till enable-läget.
  • exit
    Lämnar ett specifikt konfigurationsläget och går tillbaks till grundläggande konfigurationsläget.
  • enable secret password
    Gör så att användaren måste ange ett lösenord (som anges av password) för att gå till enable mode. Detta är ett krav för att kunna logga in med telnet eller SSH.
  • login
    Anges i konfigurationsläget för line eller consol för att ange att det krävs ett lösenord för att ansluta till enheten
  • password password
    Skrivs efter login och sätter lösenord.
  • ?
    Hjälp
  • show
    Kommandot show används med olika parametrar för att visa olika typer av data.
  • debug
    Spelar in data under användning. Data kan sedan presenteras för användaren.
  • hostname namn
    Ger enheten ett nytt namn som presenteras i prompt.
  • copy running-config startup-config
    Kopierar nuvarande inställningar till NVRAM så att de behålls efter omstart.
  • write erase, erase startup-config, erase nvram
    Tre kommandon för att radera uppstartskonfigurationen för enheten.
  • delete vlan.dat
    Raderar information om VLAN

 

Javascript egenheter

Alla programeringsspråk har sina egna egenheter och typiska drag. En del av dessa ser man inte alltid nyttan av direkt, men samtidigt används de flitigt i tillämpningar och bibliotek. Två av dessa för Javascript är IIFE (iffy), samt deras definition av objekt.

IIFE

IIFE står för immediately invoked function expression och uttalas ”iffy”. Iffe innebär att man i samma sats deklarerar en anonym funktion och dessutom anropar denna funktion. IIFE förekommer ofta som ”wrapper” kring kod och används bland annat för händelsehantering och i jQuery.

Exempel:

var speed =(function(){
var dist=30;
var time=45;
return dist*60.0/time;
}());

Observera parenteser.

Objekt

Ett standardobjekt i Javascript är inte som i exempelvis C++ en instans av en klass.I stället så är ett objekt en samling data och funktioner som tillsammans representerar en modell av ett objekt. Antal attribut och metoder är inte konstanta utan man kan lägga till nya attribut och metoder. Det är viktigt att man kommer ihåg vad man lägger till då det inte finns en klass som fungerar som karta eller ritning.

Attribut och metoder kan nås antingen med punktnotation som i Java eller C++, eller med hakparenteser.

Ett objekt kan skapas med sina attribut kommaseparerade inom {}.

var hif = {
name: ‘Helsingborgs IF’,
arena: ‘Olympia’,
seger1: 1929
};

Man kan också skapa ett tomt objekt med new Object() och sedan lägga till attribut och metoder.

var mff = new Object();

mff.name=’Malmö FF’;
mff.arena=’Swedbank Stadion’;
mff.seger1=1944;

Det finns också ett sätt att skapa objekt med en form av konstruktor.

function Team(name,arena,seger1){
this.name = name;
this.arena = arena;
this.seger1 = seger1;
};

Man får sedan objekt med följande anrop:

var hif = new Team(‘Helsingborgs IF’,’Olympia’,1929)

Ett lite smidigare sätt om man vill ha flera objekt med samma namn på attribut.

 

ZigBee Security

ZigBee är en standard för trådlös kommunikation som används mycket för sensorer i smarta hem. Det finns dock en del säkerhetsproblem med dessa. Inte minst gällande de profiler som används för vissa tillämpningar. Exempelvis finns det default-nycklar som man kan falla tillbaks på.

På blackhat 15 hölls ett föredrag kring detta. Jag länkar till föredraget härifrån för att ha en referens. Dessutom finns det ett paper. PDF-fil till deras paper. (OBS! pdf i ny flik)

Proxy ARP

I samband med att konfigurera statiska routingtabeller i en router så stötte jag på en sak som gjorde mig konfunderad.

När man skapar en statisk route så anger man normalt IP-adress för nästa hopp. Med hjälp av denna adress så används sedan ARP för att få MAC-adress till nästa-hopp och kan skapa korrekt lager2-frame.

Nu visar det sig att man för vissa routrar, exempelvis CISCO, inte behöver ange IP-adress utan det räcker med interface. Det som gjorde mig konfunderad är hur man då kan få reda på en MAC-adress för att skapa korrekt meddelande på lager 2. Lösningen var att det används en teknik som kallas Proxy ARP. Med Proxy ARP så frågar en router efter MAC-adress till slutdestinationen med ett ARP-meddelande. Detta trots att denna IP-adress inte finns på detta LAN. ARP-meddelanden skickas dessutom med boradcast layer2, vilket gör att de inte får routas. Hur får då vår router rätt adress? Anledningen är att en router som har en väg till målet svarar på ARP-förfrågan med sin egen MAC-adress. Därefter så kan vår router skapa rätt adress. Alltså fungerar det, men jag är inte helt nöjd utan har ett par funderingar?

  1. Prestanda. Blir det fler ARP-förfrågningar?
  2. Säkerhet. Tanken är att vi vet vilken router som ska svara på ARP-förfrågan. Men tänk om en annan router svarar i stället för den äkta. Då kan paketet visserligen nå målet men med en annan väg än den vi tänkte. Om man nu väljer statisk routing så borde vi se till att ange fullständig information. Om inte kan väl ett routingprotokoll likt OSPF användas.

Jag får kanske kopplaupp och testa. Jag skulle också fundera kring en miljö där man kan mäta lite mer statistik för att se prestanda.