Cài đặt và cấu hình máy chủ NPS

Một phần của tài liệu Đồ Án Tốt Nghiệp Quản Lý Truy Cập Mạng Dựa Trên NAP (Trang 65)

MáychủNPSlàthànhviêncủadomain,đượccàiđặthệđiềuhànhWindows Server2008.ChúngtasửdụngServerManager,càiđặtRoleNetworkPolicy Server.Triểnkhaiphươngthứcthựcthi802.1X,chúngtachỉcầncàiđặt1 rolelàNetworkPolicyServernhưsau:

Hình3.9:CàiđặtNPSServertrongphươngthứcthựcthi802.1X

Saukhiquátrìnhcàiđặtthànhcông,chúngtacầnphảiRequesttớiRootCA đểlấychứngchỉchoNPS.Chứngchỉnàysẽđượcsửdụngchoquátrìnhxác thực PEAP giữa NPS Server và Domain Controller. Sử dụng giao diện MMC\Certificate,chúngtacóthểyêucầulấyđượcchứngchỉtừCAnhư sau:

Trang69

QuảnlýtruycậpmạngdựatrênNAP

Saukhirequestthànhcôngchứngchỉ,chúngtathựchiệnbướctiếptheo,đó làcấuhìnhNPSServer.

Sửdụnggiaodiệnnps.mscđểcấuhìnhphươngthứcthựcthi802.1X.Đối

vớiphươngthứcnày,NAPcungcấpchochúngta2lựachọn.Thứnhấtlà 802.1X–WiredchohệthốngmạngLAN,vàthứhailà802.1X–Wireless dànhchohệthốngmạngkhôngdây.Cáchthứccấuhìnhgiữa2lựachọnnày là tương tự như sau. Trong mô hình thử nghiệm này, chúng ta sử dụng 802.1X–Wirednhưsau:

Trang70

QuảnlýtruycậpmạngdựatrênNAP

Tiếp theo, chúng ta phải cung cấp cho NPS server địa chỉ của RADIUS Client,ởđâychínhlàthiếtbị802.1Xnhưsau:(Trongmôhìnhnày,802.1X Switchcóđịachỉlà172.16.1.254)

Trang71

QuảnlýtruycậpmạngdựatrênNAP

Hình3.10:CấuhìnhNPSServertrongphươngthứcthựcthi802.1X

Saukhicungcấpđịachỉcủa802.1XSwitch,chúngtaphảicấuhìnhNPS ServervớicácthôngtinvềVLANdànhchocácmáythỏamãnvàkhông thỏamãnchínhsáchtruycậpmạng.Trongmôhìnhtriểnkhainày,VLAN3 dànhchocácmáythỏamãnchínhsách,cònVLAN2dànhchocáchmáy khôngthỏamãn.Cácthôngsốcấuhình2VLANnàytươngtựnhưnhau,chỉ khácphầnVLANID(Tunnel-Ptv-Group-ID)màthôi.Dođóchúngtacần phảichúýcungcấpđúng.DướiđâylàcácthôngsốvềVLANdànhchocác máythỏamãnchínhsáchtruycập.

Trang72

Hình3.11:ThôngsốcấuhìnhVLANtrongphươngthức802.1X

Trang73

QuảnlýtruycậpmạngdựatrênNAP

BướccuốicùngtrênmáychủNPS,chúngtacấuhìnhđểkhởiđộngcácdịch vụcầnthiếttrênmáyclient.

Hình3.12:SửdụngGPOcấuhìnhcácdịchvụ802.1X

NgoàiservicesNAPAgentvàmộtEnforcementClient(trongtrườnghợp này là EAP Quarantine Enforcement Client) cần phải khởi động như các phương thức khác, phương thức thựcthi 802.1X còn yêu cầu client khởi độngmộtdịchvụkhác.ĐólàdịchvụWireAutoConfig.Cácdịchvụnàycó thểđượccấuhìnhkhởiđộnglocaltrêntừngmáytrạm,hoặccấuhìnhthông quaGPOcủamiền.CáchđơngiảnnhấtlàchúngtacấuhìnhbằngGPOcủa miền.

3.2.4. Cấ u hình máy tr ạ m sử dụ ng 802.1X

Chúngtacầnphảicấuhìnhchomáytrạmsửdụngphươngthứcxácthực 802.1X. Nếu nhưmáy chủ DomainController đượccàiđặt hệđiềuhành WindowsServer2008,chúngtacóthểlàmbướcnàybằngcáchdùngGPO

tạiphầnWiredNetwork(IEEE802.3)Policies.Tuynhiên,nếuhệthống

