banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Messages posted by: Angela_Belnett  XML
Profile for Angela_Belnett Messages posted by Angela_Belnett [ number of posts not being displayed on this page: 0 ]
 
Lâu lắm không vô. Đã đến phần 13 rồi cơ à? Chả biết có phải bác tự đạo diễn ra không mà cang đọc cang thấy hay.
Xin lỗi, mình copy từ mấy cái note của mình nên không có sẵn format, mình sẽ format dần dần. Cảm ơn đã nhắc nhở.
Số bài trả lời ấy. Trong đấy có 3 bài, nó phải hiện là 3 chứ?
Còn một cái thắc mắc nữa, sao số post tăng lên rồi mà nó vẫn hiện là 0.
Cảm ơn đã quan tâm, toàn cóp nhặt cả mà. Format hơi xấu vì thời gian có hạn. Anh em thông cảm.

TB: Cảm ơn anh Comale format hộ.
Anh có thể xem bài của em trên Box Lập trình web, phần Một chút về ASP&SQL.
Em cố gắng gửi 2,3 lần bài về SQL, nhưng nó báo lỗi, không cho phép các lệnh SQL.
Sau khi sửa lênh đi rồi gửi, thì nó nhảy về trang chủ, không có bài nào được gửi. Gửi lại lần nữa nó báo lỗi, gửi lại lần 2 lỗi y như vậy. Nhưng kết quả lại thành gửi 2 bài.
Bài này của JAL đại ca. Đi đâu em cũng đem theo người.

ABOUT US - HACKERVN - Hacker Vietnam Association (HVA)

Người ta đã nói gì về HVA ?

Chúng tôi, thành viên của Diễn đàn HVAonline.net (HVA), được mọi người biết đến nhiều qua những thông tin sai lệch của các phương tiện truyền thông đại chúng như báo đài và Internet. Những người đưa tin đó đã không tìm hiểu kỹ các thông tin về chúng tôi, thẩm định độ chính xác của thông tin một cách kỹ càng, .v.v nên họ đã khai thác và miêu tả chúng tôi ở một góc nhìn hoàn toàn thiếu khách quan, thiếu trung thực và rất phản khoa học! Theo như lời họ thì chúng tôi được ví như là những thành phần “bất hảo” loại bậc nhất của mạng Internet toàn cầu nói chung và VN nói riêng. Rằng tổ chức của chúng tôi là tổ chức của những kẻ chỉ biết ăn trộm mật khẩu, đánh cắp thông tin hay tiến hành xâm nhập, phá hoại, gây nên các thiệt hại nghiêm trọng cho hệ thống mạng Internet. Hơn thế nữa, ngôi nhà HVA chúng tôi còn được mô tả như là “lò đào tạo hacker” ở Việt Nam, chuyên cho ra đời những “sản phẩm” mang tính độc hại ở VN hiện nay, v.v.

Nói cách khác, HVA được biết đến như một tổ chức “xấu xa” trên mạng Internet với việc “chuyên” đánh cắp password mail, account net, bom mail, v.v. Và rằng các thành viên HVA được biết đến như những “siêu nhân” lại nhưng lại hành nghề… đạo chích! Trong mắt nhiều người, HVA là cơn ác mộng, là mục tiêu theo dõi của những tay mê giật gân, nhạc rap nổi loạn, cảm giác mạnh và phong trào “híp pi”, v.v.

Thế nhưng sự thật lại hoàn toàn trái ngược với những nhìn nhận đó! Tổ chức chúng tôi là một tổ chức có bề dài lịch sử và truyền thống lâu đời. Chúng tôi tự hào về những đóng góp hữu ích của mình cho mạng lưới Internet toàn cầu nói chung và VN nói riêng, bất chấp sự nhìn nhận và những định kiến sai lầm của nhiều người đối với chúng tôi...

Phân tích những điều người ta nói về HVA

Tựu chung, HVA được gắn với 3 khái niệm: Hacker - Đánh cắp - Phá hoại.

Hacker

Khái niệm “hacker” đã xuất hiện rất lâu đời, và có thể được theo nhiều định nghĩa khác nhau. Hacker, không chỉ dùng để nói về những người có khả năng thực sự về những kỹ thuật áp dụng trên mạng máy tính nói riêng hay tin học nói chung, mà còn là với những người có khả năng đặc biệt trong các lĩnh vực nào đó, không nhất thiết phải là tin học! Michenglangelo hay Raphael có thể xem là một hacker trong nghệ thuật không? G.Haydn, ông hoàng của những bản giao hưởng cổ điển, có phải là hacker không? Hay A. Einstein, có thể gọi ông ta là một hacker trong Vật lý hạch tâm được không? Xin thưa với các bạn là được! Xin nhắc lại, hacker theo nghĩa rộng của nó không chỉ dành cho lĩnh vực CNTT, cho máy điện toán mà còn mở rộng sang tất cả các lĩnh vực khác vốn đòi hỏi phải có sự sáng tạo nghệ thuật đến đỉnh cao của tri thức. Ngày nào nhân loại còn đòi hỏi sự sáng tạo ở đỉnh cao, những hoạt động nghệ thuật ở đỉnh cao, thì ngày đó sẽ còn tồn tại hacker...

Ngày nay, khi nói về khái niệm “hacker”, người ta sẽ nghĩ ngay đến những người có khả năng xâm nhập và lợi dụng các lỗ hổng, điểm yếu của những hệ thống, các nút mạng, v.v. để từ đó nắm quyền điều khiển nó. Đúng! nói cách khác “hacker” hiện nay được thế giới dùng để chỉ các chuyên gia có vốn tri thức rất rộng về tin học, với sự ngưỡng mộ và trân trọng. Tuy nhiên, cũng có không ít người (nếu không muốn nói là tuyệt đại đa số) do không biết, hoặc do cố ý mà đã đồng hóa hay sử dụng khái niệm “hacker” hoàn toàn sai với nghĩa gốc, theo nghĩa của một cracker! Họ đã quên rằng hacker chính là người xây dựng, còn cracker chính là người phá hoại những gì mà hacker đang cố xây dựng. Trong hầu hết trong các bài viết về HVA trên các phương tiện truyền thông, người viết đã nhiều lần nhầm lẫn khái niệm hacker thành khái niệm cracker - tức đồng hóa HVA như là những kẻ phá hoại. Thật không thể hiểu được, khi họ viết bài về hacker mà lại không chịu tìm hiểu thực sự HVA là như thế nào? Hoạt động thực sự của họ ra sao Khái niệm hacker là gì? Và hacker được định nghĩa như thế nào? Và đã là hacker thì họ làm gì?...

Xin trích ý kiến của một thành viên HVA về ngữ “hacker”: “Khi bạn bước chân vào thế giới hacking, mọi người đều giỏi hơn bạn, nên bạn nghĩ họ đều là… hacker! Khi bạn càng giỏi thì những người đáng gọi là “hacker” càng ít lại ”.

Vậy thì với chúng tôi, và cũng như nhiều thành viên trong ngôi nhà HVA, khái niệm hacker được dùng để chỉ những người có khả năng tư duy, sáng tạo đặc biệt về CNTT, về nghệ thuật trong CNTT, và về đạo đức trong CNTT. HVA luôn bày tỏ sự cảm phục, tôn trọng khả năng của họ, với đạo đức hacker của họ. Mọi hành vi gán ghép từ “hacker” với “ăn cướp”, “phá hoại” đều là không thích hợp. Đó là sự “vận dụng” ngôn ngữ hết sức sai lầm, là phản lại sự chính xác của khoa học, của sự phát triển.

Đánh cắp và phá hoại

Để hiểu rõ vì sao HVA được gắn chặt với những từ trên thì xin bạn xem qua sử ký HVA. Trong quá khứ, chúng tôi đã có những hành động không đẹp, và chúng tôi không hề phủ nhận điều đó! Ngược lại, chúng tôi còn lấy đó làm bài học xương máu để có thể điều khiển hoạt động chúng tôi tốt hơn, khắc phục những sai lầm trong quá khứ. Logic mà nói thì ai mà không phạm phải sai lầm? Nhưng thẳng thắn nhìn nhận ra sai lầm để khắc phục như chúng tôi đã làm thì mới là điều đáng trân trọng!

Về xâm nhập, hiện nay, các thành viên HVA vẫn đều đặn thực hiện những cuộc “xâm nhập” mang tính chất cá nhân hoặc một nhóm có tổ chức vào các hệ thống mạng, các website trong và ngoài nước. Chúng tôi không hề phủ nhận điều đó. Tuy nhiên, chúng tôi mong bạn nên hiểu rõ, phân biệt rõ khái niệm “xâm nhập” hoàn toàn khác với khái niệm “đánh cắp” và “phá hoại”. Xin mọi người đừng cố ý nhầm lẫn mà gán ghép cho chúng tôi những sự việc mà chúng tôi đã không còn thực hiện nữa. Nội quy chúng tôi cũng đã chỉ ra rõ những hành động không được phép.

Chúng tôi xâm nhập không phải là để phá hoại, mà là để phát hiện, tìm hiểu rõ những lỗ hổng của hệ thống các bạn vì chúng có thể sẽ bị lợi dụng để khai thác một cách bất hợp pháp. Chúng tôi hành động là vì quyền lợi của các bạn. Chúng tôi không đòi hỏi bất cứ một khoản thù lao, hay bất cứ ưu đãi nào từ phía các bạn. Chúng tôi coi việc khám phá, tư vấn sửa chữa những sơ hở của các hệ thống là trách nhiệm, là nghĩa vụ của cộng đồng hacker HVA chúng tôi. Chúng tôi mong nhận được sự cộng tác từ các bạn để hệ thống của chính các bạn ngày càng hoàn thiện hơn, để chứng tỏ với thế giới bên ngoài rằng dân tộc Việt chúng ta không nằm bên ngoài của sự phát triển của nhân loại, rằng nền Bảo mật trong CNTT nước ta không hề thua kém bất cứ quốc gia nào trong khu vực…

Thành ý của chúng tôi là thế! Nhưng thật đáng buồn khi chúng tôi lại thường gặp phải sự thờ ơ của những người có trách nhiệm quản lý, bảo vệ các hệ thống đó. Thậm chí sau khi chúng tôi giúp họ fix xong những lỗ hổng chết người thì họ quay ra đe dọa sẽ tố cáo chúng tôi vì đã xâm nhập vào hệ thống của họ... Thật đáng xấu hổ, đáng buồn thay khi xã hội chúng ta lại còn tồn tại những kẻ vô trách nhiệm như vậy! Nếu vẫn còn tiếp tục tồn tại những loại người như vậy thì thử hỏi CNTT VN làm sao mà có thể theo kịp với các nước bạn lân cận, ấy là còn chưa nói đến chuyện “đi tắt đón đầu”, hay vượt lên họ. Còn đâu CNTT là “quốc sách”, là ngành công nghệ mũi nhọn, là chiến lược phát triển của nước nhà…

Tóm lại, chúng tôi không phủ nhận những việc làm trong quá khứ! HVA đã có từng có những hành vi không tốt (nếu không muốn nói là rất không đẹp!). Nhưng trong hiện tại, chúng tôi phủ nhận và phủ định tất cả mọi cáo buộc, những gán ghép đầy tính gượng gạo đối với chúng tôi về các vấn đề đánh cắp mật khẩu, thông tin, hay những hoạt động phá hoại trên mạng. Quốc có quốc pháp, gia có gia phong - Chúng tôi hiểu rất rõ điều đó, và Nội quy mà chúng tôi đề ra trên diễn đàn cũng đã nói lên được điều này. Chúng tôi không chấp nhận hay dung túng bất cứ hành vi nào, của bất cứ thành viên nào nếu như có vi phạm nội quy của diễn đàn. Bản thân mỗi thành viên HVA sẽ tự chịu trách nhiệm cho chính những hành vi của họ. HVA chỉ chịu trách nhiệm đổi với những hoạt động chính thức của HVA vốn được sự đồng tình của đa số thành viên trong BQT và được post chính thức trong mục Thông Báo.

Xin thưa lại với các bạn, chúng tôi là một tổ chức hoạt động trong lĩnh vực Hacking và Security! Đích đến thực sự chúng tôi là biến HVA sẽ trở thành cộng đồng Security, là bảo mật chứ không là cái gì khác cả! Xin các bạn nhớ cho điều này! Mọi hành vi gán ghép HVA hay hackerVN với “ăn cướp”, “phá hoại” đều là không thích hợp. Đó là sự “vận dụng” ngôn ngữ hết sức sai lầm, là phản lại sự chính xác của khoa học, của sự phát triển.

Chúng tôi (HVA) nói về chúng tôi

Là thành viên của HVA, chúng tôi rất tự hào về hoạt động của cộng đồng chúng tôi! Diễn đàn HVAonline.net của chúng tôi được thiết lập và điều hành bởi những đứa con của dân tộc Việt, để phục vụ cho cộng đồng người Việt thân yêu. Mục đích đầu tiên và duy nhất của chúng tôi khi thiết lập Diễn đàn này là giới thiệu đến mọi người các vấn đề liên quan đến bảo mật hệ thống mạng, không gian truyền thông, hỗ trợ việc trao đổi thông tin và huấn luyện, cung cấp các giải pháp bảo mật trong cộng đồng chúng ta, v.v. với tinh thần phi lợi nhuận.

Đến với ngôi nhà chúng tôi, các bạn sẽ được đón tiếp trong tình hữu nghị thân thiết, được tiếp xúc, giao lưu với các thành viên, các “cao nhân” người Việt từ khắp 4 phương trời hội tụ về ngôi nhà HVA. Đến với chúng tôi, các bạn sẽ tìm được một khối lượng lớn thông tin, kể cả các tài liệu về bảo mật do các chuyên gia tin học hàng đầu quốc tế biên soạn, những tiện ích kiểm tra bảo mật hữu hiệu, có thể áp dụng cho mọi trình độ, từ những người bắt đầu, người sử dụng Internet hay các quản trị viên cao cấp, v.v. Việc khai thác, sử dụng các nguồn thông tin, các công cụ trong thư viện của chúng tôi là hoàn toàn miễn phí. Nhiệm vụ chúng tôi là không ngừng bổ sung, hướng dẫn các bạn khai thác một cách có hiệu quả nhất. Ngoài việc cập nhập các tin tức bảo mật hàng ngày trên hệ thống site, chúng tôi còn tổ chức các Tuần tin để gửi các thông tin lỗi bảo mật quan trọng, các giải pháp đề nghị, cách fix lỗi định kỳ đến các cá nhân, các đơn vị có yêu cầu tư vấn về bảo mật qua Email. Hy vọng, bạn sẽ luôn tìm được nhiều điều hữu ích, mới mẽ khi đến thăm ngôi nhà HVAonline.net, của cộng đồng HVA chúng tôi.

Định hướng phát triển

Những năm gần đây các cuộc tấn công trên mạng đã tăng lên một cách rõ rệt. Không ít trong số những cuộc tấn công này đã gây ra các trục trặc nghiêm trọng, nhiều tổn thất lớn cho hệ thống thông tin của nhiều quốc gia, trong đó có VN chúng ta.

Đối với HVA, song song việc hợp tác với các cơ quan hữu quan và các hệ thống site có liên quan, HVA cũng đã và sẽ hành động nhiều hơn nữa để làm giảm bớt các thương tổn từ những mối đe dọa trên mạng trước khi chúng có thể được khai thác gây hư hỏng cho hệ thống không gian truyền thông của chúng ta. Trong thời gian tới, chúng tôi sẽ nghiên cứu thật kỹ các cuộc tấn công điển hình để tìm ra các khuyến nghị, các giải pháp đối phó thích hợp nhất, hữu hiệu nhất, bằng các sản phẩm do chính chúng tôi làm ra.

Nên nhớ HVA không còn là một tổ chức hoạt động rời rạc, manh mún nữa mà là một cộng đồng hacker người Việt hoạt động rất có tổ chức, có tôn chỉ và mục đích rõ ràng.

Để chuyên nghiệp hóa hơn, chúng tôi còn lập ra các nhóm có chức năng đặc biệt như:

HVA Bug Hunter: Trách nhiệm tìm ra những lỗ hổng, điểm yếu mới nhất của các hệ thống vốn chưa từng được công bố. Nhóm này còn có trách nhiệm tư vấn, trợ giúp các cơ quan, đơn vị có nhu cầu về bảo mật mạng, dữ liệu, v.v. trong hệ thống của họ.

HVA Programer: Tư vấn, trợ giúp thiết kế, kỹ thuật lập trình các sản phẩm phần mềm.

HVA Translator: Biên dịch, hiệu đính các tài liệu IT từ các nguồn tài liệu hữu ích nhằm phục vụ cho “Tàng Kinh Các” HVA và cho bạn đọc khắp nơi.

Trong thời gian tới, ngoài các bài viết hướng dẫn trên portal và diễn đàn, chúng tôi sẽ hoàn thiện “Tàng Kinh Các” nhờ sự trợ giúp thông tin, bài viết từ nhóm Translator và các nhóm Elite, Mod, Smod nhằm cung cấp cho các bạn nhiều hơn những thông tin đào tạo, các giải pháp hữu ích về công tác bảo mật ở mọi cấp độ nhằm giúp mọi người ai cũng có thể tìm hiểu tự tìm hiểu, tự hoạch định kế hoạch bảo vệ hệ thống cho riêng mình.

Cũng nhằm hướng đến mục tiêu thúc đẩy, phát triển công nghệ bảo mật tại Việt Nam, HVA đã có kế hoạch hoàn thiện thêm Diễn đàn Security Check Request để kiểm tra lỗ hổng các hệ thống hoàn toàn miễn phí, duy nhất tại Việt Nam do các thành viên chúng tôi thực hiện với mục tiêu không vụ lợi dành cho các trang web cá nhân và trang web phi lợi nhuận.

Bên cạnh đó, HVA cũng sẽ hoàn thiện hơn việc tổ chức các cuộc thi viết các tài liệu và viết chương trình hữu ích, phục vụ cho công tác bảo mật như Cuộc thi HVA Contest vừa qua.

Song song với những nổ lực trên, chúng tôi cũng sẽ siết chặt hơn nữa công tác Quản lý thành viên, đặc biệt là các thành viên cấp cao cũng như loại bớt các thành viên ít hoạt động hoặc các thành viên có tư cách đạo đức kém (những người chỉ thích việc phá hoại). Ngoài ra, các diễn đàn không còn phù hợp sẽ được gỡ bỏ. Các topics về bom mail, password mail, hay trước đó là account net, v.v. đều thuộc dạng “off topic”, và sẽ không được cấp phép tồn tại hoặc chỉ tồn tại dưới dạng “read-only” trên hệ thống Diễn đàn như là một minh chứng cho những hành động sai lầm trong quá khứ!...

Chúng tôi hứa sẽ làm hết sức mình nhằm đưa cộng đồng HVA chúng ta trở thành Tổ chức An ninh mạng lớn nhất, có tổ chức nhất, và hoạt động có hiệu quả nhất của người Việt. Mong mọi người hãy cùng nhau góp sức phấn đấu vì tương lai của cộng đồng chúng ta, và vì nền bảo mật nước ta còn non trẻ đang cần nhiều những đóng góp của các bạn. Nền bảo mật VN có được vẻ vang sánh vai với các cường quốc năm châu hay không chính là nhờ vào sự nổ lực và phấn đấu của chính các bạn đấy!

Lời tâm huyết

Có bao giờ bạn tự hỏi chính bạn về ý nghĩa của cuộc sống là gi chưa? Có bao giờ bạn nghĩ là bạn thực sự muốn được góp một cái gì đó vào thế giới kỳ vĩ của nhân loại? Nếu bạn thực sự nghĩ vậy thì chúng tôi, những người điều hành HVA, thực sự cho rằng bạn là người thích hợp để cộng tác với chúng tôi. Bởi thời đại chúng ta đang sống là thời đại của các cuộc cách mạng về công nghệ, thời đại của sự phát triển không có điểm dừng về trí tuệ và năng lực con người. Và chúng tôi cần những người có khả năng, có những đức tính thích hợp để theo kịp dòng chảy đó.

Ai trong chúng ta cũng đều nhận rõ sự phát triển của công nghệ truyền thông và công nghiệp giải trí đã làm biến đổi nhận thức của con người về thế giới quan và về cuộc sống. Hollywood cùng với những tác phẩm của họ đem đến cho ngưòi ta quan niệm và sự khâm phục đối với những con ngưòi cơ bắp cuồn cuộn, và rằng nhân loại trong mắt thế giới trở thành một thứ đồ chơi với những nên văn minh đầy siêu việt từ ngoài vũ trụ... Có bao giờ bạn ao ước được sống trong một thời đại khác để trở thành một người hùng như đã được xem qua sách báo, phim ảnh? Bạn không cần phải sống ở Liên Xô thời Đệ nhị Thế Chiến hay tế ngựa bên cạnh Thành Cát Tư Hãn trong cuộc chinh phục các cường quốc lân bang để chứng kiến những giai đoạn vẻ vang của lịch sử nhân loại, của các cuộc chiến tranh vĩ đại, của những chủ nghĩa anh hùng! Bạn hãy đến với chúng tôi, bạn có thể hòa mình vào dòng chảy vĩ đại của lịch sử của những cuộc chinh phục! Vâng! chinh phục không gian điều khiển học. Và chúng tôi đoan chắc bạn sẽ nghĩ rằng thời kỳ mà chúng ta đang sống đây mới chính là tập phim đáng xem nhất của bộ phim “Ngàn tập về lịch sử nhân loại”!...

Hoặc có bao giờ bạn tự nhìn thẳng vào thế giới này và cảm nhận được rằng nền văn minh và những thành quả mà nhân loại đạt được là quá siêu việt, là quá sức tưởng tượng? Nền văn minh chúng ta đang sống chắc chắn là nền văn minh vĩ đại và phát triển cao nhất trong tất cả những nền văn minh mà chúng ta khám phá được! Cách đây 100 năm, không một ai có thể tưởng tượng ra viễn cảnh thế giới hiện nay của chúng ta là như thế nào!? Và hiện nay liệu ai trong chúng ta có thể tưởng tượng ra 100 năm sau thế giới sẽ phát triển như ra sao? Và sẽ vươn đến tầm cao nào? Chúng ta không cần phải trả lời những câu hỏi đó! Tất cả những gì chúng ta có thể biết và có thể làm bây giờ là hãy cứ cống hiến tất cả sức lực của mình cho tương lai của nhân loại, như tất cả những gì mà các bậc tiền nhân đi trước đã thực hiện.

Không ai trong chúng ta có thể phủ nhận: CNTT là một nền tảng cơ bản, là nhân tố quyết định nhất để thúc đẩy sự phát triển của nhân loại. Chúng tôi, HVA, rất tự hào rằng với những gì mà chúng tôi đã và đang thực hiện ngõ hầu có thể góp một phần công sức cho một tương lai tốt đẹp hơn cho sự phát triển đó, cho dân tộc chúng ta và cho nhân loại cần lao.

Lao động là nhân tố chủ đạo của phát triển và đoàn kết, là nhân tố lớn nhất của một thành công trong lao động. Nếu bạn có thời gian rảnh rỗi ngồi uống coca, ăn vặt hay xem TV, tại sao bạn không giúp chúng tôi một tay? Khi bạn gia nhập vào HVA nghĩa là bạn đã thực sự bước vào vòng phát triển chung của mạng lưới internet toàn cầu – trái tim của nền văn minh nhân loại. Mỗi người sinh ra đều tự do, bình đẵng, và đều mang trong mình khả năng lao động. Nếu bạn không tận dụng được khả năng lao động của mình thì có nghĩa là chính bạn đang lãng phí những thành quả mà phải trải qua hàng nhiều triệu năm tiến hóa con người mới có thể đạt được.

Nếu bạn không muốn bị tụt hậu lại sau lưng mọi người hãy đến với HVA để học hỏi và để giúp đỡ mọi người, bởi vì bạn là người Việt, là con cháu của một dân tộc vĩ đại, là thành viên của một nền văn minh rực rỡ, và vì bạn đang sống trong thời đại của những cách mạng thông tin vĩ đại. Hãy sống sao cho xứng đáng với nòi giống Lạc Hồng, với một dân tộc quả cảm, thông minh, ham học hỏi, và hăng hái tham gia góp sức mình làm nên những điều vĩ đại.

Thay vì nằm… phè ra ngày Chủ Nhật và thưởng thức Cafe thì bạn hãy bật máy điện toán của bạn lên, kết nối vào mạng toàn cầu internet, gõ vào đó địa chỉ www.HVAonline.net để dự tham dự vào hoạt động của một cộng đồng - cộng đồng con Rồng cháu Tiên vĩ đại! Đừng quên rằng những thành quả bé nhỏ của HVA chúng ta hôm nay cũng sẽ dự phần vào những những thành quả lớn của một nền kỹ thuật tiến bộ mai sau.

Khi bạn tham gia HVA có nghĩa là bạn nói không với thói chây lười, sự lạc hậu, tính bảo thủ và lối sống hưởng thụ quá lố! Nghĩa là bạn nói có với một chuỗi những ngày làm việc miệt mài không ngơi nghỉ mà không đem lại cho bạn một xu nào cả! Vâng, bù lại, bạn đã xác định được mục đích lớn để sống, một niềm vui, niềm tin vào tương lai của HVA trong cộng đồng dân tộc Việt, vì nền bảo mật của đất nước, vì sự phát triển của dân tộc chúng ta, và vì tương lai rực rõ của nền văn minh nhân loại.

Tham gia HVA nghĩa là bạn nói có với tự do không biên giới, với thời gian làm việc không có giới hạn, và đồng nghĩa với hoà mình vào nguồn trí tuệ hết sức vĩ đại của cộng động Việt ngữ và của cả thế giới.

Bạn cần có gì để gia nhập HVA? Để gia nhập HVA bạn chỉ cần một cái đầu biết suy nghĩ và một con tim nhiệt huyết để chứa những thành quả của mình để hiến dâng cho cộng đồng chúng ta, cho dân tộc chúng ta, cho đất nước Việt nghìn năm văn hiến, và cho loài người vĩ đại trên hành tinh chúng ta.

Chúng tôi đang đề nghị với bạn một vụ làm ăn hời phải không!? Thế thì bạn hãy suy nghĩ về việc ký tên vào bản “Hợp đồng lao động không trách nhiệm, không ràng buộc với HVA” nhé!

Xin đừng quên: Cộng đồng HVA hoạt động trên tinh thần phi lợi nhuận. Chúng tôi rất tự hào về những gì đã và đang làm được. Chúng tôi không những đứng vững mà còn vượt qua mọi thử thách khắc nghiệt, luôn khẳng định vị trí là Website hàng đầu về Hacking and Security ở Việt Nam, bởi chúng tôi có được các thành viên giàu nhiệt huyết và đầy tài năng để giúp cộng đồng HVA tiến lên không ngừng.

Thay cho lời kết, xin phép thay mặt toàn thể anh em trong cộng đồng HVA, chúng tôi xin cảm ơn và xin được ghi nhận những tình cảm yêu quý, những đóng góp, quan tâm giúp đỡ của các bạn cũng như của các cơ quan, đoàn thể đối với HVA. Chúng tôi xin hứa là sẽ không ngừng hoàn thiện HVA để đáp ứng nhiều hơn nữa sự mong đợi và kỳ vọng ở mọi người. HVA sẽ luôn là điểm đến, là ngôi nhà thân yêu của cộng đồng người Việt yêu thích Hacking and Security từ khắp bốn phương trời cùng hò hẹn trở về trong tình hữu nghị và đoàn kết một lòng, phấn đầu vì sự vươn lên của nền Bảo mật nước nhà, vì nền CNTT VN không chỉ sánh vai cùng các nước trên thế giới mà còn phải vượt lên trước họ nữa!

Trân trọng!

Lỗi đã xảy ra.

Vui lòng thông báo cho admin URL trang này.

Data truncation: Data truncated for column 'post_text' at row 1


Back to Forum

Chả hiểu là cái lỗi gì, post 1 bài nó báo lỗi, post lại thành ra lai 2 bài giống nhau. Vẫn báo lỗi y như vậy.
(Phần tiếp theo...)
Biểu thức có thể tối ưu ở dạng phức hợp.
Microsoft Jet dùng Rushmore để tối ưu hoá các biểu thức phức hợp được kết hợp từ các biểu thức (có thể tối ưu) đơn giản với các toán tử AND hoặc OR. Một biểu thức như thế nằm trong các dạng sau:
- simpleexpression AND simpleexpression
- simpleexpression OR simpleexpression
Ghi nhớ những điều sau đây khi dùng biểu thức tối ưu hoá Rushmore:
- Hàm COUNTsmilie được tối ưu ở mức cao cho các truy vấn dùng Rushmore.
- Nếu chỉ mục là giảm dần và toán tử so sánh khác dấu bằng, truy vấn không thể tối ưu được.
- Rushmore sẽ làm việc với Microsoft Access tables, cũng như với Microsoft FoxPro và dBASE (.DBF files). Bạn không thể dùng Rushmore với ODBC vì DAO gửi ba truy vấn đến ODBC dữ liệu nguồn thay vì xử lý chúng một cách cục bộ.
- Bạn có thể tối ưu hoá chỉ mục trên nhiều trường nếu bạn truy vấn trường được đánh chỉ mục theo thứ tự xuất hiện trong chỉ mục. Nhóm trường, bắt đầu với một trường có chỉ mục và tiếp tục với các trường sát nhau (cho tới 10 trường). Ví dụ, nếu bạn có một chỉ mục trên nhiều trường trên Last Name, First Name, bạn có thể tối ưu một truy vấn trên Last Name hoặc trên Last Name và First Name, nhưng bạn không thể tối ưu một truy vấn trên First Name.

V.8 Sự khác nhau giữa Jet và ANSI SQL:
Microsoft Jet database engine SQL nói chung là tuần theo ANSI-89 mức một. Tuy nhiên, một số đặc tính của ANSI SQL không được thi hành trong Jet SQL. Ngược lại, Jet SQL có những từ khoá và đặc tính không được hỗ trợ bởi ANSI SQL.

Những điểm khác nhau chính:
- Jet SQL và ANSI SQL có tập từ khoá và kiểu dữ liệu không giống nhau.
- Các quy tắc khác nhau được áp dụng vào BETWEEN...AND, có cú pháp như sau:
expression1 [NOT] BETWEEN expression2 AND expression3
trong Jet SQL, expression2 có thể lớn hơn expression3; trong ANSI SQL, expression2 phải bé hơn hoặc bằng expression3.
- Sự khác nhau về các ký tự đại diện với chỉ dẫn LIKE.
- Jet SQL thường ít hạn chế hơn. Ví dụ, nó cho phép nhóm và sắp xếp trên các biểu thức.

Những đặc tính ưu việt của Jet SQL:
- Câu lệnh TRANSFORM, hỗ trợ truy vấn Crosstab.
- Thêm một số hàm tổng hợp như StDev và VarP.
- Khai báo PARAMETERS để định nghĩa truy vấn có tham số.
SQL (Ngôn ngữ truy vấn có cấu trúc)

I. Giới thiệu:
Ngôn ngữ truy vấn có cấu trúc (SQL) là một ngôn cơ sở dữ liệu (CSDL) chuẩn công nghiệp được công cụ quản trị dữ liệu của Microsoft (Microsoft jet database engine) sử dụng. SQL được sử dụng để tạo những đối tượng truy vấn (QueryDef objects), như là đối số cho phương thức mở tập hợp bản ghi (OpenRecordset method), và là thuộc tính nguồn bản ghi (RecordSource property) của điều khiển dữ
liệu (data control). Nó cũng có thể được dùng với những phương thức thi hành (Execute method) để trực tiếp tạo và thao tác ... (jet databases), và tạo ra các SQL PassThrough truy vấn để thao tác trên các CSDL khách chủ từ xa (remote client/server databases).

Chương này sẽ bàn tới cấu trúc cơ bản của SQL, và cách thức sử dụng nó cho việc tạo, bảo trì và sửa đổi CSDL. Chúng ta cũng nói tới sự xây dựng và công dụng của truy vấn SQL để tạo các đối tượng tập hợp bản ghi (Recordset objects), và để chọn, sắp xếp, lọc và cập nhật dữ liệu trong những bảng cơ sở. Hơn nữa, chương này sẽ xem xét cách thức tối ưu hoá truy vấn SQL về mặt tốc độ và hiệu quả.

Cuối cùng, chúng ta bàn tới sự khác nhau giữa Microsoft Jet SQL ANSI SQL một cách cụ thể.

II. SQL là gì?
SQL là một ngôn ngữ lập trình về CSDL có nguồn gốc liên quan mật thiết tới sự phát minh ra mô hình CSDL quan hệ của E.F.Codd vào đầu những năm 70. Tiền thân của SQL là ngôn ngữ Sequel, và vì lý do này SQL vẫn thường được phát âm là “sequel” hơn là “ess cue ell”, mặc dầu cả hai cách phát âm đều được chấp nhận.

