Làm thế nào để ngăn chặn các cuộc tấn công vũ phu trên Terminal Server (Win2008R2)?


23

Tôi quen thuộc hơn với các công cụ Linux để ngăn chặn các cuộc tấn công vũ phu, vì vậy tôi gặp khó khăn khi tìm các công cụ phù hợp cho Windows. Tôi đang chạy Windows Server 2008 R2 với Terminal Server và tôi muốn chặn IP sau nhiều lần thử đăng nhập qua RDP. Có gợi ý nào không?


3
Bạn có thực sự cần phải xử lý việc này trên máy chủ Windows của bạn không? Bạn đã xem xét thực hiện giới hạn tốc độ trên thiết bị cạnh của bạn (tường lửa / bộ định tuyến) chưa?
Zoredache

2
Hộp Windows là một VPS được điều hành bởi một công ty lưu trữ, vì vậy tôi không có quyền truy cập vào các thiết bị mạng.
onik

Bạn có thể thiết lập một sự kiện Lịch trình nhiệm vụ khi đăng nhập thất bại để kích hoạt tập lệnh PS; PS Svript sẽ phải đếm số lần IP đã thử sau đó chặn nó bằng quy tắc Tường lửa. Tôi không có kịch bản như vậy nhưng có thể tạo được.
Chris S

@Chris S: Đó là ít nhiều những gì tập lệnh ts_block của tôi làm, ngoại trừ việc nó chạy như một bản ghi sự kiện "chìm" và nhận được một cuộc gọi lại mỗi khi các sự kiện mới được ghi lại. Như vậy, nó chạy nhiều hơn hoặc ít hơn trong thời gian thực.
Evan Anderson

Sử dụng VPN - cài đặt, vd. OpenVPN trên bộ định tuyến. Không bao giờ đặt hộp cửa sổ trực tiếp lên internet - nó nguy hiểm.
tích hợp

Câu trả lời:


5

để dừng các nỗ lực đăng nhập của ndp, như đã nói, bạn cần kiểm soát tường lửa của mình để cách ly một ip cụ thể. Bạn có thể thực hiện một số cài đặt trong Công cụ quản trị -> Trình quản lý dịch vụ đầu cuối nhưng không thể làm gì để dừng một ip theo cách này. Có lẽ bạn đã xem xét một tập lệnh bó để nghe cổng ndp và kiểm soát các lỗi đăng nhập, vì vậy nếu có một số lần thử (bạn chọn số ...) bằng cùng một ip, thì không có nỗ lực nào khác trong một khoảng thời gian đã biết được. Tôi không chắc nếu nó có thể, nhưng có thể là một cách ...


1
Ok, như tôi nghĩ. Tôi phải nghiên cứu Trình xem sự kiện để xem liệu tôi có thể xuất địa chỉ IP thành tệp để xử lý hàng loạt hay không. Hiện tại phải grep chúng từ các bãi .csv được tạo thủ công
onik

5
Thay đổi cổng RDP đáp ứng trên.
JohnThePro

Điều buồn cười là tôi muốn hạn chế IP, nhưng lỗi đăng nhập không báo cáo địa chỉ IP
Csaba Toth

Thay đổi cổng chỉ che khuất. Họ sẽ tìm thấy cổng mới với phần mềm quét cổng thông minh.
TheLegendaryCopyCoder

@CsabaToth Nhật ký sự kiện không ghi thông tin hữu ích theo mặc định. Bạn có thể kích hoạt ghi nhật ký chi tiết trong dịch vụ netlogon từ bộ điều khiển miền hoặc máy tính nhận các yêu cầu RDP để biết thêm thông tin. Bạn có thể kích hoạt đăng nhập tường lửa Windows để xác định địa chỉ IP.
Michael Steele

25

Bạn thực sự nên chặn những nỗ lực này ở tường lửa cạnh của bạn, nếu chỉ với giới hạn tỷ lệ. Nếu bạn không có khả năng làm điều đó hãy đọc tiếp.

Nếu bạn không thể chặn tường lửa cạnh và chỉ cần mở RDP cho một tập hợp con của Internet, hãy sử dụng các tính năng Tường lửa tích hợp của Windows để khóa các kết nối đến.

