Thứ Tư, 20 tháng 8, 2008

Ép đồ tím

Thư tự các dòng như sau :

1 : Stvl : ht 4 + pc 5 + 6pd > 9x stvl ( mình chưa bao giờ xịt dưới 95% với ct này )

2 : Kh : ht 4 + pc 6 + 4pd = 25 (or ht 4 + pc 5 + 1tt + 3pd )

3 : Tđxc : ht 5 + pc 5 + 1tt + 5pd = 30

4 : Tglc : ht 4 + pc 5 + 6pd = 40

5 : 
* Sl : ht 4 + pc 5 + 1tt + 5pd > 18x sl 
* Hút sl,nl : ht 4 + pc 6 + 2tt + 6pd > 5

6 : Bs : 

+ Đao , Bổng , Kích : Đá pc đạt y/c là 7 - với ct 

ht 7 + pc 7 + 7tt + 1pd > 94 bs ( xác suất không đạt 100% ) 

( xui vẫn xịt 90< bs < 94 ) 

Chủ Nhật, 2 tháng 3, 2008

SUY NGHĨ NHƯ MỘT HACKER

 Người dich : DOVANCAM
Chỉnh sửa : PXMMRF
( có thể xem nguyên bản ở topic : Các bài dich chờ sửa )

Suy nghĩ như một hacker thành công không khác lắm so với một nhà thiết kế giỏi. Các hacker thành công nhất tuân theo 1 phương pháp đặc trưng mà họ đã phát triển qua thời gian. Họ áp dụng các bước trong tài liệu một cách chi tiết, cẩn thận và kiên nhẫn trong công việc của mình, rất giống như các những người thiết kế.

Mục tiêu của hacker là thâm nhập vào chưong trình ứng dụng hay 1 mục tiêu định sẵn. Hacker bắt đầu với rất ít hay gần như không có thông tin về mục tiêu tấn công , tuy nhiên, đến khi kết thúc việc phân tích, thì kẻ tấn công đã xây dựng nên một bản đồ đường đi chi tiết cho phép họ thâm nhập vào mục tiêu. Điều này chỉ có thể đạt được thông qua các lần phân tích cẩn thận và một cách tiếp cân có phương pháp để nghiên cứu về kẻ-sớm-là-nạn-nhân.

Phương pháp có hệ thống của hacker nhìn chung bao gồm 7 bước theo thứ tự sau :

1. Thực hiên một phép phân tích "dấu chân"
2. Liệt kê các thông tin
3. Đoạt quyền truy nhập hệ thống thông qua thao tác với tư cách người sử dụng
4. Leo thang các đặc quyền
5. Thu thập thêm các mật khẩu và các bí mật.
6. Tạo lập "cửa sau." (backdoor)
7. Đánh bung hệ thống.

Bài này sẽ trình bày cách hacker thưc hiên các công việc trong qúa trình xâm nhập các hệ thống , các mạng máy tính và làm hư hỏng các phần mềm ứng dụng;Với việc hiểu biết hơn về các phưong pháp thâm nhập của hacker , bạn có thể đánh bại họ ở trong cuộc chơi của chính họ.

Kẻ tấn công trước hết xác định các loại tên miền mà hắn thích khai thác. Sau đó hắn thực hiện một phép phân tích dấu chân của đối tượng để lấy thêm càng nhiều thông tin càng tốt thông qua các tài nguyên chia xẻ trên mạng có sẵn. Việc phân tích dấu chân sẽ cho hacker biết rằng quy mô của đối tượng ở mức độ nào, tồn tại bao nhiêu lối thâm nhập tiềm năng và những cơ chế bảo mật nào, có thể cản trở cuộc tấn công. Trong suốt quá trình phân tích hacker cố gắng khám phá tất cả các thông tin hứa hẹn liên quan mà chúng có thể hữu ích cho cuộc tấn công .Những thông tin đó bao gồm:

• Tên công ty
• Tên miền
• Các chi nhánh của Công ty (công ty con)
• Giao thức mạng Internet
• Số điện thoại

Các hacker để ý đặc biệt đến các lối thâm nhập tiềm năng mà chúng đựoc dùng để né tránh “cửa trước”( cửa chính ). Ví dụ như thay vì hì hục vượt qua firewall của một công ty mẹ thì kẻ tấn công lại khởi đầu tấn công vào 1 công ty thành viên (fụ thuộc công ty mẹ ) và sau đó cố gắng vượt qua hàng rào an ninh yếu kém ở công ty nhỏ hơn này ,vốn cung cấp 1 quyền truy cập không nghiêm ngặt ,để rồi có thể thâm nhập vào đối tượng lớn hơn(công ty mẹ).


Các chương trình quét cổng cũng được dùng để xác định xem host nào đang hoạt động ở trên Internet, các cổng TCP và UDP trên từng host đang ở trạng thái chờ mở(listening), và hệ điều hành nào cài trên mỗi host.


Các chương trình dò đường kết nối được sử dụng để giúp hacker xác định xem mối liên hệ của từng host này với các host khác và để xác định xem các cơ cấu bảo mật tiềm năng hiện diện giữa mục tiêu tấn công và người tấn công(hacker).


Sau khi đã quét cổng và dò đường kết nối xong rồi, các hacker tạo một bản đồ mạng miêu tả những hiểu biết của họ về dấu vết nhận diện trên Internet của đối tượng. Bản đồ này sau đó được dùng cho giai đoạn thứ hai của cuộc tấn công: Liệt kê các thông tin.


Đồ nghề thường dùng

.Nslookup là tiện ích dùng lệnh có sẵn ở trong Windows NT 4.0, Windows 2k, và Windows XP, có thể dùng để truy vấn hệ thống tên miền DNS và các vùng thay đổi.

Tracert là tiện ích dùng lệnh sử dụng cho các hacker tạo ra bản đồ mạng về sự hiện diện của đối tượng trong mạng.

SamSpade Giao diện của trang Web SamSpade.org cho phép thực hiện tra cứu Whois, tìm sự chuyển dịch hệ thống tên miền DNS, và dò tìm đường kết nối .

Nmap Chương trình quét các cổng dùng hê Unix.
ScanLine Chương trình quét các cổng chuẩn dùng hệ Windows NT.

Những điều để cân nhắc

Hãy xem việc sử dụng chính những phương pháp mà các hacker dùng để xét đoán một chương trình ứng dụng mà họ đang cố gắng đột nhập vào. Các câu hỏi mà bạn sẽ tự hỏi mình về các c/t ứng dụng do bạn thiết kế , bao gồm :

• Dấu vết hiện diện của các ứng dụng của bạn trong hệ điều hành là gì?

• Loại mã tưong quan nào mà c/t ứng dụng của bạn đã dựa vào? Nếu ứng dụng tương quan bị hack thì liệu điều đó có giúp cho các kẻ tấn công hack đựoc vào trong c/t ứng dụng của bạn không?

• Những thông tin nào mà c/t ứng dụng hay hệ thống sẽ thể hiện cho người sử dụng chưa được cấp quyền truy nhập lưu ý ??
• Cổng chờ mở (listening )nào mà phần mềm của bạn kich mở trong hệ thống? Liệu các gói tin định dạng xấu hay các cuộc tấn công gây ngâp lụt (flood attack) có làm

dừng các dịch vụ, chiếm hết dung lượng bộ nhớ , hay làm giảm thiểu chu kỳ hoạt động của CPU hay không ??

• Có các tường lửa hay cơ cấu ngăn chặn kích hoạt ứng dụng , dùng để ngăn chặn các người dùng không đựoc ủy quyền có thể xâm nhập vào h/t thông qua cửa chính hay không ??

Liệt kê thông tin