SQL ngày nay phát triển rộng và trở thành một ngôn ngữ chuẩn cho CSDL quan hệ, và đã được định nghĩa bởi chuẩn ANSI. Hầu hết các bản thi hành của SQL chỉ là sự biến đổi nhỏ từ SQL chuẩn, bao gồm cả phiên bản được Jet database engine hỗ trợ. Những sự khác nhau này sẽ được nhắc tới ở cuối chương, nhưng hầu hết các cấu trúc và các chức năng của ngôn ngữ là nhất quán đối với các nhà phát triển các hệ quản trị CSDL.

Nếu bạn đã sử dụng bất cứ bản thi hành nào của SQL, bạn sẽ thấy không khó khăn mấy khi chuyển sang Microsoft Jet SQL.

SQL vs. Navigation
Như đã đề cập trong phần đầu tài liệu, Mircosoft Jet database engine cung cấp hai phương thức tách biệt để hoàn tất hầu hết các tác vụ CSDL:
- Một mô hình điều hướng dựa trên cở sở dịch chuyển qua lại giữa các bản ghi.
- Một mô hình quan hệ dựa trên truy vấn hỏi có cấu trúc (SQL).

Mô hình điều hướng bao gồm những thuộc tính và phương thức được mô tả trong “Tạo và sửa đổi CSDL” (“Creating and Modifying Databases”) và “Thao tác với bản ghi và trường” (“Working with Records and Fields”). Mô hình quan hệ được nói bàn tới trong chương này.

Những lập trình viên không quen thuộc với những hệ quản trị cơ sở dữ liệu hướng file như dBASE, Foxpro, và Paradox có thể cảm thấy dễ chịu khi bắt đầu với các phương thức điều hướng được thảo luận trong chương trước. Tuy nhiên, trong hầu hết các trường hợp những phương thức SQL với vai trò tương đương tỏ ra hiệu quả hơn, và nói chung chúng nên được dùng cho những nơi tính hiệu quả được xem là quan trọng hơn cả. Hơn nữa SQL có một lợi điểm là một giao tiếp ở mức chuẩn công nghiệp về CSDL, thế nên một sự hiểu biết về các lệnh SQL cho phep bạn truy cập và thao tác với một diện rộng các sản phẩm CSDL từ các nhà phát triển khác nhau.

Trong thực tế, bạn sẽ thường xuyên dùng cả hai mô hình này kết hợp với nhau. Ví dụ, bạn có thể dùng mệnh đề S ELECT để tạo ra một tập hợp nhỏ các bản ghi được lựa chọn từ những bảng lớn, sau đó dùng phương thức điều hướng Move để định vị tới những bản ghi cụ thể tại những thời điểm nhất định.

Chú ý: Hai thuật ngữ hàng và cột tương đương với hai thuật ngữ quen thuộc trong CSDL là bản ghi và trường. Bởi vì SQL là một ngôn ngữ thuần khiết về CSDL, hai thuật ngữ hàng và cột được dùng thường xuyên hơn để mô tả thao tác của các câu lệnh SQL. Để tránh sự lẫn lộn, cả hai bộ thuật ngữ trên sẽ được dùng luân phiên nhau trong chương này. Chỉ nhớ rằng hàng là một bản ghi và cột là một trường.

III. Các thành phần của SQL:
Ngôn ngữ SQL bao gồm các lệnh, các mệnh đề, các toán tử, và các hàm tổng hợp (hàm nhóm - aggregate functions). Những thành phần này được kết hợp vào trong các phát biểu (statements) dùng để tạo, cập nhật, và thao tác trên CSDL. Những mục sau sẽ mô tả những thành tố đó một cách ngắn gọn, và phần còn lại của chương này sẽ đưa ra cho bạn những ví dụ cụ thể về công dụng của chúng.

Chú ý: Những mục sau sẽ những lệnh và từ khoá được dùng thường xuyên nhất, nhưng không phải tất cả. Để có một tham khảo hoàn chỉnh về danh sách các từ khoá SQL, hãy tìm kiếm “SQL” trong Books Online.

III.1 Lệnh SQL:
Giống như mô hình điều hướng của DAO (Data Access Object), SQL cung cấp cả hai phần, ngôn ngữ định nghĩa dữ liệu (DDL - Data Definition Language) và ngôn ngữ thao tác dữ liệu (DML - Data Manipulation Language). Tuy có vài phần trùng lặp, nhưng những câu lệnh DDL cho phép bạn tạo và định nghĩa các CSDL, các trường, các chỉ mục mới, trong khi những câu lệnh DML để bạn xây dựng các truy vấn, sắp xếp, lọc, và trích dữ liệu từ trong CSDL.

DDL
Các câu lệnh DDL trong SQL là biểu thức được xây dựng chung quanh những mệnh đề sau:
- C REATE: Dùng để tạo mới các bảng, các trường và các chỉ mục.
- D ROP: Dùng để xoá các bảng và chỉ mục khỏi CSDL.
- A LTER: Dùng để sửa đổi các bảng bằng cách thêm trường, thay đổi định nghĩa của các trường.
DML
Các câu lệnh DML là các biểu thức được xây dựng dựa trên các mệnh đề sau:
- S ELECT: Dùng để truy vấn CSDL để lấy được những bản ghi thoả mãn những tiêu chuẩn nào đó.
- I NSERT: Dùng để chèn một nhóm dữ liệu vào CSDL thông qua một thao tác.
- U PDATE: Dùng để thay đổi giá trị của những trường, những bản ghi cụ thể.
- DELETE: Dùng để loại bỏ những bản ghi ra khỏi CSDL.

III.2 Mệnh đề SQL:
Mệnh đề là những điều kiện thay đổi được dùng để xác định dữ liệu bạn muốn chọn, muốn thao tác. Bảng sau liệt kê những mệnh đề bạn có thể dùng.

- F ROM: Liệt kê danh sách các bảng mà ta cần lấy các bản ghi từ đó.
- W HERE: Xác định các điều kiện mà bản ghi được chọn phải đáp ứng được.
- G ROUP BY: Dùng để nhóm các bản ghi được chọn thành các nhóm riêng biệt.
- H AVING: Dùng để đưa ra điều kiện cho mỗi nhóm.
- O RDER BY: Dùng để sắp xếp các bản ghi được chọ theo một thứ tự nào đó.

III.3 Những toán hạng SQL:
Có hai loại toán hạng trong SQL: toán hạng logic và toán hạng so sánh.
Toán hạng logic: Toán hạng logic được dùng để nối các biểu thức, thường là trong phạm vi của mệnh đề W HERE.
Ví dụ như:
S ELECT * F ROM MY_T ABLE W HERE Condition1 AND Condition2;
Những toán tử logic bao gồm: AND, OR, NOT

Toán hạng so sánh: Toán hạng so sánh được dùng để so sánh tương đối giá trị hai biểu thức để xác định những hoạt động nào sẽ được thực hiện.
Ví dụ:
S ELECT * F ROM Publishers W HERE PubID = 5;
Những toán tử so sánh bao gồm:
< Less than
<= Less than or equal to
> Greater than
>= Greater than or equal to
= Equal to
<> Not equal to

III.4 Hàm tổng hợp (aggregate functions):
Hàm tổng hợp (hàm nhóm) được dùng trong phạm vi của mệnh đề S ELECT trên một nhóm bản ghi để trả lại một giá trị. Ví dụ, hàm AVG có thể trả lại giá trị trung bình của tất cả các giá trị trong một trường cụ thể.

Bảng sau liệt kê danh sách các hàm tổng hợp.
AVG Trả lại giá trị trung bình trong một trường.
COUNT Trả lại số bản ghi được chọn.
SUM Hàm tính tổng các giá trị trong một trường cụ thể.
MAX Hàm trả về giá trị cực đại của trường đó.
MIN Hàm trả về giá trị cực tiểu của trường đó.

IV. Những thao tác DDL.
DDL bao gồm một số lệnh bạn có thể dùng để tạo bảng và chỉ mục, và sửa đổi các bảng bằng cách thêm hoặc loại bỏ các cột hoặc chỉ mục. Những câu lệnh định nghĩa dữ liệu có thể chỉ được dùng với Jet database; Chúng không được hỗ trợ cho bất cứ CSDL định dạng ngoài.

Chú ý: Để dùng câu lệnh DDL, hoặc bất cứ truy vấn nào không trả lại tập bản ghi, hãy đóng ngoặc kép và sử dụng chúng như là đối số của các phương thức thi hành của CSDL hay đối tượng truy vấn (QueryDef object) như trong ví dụ sau:
MyDB.Execute “C REATE T ABLE Employees ([First Name] TEXT, [Last_ Name] TEXT)”;

Để dùng bất cứ một câu lệnh nào trả lại các bản ghi (như S ELECT), dùng biểu thức như là đối số nguồn của phương thức mở tập bản ghi (OpenRecordset method), như trong ví dụ sau:
MyDB.OpenRecordset (“S ELECT * F ROM Titles W HERE Au_ID = 5”, _ dbOpenDynaset);

IV.1 Tạo một bảng:
Để tạo một bảng trong CSDL, dùng câu lệnh C REATE T ABLE. Một câu lệnh hoàn chỉnh nhận các đối số là tên bảng, tên các trường, kiểu dữ liệu của các trường và độ rộng của các trường.
Ví dụ sau tạo một bảng có tên là “Employees”, có hai trường kiểu TEXT với độ rộng là 25:
C REATE T ABLE Employees ([First Name] TEXT(25), [Last Name] TEXT(25));

Thêm và xoá cột:
Bạn có thể thêm, sửa đổi hoặc xoá các cột với câu lệnh A LTER T ABLE. Ví dụ, câu lệnh sau thêm một trường kiểu TEXT có độ rộng 25 và tên là “Notes” vào bảng Employees:
A LTER T ABLE Employees ADD C OLUMN Notes TEXT(25);

Để loại bỏ một cột, dùng từ khoá DROP. Ví dụ này loại bỏ cột có tên là “Notes” mới vừa được thêm lúc nãy:
A LTER T ABLE Employees DROP COLUMN Notes;

Để sửa đổi một trường, trước tiên bạn phải xoá nó, và sau đó là thêm trường mới với tên như cũ. Ví dụ sau tăng độ rộng của trường “Notes”:
A LTER T ABLE Employees DROP COLUMN Notes;
A LTER T ABLE Employees ADD COLUMN Notes TEXT(30);

Chú ý: Dùng ALTER T ABLE, bạn chỉ có thể thêm hoặc xoá một trường tại mỗi thời điểm.

IV.2 Tạo và xoá chỉ mục:
Có ba cách khác nhau để tạo chỉ mục:
- Lúc bắt đầu tạo bảng với câu lệnh C REATE T ABLE
- Với câu lệnh C REATE I NDEX.
- Với câu lệnh A LTER T ABLE
Mặc dầu cả ba cách này đều cho kết quả tương tự, nhưng vẫn có những khác điểm khác nhau. Nếu bạn muốn thêm một khoá ngoại (foreign key) và ép buộc toàn vẹn tham chiếu (enfore referential integrity), bạn phải dùng một mệnh đề ràng buộc (CONSTRAINT clause) trong các câu lệnh C REATE T ABLE hoặc ALTER T ABLE.

Đôi khi người ta muốn tạo một bảng ban đầu không có chỉ mục, và tiếp đó là thiết kế các tham số chỉ mục sau khi dùng mẫu bảng. Với tình huống này, bạn nên dùng C REATE T ABLE để tạo mẫu bảng không có chỉ mục, và sau đó thêm các chỉ mục với câu lệnh C REATE INDEX hoặc ALTER T ABLE.

Tạo một chỉ mục với câu lệnh C REATE T ABLE.

Khi bạn tạo một bảng, bạn có thể tạo một chỉ mục cho từng cột riêng rẽ, hoặc hai hoặc nhiều hơn các cột, dùng mệnh đề SQL CONSTRAINT (từ khoá CONSTRAINT bắt đầu định nghĩa một chỉ số). Ví dụ sau đây minh hoạ cách tạo ra một bảng với ba trường có chỉ mục:
C REATE T ABLE Employees ([First Name] TEXT(25), [Last Name] TEXT(25), _ [Date of Birth] DATETIME, CONSTRAINT EmployeesIndex UNIQUE ([First Name], [Last Name], [Date of Birth]));

Để đánh chỉ mục với một cột, bạn đặt mệnh đề CONSTRAINT vào một trong những mô tả cột. Ví dụ, để đánh chỉ mục trường “Date of Birth”, bạn dùng câu lệnh C REATE T ABLE sau đây:
C REATE T ABLE Employees ([First Name] TEXT(25), [Last Name] TEXT(25), _ [Date of Birth] DATETIME CONSTRAINT EmployeesIndex PRIMARY);

Sự khác nhau giữa đánh chỉ mục cho nhiều trường và cho một trường là: cho một trường đơn, từ khoá CONSTRAINT bắt đầu định nghĩa chỉ mục không bị tách biệt với trường cuối cùng bởi dấu phẩy mà đi sát ngay sau kiểu dữ liệu của trường được đánh chỉ mục đó.

Tạo chỉ mục với câu lệnh C REATE INDEX.
Bạn cũng có thể dùng mệnh đề C REATE INDEX để thêm một chỉ mục. Ví dụ sau đây đưa ra cùng một kết quả với ví dụ trước, ngoại trừ việc dùng C REATE T ABLE thay thế cho ALTER T ABLE.
C REATE UNIQUE INDEX MyIndex ON Employees ([Date of Birth]);

Trong mệnh đề tuỳ chọn WITH, bạn có thể ép buộc dữ liệu với ràng buộc PRIMARY, có nghĩa đây là trường chỉ mục chính; DISALLOW NUL, nghĩa là trường này không bị bỏ trống; IGNORE NULL, có nghĩa bản ghi đó sẽ không được đánh chỉ mục nếu trường đó để trống.

Ví dụ sau thêm mệnh đề WITH vào ví dụ trước, để cho không bản ghi nào có thể được thêm vào bảng mà cột số bảo hiểm xã hội bị bỏ trống:
C REATE UNIQUE INDEX MyIndex ON Employees (SSN) _
WITH DISALLOW NULL;

Chú ý: Không dùng từ khoá PRIMARY khi bạn tạo ra một chỉ mục mới trong bảng mà bảng đó đã tồn tại khoá chính (Primary key); Nếu bạn vi phạm điều này thì hệ thống sẽ báo lỗi.

Bạn đang dùng C REATE INDEX để tạo một đặc tả chỉ mục trên một bảng mà chưa tồn tại chỉ mục nào. Để tạo một chỉ mục như thế; bạn không cần sự cho phép hoặc truy cập tới một máy chủ ở xa, và CSDL ở xa không nhận biết được hay không hề ảnh hưởng bới chỉ mục đó. Bạn dùng cùng một cú pháp cho bảng kết nối và bảng gốc. Điều này đặc hữu dụng khi tạo một chỉ mục trên một bảng thường là chỉ đọc (read only) bởi vì nó thiếu một chỉ mục.

Tạo một chỉ mục với câu lệnh ALTER T ABLE

Bạn cũng có thể thêm một chỉ mục cho một bảng đã tồn tại bằng cách dùng câu lệnh ALTER T ABLE, dùng cú pháp ADD CONSTRAINT.

Ví dụ sau thêm một chỉ mục cho trường “SSN”:
ALTER T ABLE Employees ADD CONSTRAINT MyIndex _
PRIMARY (SSN);

Bạn cũng có thể thêm chỉ mục cho nhiều trường và một bảng bằng cách dùng câu lệnh ALTER T ABLE giống như sau:
ALTER T ABLE Employees ADD CONSTRAINT NameIndex _
UNIQUE ([Last Name], [First Name], SSN);

Mệnh đề CONSTRAINT và toàn vẹn tham chiếu (Referential Integrity).

Một ràng buộc là một chỉ mục. Bạn dùng mệnh đề CONSTRAINT để tạo hoặc xoá các chỉ mục với các câu lệnh C REATE T ABLE và ALTER T ABLE, như đã chỉ ra ở phần trước.

Mệnh đề CONSTRAINT cũng cho phép bạn định nghĩa khoá chính và khoá ngoại, định nghĩa các quan hệ và ép buộc toàn vẹn tham chiếu.

Dể biết thêm thông tin về quan hệ và toàn vẹn tham chiếu, hãy xem cuốn “Tạo và sửa đổi CSDL” (“Creating and Modifying Databases”).

Có hai loại mệnh đề CONSTRAINT: Một để tạo chỉ mục cho từng trường đơn và một để tạo chỉ mục cho nhiều hơn một trường.

Cú pháp của chỉ mục trên một trường là:
CONSTRAINT name {PRIMARY KEY | UNIQUE | REFERENCES
foreignT ABLE [(foreginfield1, foreignfield2)]}

