Quản trị mạng Windows bằng Script - Phần 9: Tìm hiểu kịch bản điều
khiển xa
Lúc này bạn cần phải quay lại ôn và nghiên cứu một cách chi tiết các kỹ thuật của kịch bản điều
khiển xa trước khi chúng ta tiến xa hơn trong vấn đề này. Một cách cũng tốt cho bạn đó là nhảy
vào và thử mọi thứ, tuy nhiên cách làm này đôi khi lại đưa bạn gặp phải bức tường. Để tránh gặp
phải bức tường này chúng ta phải tìm hiểu về những nền tảng c
ủa chúng.
Hai loại kịch bản điều khiển xa
Có hai loại kịch bản điều khiển xa. Loại thứ nhất là khi chúng ta chạy một kịch bản trên máy tính
A và máy tính mục tiêu là B để thực hiện một số hành động trên nó. Trong thử nghiệm bằng sử
dụng kịch bản ChangeIPAddress.vbs, chúng tôi đã thay đổi dòng:
strComputer = "."
thành:
strComputer = "xp2"
Nếu chúng tôi sử dụng dòng đầu trên ở trên và chạy kịch bản trên máy tính A thì sẽ thay đổi
được địa chỉ IP của máy tính này. Còn nếu chúng ta sử dụng dòng thứ hai ở trên và chạy kịch
bản trên máy tính A thì sẽ thay đổi được địa chỉ IP của máy tính B.
Kiểu thứ hai của kịch bản điều khiển xa và nó làm việc giống như vậy. Tôi là một quản trị viên,
đã đăng nhập vào máy tính A và có một kịch bản muốn sử dụng để thực hiện một số công việc
trên máy tính B. Tuy nhiên thay vì cố gắng chạy kịch bản trên máy tính A và mục tiêu là máy
tính B, tôi muốn chạy kịch bản trực tiếp trên máy tính B. Chính vì vậy tôi đã đưa kịch bản từ
máy tính A sang máy tính mục tiêu B và sau đó chạy nó ở đây. Tôi có thể thực hiện điều đó như
thế nào? Nếu có một môi trường Active Directory sau đó tôi có thể thử và chạy kịch bản như
kịch bản đăng nhập trên máy tính điều khiển xa. Chúng ta hãy xem thực hiện như thế nào trong
bài tiếp theo, nhưng bây giờ hãy chú ý rằng có hai loại kịch bản điều khiển xa.
•
Thứ hai, nó có thể là vấn đề tường lửa. Chúng ta đã nhìn thấy trong bài viết trước, để có được
kịch bản WMI của chúng ta có thể chạy cho một máy tính điều khiển xa thì chúng ta phải mở
ngoại lệ quản trị từ xa Remote Administration trong tường lửa Windows trên máy tính điều
khiển xa. Bây giờ nếu bạn mở Windows Firewall applet từ Control Panel và chọn tab Exceptions
thì sẽ không thấy hộp kiểm Remote Administration được gán nhãn mà bạn có thể chọn để mở
ngoại lệ này. Lý do của điều này là Control Panel applet này có ý nghĩa chính dành cho người
dùng gia đình sử dụng để cấu hình tường lửa của họ. Trong môi trường doanh nghiệp, nơi Active
Directory được sử dụng, cách quản lý Windows Firewall được ưa thích là sử dụng Group Policy.
Chúng ta đã thấy trong bài viết trước rằng thiết lập Group Policy mà chúng ta cần cấu hình như
dưới đây:
Computer Configuration\Administrative Templates\Network\NetworkConnections\Windows
Firewall\Domain Profile\Windows Firewall: Dho phép ngoại lệ quản trị từ xa trở về.
Khi bạn nhắm đến chính sách này đối với một máy tính điều khiển xa thì nó sẽ mở hai cổng TCP
trên máy tính đó: cổng 445 và 135.
• Cổng TCP 445 là cổng dành cho lưu lượng đi vào Server Message Block (SMB), nếu cổng này
bị khóa trên tường lửa của máy tính điều khiển xa thì bạn không chỉ không thể kết nối tới nó
bằng WMI mà cũng không thể kết nối đến nó bằng các công cụ quản trị MMC chuẩn như
Computer Management. Khi cổng bị khóa và bạn đang thử chạy các kịch bản đối với máy tính từ
xa thì có thể gặp một số lỗi khó hiểu như “System error 53 has occurred. The network path was
not found” – Lỗi hệ thống 53 xuất hiện. Đường dẫn mạng không được tìm thấy…
• Cổng TCP 135 là cổng dành cho lưu lượng vào Distributed COM (DCOM). Đặc biệt hơn, cổng
135 là cổng lắng nghe cho DCOM Service Control Manager (SCM), cung cấp các dịch vụ RPC
cho việc thuyết minh các đối tượng COM.
Độ dài hay ngắn của nó là cả hai cổng TCP 135 và 445 cần phải mở trên tường lửa của máy tính
từ xa nếu các truy vấn WMI chạy từ máy tính cục bộ đến sử dụng thành công RCP để kết nối
dịch vụ WMI trên máy tính điều khiển xa và đến thuyết minh thành công các đối tượng DCOM
trên máy tính từ xa.
Vấn đề ở đây là không an toàn – mật khẩu của tài khoản quản trị viên cho máy tính từ xa có
trong văn bản của kịch bản và có thể bị quan sát.
Vậy làm thế nào để có thể loại bỏ được hai dòng đầu tiên này và giấu các giá trị strUser và
strPassword cho kịch bản như các đối số khi kịch bản được chạy? Tốt hơn vẫn là việc mã hóa
cứng các giá trị này trong kịch bản, nhưng nếu ai đó có chương trình đang chạy (như Network
Monitor 3.0) thì họ có thể lấy được các thông tin quan trọng và khi đó bạn đã thỏa hiệp máy tính
từ xa của mình.
Sẽ như thế nào nếu bạn sử dụng một lệnh nâng cao như runas /user:Administrator cmd.exe và
sau đó chạy kịch bản từ cửa sổ lệnh nâng cao mà không cần chỉ định các thông tin quan trọng
khác? Đó có thể là giải pháp tốt nhất cho kịch bản từ xa, nơi bạ
n muốn bảo đảm kịch bản có sự
nhận dạng thích hợp (thường quản trị nội bộ trên máy tính mục tiêu) dù cho nó khá phức tạp. Rõ
ràng, bạn có thể đơn giản việc đăng nhập vào máy trạm làm việc như tài khoản quản trị miền và
đơn giản mở một lệnh và chạy kịch bản.
3. Cho phép thích hợp
Bạn đang chạy kịch bản trên máy tính A và kịch bản được giả định để thực hiện một số hành
động trên máy tính B. Kịch bản đã thành lập kết nối mạng với dịch vụ WMI trên máy tính B và
đang cố gắng thực hiện các hành động của nó bằng sử dụng đúng nhận dạng (thường là các
thông tin quản trị viên cục bộ) trên máy tính B. Những gì có thể làm cho kịch bản này bị hỏng tại
đây? Không đủ sự cho phép! Nếu kịch bản đang cố gắng thực hiện một số hành động được điều
khiển bởi ACL (như việc thay đổi một đối tượng file hoặc tạo một đối tượng trong Active
Directory hoặc kích hoạt một đối tượng DCOM) và bạn không có sự cho phép thích hợp để thực
hiện hành động đó thì kịch bản sẽ bị lỗi. Không may thay đó thường là phần khó nhất của kịch
bản điều khiển xa khi có các cho phép NTFS, DCOM và nhiều kiểu cho phép khác trên nền
Windows. Bạn có thể có các cho phép đúng nhưng không có quyền đúng, nghĩa là các quyền
người dùng để thực hiện một số hành động. Ví dụ, nói rằng bạn muốn sử dụng kịch bản để xóa