Azure Web Application Proxy

Jag beskrev i en tidigare artikel om fördelarna att autentisera sig via Azure AD, men vad kan man då ha denna autentisering till?
Drömscenariot vore ju att kunna ta vilken intern webapplikation som helst och kunna ge tillgång till denna från Internet med extra säkerhet i form av bland annat:

  • Behörighetskontroll via självbetjäningsportal
  • Flerfaktorautentisering
  • Larm och rapporter över suspekta inloggningsförsök
  • Skydd mot DDOS attacker

Vi vill även kunna genomföra detta utan att behöva öppna upp för någon inkommande trafik till vår interna infrastruktur

Eftersom scenariot är att vi vill publicera en intern applikation får vi ju också förutsätta att denna applikation även internt kräver inloggning och då en användarvänlig sådan med integrerad AD/Windowsinloggning. Jag har en enkel site (skapad av Chris Klug) som påvisar vilken användare det är som loggat in, vilket ser ut enligt följande från en intern klient:

clip_image001

Med hjälp av Azure Web Application Proxy kan vi nu publicera den som våra övriga applikationer och även integrera med eventuellt Office 365. Vilket kan se ut enligt följande för en användare

image

Ställer vi in flerfaktorkrav kan vi påtvinga en användare som inte ens har konfigurerat flerfaktor att tvingas konfigurera detta vid första anslutning till denna applikation. I detta fall rings användarens mobiltelefon upp och användaren bekräftar ägandeskapet av telefonen genom att bekräfta genom att trycka #

clip_image003clip_image005

I fortsättningen när applikationer startas visas följande:

clip_image006

Efter bekräftad autentiseringen startar applikationen:

clip_image001[1]

Precis som applikationen påvisar ser vi att användaren är autentiserad och detta hade kunnat vara vilken applikation som helst.

Är ni extra uppmärksammade så har ni även sett att URLen är densamma som den interna URLen ”intranet.domän.com” vilket gör att klienten kan fortsätta gå mot samma URL som den är van vid och sitter användaren internt på sin företagsdator fungerar det precis som vanligt. Om användaren där emot loggar in från Internet påtvingas användaren ange flerfaktorinloggning och alla (försök till) inloggning loggas i organisationens Azure portal.

Eftersom en video säger mer än tusen print screens, kommer här även en demonstration av lösningen:

 

Vad gäller då för att det här skall fungera?

Vi publicerar den med Azure Web Application Proxy och definierar namn och URL till vår interna applikation, i mitt fall namnet Local Intranet med URL https://intranet.domän.com

Lokal konfiguration

Det vi sedan får göra är att sätta upp minst två Application Proxy Connectorer (för redundans). Dessa installeras på domän medlemmar av det lokala Active Directoryt och det krävs att det härifrån går att internt surfa till den specifika siten.

Connectorn installeras från Azure portalen och kräver enbart utgående TLS krypterad trafik. Ingen inkommande trafik behöver definieras! Redan här kan vi se fördelarna med att publicera via Azure. I framtiden kanske vi inte har en enda regel som tillåter ingående trafik till vårat interna nät utan nyttjar den här typen av lösning.

För att få integrerad inloggning att fungera mot intern site används Kerberos Constrained Delegation (KCD) och därav behöver datorobjekten ha rätt att delegera kerberos biljetter till den specifika webservern. En kerberosbiljett krypteras med hjälp av ett konto som skall ha rätt att dekryptera biljetten, vilket i det här fallet är webbservern och detta definieras och utpekas av ett Service Principal Name (SPN)

Det vi behöver göra är att skapa ett SPN för namnet på siten och tilldela detta till datorobjektet för webbservern (vid lastbalansering används ofta ett service konto för webtjänsten och då är det servicekontot som skall tilldelas detta SPN)

I mitt fall blir mitt SPN http/intranet.domän.com och kommandot blir
setspn -S http/intranet.domän.com webservern
och webserverns SPN pekas sedan ut för delegering för datorobjekten

Autentiserad trafik från Azure portalen hämtas nu upp av connectorn som i sin tur skapar en kerberosbiljet. Biljetten krypteras så enbart webservern kan dekryptera denna och skickas sedan till webservern som verifierar inloggningen.

Azure konfiguration

I Azure kan vi sedan definiera en grupp över de som skall få tillgång till den här applikation där vi då också för möjlighet att delegera beslutet över vilka som skall ha tillgång till denna applikationen ner till verksamheten med hjälp av självbetjäningsportaler

Vi får sedan möjlighet att konfigurera vår site. Som standard kommer siten få en autogenererad adress baserat på vad du döpt sajten till.

clip_image007

Det här gör att siten kommer fungera över https där Azure ger ut ett certifikat med korrekt namn.

Extern DNS

För att få att tilldela ett eget domännamn behöver vi:
Bekräfta ägandeskapet av vår domän vilket genomförs via ett DNS entry och vi behöver även skapa ett CNAME som pekar på ovanstående adress

Tilldela Certifikat

Eftersom inte Microsoft kan ge ut ett certifikat för vårat eget domännamn har vi sedan möjlighet att importera ett eget web server certifikat. Vi kommer även framöver få information direkt från vår Azure portal över när vårat certifikat är på väg att gå ut, så vi kan förnya certifikatet i god tid innan.

Flerfaktorinloggning

Vi kan sedan komplettera vår publicering med flerfaktor. Vi kan begära flerfaktorinloggning för

  • All tillgång till applikationen
  • Enbart när man inte är ansluten från jobbet (via ett definierat subnät)
  • För en viss grupp av användare

Alternativt blockera tillgången helt om man inte ansluter från ett definierat nät.

Vi har nu gjort det möjligt att nå vår interna applikation från internet med en säker och kontrollerad anslutning och dessutom utan att behöva göra några som helt öppningar i vår lokala brandvägg för inkommande trafik!

Advertisements
Det här inlägget postades i Azure, WAP och har märkts med etiketterna . Bokmärk permalänken.

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s