NAP (Network Access Protection) – VPN

Uzun bir aradan sonra NAP (Network Access Protection) –VPN makalesi ile karşınızdayım. Gerek Windows Server 2003 gerekse ISA 2004/2006 üzerindeki VPN çözümünü kimi zaman kullanmışızdır, kullanmasak bile Microsoft’un böyle bir çözümü bir kenarda bizi beklemektedir. Bununla beraber  belirli sağlık statülerine uymayan clientların (antivirüs program olmayan, update’leri tam olmayan) vpn ile iç network’e girişinin engellenmesi Network karantina uygulaması ile yapılmaktaydı. Aslında pek de yapılamamaktaydı çünkü gerek uygulamanın zorluğu (scriptler vs ile uğraşmak) gerekse sağlık statülerine uymayan uzak client’ları iyileştirmeye yönelik birşey yapmadan direk olarak vpn bağlantısını koparması özellikle sahada uzaktan çalışan kişiler için sıkıntılı durumlara sebebiyet vermekteydi.

Windows Server 2008 ile birlikte gelen NAP – VPN çözümü ile hem uygulamada scriptlerle uğraşmak zorunda kalmıyoruz hem de Remediation Server olan bir server sağlık durumunu kontrol ettiği client, eğer istenilen özelliklere uymuyorsa bunu düzeltmeye çalışıyor. Bu makalede Windows Firewall’u kapalı olan bir Windows Vista makine’nin durumunun iyileştirilip iç network’e nasıl alınacağına bakacağız. Bunun için 4 adet sanal makineye ihtiyaç duymaktayım. Yapı aşağıda yer alan şekildeki gibidir.

image001

Şekilde de gördüğünüz üzere Domain Controller’ımız Windows Server 2003 SP2 üzerinde çalışmakta VPN ve NPS Server’larımız Windows Server 2008, Client ise Windows Vista işletim sistemine sahiptir.

DC01 Makinesine Active Directory’i kurduktan sonra üzerine Add/Remove Windows Components’tan sertifika servislerini kurup Enterprise root CA olarak tanımlıyorum.  Active Directory Users and Computers snap-in’i ile Selim isimli bir kullanıcı oluşturup, kullanıcıyı “Domain Admins” grubunun bir üyesi yaptım.Kullanıcının özelliklerinde Dial – in tabından kullanıcıya Uzak bağlantılar için Allow Access verdim.  Bununla beraber bir de “NAP Client Computers” isimli bir global-security grup oluşturdum.

VPN1 isimli makinenin IP adresini şekildeki gibi verdikten sonra selveroglu.com domain’ine join ettim. Şekilde de gördüğünüz üzere VPN bağlantıları kabul edecek server’ımız budur. Şimdi gelelim bu makineyi VPN Server yapmaya…

Server Manager’da soldan Roles ‘u  seçip Add Role ‘a tıklıyoruz. Network Policy and Access Services’i seçip, iki kez next’e tıklıyoruz.

image002

Role Services ekranında Remote Access Service ‘i seçip, next ve install’u tıklayarak yükleme işlemini tamamlıyoruz.

VPN server’ı yapılandırmak için Run satırına rrasmgmt.msc yazıyoruz.Karşımıza gelen Routing and Remote Access konsolunda VPN1’e sağ tıklıyoruz ve Configure and Enable Routing an Remote Access’i seçiyoruz.

image003

Next’e tıklayıp en üstteki seçenek olan Remote Access (dial –up or VPN) seçeneğini seçip next’e tıklıyoruz. Sonraki ekranda VPN’i seçip next’e tıklıyoruz.

image004

Sıradaki ekranda VPN bağlantılarını kabul edecek interface’i seçiyoruz. Bu örnekte internet ile bağlantı kuran Local Area Connection 2 isimli kartı seçiyorum. Bununla birlikte Client1’in VPN1’e bağlantı kontrolü için ping atarken sorun yaşamasın diye Enable Security on…. Ile başlayan kutucuktaki işareti kaldırıyorum ve Next’e tıklıyoruz.

image005

IP Address Assignment sayfasında From a specified range of addresses ‘ı seçip next’e tıklıyoruz. Sonraki Address Range Assignment sayfasında New’a tıklayıp Start IP Address’e 192.168.1.100 End IP Address ‘e 192.168.1.110 yazıp OK ‘e tıklayıp ardından Next ‘e tıklıyoruz.

image006

Managing Multiple Remote Access Servers sayfasında Yes, set up this server to work with a RADIUS server ‘ı seçip Next’i tıklıyoruz.

image007

RADIUS Server Selection sayfasında Primary RADIUS server kısmına NPS 1’in IP adresi olan 192.168.1.201 yazıyoruz. Shared secret bölümüne de gizli şifre olarak server2008 yazıyorum.

image008