mạngsửdụngmáyWindowsServer2003làmDomainController,chúngta sẽphảimởrộngSchemahệthốngtrướckhicấuhìnhGPO.Trongmôhình

Trang74

QuảnlýtruycậpmạngdựatrênNAP

triểnkhainày,chúngtasẽcấuhìnhtrựctiếptrênmáyclient.Chúngtaphải cấuhìnhclientvớicácthôngsốnhưsau:

Hình3.13:Cấuhìnhmáytrạmsửdụng802.1X

Sau4bướccấuhìnhnhưtrên,chúngtasẽtriểnkhaithànhcôngphươngthức thựcthiNAP802.1Xtronghệthống.Phươngthứcthựcthi802.1Xlàmột phươngpháphoànhảonhấtđểépbuộctấtcảcácmáytrạmphảithựchiện việckiểmtratìnhtrạngsứckhỏehệthốngnếumuốntruycậpvàomạng.

3.3. Triển khaiphương thứcthựcthiDHCP,VPN TSGateway

3.3.1. Ph ươ ng th ứ c th ự c thi DHCP

Môhìnhtriểnkhaiphươngthứcnàykháđơngiản,khôngcógìphứctạp. DHCPvàNPSServercóthểđượccùngcàiđặttrên1server.Khitriểnkhai, chúngtacũngtiếnhànhtươngtựnhư2phươngthứctrên:Càiđặtvàcấu hìnhNPSServer,khởiđộngcácdịchvụvàEnforcementClientcầntương ứng.Tuynhiên,đốivớiphươngthứcnày,chúngtaphảicấuhìnhthêm1 bướctạiDHCPServernhưsau:

QuảnlýtruycậpmạngdựatrênNAP

Hình3.14:CấuhìnhphươngthứcthựcthiDHCP

MỗikhiClientyêucầuđượccấpDHCP,nếuthỏamãnchínhsáchtruycập mạng,nósẽđượccấpđầyđủcácthôngsốTCP/IP.Ngượclại,nếukhôngđủ tiêuchuẩn,nósẽđượcDHCPServersửdụngNAPDefaultClassđểcấpcác thôngsốhạnchếtruycập.

3.3.2. Ph ươ ng th ứ c th ực thi VPN.

ChúngtatriểnkhaimôhìnhthửnghiệmphươngthứcthựcthiVPNnhưsau:

Hình3.15:MôhìnhtriểnkhaiphươngthứcthựcthiVPN

Trang76

Quátrìnhcàiđặt,triểnkhaiRootCA,NPSServerđốivớiphươngthứcthực thiVPNkhôngkhácsovớicácphươngthứckhácmàchúngtađãlàmởtrên. Tuynhiên,khitriểnkhaichúngtacầnphảichúý2điểmkhácbiệtsau: - KhicấuhìnhVPNbằngdịchvụRoutingandRemoteAccess,chúngta

cầnphảicấuhìnhchỉrõRADIUSServerchínhlàNPSServer(địachỉ 192.168.0.2)

Hình3.16:CấuhìnhRADIUSServertrongphươngthứcVPN

- KhicấuhìnhNPSServer,chúngtaphảichỉchonóbiếtRADIUSClient là máy chủ nào. Trong mô hình này, RADIUS Client chính là VPN Server,cóđịachỉlà192.168.0.3

Hình3.17:CấuhìnhRADIUSClienttrongphươngthứcVPN

Trang77

QuảnlýtruycậpmạngdựatrênNAP

3.3.3. Ph ươ ng th ứ c th ực thi TS Gateway

hìnhnhưsau:

Hình3.18:MôhìnhtriểnkhaiphươngthứcthựcthiTSGateway

QuátrìnhcàiđặtvàyêucầuRootCAcấpchứngchỉchoNPSservertương tự như chúng ta đã làm phía trên. Tuy nhiên, khi cấu hình TS Gateway ServerchúngtacầnchúýcấuhìnhmụcTSCAPStorenhưsau:

Hình3.19:CấuhìnhTSGatewayserver

Trang78

QuảnlýtruycậpmạngdựatrênNAP

Chúng ta cần phải đảm bảo mục Request clients to send a statement of healthđượcđánhdấuchọn.Tiếptheo,chúngtacầnchỉrõsửdụngNPS Serverởđâu.Tùytheomôhìnhtriểnkhai,màchúngtachọnLocal(NPSvà TSGatewayđượccàiđặttrêncùng1server)hayCentral.Trongmôhìnhthử nghiệmnày,chúngtachọnLocal.Cácbướctriểnkhaicònlại,chúngtacấu WindowsServer2008 Serverđóngvaitròquảnlýcácchínhsáchvàdịchvụ