.Sau khi các hacker đã thực hiện phân tích "dấu chân "và tạo ra một bản đồ gần giồng với kiến thức của họ về mạng của đối tượng, họ thu thập càng nhiều dữ liệu càng tốt về từ hệ thống của đối tượng.

Web, FTP, và mail server version . Các hacker sẽ cố gắng xác định phiên bản nào của Web server, FTP server, hay mail server đang chạy bằng cách kết nối tới cổng TCP và UDP đang chờ mở và gửi dữ liệu ngẫu nhiên tới từng cổng hay server một. Có rất nhiều service trong server nói trên trả lời những dữ liệu ngẫu nhiên thăm dò này , bằng một banner data , cho phép xác định c/t ứng dụng đang chạy và các thông tin tin cậy về phiên bản . C ác hacker sẽ dùng các cơsở dữ liệu về các lỗ hổng bảo mật như của Securityfocus để kiểm tra chéo các thông tin này nhằm tìm ra những lỗi có thể khai thác được.

Những thông tin nhạy cảm. Nếu các hacker giao tiếp với những cổng nào đó ở trên host( ví dụ như cổng TCP 139 hay 445), họ sẽ nặc danh liệt kê các thông tin nhậy cảm từ hệ thống bao gồm:

• Tên người sử dụng (user name).
• Lân cuối cùng đăng nhập vao hệ thống
• Ngày thay đổi password
• Nhóm thành viên

Các hacker có thể sử dụng các thông tin có được từ truy vấn nói trên để thưc hiên 1 cuộc tấn công " ép dò mật khẩu " (brute force ) nhằm đoạt quyền truy cập hệ thống như một người sử dụng đưọc ủy quyền. Ví dụ, hacker sẽ liệt kê các thành viên ở trong nhóm quản trị cục bộ, tìm kiếm các tên người sử dụng như các TEST hay BACKUP có thể dễ dàng đoán được mật khẩu của họ.

Đồ nghề thường dùng

Netcat (đã có trong danh sách tiện ích mạng) Đây là "lưõi dao quân Thụy sĩ "của các hacker . Sử dụng nó để biết các banner , quét cổng và các công việc nữa.


Epdump/Rpcdump Các công cụ để kích hoạt từ xa các service của các c/t ứng dụng trên một server

Getmac ( nằm trong Windows NT resource kit) Lệnh của Windows NT để lấy địa chỉ MAC ở trong mạng Ethernet và tạo lênh kết nối tới một máy tính chạy Windows NT 4.0, Windows 2000, hay Windows XP.

DumpSec Chương trình kiểm tra bảo mật cho các hệ thống chạy Windows NT. Nó sẽ liệt kê các chi tiết về người sử dụng và nhóm sử dụng trong hệ thống đã chọn. Đây là công cụ liệt kê và kiểm tra mà 5 công ty kiểm toán lớn trên thế giới(PricewaterhouseCoopers, Ernst & Young, KPMG, Athur Andersen, and Deloitte & Touche) và các hacker đã lựa chọn

Các SDK . Rất nhiều bộ phát triển phần mềm(SDK) cung cấp cho các hacker các công cụ cơ bản mà họ cần để hiểu thêm về hệ thống.

Những điều để cân nhắc

• Loại thông tin nào có thể có được từ các cổng chờ mở (listening)? Mức độ cho phép cần thiết để liệt kê các thông tin này?

• Liệu có chỗ nào ghi lại xem ai đã liệt kê các thông tin này?

• Liệu có tiềm ẩn trong hệ thống khảnăng gíup cho người sử dụng không đưọc ủy quyền có thể xem các dữliệu bảo mật nhạy cảm hay các thông tin xác định cá nhân (PII) mà việc đó có thể làm tổn hại tới lợi ích cá nhân không?

• Loại banner thông tin gi mà c/t ứng ụng cung cấp cho người sử dụng? Điều đó có thể cần loại bỏ hay thay đổi bởi người quản trị hệ thống hay không?

Đoạt quyền truy cập thông qua thao tác của người sử dụng
Sau khi các hacker đã kiếm đủ các thông tin cơ bản về đối tượng của họ rồi thì họ sẽ tiếp cận để đoạt quyền truy cập tới hệ thống của đối tượng bằng cách giả dạng thành người dùng có quyền. Điều đó có nghĩa rằng họ cần một password cho một người dùng mà họ đã phát hiện ra thông qua các bước một và bước hai ở trên. Có hai cách thông thưòng nhất để có được mật khẩu: bằng cách sử dụng " kĩ năng xã hội "(social engineering )hay bằng tấn công " ép dò mât khẩu "(brute force )

Điều ngạc nhiên là một nhân viên tin cậy (của Công ty ) sẽ làm gíup (những việc cần thiết ) cho một ai đó nghe có vẻ như là có quyền thế lắm. Một vài hacker sẽ lấy thông tin mà họ cần ,từ việc đãng kí tên miền hoặc từ trang web của công ty và trực tiếp liên lạc với 1 nhân viên công ty bằng điện thoại.
Bằng một mẹo nhỏ nào đó, họ có thể làm cho nhân viên đó để lộ ra mật khẩu của mình mà không gặp phải bất cứ nghi ngại nào Cuộc nói chuyên của họ na ná như sau:

"Đây là nhóm trợ giúp và chúng tôi đang gỡ rối các khu vực trong các mạng khác nhau. Tôi đang kiểm tra ở trong khu vực mạng của bạn, và chúng tôi muốn theo dõi mạng mà bạn đánh mật khẩu của mình.Xin bạn nói rõ từngký tự của mật khẩu để chúng tôi theo rõi và chắc chắn rằng sẽ thấy chúng trên mạng."

hoặc là có thể như sau:

"Chúng tôi đã hoàn tất công việc kiểm tra mật khẩu của bạn và thấy rằng nó không an toàn. Vui lòng thay đổi mật khẩu của bạn thành“xYzA1G24#… để nó sẽ ít bị bể khoá trong tương lại."

Tấn công bằng cách "ép dò mật khẩu'

Nếu như kỹ năng xã hội không được hoặc không phải là sự lựa chọn thì sẽ có cách tiếp cận thứ hai đó là "ép dòmật khẩu . Các kiểu tấn công này có thể được tiến hành để chống lại các c/t ứng dụng hay dịch vụ chỉ chấp nhận người sử dụng được ủy quyền . Chúng( cáccuộc tấn công ép do mật khẩu )bao gồm các loại sau: (nhưng tất cả không chỉ có những loại này ):

• Hệ thống vào/ra cơ sở mạng (NetBIOS: Network basic input/output) qua giao thức TCP(TCP 139)
• Direct Host(TCP 445)
• Lightweight Directory Access Protocol (LDAP), (TCP 389).
• FTP(TCP 21)
• Telnet(TCP 23)
• Simple Network Management Protocol(SNMP), (UDP 161)
• Point-to-Point Tunneling Protocol (PPTP),(TCP 1723)
• Terminal Service(TCP 3389)

Nếu như hacker có thể liên lạc với các dịch vụ nói trên thì hắn sẽ dùng các tên của người sử dụng(user name) lấy đưọc ở các bước trước đem ra để thử tấn công "ép dò mật khẩu ". Tiện ích " ép dò mật khẩu " chứa các bản tin "Tự điển mật khẩu" trong đó có thể có mật khẩu củangười sử dụng . Mỗi một từ trong từ điển(hay của các phiên bản khác ) được coi là một mật khẩu tiềm năng và được thử từng cặp với tên người sử dụng cho tới khi thâm nhập đưọc vào mục tiêu