Cuối cùng, nếu bạn thực sự phải mở RDP cho toàn bộ Intenet, bạn có thể xem phiên bản sửa đổi của chương trình chặn vũ lực SSH của tôi cho Windows mà tôi có trong kho lưu trữ github . Tập lệnh này, ts_block, chặn các nỗ lực đăng nhập Terminal Services trên Windows Server 2003, 2008 và 2008 R2. Thật không may, vì những thay đổi đối với các sự kiện được Windows ghi lại khi sử dụng lớp bảo mật TLS / SSL cho RDP , tập lệnh này ngày càng không hiệu quả . (Tại sao Microsoft chọn bỏ qua địa chỉ IP của máy chủ lưu trữ để xác thực là ngoài tôi. Có vẻ như đó sẽ là một điều khá quan trọng để đăng nhập, eh?)


1
Tôi sử dụng trang ts_block ở đây và thật tuyệt vời! Máy chủ windows của tôi (2008 R2) được sử dụng để làm chậm dưới nhiều cuộc tấn công vũ phu nhưng không còn nữa! TS_BLOCK Được viết bằng vbscript - và có thể / nên được cài đặt dưới dạng dịch vụ windows - nhưng không sử dụng phiên bản MSI chỉ chỉnh sửa mã .vbs và tự cài đặt với nssm. Bạn không cần các mục đăng ký vì mã .vbs có mặc định được mã hóa cứng. <P> Tôi đã chỉnh sửa mã và nó chặn MỌI thông tin đăng nhập thất bại ngay lập tức - vì là máy chủ web của riêng tôi nên KHÔNG có lần thử đăng nhập thất bại. Vì vậy, tập lệnh

Điều này khá ngọt ngào, Evan. Tôi đã có một nửa tâm trí để triển khai lại nó trong C # để bạn có thể chạy nó như một dịch vụ windows gốc thay vì hack xung quanh với srvany và những thứ tương tự. Nếu tôi từng làm, tôi sẽ ném nó lên Github hoặc một cái gì đó nữa.
Ryan Bolger

1
@RyanBolger: Tôi có một điểm mềm cho VBScript và các ngôn ngữ được diễn giải nói chung. Tôi thấy rằng việc sử dụng "Trình quản lý dịch vụ không hút" mang lại trải nghiệm khá đau đớn khi chạy các chương trình VBScript dưới dạng dịch vụ.
Evan Anderson

ts_block thật đáng kinh ngạc chính xác là những gì tôi đang tìm kiếm "Cảm ơn Evan Anderson" Khi tôi đặt máy chủ ảo Terminal đầu tiên của mình trực tiếp trên web trong một ngày tôi đã có hơn 10.000 lần đăng nhập thất bại. Khi có thời gian tôi có thể sửa đổi nó và thêm chặn vĩnh viễn dựa trên số khối trước đó. ví dụ: IP bị cấm 4 lần trong một ngày. (Trừ khi nó đã được tạo)

Dựa trên ts_blockkịch bản ở đây là một giải pháp mà sử dụng fail2bantrên cửa ngõ để chặn những kẻ tấn công: wqweto.wordpress.com/2013/12/10/...
wqw

3

Tôi có một chương trình C # thực hiện chính xác điều này. Tôi gặp sự cố trên Server 2008 R2 khi nhật ký sự kiện không phải lúc nào cũng liệt kê địa chỉ IP của người dùng (nếu họ kết nối từ các máy khách Remote Desktop mới hơn). Một số dịch vụ triển khai nhà cung cấp kiểm tra thông tin xác thực của riêng họ mà không cung cấp tất cả thông tin bạn muốn.

http://cyberarms.net/security-insights/security-lab/remote-desktop-logging-of-ip-address-%28security-event-log-4625%29.aspx

Tuy nhiên, đối với Remote Desktop, tôi phát hiện ra rằng việc đi vào "Cấu hình máy chủ phiên máy tính từ xa" và thay đổi kết nối RDP-TCP để có lớp bảo mật của "Lớp bảo mật RDP" thay vì "Đàm phán" hoặc "SSL (TLS 1.0)" đã mang lại Các địa chỉ IP.

Cho dù bạn thực sự muốn làm điều này là một câu hỏi khác cho bạn, "Nếu bạn chọn Lớp bảo mật RDP, bạn không thể sử dụng Xác thực cấp mạng."

Tôi thấy http://www.windowsecurity.com/articles/logon-types.html là hữu ích. Tôi đã sử dụng EventLogWatcher và bị ràng buộc với "* [System / EventID = 4625 hoặc System / EventID = 4624]" để tôi có thể thiết lập lại một số liệu xấu về thành công nếu người dùng thực sự chỉ sai mật khẩu của họ. Ngoài ra tôi còn đưa vào danh sách trắng :: 1, 0.0.0.0, 127.0.0.1 và "-". Bạn có thể hoặc không muốn liệt kê các IP LAN / quản lý danh sách trắng.