hìnhtươngtựnhưđãlàmvớicácphươngthứcthựcthikhác.

Tómlại,với5phươngthứcthựcthiđãtriểnkhai,cácnhàquảntrịmạngcó thểsửdụngkếthợp,hayđơnlẻtùytheomụcđíchcủamình.Vànhìnchung,hệ thốngNAPđượcxâydựngsẵnbởiMicrosoftđãđápứngphầnlớnyêucầucủacác nhàquảntrịmạnghiệnnay.Vớinhữngtrườnghợpđặcbiệt,cóyêucầukhác,chúng tacầnphảipháttriểnriêngchomìnhmộthệthốngNAP.Phầntiếptheochúngtasẽ cùngđivàoviệcpháttriểnhệthốngđó.

3.4. Pháttriểnchươngtrình.

Trongthựctế,sẽcórấtnhiềutìnhhuốngxảyracũngnhưcórấtnhiềucác yêucầukhácnhauđốivớihệthốngNAP.Vìvậy,đểđápứngđiềuđó,NAPcho phépchúngtatựxâydựngmộtcặpSHA-SHVtheomụcđíchriêng.Mụcđíchđócó thểlàkiểmtraphầnmềmnàođangchạytrênmáy,kiểmtracáckhóaRegistry… Nângcaohơnnữa,cácnhàpháttriểncóthểthiếtkếcảNAP-Clientđểcàiđặtcho cácmáykhôngđượctíchhợpsẵnNAPnhưLinux,WindowsXPSP1/SP2…

Mụ

c tiêu:XâydựngmộtcặpSHA-SHVriêng,phùhợpvớiyêucầucủahệ

thống.Bêncạnhđó,việcpháttriểnthànhphầnhệthống,sẽgiúpchúngtahiểusâu vàchínhxáchơnnữavềhệthốngNAP.

Ch

ức n ă ng:SHA-SHVdochúngtatựxâydựng,tuântheocấutrúcquyđịnh

củahệthốngNAP,sẽtiếnhànhthuthậpthôngtinvàxửlýtìnhtrạngsứckhỏehệ thống,từđóchophéphayhạnchếtruycậpmạng.

3.4.1. Môi trường phát tri ển:

Môi trường Mô tả

mạng. WindowsVista

WindowsXPSP3 SDKforWindows Server2008

ClienthỗtrợchứcnăngNAP,nếudùngVistachúngta nên cập nhật các Hotfix hoặc cài Service Pack 1đểNAP hoạtđộngtốt.

Thưviệnđểphát triểnứng dụng trên Windows, trongđó cóAPINAP.

Visual Studio 2005 Côngcụpháttriển.

Trang79

QuảnlýtruycậpmạngdựatrênNAP

3.4.2. Phát triển hệ th ống

a. XâydựngSystemHealthAgent(SHA)

KhithiếtkếSHA,chúngtacầnphảiquantâmtớicácmodulesauđây: - ModuledùngđểđăngkýSHAvớiNAPClient: DoSHARegistration

- Modulethựcthinhiệmvụ: DoSHAExecution

Để có thể đăng ký SHA vào hệ thống, NAP sử dụng một Structure là

NapComponentRegistrationInfo. Structurenàycócấutrúcnhưsau:

typedef struct tagNapComponentRegistrationInfo { NapComponentId id; CountedString friendlyName; CountedString description; CountedString version; CountedString vendorName; CLSID infoClsid; CLSID configClsid; FILETIME registrationDate; UINT32 componentType; } NapComponentRegistrationInfo;

TrongStructurenày,quantrọngnhấtlàthànhphần NapComponentId.Đây chínhlàIDgiúphệthốngxácđịnhđượcđúngcặpSHA-SHVtươngứng,cũngnhư phânbiệtcácSHAvớinhau.Saukhilấyđầyđủthôngtintheocấutrúctrên,SHA sửdụngphươngthức RegisterSystemHealthAgent đểđăngkýnóvớiNAPClient. PhươngthứcnàythuộcvềInterface INapClientManagement.Ngượclại,nếumuốn hủy đăng ký, SHA sẽ sử dụng phương thức UnregisterSystemHealthAgent cũng nằmtrongInterfacetrên.