Các cài đạt tiêu biểu của Windows NT 4.0, Windows 2000, và Windows XP sẽ cản trở kiểu tấn công này do ở trưòng hợp mặc định việc kiểm tra đăng nhập đưọc hay không thực hiện đưọc .Trừ phi các mật khẩu phức hợp được sử dụng cho mỗi user account, một cuộc tấn công dùng mật khẩu kiểu từ điển có thể hoàn toàn thành công với các host đang giám sát.

Để che đậy danh tính của mình, các hacker sẽ cố gắng tránh sự phát hiện ,thậm chí ngay cả khi việc đăng nhập logon thành công.. Với cách đặt tên máy tính bằng cách dùng các kí tự ASCII – là loại không thể in được ; tên máy tính của họ sẽ không hiên lên trong bảng theo rõi qúa trình đăng nhập

Công cụ phổ biến

.Công cụ ( tiện ích )kiểm tra NetBIOS . Công cụ “ép dò mật khẩu “ ( Brute Force )

Những điều cân nhắc

• Liệu việc kiểm tra đăng nhập vào hệ thống ở chế độ mặc định có thành công được không?

• Liệu có các cơ cấu bên cạnh ( hỗ trợ ) server mà bạn có thể sử dụng để làm chậm lại hay vô hiệu hoá tấn công “ ép dò mật khẩu “ được không?

• Liệu bạn có thể dò đưọc dấu vết nguồn gốc khởi phát các cuộc tấn công “ép kiểm mật khẩu “không? Loại thông tin liên quan đến vi trí (đia lý ) nào bạn có thể có được?

.Tên DNS hay địa chỉ IP?Tên máy tính? Địa chỉ của gateway hay địa chỉ của host cụ thể nào đó?

• Liệu các ngưòi có tài khoản ở mức người sử dụng có thể chỉnh sửa trạng thái bảo mật áp dụng cho các dịch vụ để họ có thể đưa vào hệ thống các trojan như là họ đang có 1 đăc quyền làm như vậy trong hệ thống hay không ?
• Liệu có môt file nào đó mà ngưòi sử dụng có thể ghi đè lên , như là họ đang chạy các dịch vụ vớí môt đặc quyền cao hơn hay không ?

Thu thập thêm các mật khẩu và bí mật khác

Điều đầu tiên mà các hacker làm sau khi đã đột nhập vào hệ thống bằng với tư cách như là của người quản trị là lấy các file chưa mật khẩu. Các hacker có thể sử dụng

các công cụ như Pwdump2 để lấy các mật khẩu băm từ cơ sở dữ liệu quản lí bảo mật các tài khoản(SAM) cục bộ hay các Active Directory ở chưong trình kiểm soát tên miền. Các mật khẩu băm có thể được đưa vào các chưong trình như John the Ripper hay LC3 và bị bẻ khóa .


Như một người quản trị, các hacker có thể lấy các mật khẩu bằng văn bản từ nơi đảm bảo quyền truy cập cục bộ(LSA). Đăc biệt là, các mật khẩu dùng để khởI đông các dịch vụ đã được lưu trữ (các mật khẩu này đã đưoc ngụy trang và mã hoá) ở trong LSA. Sử dụng các công cụ như Lsadump2, mọi mật khẩu dạng văn bản của các tài khoản dụng để khởI động các dịch vụ tương ứng có thể được liệt kê.hết ra .


Dù cho điều nói trên có thể chưa đưọc coi là một sự nguy hiểm nếu như các tài khoản dùng để khởI động các dịch vụ chỉ thuộc về các thành viên ban quản trị của hệ thống cục bộ nà y (hay tài khoản ấy có quyền truy cập thấp hơn), nhưng một sự đe doạ lớn hơn có thể xuât hiện nếu như tài khoản được dùng để khỏI động các ứng dụng lạị thuộc về một thành viên quản trị của cả miền đó(hay miền cao cấp hơn). Ở trong tình huống xấu nhất, hacker(với tư cách là một người quản trị hệ thống cục bộ) sẽ có thể lấy được mật khẩu dạng văn bản của một tài khoản đăng nhâp vào trong môt miền ( khu vực )mà họ chưa từng hack vào .

Sau khi các mật khẩu của hệ thống cục bộ và mât khẩu đầy hứa hẹncủa một miền đã lấy được, hacker sẽ tham khảo chéo các mối kết hợp tên người sử dụng/mật khẩu mà họ đã có được với các tên người sử dụng mà họ đã liệt kê đươc từ các hệ thống khác trong giai đoạn liệt kê trên đây . Nếu như có đủ thời gian hay sự may mắn cần thiết Hacker có thể truy cập tới tất cả các máy tính ở trong mạng bằng quyền của người quản trị, trong khi khởI đầu họ chỉ thâm nhập vào đưọc mỗI môt máy tính .

Các công cụ phổ biến

Pwdump2 Công cụ để có thể có được mật khẩu băm từ cơ sở dữ liệu SAM hay Active Directory.

Lsadump2 Công cụ chuyển nội dung của LSA ra dạng văn bản.

LC3 Công cụ kiểm mật khẩu để đánh gía các mật khẩu băm của Windows NT, Windows 2000, Windows XP.

John the Ripper Công cụ bẻ mật khẩu cho nhiều hệ điều hành.

Những điều cân nhắc

• Liệu các file ghi lại qúa trình (logs) có thể được tạo ra khi các file chứa mật khẩu bị truy cập không?


• Liệu các các file ghi lại qúa trình (logs) có thể được tạo ra khi người quản trị cố gắng chèn thêm các đoạn mã đôc vào các qúa trì nh của hê thông nhằm cố gắng truy cập tới các dữ liệu mật khẩu hay không ?

• Liệu các mật khẩu được lưu trữ ở trong hệ thống có cái nào dùng cho 1 tài khoản nào đó có mức quyền truy cập cao hơn sovới các tài khoản của người quản trị cục bộ hay không?

• Liệu có các mật khẩu của các tài khoản cho mức quản trị viên ( hoặc tương đương ) ở hệ thống này( hê thống đang bị thâm nhập ) có giống với mật khẩu của các tài khoản cho quản trị viên ở các hệ thống khác không?

• Liệu những người sử dụng được khuyến khích chọn các mật khẩu phức tạp không?

Tạo lập "cửa sau " ( "Back door")

Trong trường hợp các hacker bị phát hiện và cần phải nhanh chóng rời khỏi máy tính ngay, họ thường tạo lập một cửa sau ở trong mỗi hệ thống họ đã đột nhập. Cửa sau có thể có nhiều dạng nhưng chung nhất vẫn là một cổng chờ mở (listening) ở trong hệ thống mà nó sẽ cho phép hacker truy cập vào hệ thống từ xa(có hay không có sự uỷ nhiệm đặc biệt)

Tường lửa hoặc việc lọc trên router sẽ ngăn cản hacker truy cập qua các cổng này lần sau,tuy nhiên, các bộ lọc tuyến (router) có thể không thể ngăn cản đưọc việc thâm nhập qua các cổng TCP có số cao ( hay bất cứ cổng UDP nào) hoặc lại có thể cho phép thâm nhập qua (cửa sau )nếu dữ liệu nguồn đưọc khởi phát từ các cổng riêng biệt (của máy Hacker ), như cổng TCP 20, 53, hay 8. Nếu bộ lọc tuyến mạnh hay có tường lửa đưọc cài đặt , có thể cần một cửa sau phức hơp hơn.

Một dạng cửa sau phức hợp tham gia vào qúa trình reverse trafficking ( tạo tuyến lưu thông đảo ngưọc ). Reverse trafficking cho phép kẻ tấn công đi vòng qua các cơ cấu bảo mật. Trong khi các bộ định tuyến và tường lửa có thể ngăn cản các gói tin không mong muốn vào mạng từ phía bên ngoài, thì nó lại như có vẻ phù hợp với việc các

