Phát triển chương trình

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 75)

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 cơchếngănchặntấncôngtừnhữngmáyđãtuânthủchínhsáchđó.

Bêncạnhđó,khitriểnkhaicácphươngthứcthựcthiNAP,chúngtanhận thấythôngtintraođổigiữaSHAvàSHVchưađượcbảovệ.Điềunàycóthểdẫn đếnkhicósựthayđổitráiphépyêucầuAuto-RemediationchoSoHkhinóchuyển từSHVtớiSHA,nócóthểyêucầuSHAthựchiệnnhữngviệcgâyhạichomáy trạm.Đểgiảiquyếtvấnđềnày,SHAvàSHVphảitựthựchiệncơchếbảovệthông tintraođổihoặckhôngmởchứcnăngAuto-Remediationtrongmôitrườngkhông cóbảovệthôngtinđườngtruyền.Cácdịchvụcósẵnhỗtrợmôitrườngbảovệ thôngtinđườngtruyềnlà:IPSec,802.1x,VPN.

VấnđềquantâmtiếptheolàviệccóthểtạoSHAtráiphép,nhằmmụcđích thaythếSHAcósẵnnàođótronghệthốngthựchiệntrảlờiSoHchoNPS.Điều nàycóthểlàmchoNPSkiểmtranhữngSoHsailệchvàxemnhưmáytrạmđãtuân thủchínhsáchtruycậpmạng.Đểgiảiquyếtvấnđềnày,chúngtakhôngnêncấp chongườisửdụngcótoànquyềntrênmáytrạmđểđăngkývàthayđổiSHA.

Trang85

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

CHƯƠNG IV.KẾTLUẬN

4.1. Kếtquả đạtđược củađồán

• Trongquátrìnhthựchiệnđồán,nhữngyêucầuvềđảmbảoantoàncho truycậpmạngđượctìmhiểucặnkẽ.

• Nguyênlýhoạtđộng,cấutrúc,thànhphầncủahệthốngNAPđượctìm hiểuvànắmvững.

• Môhìnhtriểnkhaicàiđặtthànhcông,đápứngđượcyêucầurấtthựctế củahệthốngmạngdoanhnghiệp.

• TìmhiểuhướngpháttriểnhệthốngNAP,tùybiếnhệthốngtheotừng yêucầukhácnhaucủanhàquảntrị

4.2. Nhữngmặthạn chế

• Đồánchưapháttriểnđượchoànchỉnhmộtcặpthànhphầnmới,cónhiều tínhnănghơnthànhphầncósẵntronghệthốngNAP.

• HệthốngNAPkhótriểnkhainếutrongmạngcónhữngmáycàiđặtphiên bảnWindowscũ(nhưWindowsXPSP2,Windows2000…)hoặcLinux

4.3. Hướng pháttriển trongtươnglai

• XâydựngthànhcôngthànhphầnSHA-SHVđápứngđầyđủtấtcảcác yêucầukhácnhaucủanhàquảntrị

• XâydựnghệthốngNAPClientdànhchocácphiênbảnWindowscũ,cho cácmáytrạmcàiđặthệđiềuhànhnềnLinux…khôngđượcNAPhỗtrợ. Đảmbảotínhtươngthíchtốiđachotấtcảcáchệthốngmạng.

Trang86

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

TÀI LIỆU THAMKHẢO

1. WindowsServer2008–NetworkingandNetworkAccessProtection(NAP), JosephDavies,TonyNorthrup,MicrosoftPress,2008

2. MicrosoftSolutionsforSecurityandCompliance,MicrosoftPress,2006 3. WindowsServer2008- Administration,SteveSeguis,McGrowHill,2008 4. WindowsServer2008–ConfiguringNetworkInfrastructure,BrienPosey,

Syngress,2008

5. MicrosoftWindowsSoftwareDevelopmentKit(SDK),2008. 6. Website: http://technet.microsoft.com

7. Website: http://msdn.microsoft.com

8. Website: http://en.wikipedia.org 9. Website: http://msopenlab.com

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 75)

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

(85 trang)
w