CL1 ile VPN1 makineleri arasındaki bağlantıyı test etmek için ilerleyen bölümlerde ping komutunu kullanacağız ama bunun için VPN1 ‘deki firewall’u ICMP protokolüne izin vermemiz gerekmekte. Run satırına wf.msc yazaraktan Windows Firewall ’un yönetim konsolunu açıyoruz. Soldaki Inbound Rules ‘a sağ tıklayıp New Rule ’u seçiyoruz. Açılan pencerede Custom ‘I seçip ilerliyoruz.

image009

Sonraki ekranda All Programs ‘ı seçiyoruz. Bir sonraki ekranda ise Protocol Type ‘ta ICMPv4 seçip Customize ‘a tıklıyoruz. Bu ekranda Specific ICMP types ‘ı seçip Echo Requests ‘in kutusunu işaretleyip OK ‘e tıklıyoruz.  Scope sayfasında Default ayarları kabul edip Next’e tıklıyoruz. Action sayfasında Allow the connection ‘ı seçiyoruz. Default profili kabul edip Name kısmına ICMPv4 echo request ‘ı seçip Finish ‘e tıklıyoruz.

Sıra Network Policy Service’i NPS01’e yüklemeye geldi. NPS01 makinesinde Server Manager’da Add Roles’u seçerek Network Policy and Access Services ‘ı seçiyoruz. Iki kez Next’i tıkladıktan sonra gelen ekranda Network Policy Server check box ‘a işareti koyup ardından Next ve install ‘a tıklıyoruz.

image010

Yine Server Manager’da Features kısmından sağda Add Features’a tıklayıp Group Policy Management ‘ın check box ‘ına işareti koyup Next ve ardından Install ‘a tıklıyoruz.

Sıra geldi NAP client ayarlarını Group Policy ile belirlemeye. NPS01 makinesinde Run satırına gpme.msc yazıp OK’e tıklıyoruz. Browse for a Group Policy Object  kutusunda domain adının yanındaki Create a new GPO ikonuna tıklıyoruz ve isim olarak NAP Client settings yazıyoruz. OK’e tıkladıktan sonra karşımıza Group Policy Management Editor geliyor. Burda Computer Configuration/Policies/Windows Settings/Security Settings/System Services ‘e geliyoruz. Sağ taraftaki Network Access Protection Agent ‘a çift tıklıyoruz. Define this policy setting’in check box’ını işaretleyip Automatic’i seçip aşağıdan Ok’e tıklıyoruz.

Security Settings\Network Access Protection\NAP Client Configuration\Enforcement Clients ‘a geliyoruz. Sağda Remote Access Quarantine Enforcement Client ‘a sağ tıklayıp enable yapıyoruz. Ardından NAP Client Configuration ‘a sağ tıklayıp Apply’a tıklıyoruz.

image011

Ardından Computer Configuration\Policies\Administrative Templates\Windows Components\Security Center ‘a geliyoruz. Sağ taraftan Turn on Security Center (Domain PCs only) ayarını enable hale getirip Group Policy Management Editor’ü kapatıyoruz.

Bu yaptığımız ayarların sadece NAP Client Computers grubuna uygulanması için NPS01’de Run satırına gpmc.msc yazarak group policy management console’a ulaşıyoruz. Burda Forest: Contoso.com\Domains\selveroglu.com\Group Policy Objects\NAP client settings ‘e geliyorum sağdaki Security Filtering kısmından Authenticated Users’ı kaldırıp yerine Nap Client Computers grubunu ekliyorum.

image012

PEAP Authentication sağlamak için NPS01 isimli makinemiz local computer certificate store’unda yer alacak computer certificate ‘a ihtiyaç duymaktadır. Bu sertifikayı atamak için DC01 üzerindeki certification Authority ‘den yararlanacağız.

Run satırına mmc yazıp boş bir mmc konsolu açıp Computer Account’u için Certificates snap’inini ekliyoruz. Certificates altından Personal’a gelip All tasks altından Request New Certificate ‘a tıklıyoruz.

image013

Welcome ekranında Next’e tıklıyoruz. Certificate Enrollment sayfasında Computer’ın check box’ını seçip enroll ‘u tıklıyoruz.

Şimdi sıra geldi NPS01 makinesini health policy server olarak yapılandırmaya… NPS01 makinesi uzaktan VPN ile network’ümüze girmek isteyen client’ların bizim belirlediğimiz kriterlere göre sağlık statülerini kontrol edip duruma gore iç network’e alacak, ya da önce bekletip, bu client’ın istediğimiz sağlık koşullarına ulaşmasını sağlayıp, sonra iç network’e alacak.