người sử dụng máy client ở trong tường lửa được phép từ một cổng xác định (trên máy client) mở môt kết nối tới bất cư host nào ở bên ngoài. Một con trojan thuộc loại này sẽ có thể định kì liên lạc thưòng xuyên với máy tính của hacker qua cổng 80. Máy khách(client) sẽ “đẩy” các shell điều khiển hệ thống cho hacker ,do đó mà hacker sau đó có thể chạy các mã trên máy tính đã được “bảo vệ” này.

Một ví dụ về reverse trafficking là sâu Code Red. Code Red sẽ ra lệnh cho các Web server chưa vá lỗi (qua cổng TCP 80) để kích hoạt môt liên kết theo giao thức TFTP từ server tới một host trên Internet, nơi mà sau này bị gửI đến đoạn mã phá hoại. Việc khởi tạo kết nốI tởi Web server thông qua cổng 80 là hoàn toàn hợp lê (và sẽ thậm chí vượt được qua cả tường lửa). Trong hầu hết các trường hợp ,tường lửa và bộ định tuyến sẽ cho phép Web server khởi tạo một kết nối TFTP(UDP 69) tới máy của hacker trên Internet.

Có rất ít lí do hợp lí( dù cho là có l ý do ) để làm Web server phải khởi tạo một kết nối TFTP hay SMB tới bất kỳ một host nào ở trên Internet. Tường lửa và các bộ định tuyến sẽ phải được cấu hình để ngăn chặn các gói tin không yêu cấu từ trong Web hay mail server đi ra ngoài mạng tới các máy không mấy tin cậy ở trên Internet.


Công cụ phổ biến

Netcat (đã liệt kê ở các công cụ tiện ích mạng) Đây là con dao găm của các hacker Thuỵ sỹ. Có thể dùng để chuyển các shell tới các hệ thống ở xa.

Những điều suy nghĩ

• Liệu hệ thống hay các chương trình ứng dụng (cài trong hê thông )có một cơ cấu nào để phát hiện các mã trojan có thể đang chạy trên hệ thống hay không ?

• Liệu hệ thống có thể phát hiện ra các cơ cấu hay dịch vụ mà kẻ tấn công đã tạo ra hay không ?

• Liệu có cơ sở nhận biết nào vê các cổng chờ mở , các dịch vụ và cơ cấu mà hệ thống có thể giám sát , giúp cho việc xác định nếu như một đoạn mã phá hoại đã được kích hoạt hay không?

• Liệu có các thiết bị bảo mật(tường lửa, bộ định tuyến) đả được cấu hình để ngăn chặn vi ệc chuyển các thông tin không yêu cầu ra ngoài mạng ,bắt nguồn từ mỗi host hay không?

Đánh bung hệ thống

Chuyển đổi cổng để lừa được các thiết bị bảo mật truyền thống, các hacker sẽ tạo ra sự chuyển đổi cổng ở trong host đã bị xâm nhập đầu tiên, các host này sẽ tự động chuyển tất cả các thông tin trao đổi hướng đến các host khác cùng trong mạng . Việc chuyển đổi cổng có thê giúp đưa nguồn thôngtin trao đổi đi vòng qua các bộ lọc

cổng, bộ định tuyến, tường lửa, và thậm chí có thể được mã hoá để vươt qua dãy lớp cổng bảo mật(SSL) nhằm tránh bị các thiết bị phát hiên xâm nhập.phát hiện .


Khi việc chuyển đổi cổng được áp dụng cho các gói tin lưu chuyển giữa máy của hacker và hệ thống đích, việc định danh chính xác hacker về căn bản đã bị “xoá sạch”.

Nếu như hệ thống đích có thề kiểm soát viểc logon không thành công, hay đang chạy một hệ thông thứ ba phát hiện xâm nhập , nó sẽ chỉ ghi lại đựoc địa chỉ IP hay tên máy tính cùa host đang thực hiện việc chuyển đổi cổng, chứ không phải là của máy hacker. Điều đó sẽ làm cho viêc dịnh danh hacker trở thành rất khó khăn . Bởi vì mọi kết nối thông tin đi đến hoặc đi ra từ máy mục tiêu tới máy proxy bởi hacker dưòng như là hợp lệ , do hacker đã áp dụng việc chuyển đổi cổng (port redirector).


Hack các hệ thống khác: sau khi hacker đã hoàn toàn hack xong hệ thống cục bộ, gài các cửa sau và thưc hiên việc chuyển đổi cổng, cũng như đã lấy tất cả các thông tin có thể cho mình, họ sẽ tiến hành hack các hệ thống khác trong mạng. Rất phổ biến trưòng hợp các dịch vụ phù hợp các tàì khoản của người quản trị, hay tài khoản hỗ trợ nằm ở trong mỗi hệ thống, nhờ đó mà những kẻ tấn công có thể thâm nhập vào mỗi hệ thống trong một thời gian ngắn Khi từng hệ thống mới bị hack, kẻ tấn công sẽ thi hành các bước chính như mô tả ở trên để tìm thêm các hệ thống khác và thu thập các thông tin mật khẩu..

Kẻ tấn công tiếp tục lấy các thông tin ở trong mỗi hệ thống cho tới khi hắn tìm được mật khẩu cho mỗi tài khoản của các hệ thống có giá trị hơn ( quan trọng hơn ) kể cả:

hệ thống thanh toán trên mạng , kiểm soát tên miền gốc, và các Web server. Qúa trình quét và khai thác các hệ thống theo cách này thường có thể là tự động, để các hacker có một chút thời gian nghỉ ngơi hay cho phép họ tập trung chú ý tới các khu vức khác trong công ty mục tiêu .( công ty đang thâm nhập )

Rất khó phát hiện loại hoạt động này , bởi vì kẻ tấn công thường hoạt động dưới tài khoản họp lệ của người quản trị. Trừ phi kẻ tấn công bị tóm trước khi họ đoạt được quyền truy cập hệ thống của quản trị viên , thì gần như không thể buộc họ ra khỏi mạng được.

Công cụ tiên ich (sử dụng ).

Fpipe Một chương trình chuyển đổi cổng cho các hệ điều hành Windows. Cho phép xác định cổng nguồn dung cho việc chuyển đổ kết nối .

Nhưng điều suy nghĩ

• Liệu trong hệ thống có bố trí các qúa trình giúp giám sát các qúa trình diễn biến trong hệ thống (log ) xuyên suốt qua nhiều máy tính và giúp tìm các mối tương quan trong trình tự cuộc tấn công để khuyến cáo (cho ngưòi quản lý hệ thống ) về môt cuôc thâm nhập đưoc tiến hành 1 cách tư động đang diễn ra trong hệ thống hay không ?

• Liệu danh sách các nhóm thành viên có đưọc xem xét lại thường xuyên để chắc chắn rằng một “tài khoản hacker” mới vẫn chưa được chèn thêm vào nhóm quản trị mạng hay không?

Tài liệu tham khảo

Microsoft Security Web site Public Web site with links to security bulletins and product security information.

Hacking Exposed: Network Security Secrets and Solutions, Third Edition Stuart McClure, Joel Scambray, and George Kurtz take a comprehensive look at hacker methodologies across multiple platforms and devices.

Hacking Exposed Windows 2000: Network Security Secrets and Solutions Scambray and McClure detail hacker techniques specific to Microsoft platforms

Thứ Sáu, 12 tháng 10, 2007

Lập trình viên là gì?