Cú pháp cho chỉ mục trên nhiều trường là:
CONSTRAINT name {PRIMARY KEY (primary1[,primary2[,...]]) | UNIQUE (unique1[,unique2[,...]]) | FOREIGN KEY (ref1[,ref2[,...]]) REFERENCES foreignT ABLE [(foreignfield1[,foreignfield2[,...]])};

Sau đây là các đối số áp dụng cho hai loại trên:

name Tên của chỉ mục được tạo.
primary1, primary2 Tên của trương hay các trường được chỉ định làm khoá chính.
unique1, unique2 Tên của trường hay các trường được chỉ định làm khoá không lặp.
ref1, ref2 Tên của trường hoặc các trường khoá ngoài tham chiếu tới một trường, một số trường ở bảng khác.
foreignT ABLE Tên của bảng ngoài chứa một hoặc một số trường được xác định bởi foreignfield.
foreignfield1, foreignfield2 Tên của trường hoặc một số trường trong bảng ngoài được xác định bởi ref1, ref2.
Dùng CONSTRAINT, bạn có thể gán cho một trường như một trong những loại chỉ mục sau:

- UNIQUE – Chỉ định trường một trường có giá trị không lặp. Điều này có nghĩa là hai bản ghi bất kỳ trong bảng không có cùng giá trị trong trường này. Bạn có thể ràng buộc bất kỳ trường nào hoặc một danh sách các trường là duy duy nhất (unique). Nếu nhiều trường được chỉ định là không lặp, bộ giá trị kết hợp của các trường đó phải là duy nhất, dầu là hai hoặc một số bản ghi có cùng giá trị trong một trường của nhóm các trường đó.
- PRIMARY KEY – Chỉ định một hoặc một tập các trường trong bảng tạo thành khoá chính. Tất cả giá trị trong khoá chính phải duy nhất, và có một khoá chính duy nhất cho một bảng. Nếu bạn thiết lập một khoá chính cho một bảng đã tồn tại khoá chính thì hệ thống sẽ báo lỗi.
- FOREIGN KEY – Xác định một trường như một khoá ngoài. Nếu khoá chính của bảng ngoài có nhiều hơn một trường, bạn phải dùng một định nghĩa cho chỉ mục nhiều trường, liệt kê tất cả các trường tham chiếu, tên của các bảng, tên của bảng ngoài, và tên của các trường được tham chiếu trong bảng ngoài theo cùng một thứ tự như đã liệt kê danh sách các trường tham chiếu. Nếu trường được tham chiếu là khoá chính của bảng ngoài, bạn không cần chỉ định trường được tham chiếu mà Jet engine đã ngầm định khoá chính của bảng ngoài là trường được tham chiếu.

Ví dụ, để thêm một chỉ mục cho bảng Titles trong CSDL Biblio.mdb, bạn có thể dùng câu lệnh sau đây:
ALTER T ABLE Titles ADD CONSTRAINT MyIndex _
FOREIGN KEY (PubID) REFERENCES Publishers (PubID);

Nhớ rằng, bằng cách dùng từ khoá FOREIGN KEY, Chúng ta đang thiết lập một quan hệ giữa trường PubID của bảng Titles (khoá ngoài) và trường PubID trong bảng Publishers (khoá chính). Mối quan hệ này sẽ được ràng buộc bởi Jet engine, như thể bạn đang dùng phương thức C REATERelation được mô tả trong “Tạo và sửa đổi CSDL”.

V. DML:
Phần ngôn ngữ thao tác trên dữ liệu (DML - Data Manipulation Languague) được dùng để lấy các bản ghi trong các bảng, cập nhật, thêm, xoá các bản ghi của các bảng. Có một số câu lệnh hỗ trợ các tác vụ này, nhưng phần lớn là có cấu trúc của câu lệnh S ELECT.

Truy vấn chọn:
Sử dụng câu lệnh S ELECT để lấy các bản ghi từ CSDL như một tập hợp các bản ghi, lưu trử chúng trong một đối tượng tập bản ghi mới (Recordset object). ứng dụng của bạn có thể thao tác trên tập bản ghi này như hiển thị, thêm, thay đổi và xoá nếu cần thiết. ứng dụng của bạn cũng có thể hiển thị, sinh các báo cáo từ dữ liệu đó.

S ELECT thường là từ đầu tiên trong một câu lệnh SQL. Hầu hết các câu lệnh hoặc là S ELECT hoặc là S ELECT...INTO. Bạn có thể dùng một câu lệnh S ELECT trong SQL là thuộc tính của đối tượng truy vấn (QueryDef object), là thuộc tính RecordSource của một điều khiển dữ liệu (data control), hoặc một đối số cho phương thức OpenRecordset. câu lệnh S ELECT không thay đổi dữ liệu trong CSDL; chúng chỉ lấy dữ liệu ra từ CSDL.

Dạng tổng quát của câu lệnh S ELECT là:
S ELECT fieldlist
F ROM T ABLEnames IN databasename
WHETE searchconditions
GROUP BY fieldlist
HAVING group criteria
ORDER BY fieldlist
WITH OWNERACCESS OPTION
Mỗi phần trong câu lệnh đại diện cho một mệnh đề được bàn đến ở các phần sau:

Truy vấn đơn giản:
Dạng đơn giản nhất của câu lệnh S ELECT là:
S ELECT * F ROM T ABLEname;

Ví dụ, truy vấn chọn sau trả lại tất cả các cột của tất cả các bản ghi trong bảng Employees:
S ELECT * F ROM Employees;

Dấu sao cho biết rằng tất cả các trường của bảng được chọn. Bạn cũng có thể chỉ định một số trường nhất định. Khi hiển thị, dữ liệu trong mỗi cột sẽ hiển theo thứ tự như chúng đã được liệt kê, vì vậy bạn có thể thay đổi lại thứ tự cho dễ đọc:
S ELECT [First Name], [Last Name] F ROM Employees;

Chỉ định nguồn dữ liệu được chọn:
Một câu lệnh S ELECT luôn có mệnh đề F ROM, cho biết danh sách các bảng ta cần lấy các bản ghi từ đó.
Nếu một trường tồn tại trong nhiều bảng trong mệnh đề F ROM, đặt trước chúng tên trường và dấu chấm. Trong ví dụ sau, trường Department có trong cả hai bảng Employees và Supervisors. Câu lệnh chỉ chọn trường Department của bảng Employees và SupvName từ bảng Supervisors:
S ELECT Employees. Department, SupvName _
F ROM Employees, Supervisors _
W HERE Employees.Department = Supervisors.Department;

Khi mệnh đề F ROM liệt kê nhiều hơn một bảng, thứ tự của chúng không quan trọng.

Xác định một bảng từ một CSDL bên ngoài.
Đôi khi, bạn cần thiết tham chiếu tới một bảng của một CSDL bên ngoài mà công cụ quản trị CSDL (Microsoft Jet database engine) có thể kết nối tới, như CSDL dBASE, Paradox hoặc một Jet database bên ngoài. Bạn có thể làm điều này bằng mệnh đề tuỳ chọn IN. Mệnh đề IN thường xuất hiện sau tên bảng trong mệnh đề F ROM, nhưng cũng có thể được dùng trong S ELECT INTO hoặc I NSERT INTO, khi đích là một CSDL ngoài.

Chú ý: Bạn chỉ có thể IN để kết nối một CSDL ngoài tại một thời điểm.

Trong một số trường hợp, đối số đường dẫn đề cập tới cả thư mục chứa CSDL. Ví dụ, khi làm việc với dBASE, Foxpro, hoặc Paradox, tham số đường dẫn chỉ ra các thư mục chứa các file có đuôi .DBF hoặc .DB. Tên bảng được bắt nguồn từ đích hoặc biểu thức bảng. Để xác định không phải là một Jet database, thêm dấu chấm phẩy và sau tên, và đóng lại bằng dấu trích đơn hoặc dấu ngoặc kép. Ví dụ:
‘dBASE IV;’
Bạn cũng có thể dùng từ khoá DATABASE để chỉ định CSDL ngoài. Ví dụ, cả hai dòng sau chỉ ra cùng một bảng;
S ELECT * F ROM T ABLE IN “” [dBASE IV; _
DATABASE=C:\DBASE\DATA\SALES;];
S ELECT * F ROM T ABLE IN “C:\DBASE\DATA\SALES” _
“dBASE IV;”

Chú ý: Để nâng hiệu quả và dễ sử dụng, thường người ta dùng bảng kết nối thay cho mệnh đề IN.

Để biết thêm thông tin về bảng kết nối, xem cuốn “Working with Records and Fields” và cuốn “Accessing External Data”.

Biệt danh của cột.
Khi đối tượng Recordset được tạo ra từ câu lệnh S ELECT, tên cột của bảng trở thành tên trường của đối tượng Recordset. Nếu bạn muốn tên khác đi, dùng mệnh đề AS. Ví dụ sau dùng “DOB” là biệt danh của trường [Date of Birth] trong bảng Employees:
S ELECT [Date of Birth] AS DOB F ROM Employees;

Bất cứ khi nào bạn dùng truy vấn trả lại tên trường nhập nhằng hoặc trùng tên trường, bạn phải dùng mệnh đề AS để cung cấp tên khác nhau cho các trường. Ví dụ sau dùng bó danh “Head Count” để gán kết quả đếm trong tập bản ghi:
S ELECT COUNT(EmployeeID) AS [Head Count] F ROM Employees;

Sử dụng biến Visual Basic trong câu lệnh SQL

Trong một chương trình Visual Basic, bạn có thể tạo một câu lệnh S ELECT trong ứng dụng của bạn bằng cách ghép các biến cục bộ vào trong một câu lệnh khi cần để chọn, sắp xếp, lọc dữ liệu được yêu cầu bởi ứng dụng của bạn. Ví dụ bạn có một điều khiển TextBox (TitleWanted) chứa tên của một tiêu đề và bạn muốn lấy tất cả các sách trong bảng Titles có nhan đề như nhan đề trong hộp TextBox, bạn có thể tạo một câu lệnh SQL bao gồm cả giá trị hiện thời của hộp TextBox. Nhưng nhớ rằng SQL đóng TitleWanted trong một dấu trích đơn (‘’):
Set Rst = Db.OpenRecordset(“S ELECT * F ROM Titles “ _
& “W HERE Title = ‘” & TitleWanted.Text & “’”)

V.1 Lọc và sắp xếp kết quả của truy vấn:
SQL cung cấp một số từ khóa xác nhận và mệnh đề tuỳ chọn giúp bạn thuận tiện hơn trong việc hạn chế và sắp xếp kết quả. Phần sau sẽ thảo luận về sự tiện dụng này.

Chỉ dẫn DISTINCT
Để bỏ qua các bản ghi trùng nhau, dùng từ khoá DISTINCT. Nếu được dùng, giá trị trong trường hay một nhóm các trường được chọn trong câu lệnh S ELECT sẽ là duy nhất. Ví dụ, Có một vài nhân viên liệt kê trong bảng Employees có cùng họ. Nếu hai bản ghi có cùng nội dung trường “Last Name” là Smith thì câu lệnh sau sẽ trả lại một bản ghi có nội dung là Smith:
S ELECT DISTINCT [Last Name] F ROM Employees;

Nếu bỏ từ khoá DISTINCT thì truy vấn sẽ trả lại nhiều hơn một giá trị Smith.

Kết quả tập hợp bản ghi của truy vấn dùng DISTINCT không cho phép cập nhật và không phản ánh được những thay đổi sau đó của người dùng khác.

Chỉ dẫn TOP

Để trả lại một số bản ghi nhất định ở đầu hoặc ở cuối của phạm vi các bản ghi. Dùng chỉ dẫn TOP. Giả sử bạn muốn lấy tên của 25 sinh viên đầu của lớp tốt nghiệp năm 1994:
S ELECT TOP 25 [First Name], [Last Name] F ROM Students _
W HERE [Graduation Year] = 1994 _
ORDER BY [Grade Point Average] DESC;

Nếu bạn không dùng mệnh đề ORDER BY, truy vấn sẽ trả lại 25 bản ghi tuỳ ý trong bảng Students thoả mãn điều kiện trong mệnh đề W HERE.

Chỉ dẫn TOP không chọn lựa giữa những bản ghi bằng nhau. Trong ví dụ, nếu bản ghi thứ 25 và thứ 26 có cùng hạng thì truy vấn sẽ trả lại 26 bản ghi.

Bạn cũng có thể dùng từ khoá PERCENT để trả lại một số phần trăm bản ghi ở đầu hay cuối tuỳ thuộc vào mệnh đề ORDER BY. Giã sử rằng thay vì 25 sinh viên, bạn muốn 10 phần trăm sinh viên của lớp.
S ELECT TOP 10 PERCENT [First Name], [Last Name] _
F ROM Students _
W HERE [Graduation Year] = 1994 _
ORDER BY [Grade Point Average] DESC;
Mệnh đề W HERE

Mệnh đề W HERE xác định những bản ghi từ các bảng được liệt kê trong mệnh đề F ROM Microsoft Jet Database engine chọn các bản ghi thoả mãn điều kiện liệt kê trong mệnh đề W HERE. Nếu bạn không có mệnh đề W HERE, truy vấn sẽ trả lại tất cả các dòng từ các bảng được chọn. Nếu bạn chỉ ra hơn một bảng trong truy vấn và không có mệnh đề W HERE hoặc mệnh đề kết nối JOIN, truy vấn của bạn sẽ trả lại kết quả tích đề các của các bảng.

Chú ý: Mặc dù mệnh đề W HERE có thể đảm nhận tác vụ kết nối các bảng, nhưng bạn phải dùng một mệnh đề JOIN để thực hiện các thao tác kết nối nhiều bảng với nhau nếu bạn muốn kết quả của truy vấn có thể cập nhật được. Mệnh đề W HERE tương tự như HAVING. W HERE xác định những bản ghi được chọn. Một cách tương tự, một khi các bản ghi đã được nhóm bởi GROUP BY, HAVING sẽ quyết định những bản ghi nào được hiển thị.

Dùng mệnh đề W HERE để loại bỏ các bản ghi bạn không muốn nhóm bởi GROUP BY.

Một mệnh đề W HERE có thể có tới 40 biểu thức được kết nối bởi các toán tử logic như AND, OR.

Khi bạn dùng một trường tên có chứa dấu cách hoặc dấu câu, bạn phải bỏ tên trường đó trong dấu ngoặc vuông ([]):

S ELECT [Product ID], [Units In Stock] _
F ROM Products _
W HERE [Units In Stock] <= [Reorder Level];

Khi bạn xác định đối số điều kiện, ngày phải định dạng theo dạng của Mỹ, ngay cả khi bạn không dùng phiên bản Jet database của Mỹ.

Ví dụ, May 10, 1994, được viết là 10/5/94 theo kiểu Anh và 5/10/94 theo kiểu Mỹ. Để chắc chắn, cần đặt ngày của bạn vào trong cặp dấu thăng (#), như ví dụ sau đây:

Để tìm các bản ghi có ngày May 10, 1994 trong một CSDL Anh, bạn phải dùng câu lệnh sau đây:
S ELECT * F ROM Orders _
W HERE [Shipped Date] = #5/10/94#;

Bạn có thể dùng hàm DateValue, nó nhận biết được mọi định dạng được thiết lập bới Microsoft Windows. Ví dụ, mã sau cho chuẩn ngày Mỹ:
S ELECT * F ROM Orders _
W HERE [Shipped Date] = DateValue(‘5/10/94’);

Mã sau dùng cho Anh:
S ELECT * F ROM Orders _
W HERE [Shipped Date] = DateValue(‘10/5/94’);
Mệnh đề GROUP BY:

GROUP BY là mệnh đề tuỳ chọn cho phép kết hợp các bản ghi theo một giá trị giống hệt nhau của một trường trường xác định vào trong một bản ghi duy nhất. Giá trị tổng hợp được tạo ra cho mỗi bản ghi nếu trong câu lệnh SQL có chứa hàm tổng hợp (aggregate function), như hàm Sum, Count.v.v.

Các bản ghi có giá trị rỗng ở trường nhóm vẫn được nhóm. Tuy nhiên, nó không được tổng hợp nếu trường tổng hợp là rỗng.

Dùng mệnh đề W HERE để loại bỏ các bản ghi bạn không muốn nhóm, và dùng mệnh đề HAVING để lọc các bản ghi sau khi chúng đã được nhóm.

Trừ khi dữ liệu là kiểu ký ức (Memo) hoặc trường tự động (Automation), một trường trong danh sách nhóm sau mệnh đề GROUP BY có thể tham chiếu tới bất kỳ trường nào được liệt kê trong mệnh đề F ROM, thậm chí nếu trường đó không có trong mệnh đề S ELECT. Jet database engine không thể nhóm trên các trường Memo hoặc Automation.

Tất cả các trường được liệt kê sau S ELECT phải hoặc bao gồm trong danh sách trường nhóm hoặc ;à một hàm nhóm (aggregate function).

Mệnh đề HAVING

Xác định những bản ghi được nhóm nào được hiển thị trong mệnh đề S ELECT với một mệnh đề GROUP BY. Một khi mệnh đề GROUP BY kết hợp các bản ghi, HAVING hiển thị bất cứ bản ghi nào được nhóm thoả mãn điều kiện trong mệnh đề HAVING.

HAVING tương tự W HERE, nó quyết định những bản ghi nào được chọn. Một khi các bản ghi được nhóm bởi GROUP BY, HAVING xác định bản ghi nào được hiển thị.

HAVING là một mệnh đề tuỳ chọn. Một mệnh đề HAVING có thể có tới 40 biểu thức được kết hợp các toán tử logic như AND và OR.

Mệnh đề ORDER BY

Mệnh đề ORDER BY xác định thứ tự sắp xếp của các bản ghi trong truy vấn. Trong mệnh đề ORDER BY, bạn xác định một trường hay các trường được dùng làm khoá sắp xếp, và sau đó xác định các bản ghi xuất hiện theo thứ tự độ lớn tăng dần hay giảm dần. Ví dụ sau trả lại tất cả các bản ghi trong bảng Employees được liệt kê họ theo thứ tự ABC:
S ELECT * F ROM Employees ORDER BY [Last Name] ASC;

Trong ví dụ này, ASC là tuỳ chọn - thứ tự sắp xếp mặc định là tăng dần. Tuy nhiên, bạn có thể thêm từ khoá ASC và cuối mỗi trường bạn muốn sắp theo thứ tự tưang dần.

Để sắp theo thứ tự giảm dần, thêm từ khoá DESC vào cuối các trường bạn muốn sắp theo thứ tự giảm dần.

Bạn cũng có thể dùng cũng có thể dùng số thứ tự của trường được chọn trong mệnh đề S ELECT để chỉ ra trường làm khoá sắp xếp:
S ELECT [First Name], [Last Name] F ROM Employees ORDER BY 2 ASC;

Bạn cũng có thể sắp xếp theo nhiều trường. Các bản ghi trước hết được sắp theo trường đầu tiên trong danh sách các trường sắp xếp.

Các bản ghi có cùng giá trị trên trường đó lại tiếp tục được sắp xếp trên trường tiếp theo trong danh sách và quá trình lại có thể lặp lại nếu tồn tại một số bản ghi có cùng giá trị tại trường vừa rồi.

Ví dụ sau chọn trường lương và sắp xếp giảm dần, tất cả các nhân viên cùng lương sẽ được sắp họ tăng dần theo thứ tự ABC.
S ELECT [Last Name], Salary F ROM Employees _
ORDER BY Salary DESC, [Last Name];

ORDER BY thường là thành phần cuối cùng trong câu lệnh SQL. Nó là mệnh đề tuỳ chọn (trừ khi bạn dùng chỉ dẫn TOP hoặc TOP n PERCENT trong mệnh đề S ELECT).

Mệnh đề WITH OWNERACCESS

Trong môi trường đa người dùng với nhóm làm việc có chia quyền, dùng WITH OWNERACCESS cuối mỗi truy vấn để trao cho người dùng, người thi hành truy vấn cho phép xem dữ liệu trong truy vấn dầu rằng người đó mặt khác bị hạn chế xem các bảng cơ bản của CSDL.

Ví dụ sau cho phép người dùng trả lại thông tin về lương, thậm chí nếu người dùng không được phép xem bảng kết toán, là kết quả của một truy vấn do một người khác có đủ quyền thi hành.
S ELECT [Last Name], [First Name], Salary F ROM Employees _
ORDER BY [Last Name] _
WITH OWNERACCESS OPTION;

Nếu một người dùng mặt khác bị ngăn không được tạo hoặc thêm vào một bảng, bạn có thể dùng WITH OWNERACCESS OPTION để cho phép người dùng thi hành một câu lệnh tạo hoặc nối bảng.

Tuỳ chọn này yêu cầu bạn truy cập vào file hệ thống System.mda được kết hợp với CSDL. Nó thực sự hữu dụng chỉ trong môi trường đa người dùng có chia quyền.

V.1 Dùng một truy vấn tạo bảng.
Một sự biến đổi trong câu lệnh S ELECT cho phép bạn tạo ra một bảng mới, thay thế cho một đối tượng Recordset. Để làm điều này, bạn thêm mệnh đề INTO. Ví dụ sau tạo ra một bảng mới New Employees bởi truy vấn bảng Employees:
S ELECT * INTO [New Employees] F ROM Employees;

Bạn có thể dùng truy vấn tạo bảng để lấy các bản ghi, tạo một bảng dự phòng, hoặc làm một bản sao để đưa sang một CSDL khác hoặc dùng làm cơ sở cho các báo cáo hiển thị dữ liệu trong mỗi định kỳ. Ví dụ, bạn có thể tạo ra bản báo cáo bán hang từng tháng bằng cách thi hành truy vấn tạo bảng này mỗi tháng.
Bạn có thể muốn xác định một khoá chính cho bảng mới tạo. Khi bạn tạo bảng đó, các trường trong bảng mới sẽ thừa kế kiểu dữ liệu va kích thước của mỗi trường trong bảng cơ sở, nhưng các đặc tính khác của các trường hoặc bảng không được chuyển sang.

V.3 Dùng truy vấn xoá.
Tạo một truy vấn xoá để loại bỏ các bản ghi từ một hoặc các bảng được liệt trong mệnh đề F ROM thoả mãn điều kiện trong mệnh đề W HERE, như cú pháp dưới đây:
DELETE [T ABLE *]
F ROM T ABLEexpression
W HERE criteria

DELETE đặc biệt hữu dụng khi bạn muốn xoá một lúc nhiều bản ghi.

Trong một câu lệnh xoá trên nhiều bảng, bạn phải bao gồm đối T ABLE. Nếu bạn xác định xoá bản ghi trên nhiều bảng, không có bảng nào chứa khoá chính của một quan hệ 1 - n.

Nếu muốn xoá toàn bộ bản ghi trong một bản, Dùng truy vấn xoá chính bảng đó còn nhanh hơn là dùng truy vấn xoá. Bạn có thể dùng một phương thức thi hành với một câu lệnh DROP T ABLE để xoá bảng đó ra khỏi CSDL. Tất nhiên nếu bạn xoá bảng thì mất luôn cả cấu trúc. Ngược lại, khi dùng truy vấn xoá thì chỉ phần dữ liệu bị xoá; Cấu trúc bảng và các thuộc tính của các trường vẫn còn nguyên vẹn.

Bạn có thể dùng DELETE để xoá bản ghi trong một bảng hoặc bảng liên kết bên n của một quan hệ 1 - n. Thao tác xoá theo tầng trong truy vấn chỉ xoá bảng bên n của quan hệ . Ví dụ, trong quan hệ giữa bảng Customers và bảng Orders, bảng Orders là phía n, nên thao tác xoá chỉ ảnh hưởng đến bảng Orders.

Một truy vấn xoá xoá toàn bộ bản ghi, không xoá chọn lọc theo các trường. Nếu bạn muốn xoá dữ liệu trong một trường cụ thể nào đó, dùng truy vấn cập nhật (U PDATE) để thiết lập dữ liệu trường đó là rỗng (NULL).

Một khi bạn đã loại bỏ các bản ghi bằng cách dùng truy vấn xoá, bạn không thể khôi phục lại thao tác của mình. Nếu bạn muốn biết những bản ghi đã được xoá, trước hết, kiểm tra kết quả của truy vấn chọn có cùng điều kiện (với truy vấn xoá) và sau đó tiến hành truy vấn xoá.

Bất cứ lúc nào bạn cũng nên sao lưu dữ liêu phòng khi bạn xoá nhầm các bản ghi.

V.4 Dùng truy vấn bổ sung.
Bạn có thể dùng mệnh đề I NSERT INTO để thêm các bản ghi vào bảng hay tạo một truy vấn bổ sung.

Bạn có thể dùng những cú pháp sau đây để thực hiện truy vấn bổ sung nhiều bản ghi:

I NSERT INTO target [IN externaldatabase]
S ELECT [source.]field1[, field2[, ...]
F ROM T ABLEexpression

Ngược lại, dùng cú pháp sau để thực hiện truy vấn bổ sung một bản ghi:
I NSERT INTO target [(field1[, field2[,...]])]
VALUES (value1[, value2[, ...])

Bạn có thể dùng mệnh đề I NSERT INTO để thêm một bản ghi đơn vào một bảng dùng cú pháp truy vấn bổ sung bản ghi đơn. Trong trường hợp này, Câu lệnh phải xác định tên và giá trị cho mỗi trường của bản ghi. Bạn phải xác định các trường của bản ghi mà dữ liệu se được gán vào cũng như giá trị của trường đó. Khi bạn không chỉ rõ danh sách trường, giá trị mặc định hoặc NULL sẽ điền vào các trường vắng mặt. Các bản ghi được thêm vào cuối bảng.

Bạn cũng có thể dùng I NSERT INTO để nối một tập hợp các bản ghi từ một bảng khác hoặc một truy vấn dùng mệnh đề S ELECT ... F ROM được chỉ ra ở cú pháp trên. Trong trường hợp này, mệnh đề S ELECT chỉ rõ trường nối thêm vào bảng đích.

Bảng nguồn hoặc bảng đích có thể là một bảng hay một truy vấn. Nếu một truy vấn được xác định, Microsoft Jet database engine nối một tập hợp bản ghi vào một hoặc nhiều bảng được chỉ ra trong truy vấn.

I NSERT INTO là một tuỳ chọn, nhưng khi có mặt nó, phải đứng trước S ELECT.

Nếu bảng đích chứa khoá chính, phải chắc chắn rằng bạn bổ sung những bản ghi với nội dung khoá là duy nhất, và trường đó không được để trống.

Nếu bạn bổ sung các bản ghi vào một bảng với trường Couter, loại bỏ trường đó ra khỏi danh sách nếu bạn muốn Microsoft Jet đánh số lại các bản ghi. Thêm trường Counter vào truy vấn nếu bạn muốn giữ lại giá trị ban đầu. Nếu có giá trị trùng, tất nhiên là Jet database sẽ không bổ sung bản ghi đó.

Dùng mệnh đề IN để nối các bản ghi vào một bảng của một CSDL khác.

Để tạo một bảng mới, dùng mệnh đề S ELECT ... INTO thay thế để tạo một truy vấn tạo bảng.

Để tìm ra các bản ghi sẽ được bổ sung, trươc khi thi hành truy vấn bổ sung, hãy xem qua kết quả của truy vấn chọn với cùng biểu thức điều kiện.

Một truy vấn bổ sung không ảnh hưởng tới các bảng hoặc truy vấn nguồn.

V.5 Truy vấn cập nhật:
Truy vấn U PDATE thay đổi giá trị trong các trường được thoả mãn các điều kiện cập nhật.
U PDATE T ABLE
SET newvalue
W HERE criteria;

U PDATE đặc biệt hữu dụng khi bạn muốn thay đổi nội dung nhiều bản ghi hoặc khi các bản ghi bạn muốn thay đổi nằm trên nhiều bảng. Thông thường bạn dùng truy vấn này với một phương thức thi hành.

Bạn có thể thay đổi một vài trường cùng lúc. Ví dụ sau tăng Order Amount lên 10% và giá trị Freight lên 3%:
U PDATE Orders _
SET [Order Amount] = [Order Amount] * 1.1, _
Freight = Freight * 1.03 _
W HERE [Ship Country] = ‘UK’;

U PDATE không tạo ra tập kết quả. Nếu bạn muốn xem những bản ghi nào được cập nhật, trước tiên xem kết quả của truy vấn chọn (dùng cùng biểu thức điều kiện) và sau đó thi hành truy vấn cập nhật.

V.6 Truy vấn phức hợp.
Truy vấn phức hợp kết hợp một hay nhiều mệnh đề S ELECT, hoặc một hay nhiều mệnh đề F ROM trong một câu lệnh S ELECT, nhằm thực hiện truy vấn mà không thể hoàn thành được với một truy vấn đơn.

Truy vấn con:
Một truy vấn con là một mệnh đề S ELECT được lồng trong một câu lệnh khác như S ELECT, S ELECT INTO, I NSERT INTO, DELETE, hoặc U PDATE, hoặc một truy vấn con khác.

Bạn có thể dùng ba dạng cú pháp để tạo truy vấn con:
comparison [ ANY | ALL | SOME ] (sqlstatement)
expression[ NOT ] IN (sqlstatement)
[NOT] EXISTS (sqlstatement)

Bạn có thể dùng một truy vấn con thay thế cho một biểu thức trong danh sách các trường có trong câu lệnh S ELECT hay trong mệnh đề W HERE hoặc HAVING. Trong một truy vấn con, bạn dùng S ELECT để đưa ra một hay nhiều giá trị cụ thể để định giá cho biểu thức trong mệnh đề W HERE hay HAVING.

Dùng ANY hay SOME, đồng dạng nhau, để tìm kiếm các bản ghi có trong truy vấn cha, so sánh với bất kỳ bản ghi nào được tìm thấy trong truy vấn con. Ví dụ dưới đây đưa ra tất cả các sản phẩm mà đơn vị giá cả của nó lớn hơn của nó lớn hơn ít nhất một sản phẩm được bán giảm giá 25%:
S ELECT * F ROM Products _
W HERE [Unit Price] > ANY (S ELECT [Unit Price] F ROM [Order Details] _
W HERE [Discount] >= 25);
Bạn dùng chỉ dẫn ALL để chọn các bản ghi trong truy vấn chính thoả mãn được phép so sánh với tất cả các bản ghi trong truy vẫn con.

Nếu bạn thay ANY ở ví dụ trên bằng ALL thì truy vấn sẽ đưa ra những sản phẩm mà đơn giá của nó lớn hơn hoặc bằng tất cả các sản phẩm được bán giảm giá 25%.

Dùng chỉ dẫn IN để nhận các bản ghi trong truy vấn chính có giá trị bằng với giá trị của một hoặc một số bản ghi trong truy vấn con. Ví dụ sau cho ta tất cả các sản phẩm được bán khuyến mại 25%:
S ELECT * F ROM Products _
W HERE [Product ID] IN (S ELECT [Product ID] F ROM [Order Details] _
W HERE [Discount] >= 25);

Ngược lại, bạn cũng có thể dùng NOT IN để nhận các bản ghi có giá trị không bằng bất cứ một bản ghi nào trong truy vấn con.
Dùng chỉ dẫn EXISTS (với từ khoá tuỳ chọn NOT) trong phép so sánh đúng/sai để xác định xem truy vấn con có trả lại bất kỳ bản ghi nào hay không.

Bạn cũng có thể dùng bí danh trong truy vấn con để tham chiếu tới danh sách các bảng được liệt kê trong mệnh đề F ROM nằm ngoài truy vẫn con đó. Trong ví dụ sau, bảng nhân viên được gán bí danh là “T1”:
S ELECT [Last Name], [First Name], Title, Salary _
F ROM Employees AS T1 _
W HERE Salary >= (S ELECT Avg(Salary) _
F ROM Employees _
W HERE T1.Title = Employees.Title)
ORDER BY Title;
Truy vấn Crosstab:
Truy vấn Crosstab cho phép bạn chọn các giá trị từ các trường hay các biểu thức như là các tiêu đề cột, vì thế, bạn có thể xem dữ liệu một cách cô đọng hơn với một câu lệnh S ELECT bình thường. Bạn dùng mệnh đề TRANSFORM để tạo các truy vấn Crosstab.
TRANSFORM aggfunction
S ELECTstatement
PIVOT pivotfield [IN (value1[,value2[,...]])]
Mệnh đề TRANSFORM dùng những tham số sau:
aggfunction Một hàm tổng hợp trên dữ liệu được chọn.
S ELECTstatement Một câu lệnh S ELECT
pivofield Trường hoặc biểu thức bạn muốn dùng để tạo tiêu đề cột trong kết quả của truy vấn.
value1, value2 Các giá trị cố định được dùng để tạo tiêu đề cột. Khi bạn tổng hợp dữ liệu với công cụ là truy vấn Crosstab, bạn chọn các giá trị các trường hay biểu thức cụ thể như là các tiêu đề vì thế bạn có thể xem dữ liệu trong một dạnh cô đọng hơn.
TRANSFORM đứng trước mệnh đề S ELECT xác định các tiêu đề dòng và đứng trước một mệnh đề GROUP BY xác định các dòng cụ thể được nhóm. Tất nhiên, bạn có thể tuỳ chọn các mệnh đề khác, như W HERE, những mệnh đề xác định thêm các tiêu chuẩn chọn hay sắp xếp.

Các giá trị trả lại trong pivotfield được dùng như là tiêu đề cột trong tập kết quả của truy vấn. Ví dụ, việc xoay doanh số bán hàng trong một tháng trong một truy vấn Crosstab sẽ tạo ra 12 cột. Bạn có thể hạn chế pivotfield để tạo các tiêu đề cột từ các gía trị cố định (giá trị 1, giá trị 2) được liệt kê trong mệnh đề tuỳ chọn IN.

Ví dụ sau tạo ra một truy vấn Crosstab trình bày kết quả bán hàng theo tháng trong một năm của một người nào đó. Các tháng được trả lại là các cột từ trái sang phải, và tên sản phẩm được liệt kê từ trên xuống dưới như các hàng.
PARAMETERS [ Sales for which year ? ] LONG; TRANSFORM _
Sum([Order Details].Quanlity * ([Order Details].[Unit Price] _
-([Order Details].Discount / 100) * [Order Details].[Unit Price])) AS Sales _
S ELECT [Product Name] F ROM Orders INNER _
JOIN (Products INNER JOIN [Order Details] ON Products.[Product ID] = _
[Order Details].[Product ID]) ON Orders.[Order ID] = _
[Order Details].[Order ID] W HERE DatePart _
(“yyyy”, [Order Date]) = [ Sales for which year ? ] _
GROUP BY [Product Name] ORDER BY [Product Name] _
PIVOT DatePart(“m”, [Order Date]);

Kết nối:
Một trong những đặc tính hữu ích nhất của CSDL quan hệ là khả năng nối hai hay nhiêu bảng với nhau để tạo nên một bảng mới (hay một Recordset) chứa đựng thông tin từ các bảng cũ.

Các bảng được nối theo các mối quan hệ giữa chúng, thông thường nhất là giữa khoá chính của một bảng và khoá ngoài tương ứng của bảng kia. Tuỳ thuộc vào cách thức nối các bảng với nhau mà bạn có thể tạo ra các loại liên kết sau:
INNER JOIN Các bản ghi của cả hai bảng được chứa trong liên kết chỉ khi một trường cụ thể trong bảng khớp với một trường cụ thể trong bảng thứ hai.
LEFT OUTER JOIN Tất cả các bản ghi từ bảng một được chứa trong liên kết, cùng với các bản ghi trong bảng hai mà ở đó các trường cụ thể khớp với các trường tương ứng trong bảng một.
RIGHT OUTER JOIN Tất cả các bản ghi từ bảng thứ hai được đưa vào liên kết cùng với các bản ghi từ bảng một mà có các trường khớp với các trường trong bảng hai.

Inner joins:
Để tạo ra một truy vấn chỉ chứa các bản ghi có dữ liệu trong trường liên kết giống nhau, hãy dùng phép liên kết INNER JOIN.

INNER JOIN kết hợp các bản ghi của hai bảng khi có các giá trị khớp nhau trong trường liên kết. Dùng cú pháp sau:
F ROM T ABLE1 INNER JOIN T ABLE2 ON T ABLE1.field = T ABLE2.field2

Bạn có thể dùng INNER JOIN trong bất cứ mệnh đề F ROM nào. Nó tạo ra một liên kết tương đương (Equi-joins) , như một liên kết INNER JOIN. Equi-joins là một dạng kết nối phổ biến. Chúng kết hợp các bản ghi từ hai bảng khi có dữ liệu trong hai trường kết nối khớp nhau.
Bạn có thể dùng INNER JOIN với các bảng Department và Employees để chọn tất cả các nhân viên trong mỗi phòng. Ngược lại, để chọn tất cả các phòng (thậm chí nếu một số phòng không có nhân viên nào), bạn có thể dùng LEFT JOIN hoặc RIGHT JOIN.

Bạn có thể liên kết bất cứ hai trường kiểu số nào, thậm chí nếu chúng khác kiểu. Ví dụ bạn có thể kết nối một trường số, với thuộc tính kích thước được thiết lập là số nguyên, và một trường Couter.
Ví dụ sau cho chúng ta biết kết nối hai bảng Categories và Products trên trường CategoryID như thế nào:
S ELECT [Category Name], [Product Name] _
F ROM Categories INNER JOIN Products _
ON Categories.[Category ID] = Products.[Category ID];

Ví dụ sau tạo ra hai liên kết tương đương (equi-joins): một giữa hai bảng Order Details và Orders và một giữa hai bảng Orders và Employees. Điều này là cần thiết bởi bảng Employees không chứa thông tin về bán hàng, và Order Details không chứa thông tin về nhân viên. Truy vấn đưa ra một danh sách các nhân viên và tổng số về hàng họ bán được:
Dim MyQRY AS QueryDef
MyQRY.SQL = “S ELECT DISTINCTROW Sum([Unit Price].[Quantity]) _
AS [Sales], [First Name] & “ “ & _
[Last Name] AS Name F ROM Employees _
INNER JOIN (Order INNER JOIN [Order Details] _
ON Order.[Order ID] = [Order Details].[Order ID]) _
ON Employees.[Employee ID] = Orders.[Employee ID] _
GROUP BY [First Name] & “ “ & [Last Name];”

Câu lệnh này phải được sử dụng như là thuộc tính của đối tượng QueryDef hoặc là tham số của phương thức OpenRecordset.

Ví dụ trên dùng chỉ dẫn DISTINCTROW để loại bỏ dữ liệu trên cơ sở các bản ghi hoàn toàn trùng nhau. Ví dụ, bạn có thể tạo một truy vấn liên kết các bảng Customers với bảng Orders với trường liên kết là trường Customer ID. Bảng Customers không chứa các bản ghi có cùng nội dung trường Customer ID, nhưng trong bảng Orders thì có bởi một khách hàng có thể có nhiều hợp đồng đặt mua hàng.

Câu lệnh SQL sau chỉ ra cách bạn dùng chỉ dẫn DISTINCTROW để đưa ra một danh sách các công ty có ít nhất một hợp đồng đặt mua hàng nhưng không cụ thể về các hợp đồng đó.
S ELECT DISTINCTROW [Company Name] _
F ROM Customers INNER JOIN Order _
ON Customers.[Customer ID = Orders.[Customer ID] _
ORDER BY [Company Name];

Nếu bạn bỏ sot chỉ dẫn DISTINCTROW thì kết quả sẽ trả lại các tên công ty trùng nhau vì có nhiều bản hợp đồng đặt mua hàng. DISTINCTROW chỉ có hiệu quả khi bạn chọn các trường từ một số bảng được liên kết trong truy vấn. DISTINCTROW được bỏ qua khi bạn chọn từ một bảng.

Liên kết trái, phải (LEFT JOIN & RIGHT JOIN - Liên kết ngoài):
Liên kết ngoài (OUTER JOIN) nối các bản ghi của bảng nguồn khi chúng được dùng trong bất kỳ mệnh đề F ROM nào với cú pháp sau:
F ROM T ABLE1 [ LEFT | RIGHT ] JOIN T ABLE2 ON T ABLE1.field1 = T ABLE2.field2

Dùng LEFT JOIN để tạo một liên kết ngoài bên trái. Liên kết ngoài bên trái gồm tất cả các bản ghi từ bảng thứ nhất (bảng bên trái), tức là bao gồm cả các bản ghi không khớp nội dung trường liên kết với bất cứ bản ghi nào của bảng thứ hai (bảng bên phải).
Dùng RIGHT JOIN để tạo liên kết ngoài bên phải. Liên kết ngoài bên phải bao gồm tất cả các bản ghi có trong bảng thứ hai (bảng bên phải), tức là bao gồm cả các bản ghi không khớp nội dung trương liên kết với bất cứ bản ghi nào của bảng còn lại (bảng bên trái).

Ví dụ, bạn có thể dùng LEFT JOIN cho bảng Departments (trái) và bảng Employees (phải) để lấy ra tất cả các phòng ban, trong đó có cả các phòng không có nhân viên nào. Để lấy tất cả các nhân viên, bao gồm cả những nhân viên không thuộc phòng ban nào, hãy dùng RIGHT JOIN.

Ví dụ sau có thấy cách thức để bạn có thể liên kết bảng Categories và bảng Products dự trên trường Category ID. Truy vấn sẽ đưa ra danh sách tất cả tên các hạng mục, trong đó có nhưng hạng mục không có sản phẩm nào.
S ELECT [Category Name], [Product Name] _
F ROM Categories LEFT JOIN Products _
ON Categories.[Category ID] = Products.[Category ID];

Trong ví dụ trên đây, Category ID là một trường liên kết, nhưng không có mặt trong kết quả của truy vấn vì nó không được chọn trong mệnh đề S ELECT.

Liên kết lồng nhau (Nested joins):
Bạn có thể lồng các chỉ dẫn JOIN như cú pháp sau đây:
S ELECT fields
F ROM T ABLE1 INNER JOIN (T ABLE2 INNER JOIN [(]T ABLE3 _
[INNER JOIN [(] T ABLEx [INNER JOIN ... )] _
ON T ABLE3.field3 = T ABLEx.fieldx)] _
ON T ABLE2.field2 = T ABLE3.field3) _
ON T ABLE1.field1 = T ABLE2.field2;

Truy vấn hợp (U NION Queries):
Bạn có thể dùng các thao tác nối để tạo các truy vấn hợp, kết hợp kết quả của hai hay nhiều bảng hoặc truy vấn độc lập.
query1 U NION [ALL] query2 [U NION [ALL] queryn [...]]

query đại diện cho biểu thức xác định trường chứa dữ liệu kiểu số mà bạn muốn tính trung bình hoặc một biểu thức thực hiện một phép tính có dùng dữ liệu trong trường đó. Toán hạng trong biểu thức có thể tên của các trường, có thể là một hằng, một hàm (có thể là có sẵn của hệ thống hoặc do người dùng định nghĩa nhưng không được là hàm tổng hợp(aggregate functions)).

Bạn có thể kết hợp kết quả của một truy vấn và một câu lệnh SQL trong một phép hợp U NION đơn. Ví dụ sau kết hợp kết quả của một truy vấn có tên gọi New Accounts và một câu lệnh S ELECT:
T ABLE [New Accounts] U NION ALL _
S ELECT * F ROM Customers W HERE [Order Amount] > 1000;

Mặc định, không có hai bản ghi nào trùng nhau trong kết quả của một truy vấn hợp; tuy nhiên, bạn có thể bao gồm cả chỉ dẫn ALL để kết quả có cả các bản ghi trùng nhau. Nó cũng làm cho truy vấn thi hành nhanh hơn.

Tất cả các truy vấn trong phep hợp U NION yêu cầu có cùng số trường, tuy nhiên các trường không cần thiết phải có cùng kích thước hoặc kiểu dữ liệu.

Bạn có thể dùng mệnh đề GROUP BY và/hoặc HAVING trong mỗi truy vấn tham gia phép hợp để nhóm dữ liệu. Bạn có thể dùng một mệnh đề ORDER BY ở cuối truy vấn cuối cùng để kết quả trả về được sắp theo một thứ tự xác định.

V.7 Tối ưu truy vấn:
Tối ưu CSDL là một chủ đề lớn và bao hàm nhiều vấn đề. Nhiều yếu tố, bao gồm cả cấu hình phần cứng và phần mềm, cài đặt Windows, bộ đệm, không liên quan đến các truy vấn, nhưng chúng ảnh hưởng đến hiệu quả của CSDL.

Một yếu tố quan trọng khác là dùng các bảng gắn với CSDL hơn là kết nối trực tiếp với CSDL từ xa. Vấn đề này được bàn kỹ ở trong cuốn “Accessing External Data”.

Phần này sẽ trình bày ngắn gọn một số cách tối ưu liên quan đặc biệt tới sự xây dựng các truy vấn, và tận dụng khả năng tối ưu Jet database để xây dựng các truy vấn.

Một số chiến lược tối ưu thường dùng:
- Hạn chế dùng các trường sắp xếp, đặc biệt là các trường không được tạo chỉ mục.
- Đảm bảo các bảng kết nối từ các nguồn khác nhau đều được tạo chỉ mục hoặc là được liên kết trên các khoá chính.
- Nếu dữ liệu không thay đổi thường xuyên, dùng các truy vấn tạo bảng từ truy vấn Dynasets của bạn. Dùng các bảng để làm cơ sở cho các form, các báo cáo hơn là dùng các truy vấn.
- Nếu bạn đang tạo một truy vấn Crosstab, hãy dùng tiêu đề cột cố định bất cứ khi nào có thể.
- Dùng BETWEEN...AND, IN và các dấu “=” trên các cột được đánh chỉ mục.
- Khi tạo một truy vấn, không nên thêm các trường không cần thiết.

Tối ưu các truy vấn với công nghệ Rushmore:
Rushmore là một công nghệ truy cập dữ liệu được dùng trong Jet database engine cho phép một tập hợp các bản ghi được truy cập một cách hết sức hiệu quả. Với Rushmore, khi bạn dùng một kiểu biểu thức nhất định trong điều kiện truy vấn, truy vấn của bạn sẽ thi hành nhanh hơn rất nhiều.

Biểu thức tối ưu ở dạng đơn giản:
Jet database engine có thể tối ưu hoá các biểu thức đơn giản trong mệnh đề W HERE trong câu lệnh S ELECT. Dạng biểu thức đơn giản có thể thành lập nên toàn bộ hoặc một phần phần của biểu thức.
Một biểu thức đơn giản có thể tối ưu hoá có một trong những dạng sau:
indexedfield comparisonoperator expression
- or -
expression comparisonoperator indexedfield
Trong dạng biểu thức đơn giản nhất có thể tối ưu:
- indexedfield phải là một trường mà trên đó có tạo lập chỉ mục.
- comparisonoperator phải là một trong những kiểu sau đây: <, >, =, >=, <=, <>, BETWEEN, LIKE, hoặc IN.
- expression là một biểu thức hợp lệ bất kỳ, bao gồm các hằng, các hàm, các trường từ các bảng.
Chú ý: Để kết quả là tốt nhất, giá trị so sánh trong biểu thức dùng LIKE phải bắt đầu bằng một ký tự chứ không được là ký tự đại diện (*, ?). Bạn có thể tối ưu LIKE “m*” chứ không thể tối ưu LIKE “*m*”.
Hàng ngày, mỗi khi dạo qua các trang web về IT chắc hẳn bạn đã từng nhìn hoặc nghe thấy cụm từ “Lập trình máy chủ với ASP”. Ðể giúp các bạn mới nắm bắt được vấn đề này mình xin được đưa ra những hiểu biết của mình về một trong những công cụ lập trình máy chủ phổ biến hiện nay là ASP. Bài viết này mình sẽ không đi vào chi tiết các thủ thuật lập trình mà sẽ cung cấp cho các bạn một cái nhìn tổng quát về nguyên lý của ASP. Các bạn hãy đọc và so sánh nó với một số ngôn ngữ lập trình máy chủ khác như Perl, Rexx,Python.

Microsoft Active Server Pages (ASP) không hẳn là một ngôn ngữ lập trình, Microsoft gọi nó là môi trường server-side scripting, môi trường này cho phép tạo và chạy các các ứng dụng Web server động, tương tác và có hiệu quả cao. Ðể làm việc trong môi trường này, các ASP coder thường sử dụng VBScript hoặc JavaScript (Mình vẫn nói là hai cái này quan trọng lắm mà) cả hai loại này đều tự động hỗ trợ ASP.

Trong các HTML, mỗi tag được bắt đầu và kết thúc bởi cặp "< />", ASP cũng tương tự như vậy. Ðể đánh dấu nơi bắt đầu ASP script bắt đầu và kết thúc chúng ta dùng cặp lệnh "<% %>".

Các đoạn ASP script có thể xuất hiện ở mọi nơi trong trang HTML, ASP & HTML có sự gắn bó chặt chẽ với nhau. Với ASP chúng ta có thể chèn các script thực thi được vào trực tiếp các file HTML. Khi đó việc tạo ra trang HTML và xử lý script trở nên đồng thời, điều này cho phép tạo ra các tương tác của Web site một cách linh hoạt uyển chuyển, có thể chèn các thành phần HTML động vào trang Web tùy vào từng trường hợp cụ thể.

VBScript là ngôn ngữ mặc định của ASP, nếu muốn sử dụng một ngôn ngữ khác thì chúng ta cần phải định nghĩa ngôn ngữ.

Tại đầu trang thêm dòng :
<%@LANGUAGE=Tên ngôn ngữ%>

VBScript dễ học và rất tiện lợi nếu chúng ta đã học qua VB, các ví dụ trong bài này mình đều viết bằng VBScript (Các bạn có thể tham khảo tài liệu về VBScript trong phần Support của bộ Visual Studio).

Các ASP script được viết và đặt trong các file có phần mở rộng là .asp. Khi cho script chạy, ví dụ như : http://dnstool.com/default.asp thì mọi quá trình xử lý của file default.asp sẽ diễn ra trên server thay vì chạy ở client, Web server của sẽ làm mọi công việc cần thiết để tạo ra một trang kết quả dạng HTML (Hypertext Markup Language), như thế không cần phải bận tâm rằng các Web browser có thể xử lý trang Web hay không vì server đã làm mọi việc.

Các ASP script thông thường chạy trên các server cài IIS (Microsoft Internet Information Server). Nhưng ASP vẫn có thể làm việc với đa số các Web server trên NT (Netscape, Oreilly) sử dụng ChiliSoft ASP, có thể trên một số hệ điều hành khác như Linux, SunSolaris.

Quy trình thực hiện một của ASP như sau: khi một user thông qua trình duyệt web gửi yêu cầu tới một file .asp ở server thì script chứa trong file đó sẽ được chạy trên server và trả kết quả về cho browser đó. Khi Web server nhận được yêu cầu tới một file .asp thì nó sẽ đọc từ đầu tới cuối file .asp đó, thực hiện các lệnh script trong đó và trả kết quả về cho Web brower là một trang HTML.

Thực ra thì quá trình tạo trang HTML và thực thi script là hai quá trình riêng biệt, script sẽ được ASP engine dịch và thực thi trước khi chuyển kết quả cho Web server, tới giai đoạn này các mã HTML và kết quả sẽ kết hợp để tạo nên một trang Web. Việc nhúng HTML và script chỉ để làm đẩy nhanh tốc độ phát triển ứng dụng mà thôi. Do môi trường hoạt động là mạng nên một script ASP khi được viết ra có thể sử dụng được ở mọi nơi, không cần trình biên dịch hay kết nối.

Các ASP script được viết dựa trên các ngôn ngữ hướng đối tượng nên rất tiện lợi, sẵn có các object đi kèm như: Request, Response, Application, Server, Session. Tận dụng được các ActiveX components như : Database access, Content linking, Collaboration Data Object, Browser capabilities, File Access... Hơn nữa nó cũng có thể tận dụng được components từ các nhà phân phối khác, cung cấp dưới dạng các file .dll.

Những tính chất trên đem đến cho chúng ta những lợi ích xác thực, cho phép tạo ra các ứng dụng Web thương mại có tương tác chứ không chỉ đơn thuần là phổ biến các nội dung tĩnh. Ví dụ như để lưu giữ lại thông tin về các khách hàng đã ghé thăm qua web site của mình, các web builder có thế dùng asp để tạo ra các file cơ sở dữ liệu khách hàng lưu trên máy chủ, khi cần có thể tiện tra cứu.

Object là những đoạn chương trình có khả năng thực hiện những công việc cơ bản nào đó. Mỗi object là một kết hợp giữa lập trình và dữ liệu mà có thể xử lý như một đơn vị thống nhất. Các ASP object cho phép chúng ta giao tiếp tương tác với cả máy chủ lẫn trình duyệt, thông thường chúng ta dùng vài object trong các scripts. Các object này đã sẵn có nên ta chỉ cần nhớ cách sử dụng chúng.

---Request object cho phép lấy thông tin thông qua một HTTP request. Chúng ta có thể dùng Request object để đọc URL, truy cập thông tin từ một form, đọc cookies và các HTTP header.
---Ressponse object là chìa khóa để gửi thông tin tới user, là đại diện cho phần thông tin do server trả về cho Web browser. Chúng ta có thể viết lên màn hình, tái định hướng các trang, tạo các cookies sử dụng Response object.
---Sử dụng Application object chúng ta có thể điều khiển các đặc tính liên quan đến đến việc khởi động và dừng ứng dụng, cũng như việc lưu trữ các thông tin có thể được truy nhập bởi các ứng dụng nói chung.
---Server object cho phép thực thi một chuỗi các tác vụ chẳng hạn như ánh xạ một đường dẫn ảo tới một đường dẫn vật lý và tạo một instance của một components.
---Session Object có thể giúp chúng ta lưu thông tin liên quan tới từng user đã truy nhập vào site của mình.

Khác với các object, các ASP components là các điều khiển ActiveX ghép nối với ASP để đơn giản hoá các thủ tục thông thường. Chúng ta sẽ lướt qua số components thường được sử dụng.

---Browser Capabilities: component này cho phép xác định trình duyệt của user là gì và những tính năng nào được hỗ trợ bởi trình duyệt đó.
---Collaboration Data Objects (CDO): CDO được liên kết chặt chẽ với IIS SMTP server, CDO hỗ trợ chúng ta gửi và nhận email. Ví dụ với CDO chúng ta có thể xử lý một form mà không cần nhận biết đó là Perl script hay CGI.
---Database Access: một trong những khả năng lớn nhất mà ASP có được là thâm nhập vào các cơ sở dữ liệu. ASP thường làm việc với hai người bạn đồng hành là Access và hệ cơ sở dữ liệu SQL. Components rất hữu ích nó giúp chúng ta có thể kết nối vào một cơ sở dữ liệu bằng cách sử dụng ActiveX Data Object để viết nội dung lên màn hình trình duyệt và tạo lập hoặc cập nhật các file cơ sở dữ liệu.
---File Access component chứa đựng các phương thức và thuộc tính có thể sử dụng để truy cập vào các file trên máy tính. Thông qua component này chúng ta tạo ra một object là FileSystemObject giúp ta thực hiện mốt số công việc như tạo, đọc file...

Ngoài ra còn có những components được cung cấp miễn phí hoặc phải mua từ các nhà phân phối khác như :
---Microsoft ASP Component Catalog: http://msdn.microsoft.com/workshop/server/components/catalog.asp
---ASP Central: http://www.aspcentral.com/ac/
---Active Server Pages: http://www.activeserverpages.com/components/toc.asp

Các phần trên đã giúp các bạn có một nhìn nhận cơ bản rồi đấy, nếu bạn thấy hay thì hãy đọc tiếp nhé, mục này sẽ đưa ra một ví dụ đơn giản để hình dung rõ hơn cách viết mã lệnh và thưởng thức hương vị sức mạnh của ASP. Một điều cần lưu ý là để test chương trình chúng ta cần phải cài bộ IIS (Internet Information Server) hoặc bộ PWS (Personal Web Server)_ đây là các phần hỗ trợ, với Win9x thì nó có trong đĩa cài đặt (PWS), với NT, 2000, XP thì nếu mình không nhầm nó đã cài mặc đình rồi đấy, sau đó máy tính của chúng ta sẽ trở thành một local server. Hoặc chúng ta upload các file test lên một server nào đó cho phép chạy các asp script. Trong hai bộ này đều có phần help hướng dẫn các bạn về các hàm và lệnh, nếu các hàm trong ví dụ này các bạn chưa nắm được thì có thể tra cứu trong đó.

Có một điều gây khó khăn cho chúng ta khi muốn tìm kiếm các mã lệnh ASP đó là khi truy nhập vào một site dùng ASP ví dụ: http://dnstool.com/default.asp chúng ta không thể xem mã nguồn của trang này được. Sự thực những thông tin bạn xem trên browser đã được default.asp xử lý và trả về mã Html. Một ví dụ khác, nếu bạn thêm dòng <% Response.Write "Chuyên mục " & strName %> vào trang web của bạn (giả sử strName được gán bằng "Hack&Crack") thì khi chạy và xem mã nguồn bạn sẽ chỉ thấy dòng: Chuyên mục Hack&Crack.

Còn bây giờ chúng ta hãy mở một trình soạn thảo nào đó, Notepad chẳng hạn và viết những mã lệnh sau:

<HTML>
<HEAD>
<TITLE>ASP Script đây !</TITLE>
</HEAD>
<BODY>
<%Response.Write "He he !Xin chào ! "%>
<BR>Tôi là ASP Script !
</BODY>
</HTML>

Sau khi viết xong ghi file này tên là Test.asp và chạy, trên màn hình browser sẽ xuất hiện dòng " Tôi là ASP Script !". Trong ví dụ này ta dùng object Response của VBScript để đưa thông tin ra màn hình của user. Ví dụ trên chỉ là một minh họa rất thô sơ cho ASP, các bạn có thể viết các chương trình khác phức tạp hơn nhiều.

Sau đây chúng ta sẽ so sánh ASP với một số ngôn ngữ lập trình máy chủ khác như Perl, Python... Theo quan điểm riêng thì mình thích ASP vì rất dễ học, mã lệnh tương tự như Visual Basic (VB), dễ thực hành thí nghiệm. So với học Perl thì chúng ta mất ít thời gian hơn nhiều để học ASP. Có nhiều chuyên gia cho rằng ASP có độ bảo mật kém hơn CGI, theo mình có thể lí giải điều này là do ASP chạy trên các server với hệ điều hành mạng của Microsoft, mà Microsoft vẫn có tiền lệ là tính bảo mật hệ thống kém (hình như các hacker rất ghét MS thì phải hà hà), không thể bì được với UNIX. Nhưng mặt khác ASP lại có tính năng truy cập cơ sở dữ liệu tuyệt vời, nhất là đối với các SQL server, nếu so với CGI thì ASP hơn hẳn mặt này. Thêm vào đó một trong những ưu điểm lớn nhất của ASP là nó đã mở ra một cuộc cách mạng về phát triển ứng dụng nhanh trên nền Web (RAD), cho phép người thiết kế có thể phát triển các trang Web có khả năng thực thi một cách nhanh chóng và trực quan mà không cần phải viết các chương trình CGI phức tạp nữa. Ði theo xu hướng này ngày nay có một số các ngôn ngữ mới được đánh giá còn hay hơn ASP nhiều như là ColdFusion, Php3 (trên Unix) và chạy ổn định hơn rất nhiều, còn tính năng truy nhập cơ sở dữ liệu cũng hay không kém ASP. ASP đúng theo tên của nó là Active Server Pages có nghĩa là hoàn toàn thực thi trên server, chứ không trên client, do đó tất cả các lỗi xẩy ra chỉ có thể bởi server hoặc trong trang Web có chứa các script client (JavaScript, VBscript) mà chỉ một số loại client nhất định mới hiểu được…

Trong phạm vi một bài viết mình không thể nêu đầy đủ mọi mặt của một hệ thống như ASP, hy vọng sau bài viết của mình các bạn sẽ tìm hiểu thêm nhiều điều liên quan tới ASP để tích luỹ kinh nghiệm cho bản thân. Dưới đây là một số tài liệu tham khảo rất tốt về ASP mà các bạn có thể tìm đọc.
---MSDN Library / Active Server Pages & VisualBasic Scripting
---http://www.developer.com
---http://www.activeserverpages.com
---http://www.zdnet.com/developer/
---http://www.builder.com
Không chỉ chú trọng đến quản lý người dùng mà quản lý File cũng góp phần rất ớn vào bảo mật hệ thống. Quản lí file trong Windows NT được thực hiện bằng File Manage. Trải qua nhiều phiên bản File Manage đã có được rât nhiều cải tiến đáng kể. Thay đổi quan trọng nhất trong Windows NT File Manager là File Manager bây giờ là ứng dụng 32 bit và File Manager hiện đã hỗ trợ hệ thống file cài đặt được (chẳng hạn như NTFS).

Windows NT File Manager đã được cải tiến và một số chức năng hiện nay là đa luồng. Chẳng hạn tìm kiếm file và lên khuôn dạng đĩa mềm hiện có thể được thực hiện ngầm trong khi thực hiện các công việc khác trong File Manager.

Dưới Properties, hiện đã có nút Open By. Nút này chỉ xuất hiện dưới File Properties khi file đã được chọn trước khi File Properties được chọn. Nó sẽ mở một hộp đối thoại gồm total opens, total locks, ai có file mở, và đặt tuỳ chọn.

File Associate hiện bao gồm cả các chức năng được cung cấp cho Windows 3.1 bằng chương trình REGEDIT trong Windows 3.1. Các thiết lập của nó được lưu trong Windows NT Registry dưới HKEY_CLASSES_ROOT.

Menu Disk
- Không còn tuỳ chọn để tạo một system disk nữa.
- Connect và Disconnect là các mục riêng biệt trên menu.
- Share As - cho phép chia sẻ các thư mục.
- Stop Sharing - ngừng chia sẻ thư mục.

Menu Options
- Cá thể hoá thanh công cụ
- Thanh công cụ có thể được cho phép hoặc không cho phép
- Drivebar có thể được cho phép hoặc không cho phép
- Open New Windows on Connect - khi nối với ổ mạng, tuỳ chọn này tạo một cửa sổ để hiển thị nội dung của ổ.

Menu Window
Tile Horizontally - sắp xếp các cửa sổ ổ đĩa đang mở theo chiều ngang
Tile Vertically - sắp xếp các cửa sổ ổ đĩa theo chiều dọc

Menu Security
- Permissions - cho phép thiết lập quyền trên thư mục và file
- Auditing - cho phép kiểm soát được thiết lập trên thư mục và file
- Owner - cho phép quyền chủ sở hữu được lấy ra từ thư mục và file

The new Toolbar
Thanh công cụ của Windows NT File Manager rất giống Windows for Workgroup File Manager. Thanh công cụ này có thể cấu hình hoá được, tuy nhiên sẽ không bao bọc đối với những nút không đặt vừa màn hình. Vì vậy nếu có quá nhiều mục trong thanh công cụ thì chúng sẽ bị nằm ngoài màn hình. Có thể sẽ có vấn đề nếu người dùng chuyển từ driver màn hình phân giải cao (1024x768) sang độ phân giải thấp hơn (640x480) bởi vì họ sẽ không thể cho tất cả các mục vào trong màn hình.
Khác biệt chính giữa thanh công cụ mặc định trong Windows NT và Windows for Workgroups là trong Windows NT có nút an toàn.

Windows NT hỗ trợ nhiều hệ thống file tích cực có thể được nạp về như bất kỳ driver nào. Điều này khiến Windows NT có khả năng hỗ trợ bất cứ hệ thống file nào chừng nào một driver được phát triển cho nó.
Theo mặc định Windows NT hỗ trợ những hệ thống file sau:
- Hệ thống tệp MS-DOS FAT
- Hệ thống tệp OS/2 HPFS
Hệ thống tệp Windows NT NTFS mới
- Hệ thống tệp CD
- Hệ thống tệp Named Pipe
- Hệ thống tệp Mailslot
Để phục vụ mục đích thảo luận, chúng ta sẽ chỉ tập trung trên ba hệ thống tệp được sử dụng trong các ổ đĩa cứng đọc/ghi: FAT, HPFS và NTFS.

--Chọn hệ thống tệp
NTFS là hệ thống tệp thông thường, tuy nhiên trong một số trường hợp cũng có thể cần sử dụng các hệ thống tệp khác. Chẳng hạn, nếu hệ thống chạy một hệ điều hành khác thì ít nhất một phân vùng-partition phải được lên khuôn dạng theo cách của hệ điều hành đó. Trong trường hợp MS-DOS, thì partition thứ nhất phải được lên khuôn dạng bằng hệ thống tệp FAT. Hệ thống tệp FAT có một lợi điểm là nó được sử dụng rộng rãi và được nhiều hỗ trợ của các hệ điều hành khác.
Để xác định chính xác sử dụng hệ thống file nào, cần thiết phải có một số hiểu biết về mỗi hệ thống file đang được hỗ trợ.

Btrees (Bcây) là cấu trúc cây nhị phân với một gốc và một số các nốt. Dữ liệu dược tổ chức theo kiểu logic sao cho dễ duyệt. Gốc chứa một ánh xạ tới phần còn lại của cấu trúc và các nốt chứa dữ liệu.

--Hỗ trợ POSI
NTFS tuân thủ nhất POSIX.1 của các hệ thống file được hỗ trợ vì nó hỗ trợ các yêu cầu sau của POSIX.1:
- Đặt tên phân biệt chữ hoa chữ thường. Trong POSIX, README.TXT, Readme.txt, và readme.txt là các file khác nhau
- Tem thời gian bổ sung. Tem thời gian bổ sung cung cấp thời gian khi file được truy nhập lần cuối cùng.
- Liên kết cứng. Một liên kết cứng là khi hai tên file khác nhau, có thể nằm ở các thư mục khác nhau trỏ tới cùng một dữ liệu.

--Loại bỏ các hạn chế

Trước hết là NTFS đã tăng đáng kể kích thước của các file và các volume sao cho chúng có thể lớn tới 264. NTFS cũng quay về khái niệm cluster của FAT để tránh vấn đề của HPFS đối với kích thước sector cố định. Điều này được thực hiện bởi vì Windows NT là một hệ điều hành khả chuyển và hỗ trợ các công nghệ đĩa khác nhau. Do vậy, 512 byte một sector dường như được coi là chưa chắc đã phải luôn luôn khớp với các định vị. Điều đó được thực hiện bởi cho phép cluster được định nghĩa như tích của kích thước định vị tự nhiên của phần cứng. Cuối cùng, trong NTFS tất cả các tên file là Unicode và tên kiểu 8.3 được giữ cùng với tên dài.

--Ưu điểm của NTFS

NTFS là giải pháp tốt nhất khi sử dụng các volume kích thước 400 MB hoặc hơn. Lý do là vì hiệu năng hệ thống không giảm đi trong NTFS như là trong FAT khi kích thước volume tăng lên.
Tính có thể phục hồi được thiết kế trong NTFS sao cho người dùng không bao giờ phải chạy bất kỳ một kiểu tiện ích sửa đĩa nào trong một partition NTFS.

--Nhược điểm của NTFS

Nói chung không NTFS không được khuyến cáo sử dụng đối với các volume có kích thước nhỏ hơn 400 MB vì không gian lưu chuyển trong NTFS thường lớn. Không gian lưu chuyển này dưới dạng của các file hệ thống NTFS thông thường sử dụng ít nhất 4 MB ổ đĩa trong một partition có kích thước 100 MB.
Đồng thời, không có mã hoá file trong NTFS. Do đó, ai đó có thể khởi động dưới MS-DOS, hoặc hệ điều hành khác và sử dụng các tiện ích soạn thảo đĩa mức thấp để nhìn dữ liệu được lưu trong volume của NTFS.
Không thể lên khuôn dạng cho một đĩa mềm trong hệ thống file NTFS, Windows NT lên khuôn dạng tất cả các đĩa mềm với hệ thống file FAT. Lý do là bởi vì thông tin lưu chuyển trong NTFS sẽ không đặt vừa trong một đĩa mềm.

--Quy ước đặt tên của NTFS

- Tên file và thư mục có thể dài đến 255 ký tự, và có thể gồm bất cứ mở rộng nào.
- Các tên vẫn duy trì chữ hoa chữ thường, nhưng không phân biệt chữ hoa chữ thường. NTFS không phân biệt tên file dựa trên chữ hoa chữ thường.
- Tên có thể chứa bất kỳ ký tự nào ngoài các ký tự: ? " / \ < > * | :
Chú ý Hiện nay, từ dòng lệnh chỉ có tên file dài 253 ký tự có thể được tạo.

--Các tên file phân biệt chữ hoa chữ thường được quản lý như thế nào

Như đã nói ở trên một trong những yêu cầu của POSIX được NTFS hỗ trợ là cách đặt tên phân biệt chữ hoa chữ thường. NTFS, một phân hệ POSIX và các ứng dụng POSIX không có vấn đề gì trong việc sử dụng tên file phân biệt chữ hoa chữ thường. Tuy nhiên, WOW, VDM, OS/2 và Win32 hiện không hỗ trợ các đặt tên phân biệt chữ hoa chữ thường. Do đó, bất kỳ ứng dụng nào chạy trong bất kỳ môi trường nào trong số này có thể nhầm lẫn vì các file sử dụng các tên phân biệt chữ hoa chữ thường.
Giả sử có một thư mục trên một voulme NTFS, trong đó có ba file chẳng hạn như: readme.txt, Readme.txt và README.TXT - CMD.EXE và File Manager sẽ hiển thị cả ba file. Tuy nhiên khi thao tác các file này thông qua dấu nhắc dòng lệnh Windows NT hoặc File Manager các file sẽ đụng độ với nhau. Giả dụ copy những file này về thư mục gốc, nó sẽ copy toàn bộ cả ba file, nhưng chúng sẽ copy lên trên mỗi file khác và sẽ có một file readme.txt trong thư mục gốc với nội dung của file thứ ba được copy.
Windows NT Notepad nhìn thấy cả ba file và hiển thị chúng theo đúng chữ hoa chữ thường trong hộp đối thoại mở file. Tuy nhiên, dù file nào được mở, Notepad sẽ luôn luôn mở và ghi vào readme.txt và hiển thị README.TXT trong thanh tên. EDIT.COM của MS-DOS 5.0 cũng hoạt động như Notepad.
Windows NT có cả hai tuỳ chọn tên phân biệt và không phân biệt chữ hoa chữ thường. Mặc dù NTFS hỗ trợ tên phân biệt chữ hoa chữ thường, hiện nay chỉ có phân hệ POSIX là sử dụng tên phân biệc chữ hoa chữ thường.

--Cách quản lý sự khác nhau trong cách đặt tên file

Cả HPFS và NTFS đều tương thích với FAT, tức là đều chấp nhận và sử dụng các tên file chuẩn FAT 8.3, nhưng chúng cũng đều hỗ trợ tên file dài. Tuy nhiên, chỉ có NTFS giữ tên file 8.3 cùng với tên file dài (được tự động). Tên file 8.3 của NTFS có thể được thể hiện trong File Manager (chi tiết-File Details) hay bằng dòng lệnh ”DIR/X"
Chú ý: Vì HPFS chỉ có tên file dài và FAT chỉ chứa tên file 8.3, nên lệnh DIR /X sẽ có cột trắng ở cột thứ 2 của tên file nếu phân vùng của nó là HPFShay FAT.
NTFS cho phép các ứng dụng MS-DOS và Windows 3.x nhận biết hay nạp các file thậm trí cả tên file dài NTFS. Thêm nữa ứng dụng MS-DOS/Windows 3.x cất file trên volume NTFS, cả tên file 8.3 và NTFS được chấp nhận.
Chú ý: Khi cất file từ ứng dụng MS-DOS/ Windows 3.x trên volume NTFS, nếu ứng dụng lưu nó ra file tạm, xoá file ban đầu, đổi tên file tạm thành file ban đầu, TÊN FILE DÀI ĐƯỢC PHÉP! Hơn nữa các quyền trên file này cũng được đảm bảo trên file mới.
Khi sử dụng tên file dài cho các biểu tượng trong Program Manager, nếu có dấu trắng trong đường dẫn thì phải đặt đường dẫn trong dấu nháy kép "". Ví dụ Word for Windows trong thư mục D:\Word for Windows, thì dòng Command Line là: "D:\Word for Windows\winword.exe".
COPY, XCOPY, và tên file dài
Ngầm định COPY XCOPY sao chép file với tên dài của nó khi sao tên file dài từ NTFS hay HPFS sang FAT sẽ có lỗi:

The filename, directory name, or volume label syntax is incorrect.
và lệnh này sai khi gặp phải tên file dài.

Có thể dùng COPY/XCOPY, từ phân vùng NTFS sang FAT với thông số mới /n. Thông số này cho COPY/XCOPY sử dụng tên file 8.3 NTFS sinh ra.

Tên file NTFS 8.3 được sinh ra thế nào ?
NTFS sinh ra tên file NTFS 8.3 theo cách:
- Bỏ các ký tự trắng.
- Các dấu chấm được loại trừ dấu chấm cuối ở tên file mà nó có một ký tự tiếp theo. NTFS hiểu dấu chấm cuối và ba ký tự tiếp theo là phần mở rộng của tên file.
- Thay tất cả các ký tự trong DOS không hợp cách bởi dấu gạch dưới (_).
- Gộp tên file tới 6 ký tự (không có phần mở rộng), với ký tự (~), và số tuần tự để phân biệt duy nhất. Các số đơn được thử đầu tiên. Nếu xung đột thì số có hai chữ số được thử. Trong quá trình so sánh tên file, nó cũng xác định được phần mở rộng tên file.
- Nối phần mở rộng với 3 ký tự.
File System Drivers và Registry Entries
Mỗi file trong 3 hệ thống file đều được tạo từ các phần sau:
- Trình điều khiển hệ thông file (File System Driver)
- Đó chính là một phần của hệ thống file là trình điều khiển hệ thống file trong hệ thống . Các trình điều khiển hệ thống file có thể được cấu hình trong Control Panel ở phần Devices, ngầm định giá trị khởi động (startup) là Disabled. Vùng cho File System Drivers có thể thấy trong:

\HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Services
\<driver name minus the extension>

- Trình xác nhận hệ thống file (File System Recognizer)
Là một phần trong hệ thống file để nhận biết xemmột hệ thống file có cần thiết phải được nạp trên hệ thống hay không. Khi một ổ đầu tiên được truy nhập, nếu trình xác nhận hệ thống file đang chạy, trình xác nhận sẽ khởi động hệ thống file tương ứng và sau đó nó tự kết thúc (chết). Tương tự nó cũng có thể được cấu hình trong Control Panel Devices và có giá trị ngầm định khởi động là System. Vùng cho File System Recognizers có thể thấy trong:

\HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Services
\<recognizer name minus the extension>

- Thư viện liên kết động tiện ích hệ thống file(File System Utility Dynamic Link Library-DLL)
Là một phần của hệ thống file chứa các thực thể (entry) đặc tả hệ thống file cho các tiện ích như CHKDSK và FORMAT. Để cho hệ thống file được cài đặt mới làm việc với những tiện ích này thì tiện ích hệ thống file DLL cần được cung cấp.
Loại phân vùng FAT HPFS NTFS
File System Driver FASTFAT.SYS PINBALL.SYS NTFS.SYS
File System FAT_REC.SYS HPFS_REC.SYS NTFS_REC.SYS
Recognizer
File System UFAT.DLL UHPFS.DLL UNTFS.DLL
Utility DLL

Tất cả các file hệ thống file có thể tìm trong thư mục con \<winnt root>\System32.

Về bảo mật trên các hệ thống thì việc quản lý người dùng một cách khoa học là một phần rất quan trọng. Trong Windows NT chức năng quản lý người dùng cũng có một số cải tiến đáng kể.

*************Account người dùng và nhóm trong Windows NT *************

Một account người dùng bao gồm thông tin về một người dùng như:
- Tên người dùng
- Tên đầy đủ
- Mật khẩu
- Quyền trên hệ thống
Để có thể truy nhập hệ thống Windows NT bạn phải cần ít nhất một account. Một account gán cho một người dùng nhất định một tập các quyền, định nghĩa cách thức họ có thể sử dụng hệ thống.
Một nhóm là một tên, tương tự với tên người dùng hoặc account người dùng, có thể được sử dụng để tham chiếu tới nhiều người dùng. Mục đích là để làm thuận tiện việc cung cấp và kiểm soát truy cập tới nhiều người dùng cùng có một nhiệm vụ tương tự. Bằng cách đặt các người dùng vào một nhóm, bạn có thể dễ dàng cung cấp cho các người dùng trong nhóm đó cùng khả năng hoặc hạn chế nhất định. Nếu bạn cần thay đổi quyền gán cho các người dùng trong nhóm, bạn chỉ việc sửa đổi một account đó là group account. Rất nhanh và thuận tiện phải không.

*****************Nhóm cục bộ (local groups)***********************

Đối với Windows NT, chỉ một kiểu nhóm có thể được tạo và bảo trì đó là nhóm cục bộ. Một nhóm cục bộ chỉ có thể được cung cấp quyền trong hệ thống của nó. Tuy nhiên, nếu hệ thống lại là một phần của một domain thì nhóm cục bộ có thể chứa account của người dùng từ domain hoặc các domain được tin cậy bất kỳ.
Không thể gán quyền truy nhập tài nguyên trên \\workstation_1 cho một nhóm cục bộ định nghĩa trên \\server_2.
Trong một domain, khi một nhóm cục bộ định nghĩa trong PDC nó được sao chép tự động sang các BDC khi dữ liệu các accounts được nhân bản. Nó được xác định trong dữ liệu tất cả các domain controllers (bao gồm PDC, các BDCs) trong domain đó. Nhóm cục bộ được gán quyền tới các tài nguyên của bất cứ domain contronllers nào trong domain.
Trong một môi trường workgroup, một thành viên trong nhóm cục bộ chỉ có thể gồm một account người dùng từ dữ liệu account trong máy tính đó.
Một nhóm cục bộ trong Windows NT Workstation và Windows NT Server gồm :
- Các account người dùng của máy tính cục bộ
- Các người dùng và các nhóm tổng thể (global group) của domain máy tính cục bộ
- Các người dùng và các nhóm tổng thể từ các domains được thừa quyền (hay còn gọi là "tin cậy"-trusted) bởi domain cục bộ
Chú ý: Để dễ quản lý chúng ta sử dụng nhiều tới nhóm cục bộ

Các nhóm cục bộ bổ trợ thiết lập trước
Có một vài nhóm bổ trợ có sẵn trong các domain controllers Windows NT Server:
- Server Operators: Đảm trách cho mạng các domain controllers hoạt động. Các thành viên nhóm này có cùng quyền hạn như Administrator, ngoại trừ nó không thể quản lý bảo mật trong server. Nó chỉ có thể cho phép dùng chung hay bỏ dùng chung các tài nguyên của domain controllers, khoá hay mở khoá một domain controller, và tạo khuôn dạng (format) các đĩa của domain controllers. Nó cũng có quyền tại các domain controllers như sao lưu (back up) và lưu trữ tệp, shut down (tắt) một domain controller.
- Account Operators: Có thể quản lý các account nhóm hay người dùng của domain. Nó có thể tạo, xoá, sửa hầu hết các người dùng, nhóm tổng thể, và nhóm cục bộ. Nó không thể sửa các account người dùng dạng Administrator, hoặc các nhóm cục bộ như nhóm Administrators, Server Operators, Account Operators, Print Operstors, Backup Operators. Và nó cũng không thể gán quyền người dùng.
- Print Operators: Có thể chia xẻ hay ngừng chia xẻ các máy in, quản lý các máy tin trong domain controllers. Nó có thể truy nhập vào các domain controllers và tắt chúng.

******************Nhóm tổng thể (Global group)************************

Nếu một hệ thống Windows NT là một phần của một domain Advanced Server thì nhóm tổng thể của domain có thể được sử dụng trong hệ thống này. Nhóm tổng thể có thể được sử dụng tại tất cả các máy tính trong domain (các máy tính Windows NT, các Advanced Server, và các LAN Manager 2.x server). Nhóm tổng thể có thể trở thành thành viên (được cấp membership) trong các nhóm cục bộ và có thể được cấp quyền trong một hệ thống cụ thể.
Nhóm tổng thể có thể sử dụng một cách tổng thể , không bị giới hạn ở nơi dữ liệu chứa nó.
Một nhóm tổng thể có thể được tạo từ một thành viên trong nhóm cục bộ của bất cứ máy tính nào trong domain hay domain được tin cậy.
Chỉ nên sử dụng nhóm tổng thể khi các người dùng thành viên tương đương, ít tính quản trị trên tất cả các máy Windows NT.
Domain Windows NT Server chứa sẵn các nhóm tổng thể như:
- Domain Admins: Nhóm các account bạn muốn là Administrators, và account Administrator cũng nằm trong Domain Admin
- Domain Users: Các account trong domain
- Domain Guest: Các account cho "khách" (Guest)

Các nhóm tổng thể không có đặc quyền thừa kế. Nó nhận được uỷ quyền do là thành viên trong nhóm cục bộ. Ví dụ trong một domain controllers nhóm Domain Administrators không tự nó có quyền hạn. Nó nhận được quyền vì nó là thành viên trong nhóm cục bộ Administrators trong domain controllers. Đó là tại sao các thành viên trong Domain Administrators có khả năng quản trị domain. Tương tự các nhóm Domain Users là thành viên trong nhóm cục bộ Users, và nhóm Domain Guests là thành viên trong nhóm cục bộ Guests.

Chú ý: Dùng chương trình User Manager for Domains, từ menu User, chọn New Global Group để quản lý các tài nguyên.

Các chiến lược về sử dụng nhóm
Quán triệt cách tổng thể cho các người dùng và nhóm đó là gán các account người dùng của domain vào nhóm tổng thể của domain, đưa các nhóm tổng thể của domain làm thành viên của nhóm cục bộ, sau đó gán quyền và các tài nguyên cho nhóm cục bộ.
Chiến lược khi làm trong môi trường nhiều domain kết nối bởi quan hệ tin cậy-relationships, cũng với cách trên. Với các account domain của bạn, nhóm các người dùng vào nhóm tổng thể. Nhóm tổng thể này sau đó được gán thành thành viên trong nhóm cục bộ không phải của domain này mà domain tin cậy nó (trusting).

***********************Các account nhóm mặc định ************************

Có năm nhóm mặc định trong Windows NT - Users, Power Users, Administrators, Backup Operators, và Guests.

--Users

Bất kỳ ai sử dụng máy tính thường xuyên có thể có một account trong nhóm Users. Nhóm Users cung cấp cho người dùng quyền cần thiết để thao tác trên hệ thống như một người dùng cuối, chẳng hạn như chạy các ứng dụng và quản lý các file.
Một người dùng đăng ký làm việc vào một hệ thống Windows NT như một phần của nhóm Users có thể thực hiện những công việc sau:
- Chạy các ứng dụng.
- Quản lý các file.
- Tạo và quản lý các nhóm.
- Giữ một hồ sơ cá nhân.
- Nối với một máy tính thông qua mạng.

--Power Users

Nhóm Power User cung cấp cho người dùng khả năng thực hiện các chức năng quản trị hệ thống mà không cho phép người dùng hoàn toàn kiểm soát hệ thống.
Bổ sung thêm vào tất cả các quyền được cung cấp cho nhóm Users, một người dùng login vào Windows NT nhưng thành viên của nhóm Power User có thể thực hiện các công việc sau đây:
- Chia sẻ các thư mục trên mạng.
- Cài đặt, chia sẻ và quản lý máy in.
- Tạo các account người dùng.
- Sửa đổi và xoá account người dùng mà họ đã tạo.
- Thiết lập đồng hồ bên trong máy tính.

--Administrators

Nhóm Administrators cung cấp cho người dùng khả năng kiểm soát toàn bộ hệ thống.
Bổ sung thêm vào tất cả các quyền cung cấp cho Power Users, một người dùng login vào Windows NT như là thành viên của nhóm Administrators có thể thực hiện các công việc sau đây:
- Sửa đổi, và xoá account người dùng và nhóm được tạo bởi những người khác.
- Gán account người dùng cho các nhóm mặc định.
- Ghi đè lên khoá trạm làm việc.
- Đặt khuôn dạng hoặc đặt partition cho một đĩa cứng.
- Gán quyền người dùng.
- Kiểm soát ghi nhật ký kiểm tra hệ thống.
- Lưu trữ và khôi phục toàn bộ hệ thống.
- Gỡ rối hệ thống.
- Lấy quyền chủ sở hữu của các file và các đối tượng khác.

--Thao tác viên dự phòng (Backup Operators)

Nhóm Backup Operators cho phép người dùng lưu trữ và khôi phục các file trên hệ thống.
Bất kỳ người sử dụng nào cũng có thể lưu trữ và khôi phục các file mà họ có quyền thâm nhập tương ứng. Nhóm Backup Operators phủ lên các quyền đó và cho phép người dùng có thể lưu trữ bất kỳ và tất cả các file trên đĩa, không xét đến quyền thâm nhập file.

--Guest

Trong quá trình cài đặt, Windows NT thiết lập account Guest mặc định. Account này cho phép bất kỳ ai không co account trong hệ thống khả năng login vào máy tính học nối vào thông qua mạng.
Cần thiết phải có account Guest vì nhiều kiểu phần mềm mạng truy nhập máy tính thông qua account Guest.
Bất kỳ ai trên một mạng có thể nối tới các tài nguyên chia sẻ trên máy tính của bạn thông qua account Guest, do vậy bạn cần gán quyền người dùng trên các tài nguyên chia sẻ của bạn để kiểm soát cách người dùng có thể thâm nhập các tài nguyên đó.
Để một người dùng nào truy nhập vào mạng như một người dùng với account Guest thì đưa người dùng đó vào nhóm Guest.

*************************Thiết lập các nhóm *****************************

-- Tạo các nhóm cục bộ (Local Groups)

Đầu tiên bạn phải tạo một nhóm cục bộ trước khi gán quyền tại trạm làm việc của nó. Những quyền này có thể cho phép chẳng hạn như truy nhập tới các file hoặc máy in như được thiết lập trên File Manager (Windows Exploror đối với Windows NT 4.0)và Print Manager một cách tương ứng.

--Để thêm một nhóm cục bộ

- Chọn một hoặc nhiều account người dùng.
- Từ menu User, chọn New Local Group.

--Bổ sung các thành viên mới

-Từ hộp hội thoại New Local Group, chọn nút Add. Hộp hội thoại Add liệt kê tất cả các account của người sử dụng trong máy tính.
-Tuỳ ý chọn một tên domain trong hộp List Names In. Chọn domain xong, account người sử dụng và nhóm tổng thể (global groups) của domain sẽ được liệt kê.
-Chọn một vài account người dùng và nhóm global từ hộp Name.

--Chép một nhóm tổng thể (global groups)

-Chọn một nhóm trong danh sách các nhóm.
-Chọn menu User, chọn Copy.
Trong hộp hội thoại New Local Group, tên nhóm có màu trắng. Thông tin mô tả và các account các thành viên nhóm được sao chép.

--Xoá nhóm

Xoá nhóm cục bộ chỉ có nghĩa là bỏ nhóm cục bộ đó thôi — Nó không xoá bất kỳ account người dùng hay nhóm tổng thể mà nó là thành viên của nhóm cục bộ bị xoá. Khi xoá một nhóm sẽ có một cảnh báo chỉ cho người sử dụng rằng nếu tạo nhóm mới có cùng tên với tên nhóm xoá sẽ không phục hồi các quyền hạn trước kia.
Khi một nhóm được xoá và bạn lại tạo một nhóm mới có tên giống tên nhóm vừa xoá, nhóm mới sẽ không có bất cứ quyền truy nhập gì như lúc trước đối với nhóm bị xoá vì nhóm mới sẽ có một SID. Tất cả các quyền, các quyền gán và các thành viên của nhóm mới cần được thiết lập theo cách thức thông thường.



******************Account người dùng mặc định ***********************

Ba account mặc định, Administrator, Guest và một người dùng khởi đầu được tạo khi Windows NT được cài đặt lần đầu tiên. Mỗi account mặc định có một số quyền hạn nhất định trên hệ thống.

--Administrator

Account Administrator được tạo trong quá trình cài đặt hệ thống. Yêu cầu một mật khẩu ban đầu khi cài đặt. Đặc điểm của account này là có thể đổi tên nhưng không thể xoá được.
Administrator có quyền cao nhất trên toàn bộ hoạt động và an toàn của hệ thống. Administrator thậm chí có quyền kiểm soát các file của các người dùng khác. Bất kỳ ai biết tên sử dụng và mật khẩu của Administrator có quyền cao nhất về quản trị toàn bộ hệ thống .
Nếu mật khẩu bị quên hoặc không biết thì cách duy nhất là cài đặt lại Windows NT hoặc sử dụng sử dụng đĩa Sửa chữa Khẩn cấp (Emergency Repair disk) được tạo trong quá trình cài đặt. Để tránh tình trạng account Administrator trở nên không hữu ích hoặc không tích cực, các người dùng bổ sung có thể được gán các quyền của Administrator.
Một người dùng đăng ký sử dụng dưới account Administrator (hoặc một account thuộc về nhóm Administrator) có thể thực hiện các công việc như mình đã nói ở trên.

--Người sử dụng ban đầu

Trong quá trình cài đặt một account người dùng ban đầu được tạo cho cá nhân cài đặt Windows NT. Account này cũng được cấp quyền như Administrator. Tên của account này được thiết lập trong quá trình cài đặt.

--Guest

Account Guest được sử dụng một cách mặc định cho bất kỳ ai sử dụng mà không có account người dùng hoặc Administrator. Account Guest có rất bị hạn chế trong việc truy nhập vào tài nguyên của máy tính.
Guest bị từ chối truy nhập vào bất cứ một thư mục hoặc file nào được sử dụng cá nhân. Người quản trị có trách nhiệm thiết lập bảo mật thư mục và file để hạn chế Guest không được truy nhập các thư mục và file riêng trên hệ thống. Nếu các quyền của Guest được cho phép trên hệ thống, người quản trị cần thiết lập một thư mục chung để lưu các file mà Guest có thể truy nhập được.
Trong một số trường hợp, máy chủ cần được giới hạn triệt để sao cho chỉ có một số người dùng nhất định có thể truy nhập vào đó. Để hạn chế Guest ngay cả trong việc sử dụng các tài nguyên hạn chế bạn có thể hoặc là không cho phép (disable) account Guest hoặc gán một mật khẩu cho account Guest.



******************** Thiết lập các account người dùng *********************

Tiện ích User Manager trong nhóm Adminitrative Tools được sử dụng để thiết lập các account người dùng.

--Tạo account người dùng

Từ menu User, chọn New User.
Trong box Username, gõ một tên người dùng duy nhất trong hệ thống, chiều dài tối đa 20 ký tự.
- Trong box Full Name, gõ tên hoàn chỉnh của người dùng.
- Nếu cần, nhập dữ liệu vào hộp mô tả.
- Gõ Password và Confirm Password giống nhau. Mật khẩu tối đa là 14 ký tự, phân biệt chữ hoa chữ thường, trong khi tên thì không.
- Lựa chọn tuỳ chọn.
- Để quản trị thuộc tính của người dùng đi kèm với các nút bấm (đặt tại đáy của hộp hội thoại), lựa chọn nút thuộc tính, hoàn thiện hộp đối thoại cho thuộc tính đó và chọn nút OK.
- Chọn nút OK để bổ sung account.

--Các tuỳ chọn New User

Các tuỳ chọn New User có thể được lựa chọn là:
- Người sử dụng phải thay đổi mật khẩu tại lần đăng ký sử dụng tiếp theo
- Người dùng không thể đổi mật khẩu
- Account bị không cho phép
- Mật khẩu không bao giờ quá hạn
Các account không được phép không thể được sử dụng. Các account không cho phép thông thường được sử dụng như một cái khung để copy khi tạo account mới hoặc được sử dụng để tạo một account sẽ được kích hoạt về sau.

--Đổi tên account người dùng

Có thể đổi tên bất kỳ account người dùng nào, bao gồm các account mặc định. Tuy nhiên, chỉ có một account có thể đổi tên một lúc. Khi một account bị đổi tên, nó vẫn duy trì tất cả các thuộc tính còn lại. Điều duy nhất thay đổi là tên của account.

--Lập bản sao account người dùng

Có thể copy một account người dùng đã được cấu hình tới một account mới bằng cách lựa chọn account cần copy và chọn User, Copy.
Các mục được copy trực tiếp từ một account người dùng hiện tại tới một account người dùng mới là mô tả và nhóm. Các hồ sơ được copy có điều kiện.
Windows NT tự động xoá các mục Username, Full Name, Password, Confirm Password, User Cannot Change Password, Account Disabled, và Password Never Expires. Nó cũng chọn mục "User Must Change Password At Next Logon".

--Xoá account người dùng

Một khi một account người dùng đã bị xoá nó không thể được khôi phục lại bởi vì định danh duy nhâts cho account đó không còn tồn tại nữa. Một account mới được tạo với cùng tên sẽ có một định danh khác và như vậy sẽ không thể thâm nhập bất kỳ mục nào mà account cũ có quyền thâm nhập. Account mới phải có cùng quyền, thành viên nhóm và các thuộc tính khác được thiết lập cho nó để nó lại như cũ.
Để xoá một hay nhiều account người dùng:
- Chọn một hoặc nhiều account người dùng.Từ menu User chọn Delete.
- Nếu một thông báo khẳng định xuất hiện, chọn nút OK.
- Khi thông báo Delete xuất hiện, chọn Yes.
Nếu nhiều account người dùng được lựa chọn, chọn Yes To All.

--Không cho phép account người dùng

Vì các account mới được tạo cùng tên với một account đã từng tồn tại từ trước có định danh khác account cũ nên nói chung account người dùng nên được không cho phép trong một thời gian trước khi bị xoá để đảm bảo rằng account thật sự cần thiết bị xoá. Không cho phép một account ngăn chặn việc logon vào Windows NT, tất cả các thông tin account vẫn giữ nguyên không thay đổi. Để không cho phép một hoặc nhiều account:
- Chọn account cần không cho phép.Từ menu User, chọn Properties.
- Chọn hộp Account Disabled.
- Nhấn OK.

**************Thiết lập Hồ sơ Môi trường Người dùng ********************

--Hồ sơ người dùng

Windows NT lưu trữ một bản lưu tất cả các thông tin cấu hình của desktop của người dùng trong một hồ sơ người dùng cục bộ. Thông tin hồ sơ được lưu trữ khi một người dùng thoát ra và được tự động khôi phục lại khi người dùng trở lại làm việc vào trạm làm việc. Các thiết lập sau được lưu trữ trong một hồ sơ người dùng:
- Program Manager (Desktop đối với Windows NT 4.0 )
- File Manager (Windows Explorer đối với Windows NT 4.0)
- Dòng lệnh MS-DOS
- Print Manager
- Các tuỳ chọn Control Panel
- Các tuỳ chọn Accessory
- Các ứng dụng Windows NT của tổ chức thứ ba.
- Các bookmark của On-line Help
Các hồ sơ đảm bảo rằng mỗi người dùng luôn luôn có sở thích riêng của mình trên trạm làm việc khi họ đăng ký làm việc vào Windows NT hoặc Advanced Server. Các hồ sơ không ảnh hưởng gì đối với các người dùng MS-DOS và Windows for Workgroups.
Các trạm làm việc Windows NT Workgroup tự động tạo các hồ sơ dựa trên cục bộ (local-based). Khi một người dùng thoát ra, thông tin hồ sơ được lưu trữ trong đăng ký (registry). Khi người dùng đó đăng ký làm việc lại, trạm làm việc sẽ nhận ra người dùng và nạp hồ sơ tương ứng. Các hồ sơ cục bộ phụ thuộc vào máy tính: các thiết lập dựa trên một máy tính là không áp dụng được khi người dùng đăng ký làm việc tại một trạm làm việc khác.
Đối với trạm làm việc Windows NT domain và Advanced Servers, các hồ sơ có thể được lưu trữ trong file riêng biệt và như vậy được nạp tới bất kỳ máy tính nào thuộc domain mà người dùng đăng ký làm việc. Điều đó gọi là các hồ sơ dựa trên máy chủ (server-based).

--Các kiểu hồ sơ

Có một vài hồ sơ trong Windows NT Server

--Các hồ sơ ngầm định-Default Profiles

Cấu hình cho hiển thị (màu và màn hình nền) khi chưa có người dùng vào mạng Windows Windows NT. User Default là cấu hình ngầm định để sử dụng lần đầu vào máy Windows Windows NT khi chưa có hồ sơ Server-base.

--Hồ sơ cục bộ-Local Profiles

Được lưu cục bộ trong máy Windows NT cho người dùng cụ thể. Nó được tạo khi người dùng vào lần đầu. Nó được sử dụng khi người dùng không có hồ sơ Server-base.

--Hồ sơ về Server (Server-based Profiles)

Cũng giống như hồ sơ cục bộ nó là một file cụ thể được nạp khi người dùng vào Windows Windows NT được tạo cho người dùng đó. Môi trường bao gồm các thiết lập cụ thể như : nhóm, màu màn hình, liên kết mạng, chuột...
Hồ sơ này có hai kiểu : Personal và Mandatory đuôi file tương ứng là USR, MAN

--Cách tạo các hồ sơ cho Server

Dùng User Profile Editor.

--Cấu hình môi trường

Tạo hồ sơ Server-base, sau đó tạo các thiết lập cho máy của mình.

--Thiết lập các thông số trong User Profile Editor

Dùng User Profile Editor.

--Cất hồ sơ-Profile

Bằng File/Save As trong User Profile Editor.

--Gán các hồ sơ cho Server

Tạo và cất các hồ sơ sau đó gán nó cho các người dùng tương ứng. Trong User Manager for Domain chọn Properties của người dùng. Chỉ tên hồ sơ server-based vào User Profile Path.

--Logon Scripts

Khi một người dùng đăng ký sử dụng vào Windows NT, một logon script có thể chạy tự động. Một logon script lập cấu hình môi trường làm việc cho mỗi người dùng hoặc một nhóm các người dùng. Hồ sơ người dùng có thể thực hiện tất cả những gì logon script có thể làm và hơn thế. Tuy nhiên, logon script vẫn có ích do:
- Dành cho những người dùng sử dụng trạm làm việc DOS và OS/2.
- Dễ dàng quản trị mạng cho một nhóm người dùng.
- Nâng cấp mạng LAN Managers hiện thời đang sử dụng logon script.
Một logon script là một tệp lô thông thường (phần mở rộng .BAT hoặc .CMD). Nếu bạn không chỉ ra phần mở rộng cho logon script, phần mở rộng chính xác sẽ được lựa chọn dựa trên trạm làm việc mà người sử dụng login vào (DOS-.BAT, OS/2 và NT-.CMD). Một file có thể thực hiện được có thể cũng được sử dụng nhưng cần nhớ sử dụng đúng phiên bản của chương trình nếu bạn login tại các máy tính có kiểu CPU khác nhau (tức là x86, Mips, Alpha). Tham số hệ thống %PROCESSOR% có thể được sử dụng để lựa chọn file thực hiện được thích hợp trong logon script.
Các tham số môi trường khác có thể được sử dụng trong logon script là %HOMEDRIVE%, %HOMEPATH%, %HOMESHARE%, %OS%, %USERDOMAIN%, %USER NAME%.

Khi chỉ ra tên logon script, bạn không cần chỉ ra một đường dẫn. Windows NT tự động kết hợp tên bạn chỉ ra với đường dẫn logon script trong tuỳ chọn Control Panel Servers của trạm làm việc.
- Logon script cần được đặt trong hoặc là thư mục được chỉ ra trong tuỳ chọn Control Panel Servers, hoặc trong thư mục sau đây:
\WINNT (đối với hệ thống Windows NT)
\WINNT\SYSTEM32\REPL\IMPORT\SCRIPTS (đối với Windows NT Advanced Servers)
- Logon script phải tồn tại trong máy tính mà người dùng login. Trong một domain nơi người dùng có thể login nhiều máy chủ, dịch vụ phân phát thư mục (directory replicator service) có thể được sử dụng để giữ các logon script đồng bộ giữa các máy chủ. Đó là nguyên nhân tại sao thư mục cho các logon script của Advanced Server nằm dưới thư mục phân phát mặc định (\WINNT\SYSTEM32\REPL).

--Thư mục cội nguồn Home Directories

Thư mục cội nguồn chứa nhiều hoặc tất cả các file và chương trình cho một người dùng nhất định. Mặc định, Windows NT truy nhập thư mục cội nguồn bất kỳ khi nào một lệnh File Open hoặc Save As được chọn.
Đối với các trạm làm việc Windows NT, thư mục cội nguồn thông thường được lưu trữ cục bộ. Tuy nhiên, bạn có thể chỉ ra thư mục cội nguồn định vị trên một máy chủ.
- Nếu lưu trữ một thư mục cội nguồn một cách cục bộ cho một người dùng có tên là JANEDOE, ta chỉ ra một đường dẫn tuyệt đối chẳng hạn như C:\PROFILES\JANEDOE.
- Nếu lưu trữ một thư mục cội nguồn trên một máy chủ gọi là CORP cho người dùng có tên là JOHNDOE, ta chỉ ra một máy chủ đầy đủ có đường dẫn, chẳng hạn \\CORP\USERS\JOHNDOE.

Nếu bạn muốn thư mục cội nguồn tương đương với tên người dùng đối với account, bạn hãy chỉ ra %USERNAME% cho thư mục cuối cùng trong đường dẫn.
Trong hầu hết các trường hợp, User Manager tự động tạo thư mục cội nguồn bạn chỉ ra trong hộp đối thoại User Environment Profile. Nếu nó không thể (thông thường bởi vì một tên file vi phạm quy tắc 8.3 được chỉ ra trong thư mục cội nguồn tồn tại trong một FAT partition), một thông báo sẽ xuất hiện để hướng dẫn bạn tạo bằng tay thư mục.

Quản lý các chính sách bảo mật

Sau đây là các chính sách bảo mật được quản lý bởi User Manager:
- Chính sách về Account - Điều khiển cách thức account người dùng sử dụng mật khẩu
- Chính sách về Quyền người dùng (User Rights) - Điều khiển các quyền cho các nhóm hay người dùng của các trạm làm việc.
- Chính sách về thống kê (Audit policy) - Điều khiển các loại sự kiện sẽ được ghi nhận trong Security log-là dữ liệu ghi các sự kiện.
Để thay đổi bất cứ chính sách về bảo mật nào, sử dụng menu Policy trong User Manager Administrative Tool.

Quản lý các chính sách về Account

Chính sách account điều khiển cách thức mà mật khẩu được sử dụng bởi account người dùng. Thay đổi chính sách này sẽ thay đổi quyền của người dùng trong những lần sử dụng sau.
Những thành phần về account có thể được thay đổi:
Item Meaning Range of Entries
Thành phần Giải thích Phạm vi
Maximum Khoảng thời gian mà một mật khẩu được Không vượt ngoài 1-999
Password Age sử dụng trước khi hệ thống yêu cầu người
dùng thay đổi.
Minimum Khoảng thời gian mà một mật khẩu cần Cho phép thay đổi
Password Age được sử dụng trước khi người dùng có thể tức thì trong khoảng
thay đổi nó. Không cho phép thay đổi tức thì tối đa 1-999
khi một mật khẩu đơn trị được dùng.
Minimum Số ký tự ít nhất của mật khẩu được chấp nhận Cho phép mật khẩu có ký tự
Password trắng số ký tự ít nhất
Length trong khoảng 1-14
Password Số mật khẩu mới cần được sử dụng bởi Không vựot ngoài khoảng
Uniquenes người sử dụng trước khi một mật khẩu cũ 1-8 mật khẩu
được sử dụng lại. Khi khả năng đơn nhất
hữu hiệu thì những thay đổi tức thì không
được phép bởi thông số Minimum Password Age.

Quản lý các chính sách về quyền người sử dụng (User Rights Policy)

Chính sách về quyền người dùng xác định các ràng buộc các quyền định nghĩa-explicit rights. Các quyền định nghĩa là quyền bạn có thể gán hay lấy từ các account của nhóm hay người dùng. Các quyền ngầm định-Implicit rights là những quyền do hệ thống điều khiển và không thể quản trị được. Ví dụ của quyền ngầm định là một khả năng tạo các account. Nó là quyền ngầm định cho nhóm quản trị (Administrators group) và không thể gán trực tiếp cho một người sử dụng hay một nhóm khác được.
Bởi vì các nhóm cục bộ ngầm định chứa các quyền người dùng nó cung cấp hầu hết các nhu cầu thiết yếu của người dùng trong mỗi nhóm, nó chung bạn không cần thiết phải thay đổi chính sách quyền người dùng (User Rights policy) được ngầm định trong nhóm.

Chú ý:

Những thay đổi không tương ứng đối với chính sách quyền người dùng (User Rights Policy) có thể gây ra hiệu ứng nghiêm trọng hay bất lợi trong hệ thống. Không thay đổi những quyền gán ngầm định trừ phi bạn hiểu rất rõ hiệu ứng của thay đổi đó.
Khi quản lý quyền, bạn thực sự không nên gán các quyền cho nhóm hay người dùng thay vào đó bạn gán account nhóm và người dùng cho một quyền.
Nếu cần thiết phải thay đổi chính sách quyền người dùng (User Rights Policy),thì lý tưởng là gán các quyền cần thiết cho các nhóm cục bộ, sau đó ấn định các người dùng vào nhóm đó. Việc sử dụng nhóm cục bộ cho phép bạn bao gồm cả hai account người dùng và nhóm tổng thể từ domain này hoặc bất kỳ domain được thừa quyền (trusted domain).

Quản lý chính sách thống kê (audit)

Các thiết lập chính sách thống kê điều khiển các kiểu sự kiện nó được ghi vào dữ liệu bảo mật (security log).
Sự kiện Trạng thái Thống kê
- Logon và Thành công Một người dùng vào hoặc thoát
- Logoff thành công từ máy trạm
- hay một kết nối mạng.
- Lỗi Một người dùng cố gắng vào hay thoát mà không được từ máy trạm hay từ việc tạo một liên kết mạng.
- Shutdown Thành công Một người dùng tắt (down) thành công máy
- Lỗi Một người dùng cố gắng tắt (down) máy nhưng không được.
- Sử dụng Thành công Sử dụng thành công quyền người dùng.(Không tính quyền quyền liên quan tới vào và thoát -logon và logoff)
- Lỗi Sử dụng quyền người dùng bị lỗi. (Không tính quyền liên quan tới vào và thoát -logon và logoff)
- Thay đổi Thành công Một người dùng truy nhập một thư mục,file, một máy in, hoặc một file nó thiết lập máy in, thống kê trong File Manager; thay đổi một bảo mật chính sách; tạo hay thay đổi account người dùng hay nhóm; hoặc gán quyền.
- Lỗi Một người dùng cố gắng truy nhập một thư mục,một máy in, hoặc một file nó thiết lập thống kê trong File Manager nhưng bị lỗi; hoặc bị lỗi khi cố gắng thay đổi một chính sách;tạo hay thay đổi account người dùng hay nhóm; hoặc gán quyền...
Trong bài hôm trước mình đã nói về bảo mật chung, hôm nay mình sẽ nói về bảo mật cho Windows NT _ một trong những hệ điều hành mạng thông dụng nhất hiện nay. Đầu tiên là một vài nét về nó:

<Theo Microsoft>Windows NT Advanced Server là hệ điều hành độc lập với các nền tảng phần cứng, có thể chạy trên các bộ vi xử lý Intel x86, DEC Alpha, PowerPC có thể chạy trên cấu hình đa vi xử lý đối xứng, cân bằng công việc của các CPU. Windows NT là hệ điều hành 32 bit thực sự với khả năng thực hiện đa nhiệm ưu tiên. Hệ điều hành thực hiện phân chia thời gian thực hiện tiến trình cho từng ứng dụng một cách thích hợp. Windows NT Advanced Server bao gồm các khả năng đặc trưng mạng hoàn thiện.
Năm 1978, Tổ Chức Chuẩn Hóa Thế Giới OSI (International Organization for Standardization) đã phát triển một mô hình cho công nghệ mạng máy tính được gọi là Mô Hình Tham Chiếu Kết Nối Các Hệ Thống Mở (Open System Interconnection Reference Model) được gọi tắt là Mô Hình Tham Chiếu OSI. Mô hình này mô tả luồng dữ liệu trong một mạng, từ các kết nối vật lý của mạng cho tới các ứng dụng dùng cho người dùng cuối.
Mô Hình Tham Chiếu OSI bao gồm 7 tầng.
-Tầng thấp nhất là Tầng Vật Lý (Physical Layer) là nơi các bit dữ liệu được truyền tới đường dây cáp (cable) vật lý.ở trên cùng là Tầng ứng Dụng (Application Layer) là nơi các ứng dụng được thể hiện cho người dùng.
-Tầng Vật Lý (Physical Layer) có trách nhiệm chuyển các bit từ một máy tính tới một tính khác, nó quyết định việc truyền một luồng bit trên một phương tiện vật lý. Tầng này định nghĩa cách gắn cáp vào một bảng mạch điều hợp mạng (network adapter card) và kỹ thuật truyền dùng để gửi dữ liệu qua cáp đó. Nó định nghĩa việc đồng bộ và kiểm tra các bit.
-Tầng Liên Kết Dữ Liệu (Data Link Layer) đóng gói thô cho các bit từ tầng vật lý thành các frame (khung). Một frame là một gói tin logic, có cấu trúc trong đó có chứa dữ liệu. Tầng Liên Kết Dữ Liệu có trách nhiệm truyền các frame giữa các máy tính, mà không có lỗi. Sau khi Tầng Liên Kết Dữ Liệu gửi đi một frame, nó đợi một xác nhận (acknowledgement) từ máy tính nhận frame đó. Các frame không được xác nhận sẽ được gửi lại.
-Tầng Mạng (Network Layer) đánh địa chỉ các thông điệp và chuyển đổi các địa chỉ và các tên logic thành các địa chỉ vật lý. Nó cũng xác định con đường trong mạng từ máy tính nguồn tới máy tính đích, và quản lý các vấn đề giao thông, như chuyển mạch, chọn đường, và kiểm soát sự tắc nghẽn của các gói dữ liệu.
-Tầng Giao Vận (Transport Layer) quan tâm tới việc phát hiện lỗi và phục hồi lỗi, đảm bảo phân phát các thông điệp một các tin cậy. Nó cũng tái đóng gói các thông điệp khi cần thiết bằng cách chia các thông điệp dài thành các gói tin nhỏ để truyền đi, và ở nơi nhận nó sẽ xây dựng lại từ các gói tin nhỏ thành thông điệp ban đầu. Tầng Giao Vận cũng gửi một xác nhận về việc nhận của nó.
-Tầng Phiên (Session Layer) cho phép hai ứng dụng trên 2 máy tính khác nhau thiết lập, dùng, và kết thúc một phiên làm việc (session). Tầng này thiết lập sự kiểm soát hội thoại giữa hai máy tính trong một phiên làm việc, qui định phía nào sẽ truyền, khi nào và trong bao lâu.
-Tầng Trình Diễn (Presentation Layer) chuyển đổi dữ liệu từ Tầng ứng Dụng theo một khuôn dạng trung gian. Tầng này cũng quản lý các yêu cầu bảo mật bằng cách cung cấp các dịch vụ như mã hóa dữ liệu, và nén dữ liệu sao cho cần ít bit hơn để truyền trên mạng.
-Tầng ứng Dụng (Application Layer) là mức mà ở đó các ứng dụng của người dùng cuối có thể truy nhập vào các dịch vụ của mạng.
Khi hai máy tính truyền thông với nhau trên một mạng, phần mềm ở mỗi tầng trên một máy tính giả sử rằng nó đang truyền thông với cùng một tầng trên máy tính kia. Ví dụ, Tầng Giao Vận của một máy tính truyền thông với Tầng Giao Vận trên máy tính kia. Tầng Giao Vận trên máy tính thứ nhất không cần để ý tới truyền thông thực sự truyền qua các tầng thấp hơn của máy tính thứ nhất, truyền qua phương tiện vật lý, và sau đó đi lên tới các tầng thấp hơn của máy tính thứ hai.
Mô Hình Tham Chiếu OSI là một ý tưởng về công nghệ mạng, và một số ít hệ thống tuân thủ theo nó, nhưng mô hình này được dùng để thảo luận và so sánh các mạng với nhau.

****************Network Card Driver và Protocol***************************

Một network adapter card tức là bảng mạch điều hợp mạng (bên tây hay gọi là network interface card hay vắn tắt là NIC) là một bảng mạch phần cứng được cài đặt trong máy tính của bạn để cho phép máy tính hoạt động được trên mạng. Network adapter card cung cấp một (hoặc nhiều) cổng để cho cáp mạng được nối vào về mặt vật lý và về mặt vật lý bảng mạch đó sẽ truyền dữ liệu từ máy tính tới cáp mạng và theo chiều ngược lại.
Mỗi máy tính trong mạng cần phải có một trình điều khiển (driver) cho network adapter card, đó là một chương trình phần mềm kiểm soát bảng mạch mạng. Mỗi trình điều khiển của network adapter card được cấu hình cụ thể để chạy với một kiểu bảng mạch mạng (network card) nhất định.
Cùng với các bảng mạch mạng và trình điều khiển bảng mạch mạng, một máy tính mạng cũng cần phải có một trình điều khiển giao thức (protocol driver) mà đôi khi gọi là một giao thức vận tải hay nói cho nó tắt là giao thức. Trình điều khiển giao thức thực hiện công việc giữa phần mềm mạng ở mức trên (giống như trạm làm việc và máy chủ) và network adapter card. Giao thức đóng gói dữ liệu cần gửi đi trên mạng theo cách mà máy tính ở nơi nhận có thể hiểu được.
Qui trình kết hợp một trình điều khiển giao thức với network adapter card tương ứng, và thiết lập một kênh truyền thông giữa hai thứ đó gọi là gắn kết (binding).
Để hai máy tính truyền thông với nhau trên một mạng, chúng phải dùng cùng một giao thức. Đôi khi một máy tính được cấu hình để dùng nhiều giao thức. Trong trường hợp này, hai máy tính chỉ cần một giao thức chung là có thể truyền thông với nhau.
Trong một số mạng, mỗi trình điều khiển network adapter card và giao thức của máy tính là một phần mềm riêng. Trong một số mạng khác thì chỉ một phần mềm gọi là monolithic protocol stack thực hiện các chức năng của cả trình điều khiển network adapter card và giao thức.

***************************Kiến trúc mở*******************************

Windows NT Advanced Server sử dụng hai chuẩn là NDIS (Network Driver Interface Specification) và TDI (Transport Driver Interface). NDIS là chuẩn cung cấp cho việc nói chuyện giữa card mạng (network card) và các giao thức (protocol) mạng được dùng. NDIS cho phép sử dụng nhiều giao thức mạng trên cùng một card mạng. Mặc định Windows NT Advanced Server được cung cấp sử dụng bốn giao thức đó là NetBEUI (NetBIOS Extended User Interface), TCP/IP, Microsoft NWLINK, và Data Link Control. TDI cung cấp khả năng nói chuyện giữa các giao thức mạng với các phần mềm mạng mức trên (như Server và Redirector).

************************ Ưu điểm của NDIS******************************

Như trên đã nói NDIS cung cấp sự liên lạc giữa các giao thức mạng với card mạng. Bất cứ trạm làm việc nào (sử dụng hệ điều hành Windows NT Workstation) đều có thể các trình điều khiển điều khiển card mạng được cung cấp nội tại trong Windows NT Advanced Server. Trong trường hợp phải sử dụng một loại card mạng khác, tức là phải cần trình điều khiển cho card mạng không có sẵn trong Windows NT, NDIS vẫn có thể sử dụng đa giao thức mạng trên card mạng này.
Khi máy tính sử dụng đa giao thức mạng, các gói tin dữ liệu sẽ được chuyển đi thông qua giao thức mạng thứ nhất (giao thức này được gọi là primary protocol), nếu không được máy tính sẽ sử dụng tiếp giao thức thứ hai và cứ thế tiếp tục.
Trên mỗi máy tính được cài đặt Windows NT, mỗi một giao thức mạng được đặt sử dụng trên một card mạng cần phải được đặt một giá trị gọi là LAN adapter number trên card mạng đó.

********************TDI thì sao ?*************************************

TDI là giao diện giữa tầng phiên (Session) và tầng giao vận (Transport). TDI được xây dựng với mục đích cho phép tầng giao vận có thể làm việc với các chương trình thuộc tầng trên (ví dụ như Server và Redirector) sử dụng chung một giao diện. Khi Server và Redirector tạo một lời gọi tới tầng giao vận, nó sẽ sử dụng giao diện TDI để thực hiện lời gọi này và do vậy nó không cần biết cụ thể giao thức tầng giao vận sẽ được sử dụng.
Windows NT sử dụng TDI nhằm mục đích đảm bảo rằng các hệ thống sử dụng các giao thức khác nhau, thậm chí cả các Server và Redirector được viết bởi các hãng khác nhau (Third parties) có thể làm việc được với Windows NT.
Sử dụng TDI đã làm cho Windows NT khắc phục nhược điểm của sản phẩm LAN manager 2.x đó là trong khi Windows NT không hạn chế số lượng các trạm làm việc nối vào Server thì LAN manager 2.x lại hạn chế ở con số 254 trạm làm việc.
Có một trường hợp ngoại lệ, cho dù TDI là chuẩn giao diện giữa tầng giao vận và các tầng mức trên song riêng đối với NetBIOS thì các trình điều khiển và các DLLs được sử dụng để thực hiện nhiệm vụ này.



******************Cách thức làm việc của các giao thức**********************

*NetBEUI:
NetBEUI lần đầu tiên được đề cập tới vào năm 1985, đây là một giao thức mạng gọn nhẹ, nhanh. Khi được bắt đầu phát triển từ năm 1985, NetBEUI cho phép phân đoạn các mạng từ 20 đến 200 máy tính, cho phép kết nối giữa các segment LAN với segment LAN khác hoặc với mainframe.
NetBEUI tối ưu hoá khả năng xử lý khi được sử dụng trên mạng LAN. Trên LAN, đây là giao thức mạng có cho phép lưu thông các gói tin nhanh nhất.
Phiên bản NetBEUI được sử dụng cho Windows NT là NetBEUI 3.0 và có một số điểm khác với các phiên bản trước đó.
--Loại trừ hạn chế 254 phiên làm việc của một Server trên một card mạng.
--Hoàn thiện khả năng seft-tuning.
--Khả năng xử lý trên đường truyền tốt hơn.
--NetBEUI trong Windows NT là giao thức NetBIOS Frame (NBF) format. Nó sử dụng NetBIOS làm cách thức nói chuyện với các tầng mức trên.
Hạn chế của NetBEUI là không có khả năng chọn đường và thực hiện kém hiệu quả trong môi trường mạng WAN. Do vậy thông thường để cài đặt mạng thường sử dụng phương pháp cài cả NetBEUI và TCP/IP để đáp ứng các chức năng thích hợp.

*TCP/IP:
TCP/IP (Transmission Control Protocol/Internet Protocol) được phát triển từ cuối những năm 1970, đó là kết quả của Defense Advanced Research Projects Agency (DARPA) nghiên cứu dự kết nối giữa các mạng với nhau.
Ưu điểm của giao thức TCP/IP là cung cấp khả năng kết nối giữa các mạng với hệ điều hành và phần cứng khác nhau.
TCP/IP tương thích với môi trường Internet, môi trường kết nối mạng của các trường đại học, các tổ chức, chính phủ, quân đội với nhau.
Với Windows NT có thể sử dụng hệ quản trị mạng SNMP để theo dõi sự hoạt động của máy tính sử dụng giao thức TCP/IP.
Microsoft thực hiện giao thức TCP/IP bằng cách sử dụng STREAMS - tương thích với môi trường giao diện, Windows NT sử dụng STREAMS như là một giao diện giữa tầng TDI và tầng thấp hơn.
Nhược điểm của TCP/IP là khả năng xử lý chậm hơn so với NetBEUI trong môi trường mạng LAN.

*NWLink:
Microsoft NWLink là chuẩn NDIS tương thích với giao thức IPX/ SPX trong môi trường mạng Novell Netware. Tương tự TCP/IP, NWLink cũng sử dụng môi trường giao diện STREAMS.
NWLink cho phép một Server Windows NT có thể "nhìn thấy" một Server Netware. Song để sử dụng các tài nguyên được chia sẻ trên Server Netware này nhất thiết vẫn phải chạy chương trình Netware Client.

*Data Link Control:
Data Link Control không bao giờ được đặt là primary protocol. Data Link Protocol được sử dụng nhằm các mục đích sau :
Cài đặt máy tính sử dụng Windows NT cho phép truy cập đến IBM@ mainframes.
Cài đặt máy in nối trực tiếp vào mạng, thay vì được nối vào cổng song song hay nối tiếp tại một print server nào đó.
Data Link Control cho phép các chương trình truy cập trực tiếp tới tầng Data Link trong mô hình tham chiếu OSI.



*****************Sử dụng RPC (Remote Procedure Call)******************

Windows NT cung cấp khả năng sử dụng RPC để thực thi các ứng dụng phân tán. Microsoft RPC bao gồm các thư viện và các dịch vụ cho phép các ứng dụng phân tán hoạt động được trong môi trường Windows NT. Các ứng dụng phân tán chính bao gồm nhiều tiến trình thực thi với nhiệm vụ xác định nào đó. Các tiến trình này có thể chạy trên một hay nhiều máy tính.
Microsoft RPC sử dụng name service provider để định vị Servers trên mạng. Microsoft RPC name service provider phải đi liền với Microsoft RPC name service interface (NIS). NIS bao bao gồm các hàm API cho phép truy cập nhiều thực thể trong cùng một name service database (name service database chứa các thực thể, nhóm các thực thể, lịch sử các thực thể trên Server).
Khi cài đặt Windows NT, Microsoft Locator tự động được chọn như là name service provider. Nó là name service provider tối ưu nhất trên môi trường mạng Windows NT.

***************Sử dụng Remote Access Service (RAS) **********************

RAS cho phép remote User làm việc như là khi họ kết nối trực tiếp vào mạng. RAS là sự kết nối trong suốt với Microsoft Client và các ứng dụng trên mạng.
Windows NT RAS Server phiên bản 3.5 trở lên cung cấp giao thức PPP cho phép bất cứ PPP client nào đều có thể sử dụng TCP/IP, NetBEUI, IPX truy cập. Ngoài ra Windows NT client có thể sử dụng giao thức SLIP để thực hiện Remote Access Servers. Giao thức Microsoft RAS cho phép bất cứ Microsoft RAS client nào đều có thể truy cập sử dụng Dial-in.
Để truy cập vào WAN, Clients có thể sử dụng dial-in sử dụng chuẩn đường điện thoại thông qua một modem hoặc một modem pool. Nhanh nhất là sử dụng ISDN, ngoài ra có thể sử dụng X.25 hay RS-232 null modem. Microsoft RAS cho phép tối đa 256 clients dial-in.
Đối với mạng LAN, giao thức IP cho phép truy cập tới mạng TCP/IP (như mạng Internet). Giao thức IPX cho phép truy cập tới các Servers Novell Netware.
Windows NT Server Multi-Protocol Routing
Windows NT Server, kết hợp với Windows NT Server Multi-Protocol Routing, cho phép nối giữa các mạng cục bộ, giữa mạng cục bộ với mạng diện rộng mà không cần phải có một Router riêng biệt. Windows NT Server sử dụng cả hai RIP cho IP và RIP cho IPX.
Windows NT Server Multi-Protocol được cài đặt bằng cách chạy chương trình UPDATE.EXE từ đĩa hay CDROM. Chương trình này sẽ copy các tệp tin cần thiết để cài đặt.
Khả năng của Windows NT Server MPR
Sử dụng một RAS server để route giữa một client truy cập từ xa và một mạng LAN
Dưới đây là các yêu cầu cần thiết khi sử dụng Windows NT RAS như một dial-up rouuter giữa mạng LAN và Internet hoặc với TCP/IP enterprise.
1. Windows NT computer cần một card mạng và một modem tốc độ cao.
2. Sử dụng PPP nối vào Internet hoặc mạng TCP/IP enterprise.
3. Đặt đúng địa chỉ và subnet.
4. Cài đặt đúng Registry và Default Gateway để máy tính này thực hiện đồng như là một Router và là một Client của mạng LAN.

******************Route giữa các LANs với nhau ***************************

Windows NT Server có thể được tăng cường bằng cách cài đặt khả năng routing giữa các mạng cục bộ với nhau và chức năng BOOTP/DHCP Relay Agent. Để cài đặt Route giữa các LANs với nhau thì Windows NT computer phải có tối thiểu 2 card mạng.

************************Route WAN *********************************

Không thể route giữa các mạng WAN thông qua chuyển mạch gói (switched circuits) hoặc đường điện thoại (dial-up lines). Khả năng route này chỉ thực hiện được khi có WAN card (ví dụ T1 hay Frame-Relay).

**************************RIP routing cho IPX **************************

RIP routing cho IPX cung cấp chức năng địa chỉ hoá cho phép các gói tin được gửi đi đến một đích định trước. Phiên bản này hiện nay chưa có bất kỳ một khả năng lọc nào cho việc chuyển tiếp các gói tin, bởi vậy tất cả các thực thể trong bảng RIP và SAP chọn đường cần phải được truyền bá. Trên mạng có phạm vi rộng vấn đề giải thông cho việc chuyển tiếp các gói tin cần phải được quan tâm. Internal routing không cho phép thực hiện thông qua đường điện thoại.

************************RIP routing cho IP *******************************

Windows NT Server cung cấp RIP cho chức năng quản trị động bảng chọn đường giao thức IP (dynamic routing tables). Phiên bản RIP cho IP cũng không hoạt động được thông qua đường kết nối dial-up. RIP cho IP lặp lại các thông tin broadcast nên sử dụng UDP/IP thay thế cho TCP/IP.

**********************Bảo vệ và quản trị hệ thống ***********************

Windows NT xây dựng hệ thống bảo vệ bên trong hệ điều hành. Tự thân điều khiển truy cập cho phép người sử dụng phân quyền tới từng tệp tin riêng lẻ, tự do điều khiển trên cơ sở các chức năng cơ bản của hệ thống.
Với khả năng cho phép cài đặt các domains và trust relationships, cho phép tập trung hoá việc quản trị Users và bảo vệ thông tin tại một địa điểm. Với khả năng này hệ thống mạng sẽ dễ dàng quản trị và vận hành.

***********************Phương thức bảo vệ trên mạng ******************

Cơ sở của sự bảo vệ và quản trị tập trung trong môi trường Windows NT Advanced Server là domain. Một domain là một nhóm các Servers cài đặt hệ điều hành Windows NT Advanced Server chứa cùng một tập hợp các User accounts. Do vậy thông tin về một User mới chỉ cần nhập tại một Server bất kỳ nhưng đều cho phép các Servers khác trong domain nhận ra.
Trust Relationship nối các domains với nhau, cho phép pass-through authentication. Điều này có nghĩa là người sử dụng chỉ cần có account trong một domain có thể truy cập tới các thực thể trên toàn mạng.

-Domains : Đơn vị quản trị cơ bản

Việc nhóm các máy tính vào các domains đem lại hai cái lợi chính cho người quản trị mạng và người sử dụng. Cái quan trọng nhất đó là tất cả các Servers trong một domain được xem như là một đơn vị quản trị đơn chia sẻ khả năng bảo vệ và thông tin về người sử dụng. Mỗi một domain có một cơ sở dữ liệu (database) lưu trữ thông tin về User account. Mỗi một Server trong domain lưu trữ một bản copy database. Do đó Windows NT Advanced Server tiết kiệm cho người quản trị mạng cũng như người sử dụng thời gian và đem lại các kết quả thích đáng. Cái lợi thứ hai đó chính là sử thuận tiện cho người sử dụng.

-Trust Relationship : nối giữa các domains

Bằng cách thiết lập Trust Relationship nối giữa các domains trên mạng với nhau cho phép các User accounts và global group được sử dụng trên nhiều domains thay vì chỉ trên một domain. Khả năng này làm cho công việc của người quản trị mạng trở nên dễ dàng hơn, họ chỉ cần tạo account cho người sử dụng trên một domain song vẫn có thể truy cập tới các máy tính của các domains khác chứ không riêng gì các máy tính trong cùng một domain.
Việc thiết lập Trust Relationship có thể theo một chiều hoặc hai chiều. Trust Relationship hai chiều là một cặp của Trust Relationship một chiều, ở đó mỗi domain tin tưởng vào domain khác.

-Hoạt động của domain

Yêu cầu tối thiểu cho một domain là phải có domain controller và lưu trữ bản copy chính (master copy) của User và group database. Tất cả các thông tin thay đổi trong database này phải được thực hiện trên domain controller, tức là bất cứ sự thay đổi User database trên một Server nào trong domain sẽ được tự động cập nhật lại trong domain controller. Domain account database được sao lưu trên tất cả các Server cài đặt Windows NT Advaced Server. Cứ 5 phút một lần các Servers lại gửi query lên domain controller hỏi xem có sự thay đổi gì không. Nếu có sự thay đổi, domain cntroller gửi thông tin bị thay đổi (chỉ có thông tin bị thay đổi mới được gửi) tới các Servers trong domain. Để đảm bảo hệ thống hoạt động liên tục, cách tốt nhất là tạo thêm backup domain controller cho domain controller chính.

-Các kiểu domain

Có bốn kiểu domains được đưa ra để tổ chức hệ thống mạng đó là single domain, master domain, multiple master domain, complete trust domain.

Single domain
Nếu như hệ thống mạng không có quá nhiều User do đó không cần phải chia nhỏ việc tổ chức bằng các sử dụng kiểu domain đơn giản nhất đó là simple domain. Mạng máy tính khi đó chỉ có một domain duy nhất và không cần đặt Trust Relationship. Mô hình này không phức tạp rất phù hợp đối với mạng có quy mô nhỏ.
Master domain
Trong trường hợp phải phân chia mạng thành các domains cho những mục đích khác nhau song quy mô của mạng lại đủ nhỏ thì lựa chọn tốt nhất là sử dụng master domain. Mô hình này cho phép quản lý tập trung nhiều domains. Trong mạng sử dụng master domain cần có một master domain trong đó tạo tất cả Users và global groups. Tất cả các domains khác trên mạng phải "trust" vào master domain này và như vậy có thể sử dụng Users và global groups được tạo ra như trên đã nói. Có thể hiểu rằng master domain là một accounts domain, với mục đích chính là quản lý các User accounts của mạng, các domain còn lại được xem như là các domain tài nguyên tức là không lưu trữ các User accounts mà đơn giản chỉ cung cấp các tài nguyên.
Multiple master domain
Đối với một quy mô lớn hơn, rộng hơn kiểu master domain không thể đáp ứng được khi đó có thể cách tốt nhất là sử dụng Multiple Master Domain. Mô hình này bao gồm một số (đủ nhỏ) các master domains, mọi User accounts được tạo ra trên một master domain trong số các master domains trên mạng. Các domain khác không phải là master domain (gọi là các department domain) sẽ là các domain tài nguyên. Mỗi một master domain cần phải "trust" vào tất cả các master domains khác. Mọi department domain khi đã "trust" vào một master domain sẽ "trusts" tất cả các master domains khác. Nhược điểm chính của mô hình này là đòi hỏi nhiều sự quản lý Trust Relationship.
Complete trust domain
Trong trường hợp yêu cầu phải quản lý các domains phân tán trên các departments thì mô hình Complete Trust Domain là rất phù hợp. Với Complete trust domain, mỗi một domain "trust" vào domain khác, tức là mỗi một domain có một Users và global groups riêng của mình nhưng các Users và global groups này vẫn có thể được sử dụng trên các domain khác trong mạng. Như vậy giả sử có n domains trên mạng sẽ có n*(n-1) Trust Relationship.

********************Quản trị môi trường người sử dụng *********************

Trong hệ điều hành mạng Windows NT Advanced Server có nhiều cách để quản lý môi trường người sử dụng. Phương pháp được sử dụng nhiều nhất để quản lý môi trường người sử dụng đó là thông qua các User profiles. Một profile là một tệp phục vụ như một bản chụp nhanh của môi trường làm việc hiện thời của người sử dụng (User desktop environment). Với các profiles có thể hạn chế khả năng của người sử dụng, thay đổi các tham số được đặt tại trạm làm việc riêng của họ. Phương pháp thứ hai để quản lý đó là sử dụng lập các logon scripts cho các Users. Nếu mỗi một User có một logon script thì có nghĩa là script sẽ được chạy bất cứ khi nào User này logon vào hệ thống tại bất cứ trạm làm việc nào trên mạng. Script có thể là một tệp tin dạng lô (batch file) chứa đựng các câu lệnh của hệ điều hành hoặc các chương trình chạy. Cách khác có thể cung cấp cho mỗi người sử dụng một thư mục riêng (home directory) trên Server hay tại Workstation. Một home directory của một User là một vùng lưu trữ riêng của người sử dụng này và họ có toàn quyền trên đó. Ngoài ra có thể đặt các biến môi trường cho mỗi trạm làm việc. Các biến môi trường này xác định sự tìm kiếm đường dẫn của trạm làm việc, thư mục, các tệp tạm thời hay các thông tin tương tự khác.

*******************Quản lý hệ thống tệp trên mạng *************************

Một vấn đề quan trọng khi sử dụng các Servers trên mạng là sự chia sẻ các tệp tin và các thư mục. Hệ điều hành Windows NT Advanced Server cung cấp khả năng xử lý cao, an toàn và bảo mật cho các tệp tin được chia sẻ nhất là khi sử dụng cấu trúc hệ thống tệp NTFS (Windows NT File System). Phân quyền truy cập các tệp tin và thư mục trên ổ đĩa NTFS đảm bảo rằng chỉ có những người sử dụng thích hợp mới có khả năng truy cập theo quyền hạn được phân ở các mức khác nhau. Với Windows NT Advanced Server các tệp tin và các thư mục trên ổ đĩa NTFS chịu sự kiểm tra kỹ càng. Một khái niệm khác được nhắc tới ở đây đó là file ownership, mỗi một tệp tin và thư mục đều có một người chủ có thể điều khiển nó tất cả các người khác muốn truy cập đều phải được sự cho phép của người chủ này. Windows NT Advanced Server cung cấp chức năng sao lưu thư mục. Với dịch vụ Replicator, có thể duy trì bản sao của hệ thống tệp hiện thời phục vụ khi có sự cố xảy ra đối với hệ thống tệp chính.

************************* An toàn dữ liệu ******************************

-Quản lý khôi phục sự cố

Fault tolerance là khả năng đảm bảo cho hệ thống tiếp tục thực hiện chức năng của mình khi một phần gặp sự cố. Thông thường khái niệm Fault tolerance được nhắc tới nhằm mô tả hệ thống đĩa lưu trữ (disk subsystems) song nhìn một cách tổng thể nó còn được ứng dụng cho các phần, thực thể khác của hệ thống. Một cách đầy đủ hệ thống Fault tolerance bao gồm disk subsystems, nguồn cung cấp và hệ thống các bộ điều khiển đĩa dư thừa (redundant disk controllers).

-Tìm hiểu về RAID

Hệ thống Fault tolerance ổ đĩa được chuẩn hoá bao gồm sáu mức từ 0 đến 5 được biết đến như là Redundant Arrays of Inexpensive Disks (RAID). Mỗi một mức là sự kết hợp của khả năng xử lý, an toàn và giá thành.
Mức 0
Thông thường được biết đến là disk striping và sử dụng hệ thống tệp tin gọi là stripe set. Dữ liệu được chia thành các khối và được trải khắp trên các đĩa cố định (fixed disk) theo một thứ tự định trước.
Mức 1
Được biết đến là disk mirroring sử dụng hệ thống tệp tin gọi là mirror set. Tất cả dữ liệu được ghi trên đĩa thứ nhất đều được ghi lại giống hệt trên đĩa thứ hai. Do vậy chỉ sử dụng được 50 phần trăm dung lượng lưu trữ. Khi một đĩa gặp sự cố, dữ liệu sẽ được lấy từ đĩa còn lại.
Mức 2
Phương pháp sử dụng thêm mã error-correcting. RAID mức 2 chia các tệp tin thành các bytes trải khắp trên nhiều đĩa. Phương pháp error-correcting yêu cầu tất cả các các đĩa đều phải lưu thông tin error-correcting.
Mức 3
Tương tự như mức 2, nhưng chỉ yêu cầu một đĩa để lưu trữ dữ liệu parity (thông tin error-correcting).
Mức 4
Xử lý dữ liệu với kích cỡ của các khối (blocks) và các đoạn (segments) lớn hơn so với mức 2 và mức 3. Nó lưu trữ thông tin error-correcting trên một đĩa tách rời dữ liệu của người sử dụng.
Mức 5
Được biết đến với cái tên striping and parity. Đây là loại thông dụng. RAID 5 tương tự như RAID 4 nhưng thông tin parity được ghi không phải chỉ trên một đĩa mà là trên tất cả các đĩa. Điều đó có nghĩa là có hai loại thông tin trên một đĩa.

-Quản lý UPS (Uninterrupt Power Supplies)

Có hai cách thức sử dụng UPS là online và standby.
Online : Sử dụng online UPS kết nối trung gian giữa máy tính và nguồn điện, khi đó UPS trở thành đơn vị cung cấp nguồn chính.
Standby : UPS được sử dụng nối giữa máy tính và nguồn cung cấp, song UPS được sử dụng ở trạng thái chờ đợi sẵn sàng hoạt động bất cứ khi nào có sự cố về nguồn.
Windows NT Advanced Server sử dụng UPS service để theo dõi trạng thái của UPS cung cấp các thông tin đầy đủ của UPS cho người quản trị mạng.

*************************Hệ sao lưu dữ liệu *****************************

Windows NT Advanced Server cung cấp tiện ích tape backup, cho phép sao lưu dữ liệu tập trung tất cả các ổ đĩa của các máy tính trên mạng chạy trên các hệ điều hành khác nhau từ Microsoft LAN Manager 2.x, Windows NT Workstation, Windows for Workgroup đến các máy chủ được cài đặt Windows NT Advanced Server khác.

****************************Clustering *********************************

-So sánh với Fault Tolerant

Ưu điểm của Cluster so với Fault Tolerant là ở chỗ trong khi Fault Tolerant xây dựng khả năng làm việc với mức độ cao của thiết bị chính thì thiết bị backup lại ở trạng thái chờ (idle) chỉ bắt đầu hoạt động khi thiết bị chính gặp lỗi. Đối với Cluster không như vậy, trong khi hệ thống chính vấn thực hiện với mức độ cao thì hệ thống backup cũng thực hiện song song đồng thời kết hợp với hệ thống chính cùng chia sẻ tài nguyên Cluster.
Windows NT Cluster là một giải pháp phần mềm phù hợp với giá mà người sử dụng phải trả để có được một hệ thống có khả năng thay đổi dễ dàng mềm dẻo đồng thời đảm bảo được sự ổn định an toàn của hệ thống.

-Kỹ thuật

Các ứng dụng Cluster được xây dựng theo mô hình Client/Server, luồng công việc được chia thành các đơn vị nhỏ được thực hiện trên các máy khác nhau.
Windows NT Cluster được thiết kế tương thích với các chuẩn được xây dựng từ trước trong Windows NT, các tiện ích quản trị mạng không cần phải có sự thay đổi nào khi hoạt động trên hệ thống Windows NT.

-Mô hình phần cứng

NT Cluster được thiết kế theo chuẩn công nghiệp các vi xử lý có thể là Intel hoặc RISC, các kỹ thuật mạng cục bộ thông dụng, các giao thức giao vận như IPX/SPX, TCP?IP, xây dựng theo phương pháp Module hoá dễ dàng mở rộng phát triển. Windows NT Cluster được xây dựng điều khiển tập trung nhằm cung cấp kỹ thuật cluster mang lại nhiều tiện lợi nhất. Mục đích của việc thiết kế này là nhằm đưa ra một sản phẩm bao hàm tất cả các khía cạnh xu hướng phát triển của phần cứng bao gồm các vi xử lý, kết nối giữa các hệ thống lưu trữ. Tất cả các vi xử lý trong hệ Cluster đều phải chạy hệ điều hành Windows NT, hiện tại hệ Cluster chỉ support cho hệ thống trong đó các máy chủ phải có dòng vi xử lý giống nhau. Trong tương lai việc hoà trộn các loại máy chủ trong cùng một hệ thống là một mục tiêu quan trọng. Có hai kiểu kết nối trong Windows NT Cluster là kết nối Processor-to-Processor và kết nối Processor-to-Storage.
Với kết nối Processor-to-Processor, Windows NT sử dụng phương thức giao vận nội tại trong hệ điều hành để thực hiện việc liên lạc như giao thức TCP/IP, IPX/SPX. Các giao thức này hoạt động được trên các chuẩn mạng như Ethernet, FDDI, ATM, Token Ring ..v..v..

-Mô hình phần mềm

Windows NT Cluster được xây dựng theo mô hình Client/Server phân rã về mặt chức năng các ứng dụng hoặc giải pháp giữa các hệ thống. Windows NT Cluster đòi hỏi một client User interface phải khởi tạo một phép xử lý hoặc một dịch vụ được cung cấp bởi một hay nhiều máy chủ trong hệ thống. Với Windows NT Cluster, kiểu Partitioned data được thiết kế trong đó luồng công việc thực hiện chung được chia nhỏ thành các segments, mỗi segment sẽ được điều khiển cục bộ tại một nhân tố tạo thành hệ cluster. Kiểu Shared data lại hoạt động theo nguyên tắc khác. Luồng công việc vẫn nguyên khối không bị chia nhỏ mà hoạt động trên toàn bộ hệ thống với việc lập biểu điều khiển thực hiện phân tán. Windows NT Cluster ngoài ra còn cung cấp các APIs cho phép xây dựng các ứng dụng trên hệ cluster trong cả hai chế độ của Windows NT là User mode và kernel mode. Windows NT là giải pháp server-oriented, client không cần biết tới có bao nhiêu nhân tố tạo thành hệ cluster. Client sẽ làm việc với server cung cấp cho nó cách thức tốt nhất xử lý tài nguyên trên mạng. Sử dụng kiểu partitioned data sẽ đảm bảo việc cân bằng công việc giữa các server tốt nhất.

-Quản trị hệ thống Cluster

Cluster hoạt động kết hợp với một trình quản trị chung và với security domain. Các khả năng này đều tồn tại trong các sản phẩm khác nhau của bộ Windows NT. Trình quản trị account và security chung được cung cấp bởi Windows NT Server Domain. Việc quản trị các phần mềm hoạt động phân tán được thực hiện qua Systems Management Server. Hệ quản trị Windows NT Cluster sẽ tập hợp các khả năng lại tạo thành bộ công cụ cho phép quan trị cluster như một hệ thống đơn lẻ. Hệ quản trị Cluster được thiết kế với giao diện đồ hoạ, quản lý tập trung tài nguyên và các dịch vụ trong hệ thống cluster.

-Mô hình truy cập dữ liệu

Như trên đã trình bày Windows NT Cluster đưa ra hai phương thức truy cập dữ liệu là Partitioned data và Shared data. Trong đó mô hình phân chia mọi thứ phù hợp với hệ thống xử lý đối xứng, luồng công việc được đồng bộ xử lý trên toàn hệ thống. Mô hình Partitioned data được thực hiện trên hệ thống không đối xứng, luồng công việc được chia thành các đơn vị công việc riêng rẽ được thực hiện trên các phần khác nhau.
Để có được một hệ thống mạng vững chắc bạn nên tiến hành một số bước sau đây trước khi kết nối hệ thống vào mạng.
Cài đặt dịch vụ
Nhiều dịch vụ mạng được cài đặt đồng thời với Linux ở chế độ mặc định mà hầu hết những cài đặt đó đối với bạn là không cần thiết, rất không cần thiết.
Trước tiên, hãy oại bỏ lệnh thằng “finger”, lệnh này cung cấp thông tin về các người dùng trong mạng và là công cụ thâm nhập mạng phổ biến của hacker (phổ biến dành cho những “con gà” ấy mà). Nếu từng chạy truy vấn finger, chắc bạn biết mặt trái của lệnh này. Hầu hết dịch vụ mạng được cấu hình trong tập tin /etc/inetd.conf. Hiệu chỉnh tập tin này, loại những thành phần bạn cho là không cần thiết(hoặc thằng nào thấy ngứa mắt thì cứ vứt đi). Đừng lo, nếu thực hiện sai, ta có thể sửa lại bất kỳ lúc nào mà. Trên thực tế, một số hệ thống chỉ chạy duy nhất sshd (secure shell – phiên làm việc của hệ thống bảo mật).
Các tập tin khởi động hệ thống được lưu trong thư mục /etc/rc.d, vì vậy để loại bỏ các dịch vụ mạng được kích hoạt khi khởi động, cần hiệu chỉnh các tập tin trong thư mục này. Ở hệ thống cài Red Hat, các tập tin khởi động nằm trong thư mục /etc/rc.d/init.d, song bạn nên tham khảo tài liệu về phiên bản Linux của mình để biết chính xác vị trí của chúng. Sau khi loại bỏ các dịch vụ không cần thiết, bạn có thể hoặc khởi động lại hoặc loại tiếp các ứng dụng nền (daemon) không cần thiết (dùng lệnh kill –TERM <số hiệu ứng dụng> ) rồi khởi động lại: inetd [kill –HUP <pid of inetd>]. Sau cùng, để kiểm tra việc loại bỏ các dịch vụ, bạn hãy tải xuống và chạy trình “nmap” (từ Web site www.insecure.org), trình này quét mạng và cho biết các dịch vụ đang chạy. Một biện pháp khác là thường xuyên chạy lệnh netstat –a, để hiển thị thông tin về các cổng nối Internet (Internet Socket). Để tra cứu lệnh này, gõ man netstat. Bây giờ, hệ thống của bạn đã “nhẹ bớt”, đồng thời các rủi ro bảo mật cũng giảm đi. Đã tới lúc bạn phải loại thông tin định danh bảo mật người dùng (SUID – Security User Identify) khỏi các tập tin hoàn toàn không cần cho root. Tập tin xác lập định danh người dùng (“Setuid” file) là chương trình mà người dùng, thường là root có thể chạy được với giả thiết đó là người sở hữu hoặc thuộc nhóm sở hữu tập tin này. Khi xảy ra lỗi tràn bộ đệm trong chương trình, người dùng nào đó lập tức tải về tập tin chỉ ra cách khắc phục lỗi, thì cũng là lúc hacker có thể đột nhập vào hệ thống. Để tránh điều này, bạn nên tạo danh sách các tập tin định danh bảo mật người dùng (suid file) trên hệ thống của mình bằng lệnh như: [ls –alF ‘find / -perm -4000‘ > /tmp/suidfiles]. Xem xét kỹ danh sách kết quả này, sau đó thay đổi quyền truy cập mà theo bạn là không cần thiết. Trường hợp này, bạn nên dùng lệnh [chmod 4700 <tập tin>] vì tập tin sau khi thay đổi vẫn xuất hiện bình thường khi quét danh sách các tập tin, nhưng người dùng không hợp lệ sẽ không thể kích hoạt được nó. Điều này sẽ gây trở ngại cho các cố gắng truy cập bất hợp pháp vào hệ thống của bạn. Kiểm tra hệ thống. Hãy gia nhập các nhóm thảo luận về cách xử lý lỗi hay bảo mật trên Internet, hoặc đến với Web site www.securityfocus. com - nơi bạn có thể tìm thấy những phương pháp “lấp” lỗ hổng bảo mật mới nhất. Đồng thời, bạn cũng tìm thấy ở đây những kẽ hở (trên tập tin định danh bảo mật người dùng, dịch vụ mạng và nhân hệ điều hành) còn chưa tìm ra cách khắc phục. Với những hiểu biết và “vũ khí” bên mình, bạn hãy kiểm tra hệ thống bằng cách tấn công nó. Đừng giới hạn mình bên trong hệ thống vì các cuộc tấn công của hacker thường xuất phát từ bên ngoài tường lửa và nguy hiểm nhất vì hacker không nhắm đến việc có tài khoản trong hệ thống của bạn. Khi đã đảm bảo an toàn cho mạng, nhân hệ điều hành và các định danh bảo mật người dùng, bạn có thể tăng cường thêm về kỹ thuật giám sát và phòng ngừa cao cấp khác.
Điều chỉnh hệ thống
Sao dự phòng mọi thông tin quan trọng, đồng thời cần chú ý bảo vệ các tập tin dự phòng hay nhiễm virus Trojan, chẳng hạn các tập tin đăng nhập: “ps”, “ifconfig”, “netstat”, v.v.. Trong trường hợp này, bạn nên chép tất cả các tập tin có nguy cơ nhiễm Trojan lên đĩa mềm và bảo quản chúng cẩn thận. Sau đó mỗi tháng, bạn có thể so sánh các tập tin này với các tập tin gốc trên hệ thống để phát hiện sự khác biệt (nếu có). Một cách khác (tốn kém hơn) là thường xuyên lưu cấu hình khởi động lên đĩa CD. Như vậy, bạn có thể khởi động từ CD thay vì đĩa cứng. Tiếp theo là cài đặt trình ghi nhật ký đăng nhập (loggers). Bạn có thể cài "bẫy" hoặc phần mềm theo dõi và ghi nhật ký hệ thống khác, sau đó thiết đặt hệ thống gửi các tập tin nhật ký đến tài khoản e-mail bảo mật theo định kỳ. Bạn phải đọc hết những chi tiết trong các tập tin nhật ký, cần chú ý các tập tin nhật ký chuẩn trong thư mục /var/ adm/syslogvar/adm/messages (hoặc trong /var/log). Sử dụng chương trình theo dõi lưu thông trên mạng (network sniffer) như tcpdump, bạn sẽ thấy những gì đang diễn tiến trên đó. Hoặc có thể giám sát luồng giao thông vào và ra mạng bằng chương trình khác như sniffit – trình này mang tính cấu hình cao và có cả chế độ tương tác. Tuy nhiên, bạn nên thận trọng khi dùng trình theo dõi lưu thông trên mạng vì nó dễ dàng thu thập mật khẩu, địa chỉ email và những thông tin bí mật khác khi mạng con kết nối ra ngoài. Có một số trình cực mạnh chuyên để thu thập thông tin riêng như ttysnoop và linspy, tuy nhiên, bạn chỉ nên dùng chúng khi nghi ngờ mạng của mình đang bị phá hoại. Khi theo dõi lưu thông trên mạng, bạn có thể kiểm soát nhiều thứ, tuy nhiên, nên vận dụng một cách khéo léo. Quyền riêng tư của người dùng là vấn đề hết sức tế nhị. Là người quản trị mạng, chắc hẳn bạn không muốn người dùng khó chịu và hỏi bạn tại sao kết nối của họ bị theo dõi. Theo những chỉ dẫn bảo mật trên, kết hợp với chỉ định của bạn ở mức độ thích hợp, chắc chắn hệ thống Linux sẽ có được cơ chế bảo mật hợp lý. Tuy nhiên, điều đó không có nghĩa là công việc bảo mật của bạn kết thúc: bảo mật là trận chiến luôn tiếp diễn, và cho dù ở thế bị tấn công, phải luôn cố gắng là người chiến thắng.
Trong thời gian vừa qua, mình đã đọc rất nhiều bài viết về bảo mật trên box bảo mật của HVA và cũng đã phần nào nắm được các điểm cơ bản trong việc bảo vệ một hệ thống. Trong bài viết này mình xin đưa ra một mô hình bảo mật cho một hệ thống bất kì dựa trên những hiểu biết ít ỏi mà mình đã tích luỹ được. Mong các bạn đóng góp để mô hình này thêm đầy đủ.

Thành lập một nhóm chuyên giám sát sự an toàn của hệ thống:
nhóm này có nhiệm vụ kiểm tra, thông báo và kịp thời khống chế những nguy cơ nguy hiểm có thể gây ra cho hệ thống, hạn chế những rủi ro đáng tiếc cho hệ thống. Nhóm này còn có nhiệm vụ tìm hiểu và đưa ra các giải pháp, các cơ chế bảo mật mới cho toàn hệ thống. Cuối cùng, nhiệm vụ của nhóm này là nghiên cứu để thay đổi cách hoạt động để nâng cao hiệu quả cũng như tính an toàn của hệ thống.

Trước khi đưa ra các thông báo về bảo mật, phải lường trước được mọi tình huống sẽ xảy ra.

Để kiểm tra mức độ yếu kém của hệ thống, hãy bắt đầu với những vấn đề có thể dẫn tới độ rủi ro cao nhất trong hệ thống mạng, như các nguy cơ tấn công từ bên ngoài (Internet). Hãy sử dụng cơ chế bảo mật bên ngoài bằng một sản phẩm của một hãng có danh tiếng, có thể cung cấp thông tin cần thiết để ước lượng mức bảo mật hiện tại của hệ thống khi bị tấn công từ Internet. Sự kiểm tra này không chỉ bao gồm việc kiểm tra các lỗ hổng, mà còn gồm cả các phân tích từ người sử dụng, hệ thống được kết nối bằng VPN, mạng và các phân tích về thông tin công cộng sẵn có.

Một trong những chú ý mang tính quan trọng nhất là kiểm tra nguy cơ tấn công từ bên ngoài vào. Đây chính là điểm mấu chốt trong việc đánh giá hệ thống mạng. Nhưng nếu một hệ thống sử dụng cơ chế bảo mật bên ngoài (cung cấp các dịch vụ email, Web), theo cơ chế đó chúng ta nhận ra rằng, không phải toàn bộ các nguy cơ tấn công đều đến từ Internet. Việc cung cấp lớp bảo mật theo account, hệ thống mạng phải được bảo vệ từ chính những người sử dụng VPN và các người dùng khác và tạo ra các mạng riêng rẽ từ các cổng truy cập đầu cuối là toàn bộ các ưu thế của cơ chế này.

Cơ chế bảo mật bên trong cũng giúp việc quản lý bảo mật hệ thống được tốt hơn. Bằng cách kiểm tra toàn bộ hoạt động hệ thống, các cơ chế chính sách bảo mật được xây dựng, các quá trình xử lý thông tin, cơ chế bảo mật bên trong cung cấp thông tin một cách chi tiết tương tự như việc khảo sát kỹ lưỡng phạm vi ở mức sâu hơn, thậm chí bao gồm cả việc tự phá mã mật khẩu và dùng các công cụ phân tích hệ thống để kiểm tra tính tương thích về chính sách bảo mật mới trong tương lai.

Thẩm định tính rủi ro của hệ thống:
Khi thẩm định tính rủi ro của hệ thống, hãy sử dụng công thức sau:
Tính rủi ro = Giá trị thông tin * Mức độ của lỗ hổng * Khả năng mất thông tin

Để lấy được các kết quả bước đầu (các giá trị, các báo cáo về cơ chế bảo mật ngoài, và chính sách bảo mật) và tập trung vào 3 trong số các mặt thường được đề cập. Sau đó, bắt đầu với một số câu hỏi sau:
- Cơ chế bảo mật cũ của hệ thống có được đề ra rõ ràng và cung cấp đủ biện pháp bảo mật chưa?
- Kết quả từ cơ chế bảo mật bên ngoài có đồng bộ so với chính sách bảo mật của toàn hệ thống không?
- Có mục nào cần sửa lại trong cơ chế bảo mật mà không được chỉ rõ trong chính sách bảo mật mới không?
- Hệ thống bảo mật sẽ mất tác dụng trong hoàn cảnh rủi ro cao nhất nào?
- Giá trị, thông tin gì mang tính rủi ro cao nhất? Nguy cơ bị tấn công nhất?

Các câu trả lời cung cấp cái nhìn toàn diện cho việc phân tích về toàn bộ chính sách bảo mật của Hệ thống. Có lẽ, thông tin quan trọng được lấy trong quá trình kết hợp các giá trị kiểm tra và tính rủi ro tương ứng. Theo giá trị thông tin, có thể tìm thấy các giải pháp mô tả được toàn bộ các yêu cầu, bạn có thể tạo ra một danh sách quan tâm về lỗ hổng bảo mật.

Xây dựng giải pháp:
Trên thực tế không tồn tại giải pháp an toàn. Không có một ai, một tài liệu nào có thể cung cấp hết được mọi lỗ hổng trong hệ thống và cũng không có nhà sản xuất nào có thể cung cấp đủ các công cụ cần thiết. Cách tốt nhẫt vẫn là sử dụng kết hợp các giải pháp, sản phẩm nhằm tạo ra cơ chế bảo mật đa năng, đa tầng.

Firewall:
Xem xét và lựa chọn một sản phẩm firewall hợp lý và đưa vào hoạt động phù hợp với chính sách bảo mật của hệ thống là một trong những việc đầu tiên trong quá trình bảo mật hệ thống. Firewall có thể là giải pháp phần cứng hoặc phần mềm hoặc kết hợp cả hai. Nhiệm vụ của firewall là ngăn chặn các tấn công trực tiếp vào các thông tin quan trọng của hệ thống, kiểm soát các thông tin ra vào hệ thống. Việc lựa chọn firewall thích hợp cho một hệ thống không phải là dễ dàng. Các firewall đều phụ thuộc trên một môi trường, cấu hình mạng, ứng dụng cụ thể. Khi xem xét lựa chọn một firewall, cần tập trung tìm hiểu tập các chức năng của firewall, tính năng lọc địa chỉ, gói tin...

Hệ thống kiểm tra xâm nhập mạng (IDS):
Một firewall được gọi là tốt chỉ khi nó có thể lọc và tạo khả năng kiểm soát các gói tin khi chúng đi qua nó. Và đây cũng chính là nơi mà hệ thống IDS nhập cuộc. Nếu xem firewall như một con đập ngăn nước, thì thì có thể ví IDS như một hệ thống điều khiển luồng nước trên các hệ thống xả nước khác nhau. Một IDS, không liên quan tới các công việc điều khiển hướng đi của các gói tin, mà nó chỉ có nhiệm vụ phân tích các gói tin mà firewall cho phép đi qua, tìm kiếm các dấu hiệu tấn công đã biết (các dấu hiệu tấn công chính là các đoạn mã đã được biết mang tính nguy hiểm cho hệ thống) mà không thể kiểm tra hay ngăn chặn bởi firewall. IDS tương ứng với việc bảo vệ đằng sau của firewall, cung cấp việc chứng thực thông tin cần thiết để đảm bảo chắc chắn cho firewall hoạt động hiệu quả.

Hệ thống kiểm tra xâm nhập dựa theo vùng (H-IDS):

Lựa chọn, thực hiện và sử dụng một hệ thống kiểm tra sự xâm nhập trên máy chủ dựa trên nhiều hệ điều hành và môi trường ứng dụng. Một hàm chức năng đầy đủ của H-IDS có thể cung cấp các thông báo đều đặn theo thời gian của bất kỳ sự thay đổi nào tới máy chủ do tác động bên trong hay bên ngoài. Nó là một trong những cách tốt nhất để giảm thiểu sự tổn thương của hệ thống. Việc tìm kiếm hệ thống mà hỗ trợ được hầu hết các hệ điều hành nên được xem như một trong những đặc điểm chính cho mỗi H-IDS.

Hệ thống kiểm tra xâm nhập dựa theo ứng dụng (App-IDS):
Số lượng App-IDS xuất hiện trên thị trường ngày càng nhiều. Các công cụ này thực hiện việc phân tích các thông điệp từ một ứng dụng cụ thể hay thông tin qua proxy tới ứng dụng đó. Trong lúc chúng có mục đích cụ thể, chúng có thể cung cấp mức bảo mật tăng lên theo từng mảng ứng dụng cụ thể. Khi được kết hợp với một H-IDS, chúng đảm bảo rằng sự xâm nhập tới một máy chủ sẽ giảm thiểu. Một App-IDS nên được xem như một chức năng hỗ trợ bảo mật trong suốt, mặc dù không đúng trong một số trường hợp đặc biệt.

Phần mềm Anti-Virus (AV):
Phần mềm AV nên được cài trên toàn bộ máy trạm (workstation), máy chủ (server), hệ thống hỗ trợ dịch vụ và hầu hết những nơi chứa dữ liệu quan trọng vào ra. Hai vấn đề quan trọng nhất để xem xét khi đặt yêu cầu cho một nhà sản xuất AV quản lý nhiều máy chủ và máy trạm trên phạm vi toàn bộ hệ thống là khả năng nhà cung cấp đó có đối phó được các đe doạ từ virus mới hay không, có thường xuyên kiểm tra các phiên bản của virus và các file cập nhật cho virus mới không).

Mạng riêng ảo (VPN):
Việc sử dụng VPN để cung cấp cho các thành viên truy cập tới các tài nguyên của hệ thống từ nhà hay nơi làm việc khác với mức bảo mật cao, hiệu quả nhất trong quá trình truyền thông và làm tăng hiệu quả hoạt động của thành viên. Tuy nhiên, không có điều gì không đi kèm sự rủi ro. Bất kỳ tại thời điểm nào khi một VPN được thiết lập, cần phải mở rộng phạm vi kiểm soát bảo mật của hệ thống tới toàn bộ các nút được kết nối với VPN.

Để đảm bảo mức bảo mật cho hệ thống này, người sử dụng phải thực hiện đầy đủ các chính sách bảo mật của hệ thống. Điều này có thể thực hiện được qua việc sử dụng các hướng dẫn của nhà sản xuất về dịch vụ VPN như hạn chế các ứng dụng có thể chạy ở nhà, cổng mạng có thể mở, loại bỏ khả năng chia kênh dữ liệu, thiết lập hệ thống bảo vệ virus khi chạy hệ thống từ xa, tất cả công việc này giúp giảm thiểu tính rủi ro. Điều này rất quan trọng đối với các hệ thống phải đối mặt với những đe doạ trong các nguy cơ bị tấn công từ các hệ thống khác.

Sinh trắc học trong bảo mật (Cái này xa vời quá):
Sinh trắc học đã được biết đến từ một số năm trước đây, nhưng cho đến nay vẫn có rất nhiều khó khăn cho việc nhân rộng để áp dụng cho các hệ thống bảo mật thương mại. Dấu tay, tròng mắt, giọng nói... cung cấp bảo mật mức cao hơn các mật khẩu thông thường, nhưng cho đến hiện tại chúng cũng vẫn được coi như phương thức tốt nhất để truy cập vào hệ thống.

Các thế hệ thẻ thông minh:
Các hệ thống gần đây đã sử dụng thẻ thông minh như một phương thức bảo mật hữu hiệu. Windows 2000 cung cấp cơ chế hỗ trợ thẻ thông minh như một phương tiện chính trong việc chứng thực quyền đăng nhập hệ thống. Nói chung, sự kết hợp đa công nghệ (như tròng mắt, thẻ thông minh, dấu tay) đang dần hoàn thiện và mở ra một thời đại mới cho việc chứng thực quyền truy cập trong hệ thống bảo mật.

Kiểm tra máy chủ:
Sự kiểm tra đều đặn mức bảo mật được cung cấp bởi các máy chủ phụ thuộc chủ yếu vào sự quản lý. Mọi máy chủ ở trong một hệ thống nên được kiểm tra từ Internet để phát hiện lỗ hổng bảo mật. Thêm nữa, việc kiểm tra từ bên trong và quá trình thẩm định máy chủ về căn bản là cần thiết để giảm thiểu tính rủi ro của hệ thống, như khi firewall bị lỗi hay một máy chủ, hệ thống nào đó bị trục trặc.

Hầu hết các hệ điều hành đều chạy trong tình trạng thấp hơn với mức bảo mật tối thiểu và có rất nhiều lỗ hổng bảo mật. Trước khi một máy chủ đưa vào sản xuất, sẽ có một quá trình kiểm tra theo một số bước nhất định. Toàn bộ các bản sửa lỗi phải được cài đặt trên máy chủ và bất cứ dịch vụ không cần thiết nào phải được loại bỏ. Điều này sẽ tránh được độ rủi ro xuống mức thấp nhất cho hệ thống.

Việc tiếp theo là kiểm tra các log file từ các máy chủ và các ứng dụng. Chúng sẽ cung cấp cho ta một số thông tin tốt nhất về hệ thống, các tấn công bảo mật. Trong rất nhiều trường hợp, đó chính là một trong những cách để xác nhận quy mô của một cuộc tấn công vào máy chủ.

Kiểm soát ứng dụng:
Vấn đề an toàn bảo mật trong mã nguồn của các ứng dụng hầu hết không được quan tâm. Điều này không được thể hiện trên các sản phẩm nhưng liệu nó có được mua, được download miễn phí hay được phát triển từ một mã nguồn nào đó. Để giúp đỡ giảm thiểu sự rủi ro bảo mật trong các ứng dụng nên kiểm tra lại giá trị của ứng dụng trong hệ thống, như công việc phát triển bên trong của các ứng dụng. Điều này cũng có thể bao gồm các đánh giá của các thực thể bên ngoài như thành viên hay các khách.

Việc điều khiển cấu hình bảo mật các ứng dụng có thể làm tăng mức bảo mật. Hầu hết các ứng dụng được cấu hình tại mức tối thiểu của tính năng bảo mật, nhưng qua các công cụ cấu hình, mức bảo mật của hệ thống có thể được tăng lên. Lượng thông tin kiểm soát được cung cấp bởi ứng dụng cũng có thể được cấu hình. Nơi mà các ứng dụng cung cấp thông tin về quy mô bảo mật, thời gian kiểm soát và sự phân tích thông tin này sẽ là chìa khoá để kiểm tra các vấn đề bảo mật thông tin.

Các hệ điều hành:
Sự lựa chọn hệ điều hành và ứng dụng là quá trình đòi hỏi phải có sự cân nhắc kỹ càng. Chọn cái gì giữa hệ điều hành Microsoft hay UNIX, trong rất nhiều trường hợp, điều thường do ấn tượng cá nhân về sản phẩm. Khi lựa chọn một hệ điều hành, thông tin về nhà sản xuất không quan trọng bằng những gì nhà sản xuất đó làm được trong thực tế, về khả năng bảo trì hay dễ dàng thực hiện với các tài liệu đi kèm. Bất kỳ một hệ điều hành nào từ 2 năm trước đây đều không thể đảm bảo theo những chuẩn ngày nay và việc các máy chủ, ứng dụng của bạn được cập nhật thường xuyên sẽ đảm bảo giảm thiểu khả năng rủi ro của hệ thống.

Khi lựa chọn một hệ điều hành, hãy tìm hiểu không chỉ các tiêu chuẩn thông thường như (quản trị, hiệu năng, tính chứng thực), mà còn phải xem xét khả năng áp dụng được của hệ điều hành với hệ thống hiện tại. Một hệ điều hành có thể cung cấp cơ chế bảo mật tốt hơn khi nó tương thích với các ứng dụng chạy bên trong nó như DNS hay WebServer, trong khi các hệ điều hành khác có thể có nhiều chức năng tốt hơn như một hệ thống application, database hay email server.

Thực hiện và đào tạo:
Ban đầu, sự hỗ trợ cần thiết sẽ được đúc rút lại và lên kế hoạch hoàn chỉnh cho dự án bảo mật. Đây chính là bước đi quan trọng mang tính chiến lược của mỗi hệ thống về vấn đề bảo mật. Các chi tiết kỹ thuật của bất kỳ sự mô tả nào cũng sẽ thay đổi theo môi trường, công nghệ, và các kỹ năng liên quan, ngoài ra có một phần không nằm trong việc thực thi bảo mật nhưng chúng ta không được coi nhẹ, đó chính là sự đào tạo. Để đảm bảo sự thành công bảo mật ngay từ lúc đầu, người sử dụng phải có được sự hiểu biết cần thiết về chính sách bảo mật, gồm có:
- Kỹ năng về các hệ thống bảo mật mới, các thủ tục mới.
- Hiểu biết về các chính sách mới về tài sản, dữ liệu quan trọng của hệ thống.
- Hiểu các quy trình bắt buộc mới, chính sách bảo mật hệ thống.

Nói tóm lại, không chỉ đòi hỏi người sử dụng có các kỹ năng cơ bản, mà đòi hỏi họ phải biết tại sao và cái gì họ đang làm là cần thiết với chính sách bảo mật của hệ thống.

Tiếp tục kiểm tra, phân tích và thực hiện:
Hầu hết những gì mong đợi của một hệ thống bảo mật bất kỳ là chạy ổn định, điều khiển được hệ thống và nắm bắt được các luồng dữ liệu của hệ thống. Quá trình phân tích, tổng hợp các thông tin, sự kiện từ firewall, IDS’s, VPN, router, server và các ứng dụng là cách duy nhất để kiểm tra hiệu quả của một hệ thống bảo mật và cũng là cách duy nhất để kiểm tra hầu hết sự vi phạm về chính sách bảo mật cũng như các lỗi thông thường mắc phải với hệ thống.

Các gợi ý bảo mật cho hệ thống và mạng:
Dựa trên kết quả của việc sử dụng các phương thức bảo mật bên ngoài và bảo mật bên trong của hệ thống có thể chia thành các vấn đề nhỏ tuỳ theo từng công cụ như sau:
- Đặc điểm của bảo mật:
- Tạo bộ phận chuyên trách bảo mật để xem xét toàn bộ các vấn đề liên quan tới bảo mật
- Thực hiện các thông báo bảo mật tới người sử dụng để đảm bảo mọi người hiểu và thực hiện theo các yêu cầu cũng như sự cần thiết của việc thực hiện các yêu cầu đó.
- Tạo, cập nhật, theo dõi toàn bộ chính sách bảo mật của hệ thống.

Windows NT/IIS:
- Hầu hết 95% các vấn đề bảo mật của NT/IIS, chúng ta có thể giải quyết theo các bản sửa lỗi. Đảm bảo chắc chắn toàn bộ các máy chủ NT và IIS được sửa lỗi với phiên bản mới nhất.
- Xoá (đừng cài đặt à nha) toàn bộ các script từ Internet.

Cisco Routers:
- Loại bỏ các tính năng như finger, telnet và các dịch vụ, cổng khác trên thiết bị định tuyến (router).
- Bỏ các gói tin tài nguyên IP dẫn đường trong router.
- Chạy Unicast RPF để ngăn chặn người sử dụng giả mạo IP.
- Sử dụng router như một firewall phía trước và thực hiện các ACL tương tự theo các luật trong firewall.

Quy định chung về cầu hình firewall:
- Cấu hình của firewall nên có các luật nghiêm ngặt. Chỉ rõ các luật đối với từng loại truy nhập cả bên ngoài lẫn bên trong.
- Giảm thiểu các truy nhập từ xa tới firewall.
- Cung cấp hệ thống kiểm soát tập luật của firewall.
- Kiểm tra lại các luật.

Cisco PIX Firewalls:
- Không cho phép truy cập qua telnet
- Sử dụng AAA cho việc truy cập, điều khiển hệ thống console

Kiểm soát Firewall-1
- Loại bỏ các luật mặc định cho phép mã hoá và quản lý của firewall, thay thế các luật không rõ ràng bằng các luật phân biệt rạch ròi trong công việc thực thi.
- Không sử dụng mặc định “allow DNS traffic” - chấp nhận luật này chỉ cho các máy chủ cung cấp DNS cho bên ngoài.

DNS bên trong:
- Bất kỳ máy chủ nào cung cấp DNS bên trong và các dịch vụ mang tính chất nội bộ phải không được cung cấp DNS bên ngoài.
- Kiểm tra cùng với nhà cung cấp DNS để cấu hình bảo vệ từ thuộc tính “cache poisoning”.


Mong các bạn góp ý để bài viết này đầy đủ hơn, tổng hợp hơn.
Ai cũng biết rằng các lỗ hổng bảo mật là các điểm yếu của một hệ thống. Các lỗ hổng này đều gây ra các nguy cơ về ngưng trệ dịch vụ, chiếm quyền điều khiển hoặc cho phép truy nhập bất hợp pháp vào hệ thống. Các lỗ hổng có thể được tìm thấy tại các dịch vụ cung cấp như e-mail, web ... Có thể các lỗ hổng còn nằm ngay tại hệ điều hành như Windows, Unix hoặc trong các ứng dụng như databases...

Đầu tiên là các lỗ hổng cho phép thực hiện các cuộc tấn công kiểu DoS.

<Trích =>”DoS là hình thức tấn công sử dụng các giao thức ở tầng Internet trong bộ giao thức TCP/IP để làm hệ thống ngưng trệ dẫn đến tình trạng từ chối người sử dụng hợp pháp truy nhập hay sử dụng hệ thống. Một số lượng lớn các gói tin được gửi tới server trong khoảng thời gian liên tục làm cho hệ thống trở nên quá tải, kết quả là server đáp ứng chậm hoặc không thể đáp ứng các yêu cầu từ client gửi tới.”

Các dịch vụ có chứa lỗ hổng cho phép thực hiện các cuộc tấn công DoS có thể được nâng cấp hoặc sửa chữa bằng các phiên bản mới hơn của các nhà cung cấp dịch vụ. Hiện nay, chưa có một giải pháp toàn diện nào để khắc phục các lỗ hổng loại này vì bản thân việc thiết kế giao thức ở tầng Internet (IP) và bộ giao thức TCP/IP đã chứa đựng những nguy cơ tiềm tàng của các lỗ hổng này.
Tuy nhiên, mức độ nguy hiểm của các lỗ hổng loại này ít vì chúng chỉ làm gián đoạn cung cấp dịch vụ của hệ thống trong một thời gian mà không làm nguy hại đến dữ liệu và người tấn công cũng không đạt được quyền truy nhập bất hợp pháp vào hệ thống.
Một lỗ hổng khác cũng thường thấy đó là các điểm yếu của dịch vụ cho phép thực hiện tấn công làm ngưng trệ hệ thống của người sử dụng cuối. Chủ yếu của hình thức tấn công này là sử dụng dịch vụ Web. Ví dụ: trên một Web Server có những trang Web trong đó có chứa các đoạn mã Java hoặc JavaScripts thì ta có thể làm "treo" hệ thống của người sử dụng trình duyệt Web là Netscape bằng các bước sau:
- Viết các đoạn mã để nhận biết được Web Browers sử dụng Netscape
- Nếu sử dụng Netscape ta sẽ tạo một vòng lặp vô thời hạn, sinh ra vô số các cửa sổ, trong mỗi cửa sổ đó nối đến các Web Server khác nhau.
Với hình thức tấn công đơn giản này bạn có thể làm treo hệ thống. Đây cũng là một hình thức tấn công kiểu DoS. Trong trường hợp này chỉ có thể khởi động lại hệ thống.
Lại một lỗ hổng khác cũng thường gặp đối với các hệ thống mail là không xây dựng các cơ chế anti-relay (chống relay) cho phép thực hiện các hành động spam mail. Như chúng ta đã biết, cơ chế hoạt động của dịch vụ thư điện tử là lưu và chuyển tiếp; một số hệ thống mail không có các xác thực khi người dùng gửi thư, dẫn đến tình trạng các đối tượng tấn công lợi dụng các máy chủ mail này để thực hiện spam mail; Spam mail là hành động nhằm tê liệt dịch vụ mail của hệ thống bằng cách gửi một số lượng lớn các messages tới một địa chỉ không xác định, vì máy chủ mail luôn phải tốn công lực đi tìm những địa chỉ không có thực dẫn đến tình trạng tẩu hoả nhập ma dịch vụ. Số lượng chương trình bom thư thì không thể đếm hết được và rất phổ biến trên mạng Internet.

Tiếp theo, các lỗ hổng cho phép người sử dụng nội bộ có thể chiếm được quyền cao hơn (leo thang đặc quyền) hoặc truy nhập không hợp pháp vào hệ thống. Những lỗ hổng này thường xuất hiện trong các dịch vụ trên hệ thống. Người sử dụng nội bộ được hiểu là người đã có quyền truy nhập vào hệ thống với một số quyền hạn nhất định.
Các lỗ hổng này thường xuất hiện trong các ứng dụng như:

Sendmail: một chương trình được sử dụng rất phổ biến trên hệ thống UNIX để thực hiện gửi thư điện tử cho những người sử dụng trong nội bộ mạng. Thông thường, sendmail là một daemon chạy ở chế độ nền được kích hoạt khi khởi động hệ thống. Trong trạng thái đang hoạt động, sendmail mở port 25 đợi một yêu cầu tới và sẽ thực hiện gửi hoặc chuyển tiếp thư. Sendmail khi được kích hoạt sẽ chạy dưới quyền root hoặc quyền tương ứng (vì liên quan đến các hành động tạo file và ghi log file). Lợi dụng đặc điểm này và một số lỗ hổng trong các đoạn mã của sendmail, mà các đối tượng tấn công có thể dùng sendmail để đạt được quyền root trên hệ thống.
Để khắc phục lỗi của sendmail cần tham gia các nhóm tin về bảo mật; vì sendmail là chương trình có khá nhiều lỗi; nhưng cũng có nhiều người sử dụng nên các lỗ hổng bảo mật thường được phát hiện và khắc phục nhanh chóng. Khi phát hiện lỗ hổng trong sendmail cần nâng cấp, thay thế phiên bản sendmail đang sử dụng.

Một loạt các vấn đề khác về quyền sử dụng chương trình trên UNIX cũng thường gây nên các lỗ hổng. Vì trên hệ thống UNIX, một chương trình có thể được thực thi với 2 khả năng:

- Người chủ sở hữu chương trình đó kích hoạt chạy
- Người mang quyền của người chủ sở hữu chủ nhân của file đó

Một dạng khác xảy ra đối với các chương trình có mã nguồn viết bằng C. Những chương trình viết bằng C thường sử dụng một vùng đệm - là một vùng trong bộ nhớ sử dụng để lưu dữ liệu trước khi xử lý. Những người lập trình thường sử dụng vùng đệm trong bộ nhớ trước khi gán một khoảng không gian bộ nhớ cho từng khối dữ liệu. Ví dụ, người sử dụng viết chương trình nhập trường tên người sử dụng; qui định trường này dài 20 ký tự. Do đó họ sẽ khai báo:
char first_name [20];

Với khai báo này, cho phép người sử dụng nhập vào tối đa 20 ký tự. Khi nhập dữ liệu, trước tiên dữ liệu được lưu ở vùng đệm; nếu người sử dụng nhập vào 35 ký tự; sẽ xảy ra hiện tượng tràn vùng đệm và kết quả 15 ký tự dư thừa sẽ nằm ở một vị trí không kiểm soát được trong bộ nhớ. Đối với những người tấn công, có thể lợi dụng lỗ hổng này để nhập vào những ký tự đặc biệt, để thực thi một số lệnh đặc biệt trên hệ thống. Thông thường, lỗ hổng này thường được lợi dụng bởi những người sử dụng trên hệ thống để đạt được quyền root không hợp lệ. Việc kiểm soát chặt chẽ cấu hình hệ thống và các chương trình sẽ hạn chế được các lỗ hổng.

Cuối cùng, các lỗ hổng đe dọa tính toàn vẹn và bảo mật của hệ thống. Các lỗ hổng này thường xuất hiện ở những hệ thống quản trị yếu kém hoặc không kiểm soát được cấu hình mạng. Một ví dụ thường thấy là trên nhiều hệ thống sử dụng Web Server là Apache. Đối với Web Server này thường cấu hình thư mục mặc định để chạy các scripts là cgi-bin; trong đó có một Scripts được viết sẵn để thử hoạt động của apache là test-cgi. Đối với các phiên bản cũ của Apache (trước version 1.1), có dòng sau trong file test-cgi:

echo QUERY_STRING = $QUERY_STRING

Biến môi trường QUERY_STRING do không được đặt trong có dấu " (quote) nên khi phía client thưc hiện một yêu cầu trong đó chuỗi ký tự gửi đến gồm một số ký tự đặc biệt; ví dụ ký tự "*", web server sẽ trả về nội dung của toàn bộ thư mục hiện thời (là các thư mục chứa các scipts cgi). Người sử dụng có thể nhìn thấy toàn bộ nội dung các file trong thư mục hiện thời trên hệ thống server. Một ví dụ khác cũng xảy ra tương tự đối với các Web server chạy trên hệ điều hành Novell; Các web server này có một scripts là convert.bas, chạy scripts này cho phép đọc toàn bộ nội dung các files trên hệ thống. Những lỗ hổng này hết sức nguy hiểm vì nó đã tồn tại sẵn có trên phần mềm sử dụng; người quản trị nếu không hiểu sâu về dịch vụ và phần mềm sử dụng sẽ có thể bỏ qua những điểm yếu này. Đối với những hệ thống cũ, thường xuyên phải kiểm tra các thông báo của các nhóm tin về bảo mật trên mạng để phát hiện những lỗ hổng loại này. Một loạt các chương trình phiên bản cũ thường sử dụng có những lỗ hổng này như: FTP, Gopher, Telnet, Sendmail, ARP, finger...

Bây giờ mới là phần quan trọng nè, đó là ảnh hưởng của các lỗ hổng bảo mật trên mạng Internet :

Phần trình bày ở trên đã phân tích một số trường hợp có những lỗ hổng bảo mật, những người tấn công có thể lợi dụng những lỗ hổng này để tạo ra những lỗ hổng khác tạo thành một chuỗi mắt xích những lỗ hổng. Ví dụ, một người muốn xâm nhập vào hệ thống mà anh ta không có tài khoản truy nhập hợp lệ trên hệ thống đó. Trong trường hợp này, trước tiên anh ta sẽ tìm ra các điểm yếu trên hệ thống, hoặc từ các chính sách bảo mật, hoặc sử dụng các công cụ dò sét thông tin trên hệ thống đó để đạt được quyền truy nhập vào hệ thống. Sau khi mục tiêu thứ nhất đã đạt được, anh ta có thể tiếp tục tìm hiểu các dịch vụ trên hệ thống, nắm bắt được các điểm yếu và thực hiện các hành động tấn công tinh vi hơn. Tuy nhiên, có phải bất kỳ lỗ hổng bảo mật nào cùng nguy hiểm đến hệ thống hay không? Có rất nhiều thông báo liên quan đến lỗ hổng bảo mật trên mạng Internet, hầu hết trong số đó là các lỗ hổng không đặc biệt nguy hiểm đối với hệ thống. Ví dụ, khi những lỗ hổng về sendmail được thông báo trên mạng, không phải ngay lập tức ảnh hưởng trên toàn bộ hệ thống. Khi những thông báo về lỗ hổng được khẳng định chắc chắn, các nhóm tin sẽ đưa ra một số phương pháp để khắc phục hệ thống. Ngoài HVA ra trên mạng Internet có một số nhóm tin thường thảo luận về các chủ đề liên quan đến các lỗ hổng bảo mật đó là <Trích>:
- CERT (Computer Emergency Reponse Team): Nhóm tin này hình thành sau khi có phương thức tấn công Worm xuất hiện trên mạng Internet. Nhóm tin này thường thông báo và đưa ra các trợ giúp liên quan đến các lỗ hổng bảo mật. Ngoài ra nhóm tin còn có những báo cáo thường niên để khuyến nghị người quản trị mạng về các vấn đề liên quan đến bảo mật hệ thống. Địa chỉ Web site của nhóm tin: http://www.cert.org/
- CIAC (Department of Energy Computer Incident Advisory Capability): tổ chức này xây dựng một cơ sở dữ liệu liên quan đến bảo mật cho bộ năng lượng của Mỹ. Thông tin của CIAC được đánh giá là một kho dữ liệu đầy đủ nhất về các vấn đề liên quan đến bảo mật hệ thống. Địa chỉ web site của CIAC : http://ciac.llnl.org/
- FIRST (The Forum of Incident Response and Security Teams): Đây là một diễn đàn liên kết nhiều tổ chức xã hội và tư nhân, làm việc tình nguyện để giải quyết các vấn đề về an ninh của mạng Internet. Địa chỉ Web site của FIRST: http://www.first.org./ Một số thành viên của FIRST gồm:
- CIAC
- NASA Automated Systems Incident Response Capability.
- Purdue University Computer Emergency Response Team
- Stanford University Security Team
- IBM Emergency Response Team

Không có một hệ thống nào có thể đảm bảo an toàn tuyệt đối, bản thân mỗi dịch vụ đều có những lỗ hổng bảo mật tiềm tàng. Đứng trên góc độ người quản trị hệ thống, ngoài việc tìm hiểu phát hiện những lỗ hổng bảo mật còn luôn phải thực hiện các biện pháp kiểm tra hệ thống xem có dấu hiệu tấn công hay không. Các biện pháp đó đã được nói đến nhiều trên mạng nhưng ở đây để đảm bảo tính toàn vẹn của bài viết mình vẫn xin nêu ra như sau:
- Kiểm tra các dấu hiệu hệ thống bị tấn công: hệ thống thường bị treo hoặc bị crash bằng những thông báo lỗi không rõ ràng. Khó xác định nguyên nhân do thiếu thông tin liên quan. Trước tiên, xác định các nguyên nhân về phần cứng hay không, nếu không phải phần cứng hãy nghĩ đến khả năng bị tấn công.
- Kiểm tra các tài khoản người dùng mới trên hệ thống: một số tài khoản lạ, nhất là uid của tài khoản đó bằng 0.
- Kiểm tra xuất hiện các tập tin lạ. Thường phát hiện thông qua cách đặt tên các tệp tin, mỗi người quản trị hệ thống nên có thói quen đặt tên tập tin theo một mẫu nhất định để dễ dàng phát hiện tập tin lạ. Dùng các lệnh ls -l để kiểm tra thuộc tính setuid và setgid đối với những tập tin đáng chú ý (đặc biệt là các tập tin scripts).
- Kiểm tra thời gian thay đổi trên hệ thống, đặc biệt là các chương trình login, sh hoặc các scripts khởi động trong /etc/init.d, /etc/rc.d ...
- Kiểm tra hiệu năng của hệ thống. Sử dụng các tiện ích theo dõi tài nguyên và các tiến trình đang hoạt động trên hệ thống như ps hoặc top ...
- Kiểm tra hoạt động của các dịch vụ mà hệ thống cung cấp. Chúng ta đã biết rằng một trong các mục đích tấn công là làm cho tê liệt hệ thống (Hình thức tấn công DoS). Sử dụng các lệnh như ps, pstat, các tiện ích về mạng để phát hiện nguyên nhân trên hệ thống.
- Kiểm tra truy nhập hệ thống bằng các account thông thường, đề phòng trường hợp các account này bị truy nhập trái phép và thay đổi quyền hạn mà người sử dụng hợp pháp không kiểm sóat được.
- Kiểm tra các file liên quan đến cấu hình mạng và dịch vụ như /etc/inetd.conf; bỏ các dịch vụ không cần thiết; đối với những dịch vụ không cần thiết chỉ chạy dưới quyền root thì không cho chạy bằng các quyền yếu hơn.
- Kiểm tra các phiên bản của sendmail, /bin/mail, ftp; tham gia các nhóm tin về bảo mật để có thông tin về lỗ hổng của dịch vụ sử dụng

Các biện pháp này kết hợp với nhau tạo nên một chính sách về bảo mật đối với hệ thống.

XÂY DỰNG CHÍNH SÁCH BẢO MẬT

Qua trình bày ở các phần trên cho chúng ta thấy phần nào những hoạt động liên quan xây dựng một chính sách bảo mật. Đó là những hoạt động nhằm thiết lập các khung chính sách nhằm đảm an toàn cho hệ thống, đồng thời đảm bảo hệ thống ổn định và có tính thực thi cao, có khả năng chống lại các cuộc tấn công vào mạng. Tuy nhiên, một hệ thống nếu dựa vào mục tiêu bảo mật mà làm mất đi tính mềm dẻo và dễ sử dụng thì chính sách bảo mật trên hệ thống đó cũng chưa phải là tốt. Có thể nói rằng một hệ thống có chính sách bảo mật hợp lý là biện pháp tốt nhất để đảm bảo an toàn mạng. Do đó, phần sau đây sẽ trình bày những bước cần thiết để xây dựng một chính sách bảo mật hợp lý đối với các hệ thống cung cấp dịch vụ trên mạng.

I. CÁC BƯỚC CHUẨN BỊ

Trong các bước xây dựng một chính sách bảo mật đối với một hệ thống, nhiệm vụ đầu tiên của người quản trị là xác định được đúng mục tiêu cần bảo mật. Việc xác định những mục tiêu của chính sách bảo mật giúp người sử dụng biết được trách nhiệm của mình trong việc bảo vệ các tài nguyên thông tin trên mạng, đồng thời giúp các nhà quản trị thiết lập các biện pháp đảm bảo hữu hiệu trong quá trình trang bị, cấu hình và kiểm soát hoạt động của hệ thống. Những mục tiêu bảo mật bao gồm:

1. Xác định đối tượng cần bảo vệ:

Đây là mục tiêu đầu tiên và quan trọng nhất trong khi thiết lập một chính sách bảo mật. Người quản trị hệ thống cần xác định rõ những đối tượng nào là quan trọng nhất trong hệ thống cần bảo vệ; xác định rõ mức độ ưu tiên đối với những đối tượng đó. Ví dụ các đối tượng cần bảo vệ trên một hệ thống có thể là: Các máy chủ dịch vụ, các router, các điểm truy nhập hệ thống, các chương trình ứng dụng, hệ quản trị CSDL, các dịch vụ cung cấp ...

Trong bước này cần xác định rõ phạm vi và ranh giới giữa các thành phần trong hệ thống để khi xảy ra sự cố trên hệ thống có thể cố lập các thành phần này với nhau, dễ dàng dò tìm nguyên nhân và cách khác phục. Có thể chia các thành phần trên một hệ thống theo các cách sau:

- Phân tách các dịch vụ tùy theo mức độ truy cập và độ tin cậy
- Phân tách hệ thống theo các thành phần vật lý như các máy chủ (server), router, các máy trạm (workstation)...
- Phân tách theo phạm vi cung cấp của các dịch vụ như: các dịch vụ bên trong mạng (NIS, NFS ...) và các dịch vụ bên ngoài như Web, FTP, Mail ...

2. Xác định nguy cơ đối với hệ thống

Các nguy cơ đối với hệ thống chính là các lỗ hổng bảo mật của các dịch vụ, hệ thống đó cung cấp. Việc xác định đúng đắn các nguy cơ này giúp người quản trị có thể tránh được những cuộc tấn công mạng, hoặc có biện pháp bảo vệ đúng đắn. Thông thường, một số nguy cơ này nằm ở các thành phần sau trên hệ thống:

2.1. Các điểm truy nhập:

Các điểm truy nhập của hệ thống bất kỳ (Access Points) thường đóng vai trò quan trọng đối với mỗi hệ thống vì đây là điểm đầu tiên mà người sử dụng cũng như những người tấn công mạng quan tâm tới. Thông thường các điểm truy nhập thường phục vụ hầu hết người dùng trên mạng, không phụ thuộc vào quyền hạn cũng như dịch vụ mà người sử dụng dùng. Do đó, các điểm truy nhập thường là thành phần có tính bảo mật lỏng lẻo. Mặt khác, đối với nhiều hệ thống còn cho phép người sử dụng dùng các dịch vụ như Telnet, rlogin để truy nhập vào hệ thống, đây là những dịch vụ có nhiều lỗ hổng bảo mật.

2.2. Không kiểm soát được cấu hình hệ thống

Không kiểm soát hoặc mất cấu hình hệ thống chiếm một tỷ lệ lớn trong số các lỗ hổng bảo mật. Ngày nay, có một số lượng lớn các phần mềm sử dụng, yêu cầu cấu hình phức tạp và đa dạng hơn, điều này cũng dẫn đến những khó khăn để người quản trị nắm bắt được cấu hình hệ thống. Để khắc phục hiện tượng này, nhiều hãng sản xuất phần mềm đã đưa ra những cấu hình khởi tạo mặc định, trong khi đó những cấu hình này không được xem xét kỹ lưỡng trong một môi trường bảo mật. Do đó, nhiệm vụ của người quản trị là phải nắm được hoạt động của các phần mềm sử dụng, ý nghĩa của các file cấu hình quan trọng, áp dụng các biện pháp bảo vệ cấu hình như sử dụng phương thức mã hóa hashing code (MD5).

2.3. Những bug phần mềm sử dụng

Những bug phần mềm tạo nên những lỗ hổng của dịch vụ là cơ hội cho các hình thức tấn công khác nhau xâm nhập vào mạng; Các chương trình trojans và virus là những ví dụ cụ thể. Do đó, người quản trị phải thường xuyên cập nhật tin tức trên các nhóm tin về bảo mật và từ nhà cung cấp phần mềm để phát hiện những lỗi của phần mềm sử dụng. Khi phát hiện có bug cần thay thế hoặc ngừng sử dụng phần mềm đó chờ nâng cấp lên phiên bản tiếp theo.

2.4. Những nguy cơ trong nội bộ mạng

Một hệ thống không những chịu tấn công từ ngoài mạng, mà có thể bị tấn công ngay từ bên trong. Có thể là vô tình hoặc cố ý, các hình thức tấn công bên trong mạng vẫn thường xảy ra trên một số hệ thống lớn. Chủ yếu với hình thức tấn công ở bên trong mạng là người tấn công có thể tiếp cận về mặt vật lý đối với các thiết bị trên hệ thống, đạt được quyền truy nhập không hợp lệ tại ngay hệ thống đó.

3. Xác định phương án thực thi chính sách bảo mật

Sau khi thiết lập được một chính sách bảo mật, một hoạt động tiếp theo là lựa chọn các phương án thực thi một chính sách bảo mật. Một chính sách bảo mật là hoàn hảo khi nó có tình thực thi cao. Để đánh giá tính thực thi này, có một số tiêu chí để lựa chọn đó là:

3.1. Tính đúng đẵn

Đây là tiêu chí đầu tiên và quan trọng nhất để lựa chọn một chính sách bảo mật. Nó đảm bảo cho sự thành công của chính sách đó. Ví dụ, nếu như một hệ thống thường xuyên có các nguy cơ bị tấn công từ bên ngoài, một chính sách bảo mật cần phải đảm bảo kiểm soát được các truy nhập của khách hàng vào hệ thống bằng việc xây dựng các thủ tục quản lý tài khoản người dùng chặt chẽ và kỹ càng.

3.2. Tính thân thiện

Một chính sách bảo mật cần thiết lập các công cụ bảo mật thân thiện với người quản trị và dễ dàng thực thi các chính sách bảo mật. Đồng thời, còn đảm bảo các biện pháp bảo mật trên hệ thống không làm khó khăn hoặc bất tiện đối với người sử dụng. Ví dụ, những chính sách nhằm kiểm tra tính hợp lệ khi khách hàng truy nhập vào hệ thống; những chính sách về bảo vệ mật khẩu như yêu cầu khách hàng đối mật khẩu trong một thời gian xác định... các chính sách này phải có tính "trong suốt" đối với khách hàng sử dụng hệ thống.

3.3. Tính hiệu quả:

Sau cùng, một chính sách bảo mật được quyết định bởi các nhà quản lý; họ quan tâm đến hiệu quả mà chính sách đó mang lại. Một chính sách bảo mật có thể đảm bảo hệ thống an toàn, tin cậy, nhưng lại cần có chi phí quá cao so với lợi nhuận mà hệ thống đó đem lại sẽ không được quyết định thực thi. Tuy nhiên, trong một khía cạnh khác, có thể các chính sách không thể đem lại hiệu quả ngay, do đó cần xem xét mức độ chi phí bảo mật hệ thống đối với một thời gian dài cùng với các lợi nhuận khác đem lại từ hệ thống bảo mật như nâng cao chất lượng dịch vụ bằng tính ổn định của hệ thống, ...

II. THIẾT LẬP CÁC QUI TẮC/THỦ TỤC

1. Các thủ tục đối với hoạt động truy nhập không hợp lệ

Sử dụng một vài công cụ có thể phát hiện ra các hoạt động truy nhập không hợp lệ vào một hệ thống. Các công cụ này có thể đi kèm theo hệ điều hành, hoặc từ các hãng sản xuất phần mềm thứ ba

1.1. Các công cụ nhận biết truy nhập không hợp lệ

Đây là biện pháp phổ biến nhất để theo dõi các hoạt động hệ thống.

- Các công cụ logging: Ví dụ các công cụ theo dõi logfile, hầu hết các hệ điều hành đều hỗ trợ một số lượng lớn các công cụ ghi log với nhiều thông tin bổ ích. Để phát hiện những hoạt động truy nhập không hợp lệ, một số qui tắc khi phân tích logfile như sau:

. So sánh các hoạt động trong logfile với các log trong quá khứ. Đối với các hoạt động thông thường, các thông tin trong logfile thường có chu kỳ giống nhau; ví dụ thời điểm người sử dụng login hoặc log out, thời gian sử dụng các dịch vụ trên hệ thống...
. Nhiều hệ thống sử dụng các thông tin trong logfile để tạo hóa đơn cho khách hàng. Có thể dựa vào các thông tin trong hóa đơn thanh toán để xem xét các truy nhập không hợp lệ nếu thấy trong hóa đơn đó có những điểm bất thường như thời điểm truy nhập, số điện thoại lạ ...
. Dựa vào các tiện ích như syslog để xem xét, đặc biệt là các thông báo lỗi login không hợp lệ (bad login) trong nhiều lần.
. Dựa vào các tiện ích kèm theo hệ điều hành để theo dõi các tiến trình đang hoạt động trên hệ thống; để phát hiện những tiến trình lạ, hoặc những chương trình khởi tạo không hợp lệ ...

- Sử dụng các công cụ giám sát khác: Ví dụ sử dụng các tiện ích về mạng để theo dõi các lưu lượng, tài nguyên trên mạng để phát hiện những điểm nghi ngờ.
- Xây dựng kế hoạch giám sát: Do có nhiều công việc phải giám sát, nên người quản trị cần xây dựng kế hoạch giám sát thông qua các công cụ trên hệ thống như cron, tạo schedule ... Mặt khác, kế hoạch này đảm bảo các công cụ giám sát không chiếm nhiều tài nguyên hệ thống.
- Tạo các báo cáo từ các thông tin giám sát: Có thể sử dụng những thông tin từ logfile vào một CSDL; từ đó xây dựng các mẫu báo cáo theo kế hoạch giám sát. Dựa vào các báo cáo này người quản trị có thể phát hiện những điểm yếu trên mạng, đồng thời dự báo được hướng phát triển mạng trong tương lai.

1.2. Các phản ứng của hệ thống

Dựa vào các bước trên để xác định hệ thống bị tấn công. Khi phát hiện cần thực hiện các công việc sau:

- Xác định mức độ nguy hiểm: Đánh giá mức độ nguy hại và ảnh hưởng của nó.
- Xác định các hành động phá hoại

Trong một số trường hợp, có thể dựa vào pháp luật hiện hành để xử lý.

2. Triển khai chính sách bảo mật

Đào tạo người sử dụng

Người sử dụng đóng vai trò quan trọng trong quá trình thực thi một chính sách bảo mật. Về phía người dùng luôn mong muốn tính đơn giản về dễ dàng đối với các thủ tục. Do đó, khi xây dựng chính sách bảo mật, một mặt đảm bảo chính sách đó không làm cản trở người sử dụng, mặt khác người sử dụng cần nhận thức tầm quan trọng của các chính sách bảo mật và có trách nhiệm thực hiện nó; một số công việc người dùng cần lưu ý:

- Sử dụng tài khoản hợp lệ: Người sử dụng cần nhận thức được lợi ích khi sử dụng một tài khoản hợp lệ. Đối với nhà quản trị hệ thống cần có chính sách ưu đãi, khuyến khích người sử dụng dùng những tài khoản hợp lệ.
- Quản lý tài khoản: Người sử dụng nhận thức được vai trò quan trọng trong việc bảo vệ tài khoản của mình. Các hoạt động quản lý tài khoản bao gồm việc bảo vệ mật khẩu, thay đổi mật khẩu định kỳ, đăng ký thời điểm, ... Sử dụng các phần mềm bảo vệ máy trạm của người sử dụng, log out khỏi hệ thống sau một thời gian time-out ...
- Phát hiện tài khoản sử dụng trái phép: Người dùng cần được huấn luyện về các cách phát hiện tài khoản của mình sử dụng trái phép như thế nào. Người sử dụng cần thường xuyên kiểm tra các hoạt động của mình để đảm bảo không có người khác lợi dụng tài khoản thực hiện những hành động khác.
- Thủ tục tạo báo cáo khi có sự cố: Người sử dụng phải có thói quen thông báo sự cố đến người quản trị khi phát hiện nghi vấn đối với tài khoản của mình. Trong chính sách bảo mật cần xây dựng các mẫu báo cáo này để cung cấp cho người dùng.

3. Thiết lập các thủ tục bảo vệ hệ thống

3.1. Thủ tục quản lý tài khoản người sử dụng

Thủ tục quản lý tài khoản là hết sức quan trọng để chống lại các truy nhập không hợp lệ. Một số thông tin cần thiết khi xây dụng thủ tục quản lý tài khoản gồm: Đối tượng nào có thể truy nhập vào hệ thống. Một tài khoản tồn tại trong thời gian bao lâu trên hệ thống. Những đối tượng nào có quyền quản trị hệ thống... Trả lời những câu hỏi này sẽ thiết lập được các thủ tục quản lý tài khoản người sử dụng. Đồng thời cần thực hiện các biện pháp sau để bảo vệ tài khoản:

- Giám sát chặt chẽ hệ thống quản lý truy nhập người dùng. Ví dụ trên UNIX là file /etc/passwd, trên Windows NT là Database management users.
- Đối với một số dịch vụ, cho phép sử dụng các tài khoản không cần mật khẩu, hoặc dùng mật khẩu chung như FTP dùng tài khoản anonymous, dùng tài khoản guest để truy nhập vào hệ thống, cần xác định rõ quyền tác động của chúng; thông thường chỉ có quyền rất thấp trong một hệ thống. Đối với những hệ thống UNIX có hỗ trợ cơ chế che mật khẩu qua file /etc/shadow, thì cần sử dụng cơ chế này (vì thông thường file /etc/passwd trong UNIX để quyền đọc đối với tất cả người sử dụng, những kẻ tấn công có thể thấy được mật khẩu mã hóa của một tài khoản, dựa vào các chương trình bẻ khóa có thể phát hiện ra các mật khẩu yếu)
- Kiểm soát chặt chẽ các quyền của các tài khoản trên hệ thống; không sử dụng quyền root trong các trường hợp không cần thiết. Đối với các tài khoản không sử dụng trên hệ thống cần đổi mật khẩu hoặc hủy bỏ.
- Ngoài ra, có các biện pháp khác như: hạn chế tài khoản truy nhập theo thời điểm, theo địa chỉ máy trạm, các thông tin tài khoản rõ ràng, hợp lệ.

3.2. Thủ tục quản lý mật khẩu

Trong hầu hết các hệ thống hiện nay đều xác thực truy nhập qua mật khẩu người dùng, vì vậy các thủ tục quản lý mật khẩu là hết sức quan trọng và cần thiết. Các công việc liên quan đễn quản lý mật khẩu bao gồm:

- Lựa chọn mật khẩu: Như chúng ta đã biết có một số hình thức tấn công mạng, phương thức phá mật khẩu khá mạnh và hữu hiệu đối với các mật khẩu yếu. Để khắc phục cần lựa chọn mật khẩu mạnh. Một số qui tắc lựa chọn mật khẩu như sau:

. Không sử dụng tên người truy nhập làm mật khẩu
. Không sử dụng bất cứ thông tin nào liên quan đến gia đình, cá nhân người sử dụng như ngày sinh, số điện thoại ... làm mật khẩu
. Không sử dụng mật khẩu chỉ gồm toàn bộ các chữ hoặc các số
. Không sử dụng những từ trong từ điển, những danh sách tuần tự làm mật khẩu
. Không sử dụng mật khẩu ít hơn 6 ký tự
. Tạo mật khẩu gồm cả chữ hoa và chữ thường
. Tạo mật khẩu kết hợp cả chữ, số và các ký tự đặc biệt
. Tạo mật khẩu có thể gõ nhanh mà không cần nhìn vào bàn phím

- Sau khi đã tạo xong mật khẩu, cần có chính sách buộc người sử dụng thay đổi mật khẩu trong một thời gian nhất định. Hầu hết các hệ thống hiện nay đều hỗ trợ cơ chế này; nếu không thay đổi mật khẩu, tài khoản đó không còn giá trị trên hệ thống
- Trong trường hợp người sử dụng bị mất mật khẩu, để cấp lại mật khẩu mới cần có các thủ tục khác để xác thực người sử dụng ...
- Cần giám sát và theo dõi chặt chẽ các chương trình đổi mật khẩu; đây thường là mục tiêu để tấn công.

3.3. Thủ tục quản lý cấu hình hệ thống

Các thông tin về cấu hình của dịch vụ và phần mềm sử dụng đóng vai trò quan trọng đối với mỗi hệ thống. Các thủ tục quản lý cấu hình hệ thống cần xác định rõ ai là người có quyền hợp lệ thay đổi cầu hình hệ thống, và những thay đổi như thế nào cần được thông báo tới nhà quản lý. Trong các thủ tục quản lý cấu hình cũng cần xác định rõ một số thông tin như:

- Vị trí lưu các file cấu hình chuẩn
- Qui trình quản lý mật khẩu root
- Các thuật toán liên quan đến mã hóa mật khấu sử dụng
- ...

3.4. Thủ tục sao lưu và khôi phục dữ liệu

Sao lưu dữ liệu không chỉ đề phòng đối với trường hợp có sự cố về hệ thống phần cứng mà còn có thể khôi phục lại hệ thống trong trường hợp bị kẻ phá hoại xâm nhập và thay đổi hệ thống. Nếu không có dữ liệu sao lưu sẽ không thể khôi phục lại hệ thống trước khi bị tấn công.

Cần xây dựng kế hoạch cụ thể cho công tác sao lưu dữ liệu, xác định các phương pháp sao lưu sao cho hiệu quả nhất. Có thể sao lưu theo ngày đối với những dữ liệu thường xuyên thay đổi, sao lưu theo tuần và theo tháng đối với các dữ liệu không quan trọng. Kết hợp các biện pháp sao lưu khác nhau. Ví dụ, một kế hoạch sao lưu tốt thường áp dụng với các hệ thống đó là: Sao lưu toàn bộ hệ thống ít nhất một lần trong một tháng; Sao lưu từng phần ít nhất 2 lần một tuần. Hầu hết các hệ điều hành hiện nay đều hỗ trợ các cơ chế sao lưu.

3.5. Thủ tục báo cáo sự cố:

Đối với người quản lý, người quản trị hệ thống cần xây dựng các mẫu thông báo sự cố tới người sử dụng kịp thời, trong đó xác định rõ mức độ ảnh hưởng và nguyên nhân, cách khắc phục sự cố; Các thông báo này có thể gửi qua email hoặc đường thư tín.

Đối với người sử dụng, khi phát hiện các hành động tấn công từ tài khoản người dùng, cần thông báo đến người dùng việc tài khoản của họ bị sử dụng không hợp lệ và yêu cầu có biện pháp thích hợp để bảo vệ tài khoản người dùng.

III. KIỂM TRA, ĐÁNH GIÁ VÀ HOÀN THIỆN CHÍNH SÁCH BẢO MẬT

Một hệ thống luôn có những biến động về cấu hình, các dịch vụ sử dụng, và ngay cả nền tảng hệ điều hành sử dụng, các thiết bị phần cứng ... do vậy người thiết lập các chính sách bảo mật mà cụ thể là các nhà quản trị hệ thống luôn luôn phải rà soát, kiểm tra lại chính sách bảo mật đảm bảo luôn phù hợp với thực tế.

Mặt khác kiểm tra và đánh giá chính sách bảo mật còn giúp cho các nhà quản lý có kế hoạch xây dựng mạng lưới hiệu quả hơn.

1. Kiểm tra, đánh giá

Công việc này được thực hiện thường xuyên và liên tục; kết quả của một chính sách bảo mật thể hiện rõ nét nhất trong chất lượng dịch vụ mà hệ thống đó cung cấp; Dựa vào đó có thể kiểm tra, đánh giá được chính sách bảo mật đó là hợp lý hay chưa.

Hoạt động đánh giá một chính sách bảo mật có thể dựa vào một số tiêu chí sau:

- Có tính thực thi hay không.
- Có nhanh chóng phát hiện và ngăn ngừa các hoạt động tấn công
- Có các công cụ hữu hiệu để hạn chế tấn công hệ thống hay không

2. Hoàn thiện chính sách bảo mật:

Từ các hoạt động kiểm tra, đánh giá nêu trên, các nhà quản trị hệ thống có thể rút ra được những kinh nghiệm để có thể cải thiện chính sách bảo mật hữu hiệu hơn. Cải thiện chính sách có thể là những hành động nhằm đơn giản công việc người sử dụng, giảm nhẹ tính cồng kềnh, phức tạp trên hệ thống, hoặc kiểm soát hệ thống chặt chẽ hơn nữa...

Những hoạt đổng cải thiện chính sách bảo mật có thể diễn ra trong suốt thời gian tồn tại của hệ thống đó, nó gắn liền với các công việc quản trị, duy trì hệ thống. Đây cũng chính là một yêu cầu trong khi xây dựng một chính sách bảo mật, cần phải luôn luôn mềm dẻo, có những thay đổi phù hợp tùy theo điều kiện thực tế.
Xin lỗi vì đã gửi bài ở đây, nhưng quả thật không làm thế nào gửi được vào cái box ở trên.
Đây là một số bài mà trước đây em đã gửi và định gửi, đã gửi vì đã làm nó thành của mỉnh, còn chưa gửi bởi nó vẫn còn giống một ai đó.
Nhân lúc HVA đang "xa cơ lỡ vận", đàn em này tranh thủ gửi mấy bài, lúc này mà gửi chắc không sợ giống của ai. He he he. Em là người theo chủ nghĩa cơ hội mà. Nhưng dù sao cũng xin mạn phép các đàn anh nếu bài của em có giống giống hay rất giống thậm trí là của ai đó. Bởi em copy nội dung rồi biên tập lại cho nên "không nhớ tên tác giả".
Cảm ơn anh Zombie về cái giáo trình trên nhé.
Làm ơn chỉ cho đàn em rõ thêm về cấu trúc file EXE cái?
Sao em tìm mãi mà không thấy mục này nhỉ? Hồi xưa em nhớ mục này rất sôi động, bổ ích. Anh em trao đổi về đề thi hacker của Nga, Ukcraina.. rất hay, em cảm thấy mình học được nhiều từ đó. Mong BQT xem xét đề nghị của em, và sớm sớm giả quyết cho. smilie
Cái này theo em chỉ dành cho những site businít thôi, còn muốn độc thì phải phá cách chứ. Theo em cứ bổ màu mè bung bét vào: PS, Flash, Script...gì cũng được miễn hầm hố là được.
Cái site HVA này bao nhiêu anh em đã góp ý là nó tối tối, mờ mờ, rờn rợn... mà sao làm lại rồi vẫn thế nhỉ.
Nhưng có cái lợi là ban đêm em sử dụng, chả có tí ánh sáng nào phát ra cả cho nên ngồi đến sáng ông bà già cũng không ai biết. Mục đích của người thiết kế là thế sao? Hay theo chủ nghĩa "Đen mới đẹp".
Nếu không Set Permision trong ISS cho cái thư mục của mình thì hình như nó chỉ cho mình đọc chứ không cho mình ghi vào DB đúng không?
Cho em hỏi. Các đĩa WinXP SP2 ở các cửa hàng họ "chế" kiểu gì mà có đĩa em cài (cài mới) mất hơn tiếng, có đĩa chỉ mất 30' (Đĩa này chả hiểu ở đâu ra, những cài nhanh khủng khiếp-Đấy là đối với máy em (P4 2.26G, RAM 256)). Bác nào có nhu cầu PM cho em, em sao cho một bản. Mà đĩa này không dùng cách trên đâu nhé, nó vẫn bắt mình ngồi điền các loại thông tin.
Nhớ cái đống cpl thà vào CP có khi nhanh hơn. Nhưng sắp theo kiểu AB này dùng để tra cứu cũng không đến nỗi nào.
Đợt em dẫn thằng bạn em đi mua thì cứ nhìn màn hình sáng ngon là được, còn các thứ khác như CPU, RAM, HDD... thì chắc không có vấn đề, bởi bây giờ nó vẫn dùng bung bét. Mua Laptop cũ theo em chỉ cần quan tâm đến màn hình thôi, màn hình laptop cũ thường rất nhanh chết nếu nó có vấn đề. Thường thì các cửa hàng sẽ chỉ bảo hành cho mình 3-6 tháng, sau thời gian này màn hình nó mới bắt đầu chết mới đau chứ. Cho nên tinh mắt là cả một vấn đề khi đi mua, có thể thử bằng cách kiểm tra các điểm chết bằng Paint chẳng hạn. Có thể em may mắn nên vớ được cái ngon chăng?
Theo mình biết thì tùy từng loại BIOS mà những tiếng Beep có kiểu khác nhau.
Nói chung, thường thì mình gặp các trường hợp về RAM, AGP la chủ yếu. Tức là nghe các tiếng đều nhau và có vẻ dồn dập. Còn các trường hợp khác thì có khi nó không còn khả năng kêu được nữa, thậm chí để xử lí bước đầu phải dùng đến cả một ... chậu nước.
Trong cái nghị định đó có quy định cả mức tiền phạt hả? Vậy 10T là mức nặng hay nhẹ?
(Hỏi cho biết thôi, không bàn luận)
 

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|