Trongquátrìnhhoạtđộng,SHAcóthểtrảlờikhinhậnyêucầuvềSoHhoặc thôngbáoSoHcósựthayđổitrênmáytrạmchoNAPClient.Điềunàyđượcthực hiệnthôngquacơchế callback interface,SHAsẽcócáchàmtươngứngđượcgọi tùytheoloạiyêucầu.NAPAPIđãtạorainterfaceđểsửdụngtrongcơchếnày,đó chínhlà INapSystemHealthAgentCallback. Mộtsốphươngthứcđượcsửdụngtrong Interfacenàynhưsau:

METHOD DESCRIPTION

INapSystemHealthAgentCallback::CompareSoHRequests SửdụngbởiSHAđểsosánhcácSoH

INapSystemHealthAgentCallback::GetFixupInfo GọibởiNapAgentđểquyếtđịnhtrạngthái củaSHA.

Trang80

QuảnlýtruycậpmạngdựatrênNAP

INapSystemHealthAgentCallback::GetSoHRequest GọibởiNapAgentđểtruyvấnyêucầulấy bảntinSoH.

INapSystemHealthAgentCallback::NotifyOrphanedSoHRequest ĐượcgọinếutruyvấnlấybảntinSoHtới SHA,nhưngSHAkhôngtrảlời

INapSystemHealthAgentCallback::NotifySystemIsolationStateChange GọibởiNapAgentđểchobiếttìnhtrạng cáchlyhệthốngthayđổi.

INapSystemHealthAgentCallback::ProcessSoHRespond ĐượcgọikhiNapAgentnhậnđượcbảntin SoHresponse.

ĐểsửdụngCallbackInterfacenày,SHAphảithựchiệncáccôngviệcsau.

CComPtr<INapSystemHealthAgentBinding> binding = NULL;

hr = binding.CoCreateInstance(CLSID_NapSystemHealthAgentBinding,NULL,

CLSCTX_INPROC_SERVER);

- KhởitạobiếntrỏtớiinterfacequảnlýSHA:

- KhởitạoCallbackInterface

IShaCallbackPtr callback = NULL;

callback = ShaCallback::CreateInstance(binding);

- ĐăngkýCallbackInterfacevớiSHA

hr = binding->Initialize(QuarSampleSystemHealthId,callback);

Đểlấyđượcthôngtin vềtrạngtháisứckhỏehệthống,NAPAgentsửdụng phương thức GetSoHRequest. Phương thức này được định nghĩa trong nhiều Interfacekhácnhau,nhưngchúngtacóthểthấyđượcphươngthứcnàyhoạtđộng

chủyếudựavàocấutrúc SoHRequest. CấutrúcSoHRequest,SoHRespond,vàSoH

đượcđịnhnghĩanhưsau:

typedef struct tagSoH {

UINT16 count;

SoHAttribute *attributes; }SoH, SoHRequest, SoHResponse;

QuảnlýtruycậpmạngdựatrênNAP

Trongcấutrúcnày,thànhphầnSoHAttributecũnglàmộtcấutrúc,được địnhnghĩatừcấutrúckiểuUnion SoHAttributeValue. CấutrúcSoHAttributeValue chứathôngtinvềdanhsáchcácứngdụngđượcđịnhnghĩađểchomáytrạmthỏa mãnchínhsách,hoặcthôngtinvềlỗinếuxảyra.SHAsẽsửdụng2Interfacelà

INapSoHConstructor InapSoHProcessor đểthuthậpthôngtinvềtìnhtrạngsức

CácInterfacecũngnhưcáccấutrúcđãnóiởtrên,chúngtacóthểtìmhiểu chitiếthơntạihệthốngMicrosoftDeveloperNetwork(MSDN).

b. XâydựngSystemHealthValidator(SHV)

SHV,đượcpháttriểntrongmôitrườngCOMDLL,chínhlànơigiúpngười quảntrịmạngthiếtlậpcácchínhsáchvềantoàntruycậptàinguyênmạng.

KhixâydựngSHV,ngoài2moduleđăngkývàhủyđăngkýSHV,chúngta cầnquantâmtớicácModulechínhsau:

- Modulekiểmtrasựhợplệcủatrạngtháimáytrạmvớichínhsáchtruy cậpmạng:ModuleValidate.

- ModulexửlýbảntinSoHgửitới: ModuleCheckRequestSoHHealth MỗicặpSHA-SHVcómãtrùngnhau,điềunàygiúptừngcặpSHAvàSHV cóthểliênlạcvớinhau.KhiđăngkýSHVvớimáychủNPS,chúngtacũngcần phảichỉrõmãIDchonó.