Để làm nghề lập trình, trước hết các bạn phải hiểu thế nào là lập trình viên. Thật khó có thể đưa ra một định nghĩa chính xác. Tuy nhiên, tôi có thể nôm na rằng Lập trình viên là người thiết kế, xây dựng và bảo trì các chương trình máy tính (phần mềm). Bằng cách thao tác các đoạn mã (các ngôn ngữ) trên các công cụ lập trình, họ có thể tạo ra các chương trình mới, sửa lỗi hay nâng cấp chương trình đó để tăng tính hiệu quả của việc sử dụng máy tính. Nếu các bạn vẫn còn băn khoăn không hiểu liệu mình cần có những gì để trở thành một lập trình viên, tôi có thể nêu ra một số nhân tố thiết yếu cần phải có để bạn so sánh.

Khả năng suy nghĩ một cách logic

Trong lập trình thì logic chính là điều quan trọng nhất. Các bạn phải có khả năng giải quyết triệt để một vấn đề bằng phương pháp suy luận logic. Chính vì vậy, nếu không có khả năng suy luận logic thì tôi có thể khẳng định rằng lập trình không phải là công việc phù hợp với bạn. Bạn sẽ trở nên hoàn toàn mất phương hướng khi theo đuổi các đoạn code của chương trình, các vấn đề về debug (gỡ rối), về lỗi... và hầu như trong mọi trường hợp bạn sẽ không tìm được giải pháp đúng nhất cho vấn đề.

Khả năng tiếp cận vấn đề có thứ tự và luôn chú ý tới chi tiết

Các lập trình viên mất rất nhiều thời gian trong việc kiểm tra hàng ngàn, hàng vạn dòng mã phức tạp. Vì vậy họ rất cần giải quyết vấn đề một cách có thứ tự. Chú ý tới các chi tiết nhỏ cũng rất quan trọng. Việc thiếu vài thứ tưởng chừng tầm thường như một dấu chấm, dấu phẩy cũng có thể khiến bạn mất nhiều ngày để tìm lỗi.
Các chương trình của các lập trình viên giỏi luôn dễ đọc và có rất nhiều chú thích để chỉ rõ tại sao họ lại viết đoạn mã như vậy và cái gì sẽ xảy ra trong chương trình. Vì vậy, bạn cần có kỹ năng truyền đạt thông tin tốt cũng như viết chương trình của mình một cách mạch lạc, có cấu trúc.

Khả năng làm việc nhóm

Thật khó có thể tưởng tượng một dự án lập trình có thể được thực hiện bởi một người. Công việc ngày nay thường đòi hỏi sự cộng tác của cả một đội ngũ lập trình viên. Chính vì thế, khả năng làm việc nhóm là rất quan trọng. Bạn phải biết cách phối hợp công việc với cộng sự, khả năng thuyết trình, giao tiếp, ứng xử của bạn sẽ được sử dụng tối đa trong môi trường làm việc này.

Khả năng làm việc một mình trong thời gian dài

Tuy khả năng làm việc nhóm là rất quan trọng nhưng bạn cũng phải có khả năng làm việc độc lập. Phần lớn công việc của một lập trình viên đều liên quan đến việc ngồi trước màn hình máy tính, đọc/viết mã và các loại tài liệu khác. Nếu bạn cảm thấy thú vị khi ngồi hàng giờ đọc một quyển sách thì có lẽ bạn cũng thích hợp với nghề lập trình. Bạn cần phải biết cách tổ chức tốt công việc và thời gian của mình để thực hiện các công việc trong thời hạn của dự án.

Các kỹ năng thiết kế

Công việc phân tích và thiết kế luôn là công việc rất quan trọng của lập trình. Bạn có thể phải thiết kế toàn bộ một hệ thống cho kinh doanh, bao gồm các bảng lưu trữ thông tin, các giao diện để nhập xuất thông tin hay các tài liệu kỹ thuật liên quan đến chương trình... Bạn phải giỏi trong việc lắng nghe và chuyển đổi các yêu cầu của các khách hàng đơn lẻ, các nhóm khách hàng và thậm chí cả việc kinh doanh thành các ứng dụng. Các chương trình của bạn phải dễ dùng và có hiệu quả cao. Do vậy, bất kỳ kỹ năng thiết kế nào của bạn cũng sẽ rất hữu ích trong lĩnh vực này.

Tính kiên nhẫn

Các vấn đề mà các lập trình viên phải giải quyết thường là các vấn đề khó có thể giải quyết ngay lập tức. Nó mất nhiều giờ, nhiều ngày, thậm chí nhiều tháng làm việc một cách cẩn thận để giải quyết, tìm hướng đi. Nhiều khi bạn đi sai hướng lại phải quay lại giải quyết từ phần đã giải quyết đúng và bắt đầu lại.

Khả năng tự học cao

Không trường lớp nào có thể đào tạo cho bạn tất cả những thứ bạn cần cho công việc lập trình sau này. Chính vì thế, khả năng tự học qua sách vở, tài liệu, internet và qua cả bạn bè nữa là không thể thiếu. Kết hợp với những dự án làm việc trong thực tế, bạn sẽ dần dần thành thạo những gì mình đã tự học được.

Các mặt tốt của nghề lập trình

Thu nhập

Tiền lương của một lập trình viên thường rất khá, khởi điểm thường là khoảng 200 USD. Kể cả những lập trình viên mới và có thu nhập thấp nhất cũng vẫn có thu nhập cao hơn mức trung bình của cả nước. Nhiều công ty sẵn sàng chi trả những khoản tiền lương kếch xù để thu hút những lập trình viên giỏi. Đó là chưa kể các khoản tiền thưởng, bảo hiểm và các phí dịch vụ khác.

Niềm vui trong công việc

Cảm giác giải quyết được một vấn đề khiến bạn phải đau đầu nhức óc hàng giờ, thậm chí hàng tuần phải nói là rất phấn chấn. Việc lập trình thường là sự pha trộn giữa các dự án lớn và các lỗi nhỏ cần phải sửa và cả hai vấn đề trên đều có sự hứng thú riêng của nó – cảm giác của việc hoàn tất một dự án lớn hoà với niềm vui khi sửa được những lỗi chương trình nhỏ và làm cho người dùng hài lòng hơn với chương trình của mình.

Tự mình quyết định

Nếu bạn là người ghét bị người khác bắt phải làm việc này như thế này, làm việc kia như thế ấy và chỉ thích tự mình đưa ra cách làm cho công việc của riêng mình thì bạn sẽ hài lòng với việc lập trình. Cấp trên của bạn sẽ giao cho bạn các công việc và có thể đưa ra một vài ràng buộc về chúng như thời gian hoàn tất, trình tự thực hiện nhưng chính bạn là người quyết định phải giải quyết công việc như thế nào.

Các khó khăn

Dễ lâm vào cảm giác chán nản

Có lần, tôi phải mất cả ngày để giải quyết một vấn đề và hoàn toàn bế tắc. Sau đó, tôi nhận ra rằng lỗi trong chương trình chỉ là một dấu chấm bị thiếu. Chắc bạn cũng có thể hiểu được cảm giác của tôi lúc đó, cực kỳ bực dọc và chán nản. Đôi lúc bạn sẽ gặp những tình huống mà bạn sẽ chỉ muốn vứt quách cái computer vào sọt rác cho rồi. Nhiều khi bực dọc và chán nản là không thể tránh được. Tuy nhiên, vấn đề càng phức tạp thì niềm vui có được khi giải quyết được chúng càng cao.

Làm thêm giờ là việc thường xuyên

Ít có lập trình viên nào tự nhận là mình chỉ làm theo giờ giấc quy định của công ty. Áp lực về thời gian và khối lượng công việc đối với lập trình viên là rất lớn. Nếu phần việc của bạn có thể khiến cho cả dự án trễ một ngày thì bạn không thể từ từ giải quyết chúng được. Trong đa số trường hợp bạn phải tự mình làm thêm giờ mà không có thêm khoản lương phụ trội nào.