Tôi sử dụng Forefront TMG vì vậy tôi đã sử dụng API để thêm địa chỉ IP xấu vào một nhóm IP theo cách đó và tôi đã yêu cầu Cisco thêm quyền truy cập API vào một trong các bộ định tuyến SMB của họ (họ đảm bảo với tôi rằng họ có thể làm được!)

Nếu bạn muốn sử dụng Tường lửa Windows gốc để chặn chúng, hãy xem API cho điều đó ("Netsh advfirewall").

Tôi cho phép x số lần thử trước khi tôi cấm và thành công sẽ đặt lại số lượng.


2

Bạn đang cố gắng ngăn chặn các đột nhập, hoặc nhật ký lộn xộn? Nếu bạn đang cố gắng ngăn chặn các đột nhập, Windows có cách tích hợp để chặn các nỗ lực đăng nhập. Có cài đặt Chính sách nhóm khóa tài khoản trong Cấu hình máy tính -> Chính sách -> Cài đặt Windows -> Cài đặt bảo mật -> Chính sách tài khoản -> Chính sách khóa tài khoản.

Những kẻ tấn công sẽ sử dụng tên người dùng phổ biến như Administrator và chắc chắn họ sẽ khóa chúng. Bạn sẽ cần một tài khoản riêng để quản trị thực tế, dù sao đi nữa cũng có thể được khuyến khích.

Tự động chặn ở cấp tường lửa sẽ yêu cầu một số đọc nhật ký theo kịch bản với cập nhật tự động các quy tắc tường lửa. Bạn sẽ có thể thêm các quy tắc dựa trên địa chỉ IP theo cách này. Đây là cơ bản những gì iptables làm trong một hệ thống Linux.

Nó có thể là một chút rõ ràng, nhưng bạn cũng đã xem xét chạy Dịch vụ máy tính từ xa trên một cổng không chuẩn ? Điều này đã rất hiệu quả đối với tôi trong việc ngăn chặn các cuộc đột nhập.


Chặn các nỗ lực kết nối lặp đi lặp lại ở tường lửa là một cách làm tốt, nhưng giả sử rằng các cuộc tấn công vũ phu sẽ không xảy ra "đằng sau tường lửa" không phải là một giả định rất tốt. Theo tôi, một người vũ phu dựa trên máy chủ là một ý tưởng hợp lý tốt. Sử dụng khóa tài khoản chắc chắn là một ý tưởng tốt, nhưng tôi cũng thích ý tưởng về việc xóa bỏ các nỗ lực vũ phu để giữ cho các bản ghi sạch hơn.
Evan Anderson

1
Tôi đã chạy trên một cổng nonstd và mối quan tâm lớn hơn của tôi là máy chủ của tôi đã hoạt động ngoại tuyến hiệu quả do số lượng lớn các lần thử đăng nhập.
boomhauer

Một tùy chọn là vô hiệu hóa quyền truy cập vào Remote Desktop thông qua Tường lửa, nhưng có một dịch vụ chạy trên máy chủ cấu hình lại tường lửa để cho phép lưu lượng RDP đi qua, dịch vụ này được bảo vệ bằng mật khẩu và có thể chỉ cho phép truy cập từ nguồn IP "đáng tin cậy" ( chẳng hạn như dải IP của điện thoại di động hoặc văn phòng của bạn). Nó giới thiệu rắc rối, nhưng hoạt động.
Đại

1

Ngoài ra, có một vài giải pháp khác nếu bạn muốn có một giải pháp dựa trên GUI thay vào đó và tạo ra các bộ quy tắc khác nhau cho các sự kiện khác nhau thực sự. Đơn giản nhất sẽ là RDPGuard (hxxp: //www.rdpguard.com) nhưng trong môi trường công ty, bạn có thể muốn báo cáo nhiều hơn như từ nơi cuộc tấn công đến (quốc gia, nguồn gốc) và tên người dùng nào được sử dụng để bạn có thể nhanh chóng quyết định xem đó có phải là một trong những người dùng của bạn vô tình tự chặn hoặc cố gắng đăng nhập từ nơi bạn biết không.

Cá nhân tôi thích Syspeace (hxxp: //www.syspeace.com) thực hiện tất cả những điều đó cho chúng tôi nhưng tôi nghĩ tôi sẽ đề cập đến cả hai



Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.