NPS01 makinesinde Run satırına nps.msc yazarak Network Policy Server konsoluna ulaşıyoruz. Burda NPS (Local) ‘e tıklıyoruz. Standard Configuration altından Configure NAP’e tıklıyoruz ve bir sihirbaz bizi karşılıyor. Select Network Connection Method for Use with NAP sayfasında Network connection method olarak Virtual Private Network (VPN) ‘I seçip next’e tıklıyoruz.

image014

Specify NAP Enforcement Servers Running VPN Server sayfasında sağdan Add’e tıklıyorum. Yeni açılan pencerede friendly name’e NAP VPN Server yazdım. IP adresi kısmına da VPN1’in iç network’e bakan interface’inin IP adresi olan 192.168.1.203’ü yazdım. Shared Secret kısmına daha önce VPN1 kurulumu adımlarında kullandığım şifre olan server2008 ‘i yazdım. Configure User Groups and Machine Groups kısmında değişiklik yapmadan next’e tıklıyorum.  Configure an Authentication Method sayfasında NPS Server Certificate altında daha önceden makineme certification authority’den aldığım sertifikayı görüyorum ve Next’e tıklıyorum.

image015

Specify a NAP Remediation Server Group and URL sayfasında New Group ‘a tıklıyorum. Açılan Pencerede Group Name’e Domain Services yazıp sağdan tekrar Add’e tıklıyorum. Friendly Name kısmına DC1 ve IP address or DNS name kısmına da DC1’in IP adresi olan 192.168.1.200’ü yazıyorum.  Iki kez OK’e tıklayıp çıkıyorum ve Next’e tıklıyorum.

Define NAP Health Policy sayfasında Windows Security Health Validator ve Enable auto-remediation of client computers check box’larının işaretli olduğunu kontrol ettikten sonra next’e ve ardından Finish’e tıklıyorum.

Sırada System Health Validators ayalarını yapmaya geldi. Network Policy Server konsolunda Network Access Protection altından System Health Validators ‘a tıklıyoruz.  Sağ bölümden Windows Security Health Validator’a çift tıklayıp açılan pencerede Configure’e tıklıyoruz.

image016

Karşımıza aşağıdaki gibi bir pencere gelecek. Bu pencerede A firewall is enabled for all network connections haricindeki tüm check box’ları temizliyoruz. Ve OK’lere tıklayarak çıkıyoruz fakat konsolu kapatmıyoruz.

image017

Şimdi de VPN1 makinesini NAP yeteneklerine sahip bir Radius Client şeklinde yapılandırmaya. RADIUS Clients and Servers altından RADIUS Clients ‘a tıklıyoruz. Sağ taraftan NAP VPN Server ‘a çift tıklıyoruz. Daha sonra screen shot’taki gibi en alttan RADIUS client is NAP-capable ‘a tıklayıp check box’ı işaretliyoruz. Ardından OK’e tıklayıp konsolu kapatıyoruz.

image018

Ardından NPS01 makinesine ping atabilmek için daha önce VPN1 makinesinde yaptığımız gibi  Run satırına wf.msc yazaraktan Windows Firewall ’un yönetim konsolunu açıyoruz ve burdan Rule oluşturuyoruz. Yukarda daha önce benzeri bir işlem yaptığım için burda tekrar yazmıyorum.

Şimdi de CL1 isimli makineyi yapılandıracağız. Her ne kadar yukardaki çizimde LAN1 kartının IP’si 131.107.1.22 görünse de makineyi domain’e join etmemiz gerekiyor. Bu nedenle öncelikle internal bir IP adresi verip domain’e join edeceğiz. Join işleminin ardından makineyi hemen restart etmiyoruz. CL1 makinesini Active Directory Users and Computers altından NAP Client Computers grubuna üye ediyoruz. Bundan sonra CL1’I restart ediyoruz.Bu sayede CL1 Nap Client Computers grubu için olan Group Policy ayarlarını kendine alacaktır. Diğer türlü bir kez daha restart etmemiz gerekecekti.

Group Policy ayarlarının CL1’e uygulanıp uygulanmadığını kontrol etmek için CL1 makinesinde komut satırını admin yetkileriyle açıyoruz. Burda aşağıdaki komutu yazıyoruz.

netsh nap client show grouppolicy

Komut çalıştıktan sonra Enforcement Clients altında Admin Status’te Remote Access Quarantine Enforcement Client seçeneğinin enabled olduğunu doğruluyoruz.

image019

Şimdi de CL1 ‘in IP adresini 131.107.1.22 / 24; DNS: 192.168.1.200 şeklinde değiştirip VPN1 Makinesinin dış interface’I olan 131.107.1.23 ile iletişim kurup kuramadığını denemek için bu interface’I pingliyoruz. Eğer yanıt alabiliyorsak herşey yolunda.