Lập trình không phải là một việc dễ dàng

Đây là một công việc đòi hỏi kỹ năng cao và bạn phải luôn có khả năng tập trung tối đa vào công việc mình đang làm. Nhức đầu là một bệnh rất thường gặp của các lập trình viên. Có khi bạn đang nằm ngủ nhưng trong đầu vẫn là những hình ảnh của những đoạn mã chương trình đang nhảy múa, những vấn đề nan giải trong ngày cứ thế mà hiện ra khiến bạn luôn trong tình trạng phải suy nghĩ. Nếu bạn muốn có một công việc không căng thẳng, không stress thì đừng nên làm lập trình.
Có lẽ, bây giờ các bạn đã có thể tự trả lời câu hỏi tôi nêu ở đầu bài viết cho chính bản thân mình. Tuy nhiên, không có một công thức chung nào cho nghề lập trình. Những vấn đề tôi nêu trong bài viết này chỉ là những đánh giá cá nhân của riêng tôi, qua những gì tôi đã tiếp xúc trong thực tế. Còn đối với các bạn, cái quan trọng là có niềm đam mê lập trình. Điều đó sẽ làm cho các bạn có được niềm vui trong công việc, để những khó khăn của nghề lập trình chỉ còn là “chuyện nhỏ”.

Thứ Tư, 29 tháng 8, 2007

Chu Trình Sống Của Một Phần Mềm - Các Bước Kiểm Tra Chất Lượng

  • - Ở giai đoạn khởi điểm - phân tích yêu cầu (có thể do designer/developer hoặc khách hàng đưa ra), requirement của 1 software bao gồm: draft document, use cases... Giai đoạn này tester sẽ phối hợp với designer/developer review qua để phát hiện các sai sót hoặc vấn đề ko phù hợp để hiệu chỉnh. Những lỗi được phát hiện trong quá trình này - gọi là Inception - thường được gọi là Review Defect.

    - Giai đoạn kế tiếp - thường gọi là Elaboration - là giai đoạn hình thành requirement hoàn chỉnh, bao gồm tập hợp các Use Case, Design model, database model, non-technical document (mô tả các business rule khác), các document hỗ trợ việc theo dõi, đánh giá tiến độ của project cũng bắt đầu được hình thành. Giai đoạn này tester cũng phải đưa ra được Test Plan (kế họach test) ghi rõ những tiêu chí test, flatform, criteria.... Tất cả các document này cũng được những thành viên có liên quan review để tìm issue (Review Defect) và hoàn chỉnh với sự thỏa thuận với khách hàng. Sau đó developer thường sẽ phát triển 1 bản thử nghiệm (gọi là prototype hay demo) dựa trên 1 số use case, tester sẽ dựa trên đó test bản thử nghiệm và tìm ra các Testing Defect/Bug, các lỗi này sẽ được tập hợp thường kì, đánh giá độ nguy hiểm, khả năng sửa, ... để hỗ trợ đánh giá tính hiệu quả của product theo từng giai đoạn . Đồng thời thiết lập 1 hệ thống để lưu trữ các lỗi tìm được, mô tả rõ ràng để developer vào đó theo dõi và sửa.

    - Sau đó, là giai đoạn phát triển thật sự sau khi hầu hết các document gần như hoàn chỉnh (ngoại trừ use cases cần hiệu chỉnh trong suốt chu trình sống của project). Giai đoạn này thường đươc gọi là Construction - nó sẽ được chia nhỏ làm nhiều giai đoạn con (phase hoặc iteration) để tiện cho việc quản lý và theo dõi, mỗi giai đoạn con sẽ cần hoàn thành 1 lượng use cases nhất định và cuối mỗi phase là 1 bản build của sản phẩm (các bạn chú ý trong hầu hết các ứng dụng chuyên nghiệp chưa hoàn chỉnh thường trong version có ghi vd như: Version 5.6 build xxxxxxxx ...định dạng các số xxx và ý nghĩa thế nào tùy thuộc người sản xuất). Tester sẽ dựa trên Test Plan, Use cases trong phase và 1 số qui định/chuẩn để thực hiện test trên build, gọi là System Test hay Build Test, tức là kiểm tra xem các feature của sản phẩm có chạy đúng như những gì use case đưa ra, có đúng như business rule hay ko...
    Developer trong giai đoạn này cũng có vai trò của 1 tester, đó là review lại code của mình có phát triển đúng coding convention ko, có dư biến, dư bộ nhớ ko ..., đồng thời khi hoàn thành 1 feature cũng tham gia test sơ xem có chạy được ko trứơc khi tạo build. Tương tự trên, các lỗi được tìm thấy sẽ được tập hợp thường kì, đánh giá độ nguy hiểm, khả năng sửa ... để hỗ trợ đánh giá tính hiệu quả của product theo từng giai đoạn.

    - Giai đoạn cuối cùng của chu trình sống của 1 phần mềm thường là Transition, hay là kiểm tra và giao sản phẩm cho khách hàng. Giai đoạn này công việc của developer giảm xuống vì hầu hết các tính năng đã hoàn thành ở các giai đoạn trước, nhưng công việc của tester sẽ nặng hơn vì phải tập trung kiểm tra chất lượng mọi mặt của sản phẩm trước khi đến tay khách hàng. Developer liên tục theo dõi trên hệ thống lưu trữ lỗi để tìm giải pháp sửa và thông báo cho tester kiểm tra lại.

    Cuối cùng khi phía phát triển và tester hoàn thành sản phẩm ko còn 1 lỗi nghiêm trọng nào, sản phẩm sẽ được đóng gói (tạo setup kit, installation guide) và giao cho khách hàng. Khách hàng sẽ kiểm tra lại lần cuối cùng - gọi là Acceptance Test - trước khi quyết định hoàn tất (Release) sản phẩm.

    Hệ thống lưu trữ và theo dõi bug của tester sẽ tập hợp, phân tích chu trình sống của sản phẩm theo bug/defect, tức là trong giai đoạn nào số lượng lỗi bao nhiêu, sao với các giai đọan khác tăng giảm bao nhiêu, tính hiệu của của developer trong việc sửa lỗi ... Những thống kê như vậy sẽ được tập hợp và dùng như là kinh nghiệm để đánh giá các sản phẩm mới sau này.

Thứ Hai, 20 tháng 8, 2007

Hướng dẫn quản trị mạng WindowsNT

Hướng dẫn quản trị mạng WindowsNT


Phần I - Giới thiệu Hệ điều hành Windows NT Server.

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 (hardware platform), 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 CPUs. Windows NT là hệ điều hành 32 bits thực sự với khả năng thực hiện đa nhiệm ưu tiên (preemptive multitasking). 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.

I. Kiến trúc mạng

Tìm hiểu về mô hình tham chiếu OSI

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, như thể hiện trong hình dưới đây.

Tầng thấp nhất, 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. Hình vẽ phía dưới.

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, và 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.

II. Network Card Driver và Protocol làm gì?

Một network adapter card, tức bảng mạch điều hợp mạng, (đôi khi 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 giao vận hay chỉ vắ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à kết gắn (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.

III. 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).

IV. Ư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 đó.

V. Tìm hiểu về TDI

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

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

1. 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 nhóm tác nghiệp 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.

2. 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 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

3. 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.

4. 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.

VII. 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.

VIII. 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.

IX. 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.

X. 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

XI. 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.

XII. 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.

XIII. 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.

XIV. 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.

1. 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.

2. 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.

3. 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.

4. 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.

XV. 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.

XVI. 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.

XVII. An toàn dữ liệu

1. 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).

2. 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.