HRESULT CSdkShvModule::RegisterSdkShv() throw() {

// 1. Khai báo và khởi tạo biến trỏ tới interface của NPS CComPtr pSHVMgmt = NULL;

hr = pSHVMgmt.CoCreateInstance(CLSID_NapServerManagement, ...); // 2. Khai báo và khởi tạo thông tin về SHV

NapComponentRegistrationInfo shvInfo;

hr = FillShvComponentRegistrationInfo(&shvInfo);

// 3. Đăng ký SHV với NPS, CSampleShv chứa các hàm xử lý yêu cầu hr = pSHVMgmt->RegisterSystemHealthValidator(&shvInfo,

(CLSID*)&__uuidof(CSampleShv)); }

Trang82

QuảnlýtruycậpmạngdựatrênNAP

Đểthựchiệnviệckiểmtratìnhtrạngsứckhỏehệthốngcóphùhợpvớichính sách truy cập mạng hay không, SHV sử dụng 2 Interface sau đây:

INapSystemHealthValidationRequest INapServerCallback.

STDMETHODIMP CSampleShv::Validate(

/*[in]*/ INapSystemHealthValidationRequest* pShvRequest,

/*[in]*/ UINT32 hintTimeOutInMsec,

/*[in]*/ INapServerCallback* pCallback)

Cácphươngthứctrong2Interfacenày,chúngtacóthểtìmthấychitiếttrên websiteMSDN.

Để thực hiện việc xử lý bản tin SoH gửi tới, SHV sử dụng Interface

SystemHealthEntityId systemHealthId,

INapSoHProcessor *pSohRequest,

HRESULT &complianceResult )

INapSoHProcessor nhưsau:

Ngoàira,chúngtacầnchúýthêmlàSHVđượccàiđặttrênservervàcó nhiệmvụkiểmtranhữngyêucầuvềkhảnăngtựbảovệtừnhiềumáytrạmcùng lúc.DođóSHVtrongthựctếsẽphảinhậnvàxửlýnhiềuyêucầukiểmtrachính sáchcùnglúc.Bêncạnhđócũngcórấtnhiềutrườnghợpviệckiểmtrachínhsách đòihỏiSHVphảiliênlạcvớiserverkhác,vàmấtnhiềuthờigianchotừngyêucầu kiểmtrachínhsách.ĐểgiảiquyếtvấnđềtrênSHVđãtạoratừngthreadxửlýcho từngyêucầukiểmtrachínhsách.

STDMETHODIMP CSampleShv::Validate(

INapSystemHealthValidationRequest* pShvRequest,

UINT32 hintTimeOutInMsec, INapServerCallback* pCallback) throw() {

// 1. Chuẩn bị thông tin cho một yêu cầu kiểm tra chính sách asyncDataItems* requestData = NULL;

requestData->pthis = this;

requestData->piShvRequest = pShvRequest; requestData->piCallback = pCallback;

// 2. Tạo thread mới để xử lý yêu cầu kiểm tra chính sách hr = QShvCreateThread( requestData );

}

3.4.3. Th ử nghiệm cặ p SHA-SHV xây dự ng

Trang83

QuảnlýtruycậpmạngdựatrênNAP

TrênmáytrạmWindowsVista,việctriểnkhaiSHAnhưsau:

- Đểkiểmtraviệcđăngkýthànhcông,dùnglệnh:

netsh nap client showstate

ChúngtasẽthấycóSHAmớitênlàSHASDKSampleđãxuấthiện tronghệthốngnhưsau:

TrênmáychủNPS,chúngtatiếnhànhđăngkýSHVvớihệthốngnhưsau: - Dùnglệnhregsvr32.exeSdkShv.dllđểđăngkýSHVvớiNPSmangtên

SDKSHVSample.

Trang84

QuảnlýtruycậpmạngdựatrênNAP

SaukhiđăngkýSHAvàSHVthànhcông,chúngtatiếnhànhcấuhìnhcác phươngthứcthựcthinhưđãlàmtạicácbướctrên.Khiđó,SHAvàSHVsẽlàmột thànhphầntronghệthốngthựcthiNAPđanghoạtđộng.

3.5. Nhậnxét-Đánhgiá

NAPđượcxemlàgiảipháptăngcườngbảomậtmạngchứkhôngphảilàgiải phápbảomậtmạng.Lýdolànóchỉđảmbảocácmáytoànquyềntruycậptài

nguyênmạnglànhữngmáytuânthủchínhsáchtruycậpmạng,màkhôngcungcấp

Một phần của tài liệu Đồ Án Tốt Nghiệp Quản Lý Truy Cập Mạng Dựa Trên NAP (Trang 65)

Tải bản đầy đủ (DOCX)

(85 trang)
w