Ip adresi değiştikten sonra Client 1’in iç network’e ulaşabilmesi için VPN bağlantı kurmak gerekmekte. Bunun için Start menüsünden Network’e sağ tıklayıp Properties’e geliyoruz. Sol taraftan Set up a connection or network’e tıklıyoruz. Choose a connection option sayfasında Connect to a workplace ‘I seçiyoruz.

image020

How do you want to connect sayfasında sayfasında Use my Internet connection (VPN) ‘I seçiyoruz.

image021

Sonraki Sayfada I’ll set up an internet connection later’I seçiyoruz.

Type the internet address to connect to sayfasında Internet address kısmına VPN1 makinesinin IP adresi olan 131.107.1.23 ‘ü yazıyoruz. Destination name kısmına da bağlanacağım domain’in adını yazdım ve alttan Allow other people to use this connection kutusunu işaretliyorum.

image022

Sonraki ekranda kullanıcı adı ve şifre bilgilerini giriyorum. Daha önce oluşturduğum Selim kullanıcısını ve password’ünü kullandım. Domain adını da selveroglu yazıp Create’e tıkladım.  Ardından Connection Ready penceresini kapatıyorum.

Network an Sharing Center ‘da Manage Network Connections ‘a tıklıyorum. Virtual Private Network altındaki bağlantıma sağ tuşla tıklayıp  Properties ‘e geliyorum. Ardından Security tab’ına tıklıyorum.

Burada Advanced (custom settings)’I seçip ardından settings’e tıklıyoruz.  Logon security altında Use extensible authentication Protocol (EAP) seçip  aşağısından Protected EAP (PEAP)(encryption enabled)’I seçiyoruz.

image023

Aşağısından Properties’e tıklayıp Validate Server Certificate kutusunu işaretliyoruz. Connect to these servers kutusunu temizleyip Select Authentication Method altından Secured Password (EAP-MSCHAP v2)‘ü seçiyoruz. Enable Fast Reconnect kutusunu temizleyip Enable Quarantine checks kutusunu işaretliyoruz.

image024

VPN Bağlantımızı test etmek için bağlantımızın üzerine sağ tuşla tıklayıp connect’I seçiyoruz. Açılan pencerede şifremizi yazıp tekrar connect’e tıklıyoruz. İlk kez bağlantı yaparken aşağıdaki ekranla karşılaşırız ve burada server sertifikamızın doğru olup olmadığını bir kereye mahsus kontrol etmemizi ister.

image025

View certificate butonuna tıklayıp aşağıdaki gibi sertifka bilgilerine erişebiliriz.

image026

OK butonlarına tıklayarak pencereleri kapatıyorum. Ardından bağlantım kurulduktan sonra DC01 ve NPS01 makinelerinin IP adreslerine ping atabiliyorsam bağlantım başarılı olmuştur. Şimdilik bağlantımı disconnect’e tıklayarak kapatıyorum.


Şimdi otomatik iyileştirme (remediation) fonksiyonunu test etmeye geldi. Öncelikle CL1 makinesindeki firewall’u kaptacağız ve akabinde VPN bağlantısı kurmaya çalışacağız. Bu durum policy’lere aykırı olduğu için NAP auto-remediation devreye girerek CL1’I policy’lerde istenen şekle sokacaktır.

CL1 ‘de Start menüsünden Control Panel’e geliyoruz. Security’e tıklıyoruz. Windows Firewall on or off ‘a tıklıyoruz. Windows Firewall Settings kutusunda Off(not recommended) seçip OK’e tıklyoruz.

Network connections’tan tekrar VPN bağlantıma sağ tuşla tıklayıp connect’I seçiyorum. Size Hiç bir uyarı vermeden VPN bağlantısı gerçekleşebilir. Ama Windows Firewall’un durumuna baktığınızda on konumuna geldiğini göreceksiniz. Ve Network Access Protection Uygulamasının bu sayede başarıyla çalıştığını görmekteyiz.

Son olarak antivirus programı yüklü olmayan CL1 için policylerde “antivirüs yüklü olsun” dersek neler olacak ona bakalım..

NPS01 makinesinde Run satırında nps.msc yazarak Network Policy Server konsolunu açıyoruz. Burada Network Access Protection altından System Health Validators ‘a tıklıyoruz.  Sağ bölümden Windows Security Health Validator’a çift tıklayıp açılan pencerede Configure’e tıklıyoruz.  Burda  da “An antivirus application is on”  seçeneğini işaretleyip OK butonlarına basarak çıkıyorum.

CL1 ‘den tekrar VPN bağlantısı kurmaya çalıştığımda aşağıda görünen hatayı almaktayım.

image027

Biraz uzunca oldu, daha da uzamasın diye her adımda snap-shot koymadım. Umarım yararlı olmuştur ve uygulama hakkında fikir verebilmişimdir. Başka bir makalede görüşmek üzere.

Selim SELVEROĞLU