3. 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.

XVIII. 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.

[size=8]XIX. Clustering

1. 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.

2. Giới thiệu 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.

3. 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..

4. 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.

5. 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.

6. Mô hình truy cập dữ liệuNhư 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.


Thứ Hai, 6 tháng 8, 2007

Shellcode thần chưởng: nhập môn

The most powerful of buffer overflows are never going to be in worms. Custom exploits are what gets you in, and what keeps you in. If you see a truly top notch hacker going after someone, he'll have a complete mirror of the target hosts' environments, all for one purpose: To create a buffer overflow he only plans on using once. ---Dave Aitel
Lỗi tràn bộ đệm. Blog bảo mật thông tin mà không có một bài nào về lỗi tràn bộ đệm giống như một anh tiều phu mà chẳng sắm nổi một chiếc rìu. Nghĩ vậy nên từ khi mới bắt đầu viết blog, tôi đã dự tính sẽ làm một loạt bài về lỗi tràn bộ đệm. Vấn đề còn lại là viết như thế nào để những người mới bắt đầu có thể hiểu được một đề tài khá phức tạp như lỗi tràn bộ đệm? Có rất nhiều tài liệu tiếng Anh và tiếng Việt về đề tài này nhưng chúng luôn yêu cầu người đọc phải có một trình độ nhất định về C, Assembly hay debug với gdb, những lĩnh vực mà những người mới bắt đầu khó lòng nắm vững. Thật ra muốn hiểu rõ lỗi tràn bộ đệm, bạn không cần phải cực kì thông thạo C hay Assembly mà chỉ cần học một phần rất nhỏ trong hai ngôn ngữ khó nuốt này mà thôi. Thực tế bạn chỉ cần học C và Assembly đủ để viết shellcode. Nhưng...shellcode là cái gì mới được chứ?

Có khá nhiều định nghĩa về shellcode:
Shellcode, là đoạn chương trình giúp bạn có được...một cái shell. Thế shell là cái gì? Theo Wikipedia, shell là một phần mềm cung cấp một giao diện dòng lệnh (command line interface) giúp bạn có thể tương tác với hệ điều hành. Shell sẽ nhận lệnh của bạn, gửi xuống phần lõi (kernel) của hệ điều hành để thực thi, rồi nhận kết quả trả về và gửi lại cho bạn. Có thể hiểu nôm na rằng, có shell trên một máy tính nào đó có nghĩa là bạn có quyền thực thi lệnh trên máy tính đó.
Shellcode là payload của các đoạn mã khai thác lỗ hổng bảo mật (exploit). Khi viết exploit, bạn phải giải quyết hai vấn đề chính: a) injection vector: xác định cách chèn shellcode vào trong hệ thống muốn tấn công; b) payload: xác định shellcode mà bạn muốn chạy trên hệ thống đó. Shellcode có thể làm được mọi thứ, từ việc điều chỉnh giở hệ thống hay download và thực thi một file từ Internet cho đến gửi một email ra ngoài. Mục tiêu chính của các exploit là làm sao có thể chạy được shellcode nằm trong phần payload của nó.
Shellcode còn được gọi là bytecode, tạm dịch là mã máy. Chúng ta đều biết mã máy là thứ ngôn ngữ duy nhất mà bộ vi xử lí có thể hiểu được. Tất cả các chương trình viết bằng bất kì ngôn ngữ nào đều phải được biên dịch sang mã máy trước khi máy tính có thể chạy được chương trình đó. Khác với các chương trình này, shellcode được thể hiện như một nhóm các mã máy, do đó máy tính có thể hiểu và thực thi trực tiếp shellcode mà không cần phải trải qua bất kì công đoạn biên dịch nào cả.
Như vậy muốn viết được shellcode, tôi phải học cách viết mã máy? Câu trả lời là không. Không ai trực tiếp viết ra mã máy khi muốn tạo shellcode. Thay vào đó, bạn có thể: a) sử dụng các shellcode có sẵn trên Internet; b) viết bằng C, dịch sang Assembly rồi tiếp tục dịch sang mã máy; c) viết bằng Assembly rồi dịch luôn ra mã máy.

Đối với cách a), tin vui là có rất nhiều thư viện shellcode trên Internet, thậm chí có một số chương trình cho phép bạn tạo shellcode và viết exploit bằng một ngôn ngữ cao cấp như Python hay Ruby. Tin buồn là nếu bạn nhào vào sử dụng liền các shellcode có sẵn mà không tìm hiểu chúng, bạn có thể bị gài bom. Nên nhớ rằng, shellcode có thể làm được tất cả mọi chuyện, hành động lấy shellcode từ Internet rồi chạy mà không thật sự hiểu shellcode đó làm gì giống như việc chạy các file .exe nhận được từ một người lạ mặt! Đến một lúc nào đó, bạn sẽ sử dụng các chương trình tạo shellcode tự động kể trên để đơn giản hóa việc viết exploit nhưng trước mắt, bạn cần phải tự viết được shellcode đã.

Trong tài liệu này chúng ta sẽ sử dụng luân phiên hai cách b) và c) để viết shellcode. Bạn nên sử dụng cách b) khi mới bắt đầu hoặc khi cần phải triển khai một loại shellcode phức tạp. Nhìn vào hai cách này, bạn có thể thấy rằng viết shellcode đòi hỏi phải có sự thông hiểu về ngôn ngữ Assembly của kiến trúc máy tính mà bạn dự định sẽ chạy shellcode trên đó. Đây là điều hiểu nhiên bởi lẽ các loại máy khác nhau (x86, x86-64, sparc, ppc, amd hay mips...) chỉ hiểu được một nhóm mã máy khác nhau. Ngoài ra, bạn còn phải thông hiểu cách giao tiếp với hệ điều hành (linux, windows, solaris hay freebsd...) để có thể thực thi được lệnh trong shellcode. Thông thường, bạn cần phải có một phiên bản shellcode khác nhau cho mỗi loại hệ điều hành chạy trên mỗi loại kiến trúc phần cứng khác nhau. Nói cách khác, shellcode phụ thuộc vào hệ điều hành và kiến trúc phần cứng.

Bạn vẫn còn đang đọc bài này đó chứ :p? Nếu có bất kì chỗ nào còn mù mờ, bạn nên đọc lại từ đầu và đừng ngại hỏi nếu bạn muốn. Những gì tôi trình bày về shellcode từ đầu đến giờ là những ý quan trọng nhất về shellcode, nếu bạn chỉ muốn biết shellcode để nói chuyện cho vui thì bạn có thể dừng lại ở đây. Còn nếu bạn muốn tự viết cho mình những đoạn shellcode tối ưu thì hãy đi tiếp cùng tôi nhé.

Trong bài tiếp theo, tôi sẽ trình bày những kiến thức căn bản về Assembly đủ để bạn có thể hiểu và viết được shellcode đầu tiên của mình. Sau đó tôi sẽ đề cập đến hai trở ngại quan trọng nhất mà bạn cần phải vượt qua khi viết shellcode: vấn đề địa chỉ ô nhớ (addressing problem) và vấn đề của các byte có giá trị null (null byte problem). Chúng ta cũng sẽ thảo luận sơ lược một số ví dụ về shellcode trên kiến trúc máy Intel 32-bit (còn gọi là x86).

Tôi cần chuẩn bị những gì để học viết shellcode?

Như đã nói từ đầu, bài viết này không yêu cầu bạn phải có kiến thức trước về Assembly hay C. Yêu cầu duy nhất là bạn phải có sự khao khát học hỏi cái mới. Ngoài ra, tôi sử dụng Ubuntu Linux trên máy x86 để viết các shellcode mẫu trong bài này, do đó bạn cũng cần phải chuẩn bị một máy tính có cấu hình tương tự (Linux-x86) như tôi. Bạn chọn distro nào cũng được, nhưng tốt nhất là nên chọn Ubuntu như tôi luôn. Các phần mềm khác mà bạn cần phải chuẩn bị:
nasm là bộ phần mềm bao gồm một assembler tên nasm và một disassembler mang tên ndisasm. nasm dùng để biên dịch các mã lệnh Assembly sang mã máy, còn ndisasm làm công việc ngược lại.
gdb là phần mềm giúp bạn debug (bắt lỗi) hoặc disassemble các chương trình viết bằng C. gdb thường có sẵn trong distro của bạn.
objdump là công cụ giúp bạn xem các thông tin quan trọng trong các file object hay file executable. Tương tự như gdb, objdump thường có sẵn trong distro của bạn.
strace là công cụ xem các syscall (tôi sẽ giải thích khái niệm này sau) mà một chương trình gọi khi nó được thực thi.

Nền tảng .Net

Tổng quan về Microsoft .NET
February 23rd, 2006

Trong thế giới điện toán, những cải tiến và thay đổi vẫn thường xuyên xảy ra. Đây là những biến đổi tất yếu và có tác động thúc đẩy sự phát triển. Một thách thức đối với bất kì nhà lập trình hay những công việc chuyên về CNTT [1] nào là theo kịp những biến đổi liên tục và những sự phát triển trong công nghệ.

Như một nhà quản lí doanh nghiệp hay người đưa ra các quyết định, sự am hiểu về công nghệ và tác động của nó đối với công việc kinh doanh nhiều lúc làm cho bạn cảm thấy nản lòng. Tuy nhiên, những thay đổi thường xuyên nhất trong công nghệ luôn đem lại cho bạn thành quả tốt nhất. Ngày nay, do công nghệ thông tin liên tục phát triển, cho nên những nền tảng của công nghệ đó có thể thay đổi để điều tiết những sự phát triển mới và những nhu cầu mới trên thương trường. Thậm chí một vài nǎm trở lại đây, chỉ có một số ít người biết đến Internet. Ngày nay, Internet đã thâm nhập hầu như mọi nơi mọi chỗ trong cuộc sống của chúng ta.

Sự khởi xướng ý tưởng .NET là một bước đột phá mới của Microsoft. Nó bao hàm nhiều quan niệm hiện hữu và những triết lý. Microsoft đưa ra công nghệ mà nó cho phép ý tưởng .NET trở thành hiện thực. Bài báo này sẽ cung cấp cho bạn một cái nhìn tổng thể về .NET, nó rất có ý nghĩa cho thế giới CNTT và nhất là cho Internet.
Định nghĩa .NET

Để bắt đầu công việc khảo sát .NET, chúng ta phải xác định rõ ranh giới công việc cần thực hiện. Vì .NET có nghĩa một nền tảng hơn là một sản phẩm đơn lẻ, cho nên cách định nghĩa nó có thể đa dạng, có phần hơi khó hiểu và mơ hồ. Một cách đơn giản .NET được định nghĩa dưới dạng một khung ứng dụng (application framework). .NET cung cấp một khung cho những ứng dụng nào được xây dựng; nó xác định những ứng dụng truy nhập các hàm như thế nào qua các hệ thống và các mạng. .Net cung cấp một nền tảng mà trên đó các giải pháp và các dịch vụ Web có thể được xây dựng, một nền tảng giải phóng những sự ràng buộc và tự bản thân nó giải phóng khỏi Microsoft Windows (về mặt kĩ thuật). Nói cách khác, .NET là một cách để xây dựng các ứng dụng và các dịch vụ mà nó hoạt động không phụ thuộc vào một nền tảng (platform) nào. Đây là một cách để tạo ra các trao đổi thông tin (truyền thông) giữa những hệ thống đa dạng và các ứng dụng cũng như tích hợp nhiều thiết bị vào trong việc trao đổi thông tin này.

Với cái nhìn tổng thể, bạn có thể đặt câu hỏi “Ai quan tâm đến vấn đề này?“. Xét cho cùng, Internet là một phương tiện truyền thông không thể tin nổi cho phép thực hiện thương mại điện tử. Trong khi đây là thực tế, thì một cái nhìn khác về Internet và thương mại điện tử là điều cần thiết. Ngày nay Internet cung cấp những giải pháp thương mại điện tử thực sự hiệu quả, nhưng trước hết chúng ta hãy khảo sát mô hình của Internet. Internet hoạt động trên mô hình khách/chủ (client/server) mà ở đó những khách hàng (client) phải tương tác với các máy phục vụ (server) để xem dữ liệu. Những trình duyệt đã được phát triển để thông dịch mã HTML[2] và trả lại trang Web cho người dùng. Về cơ bản việc sử dụng trình duyệt và Internet là công việc không thể thay đổi. Bạn có thể nhập thông tin vào trong các CSDL[3] thông qua trình duyệt của bạn, nhưng phần lớn bạn không thể điều khiển việc sử dụng hay thao tác thông tin. Bạn phải tương tác với các máy phục vụ Web và các CSDL của chúng, và nhiều ứng dụng Web thường không tương thích. Nếu bạn sử dụng những thiết bị truy nhập Internet khác nhau như PC hay cell phone thì cách sử dụng những thiết bị đó là rất khác nhau. Những thiết bị này không tích hợp tốt với nhau, thậm chí ngay cả trên Internet. Từ một viễn cảnh công việc kinh doanh, nhiều công nghệ thương mại điện tử để lại những hệ thống đang tồn tại đằng sau chúng, đây quả là một vấn đề tốn kém và khó khǎn.

Ý tưởng .NET được thiết kế để hỗ trợ chúng ta tiến tới một Web thân thiện hơn, tích hợp tốt hơn, một nơi mà ở đó các ứng dụng và các quá trình giao dịch có thể tương tác với nhau một cách tự do không phụ thuộc vào chương trình và nền tảng. Tóm lại, .NET làm cho thông tin trên Web có thể được tiếp cận một cách dễ dàng: bạn có thể sử dụng bất kì thiết bị nào, trên bất kì nền tảng nào. .NET còn có thể hỗ trợ các hệ thống máy phục vụ và ứng dụng liên lạc với nhau một cách thông suốt (seamlessly) và xây dựng hệ thống tính toán phân tán trên Web, làm cho Web trở thành một nơi tương tác nǎng động hơn giữa các dịch vụ Web, các ứng dụng và khách hàng.

Làm thế nào Microsoft có thể hoàn thành mục tiêu này? Chúng ta có thể thấy ngay được kết quả thông qua các sản phẩm và các dịch vụ mà khách hàng mua hàng nǎm. Mục tiêu của .NET có trở thành hiện thực hay không vẫn còn bỏ ngỏ, nhưng hiện tại thì Microsoft đang bận bịu với công việc phát triển các công cụ và những chiến lược để làm cho .NET trở thành hiện thực. .NET được thực thi thông qua .NET framework và các công cụ, hoặc thông qua các các khối (block) hợp nhất và các dịch vụ như Microsoft Visual Studio .NET. Hiện Microsoft đang tǎng số lượng các cộng sự và các nhà phát triển và họ đang tạo ra các sản phẩm bổ xung hữu ích cho việc thực thi .NET (.NET Implementation). Microsoft Windows XP là một trong những hệ điều hành đầu tiên được thiết kế để bắt đầu giới thiệu ý tưởng .NET.

Ngay 12/04/2016

Cuộc sống không dễ dàng, nhất là khi bạn lên kế hoạch đạt được điều gì đó có giá trị. Đừng chọn con đường đi dễ dàng. Hãy làm điều gì đó phi...