터미널 서버 (Win2008R2)에 대한 무차별 대입 공격을 중지하는 방법은 무엇입니까?


23

무차별 대입 공격을 막기위한 Linux 도구에 더 익숙하므로 Windows에 적합한 도구를 찾는 데 어려움을 겪고 있습니다. 터미널 서버와 함께 Windows Server 2008 R2를 실행하고 있으며 RDP를 통해 반복적으로 로그인을 시도한 후 IP를 차단하고 싶습니다. 힌트가 있습니까?


3
Windows 서버에서이 문제를 처리해야합니까? 에지 장치 (방화벽 / 라우터)에서 속도 제한을 고려한 적이 있습니까?
Zoredache

2
Windows 상자는 호스팅 회사가 운영하는 VPS이므로 네트워크 장치에 액세스 할 수 없습니다.
onik

로그인 실패시 작업 스케줄 이벤트를 설정하여 PS 스크립트를 실행할 수 있습니다. PS Svript는 IP가 시도한 횟수를 세고 방화벽 규칙으로 차단해야합니다. 그런 스크립트는 없지만 만들 수는 있습니다.
Chris S

@Chris S : 이벤트 로그 "싱크"로 실행되고 새로운 이벤트가 기록 될 때마다 콜백을 수신한다는 점을 제외하면 제 ts_block 스크립트의 기능은 다소간 다릅니다. 따라서 실시간으로 실행됩니다.
Evan Anderson

VPN 사용-예 : 설치 라우터의 OpenVPN 창 상자를 인터넷에 직접 넣지 마십시오. 위험합니다.
integratorIT

답변:


5

이미 언급했듯이 rdp 로그인 시도를 중지하려면 특정 IP를 분리하기 위해 방화벽을 제어해야합니다. 관리 도구-> 터미널 서비스 관리자에서 일부 설정을 수행 할 수 있지만이 방법으로 하나의 IP를 중지하는 방법은 없습니다. 아마도 rdp 포트를 듣고 로그온 실패를 제어하는 ​​배치 스크립트를 고려해야 할 것입니다. 따라서 같은 IP로 시도가 많았을 경우 (번호를 선택하십시오 ...) 알려진 시간 동안 다른 시도를 할 수 없었습니다. 있다. 가능한지 잘 모르겠지만 방법이 될 수 있습니다 ...


1
좋아, 생각했던대로 야 일괄 처리를 위해 IP 주소를 파일로 내보낼 수 있는지 확인하려면 이벤트 뷰어를 연구해야합니다. 당분간 수동으로 생성 된 .csv 덤프에서 grep해야합니다
onik

5
RDP가 응답하는 포트를 변경하십시오.
JohnThePro

재미있는 것은 내가 IP를 제한 할 것을이지만, IP 주소를보고하지 않는 로그온 실패
사바 토스

포트를 변경하면 모호합니다. 그들은 지능형 포트 스캐닝 소프트웨어를 갖춘 새로운 포트를 찾을 것입니다.
TheLegendaryCopyCoder

@CsabaToth 이벤트 로그는 기본적으로 유용한 정보를 기록하지 않습니다. 일부 추가 정보에 대한 RDP 요청을 수신하는 도메인 컨트롤러 또는 컴퓨터에서 netlogon 서비스의 상세 로깅을 활성화 할 수 있습니다. Windows 방화벽 로깅을 사용하여 IP 주소를 확인할 수 있습니다.
Michael Steele

25

속도 제한이있는 경우에만 에지 방화벽에서 이러한 시도를 차단해야합니다. 당신이 읽을 수있는 능력이 없다면.

Edge 방화벽을 차단할 수없고 인터넷의 일부에만 RDP를 열어야하는 경우 기본 제공 Windows 방화벽 기능을 사용하여 들어오는 연결을 잠급니다.

당신이 정말로 마지막으로, 만약 합니다 전체 중에도 인터넷에 공개 RDP가 당신의 수정 된 버전을 살펴있을 수 있습니다 Windows 용 내 SSH 브 루트 포스 차단 프로그램 나는에 가지고 GitHub의 저장소를 . 이 스크립트 ts_block은 Windows Server 2003, 2008 및 2008 R2에서 무차별 강제 터미널 서비스 로그온 시도를 차단합니다. 불행하게도 RDP에 TLS / SSL 보안 계층을 사용할 때 Windows에서 기록한 이벤트가 변경되어이 스크립트는 점점 비효율적 입니다. (Microsoft가 인증을 시도하는 호스트의 IP 주소를 생략하기로 선택한 이유는 저를 넘어선 것입니다. 로그하는 것이 매우 중요한 것 같습니다.)


1
나는 여기 ts_block 페이지를 사용 하고 놀랍습니다! 내 Windows 서버 (2008 R2)는 수많은 무차별 대입 공격 속도를 늦췄지만 더 이상은 아니 었습니다! TS_BLOCK은 vbscript로 작성되었으며 Windows 서비스로 설치 가능해야합니다. 그러나 MSI 버전을 사용하지 말고 .vbs 코드를 편집하고 nssm 유틸리티를 사용하여 설치하십시오. .vbs 코드에는 기본적으로 하드 코딩 된 레지스트리 항목이 필요하지 않습니다. <p> 코드를 편집했으며 모든 로그인 실패를 즉시 차단합니다. 내 웹 서버이므로 로그인 시도가 실패하지 않아야합니다. 따라서 스크립트

이쁘다, 에반 C #에서 다시 구현해야한다고 생각하면 srvany 등으로 해킹하는 대신 기본 Windows 서비스로 실행할 수 있습니다. 내가 그렇게하면 Github 또는 그 밖의 것에 버릴 것입니다.
라이언 볼거

1
@RyanBolger : 일반적으로 VBScript 및 통역 언어를 사용할 수있는 곳이 있습니다. "Non-Sucking Service Manager"를 사용하면 VBScript 프로그램을 서비스로 실행하는 데 어려움이 거의 없습니다.
Evan Anderson

ts_block은 내가 찾던 "Thank You Evan Anderson"과 똑같습니다. 첫 번째 터미널 가상 서버를 하루 만에 웹에 직접 배치하면 10,000 번 이상의 로그인에 실패했습니다. 시간이 있으면 수정하고 이전 블록 수를 기반으로 영구 차단을 추가 할 수 있습니다. 예 : 하루에 IP가 4 번 금지됩니다. (이미 생성되지 않은 경우)

ts_block스크립트를 기반으로 fail2ban공격자를 차단하기 위해 게이트웨이에서 사용하는 솔루션은 다음과 같습니다. wqweto.wordpress.com/2013/12/10/…
wqw

3

정확히 이것을하는 C # 프로그램이 있습니다. 이벤트 로그에 항상 사용자의 IP 주소가 표시되지 않는 Server 2008 R2에 문제가있었습니다 (최신 원격 데스크톱 클라이언트에서 연결된 경우). 일부 서비스는 원하는 정보를 모두 제공하지 않는 자체 자격 증명 검사 공급자를 구현합니다.

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

그러나 원격 데스크톱의 경우 "원격 데스크톱 세션 호스트 구성"으로 이동하여 "협상"또는 "SSL (TLS 1.0)"대신 "RDP 보안 계층"의 보안 계층을 갖도록 RDP-TCP 연결을 변경하면 IP 주소.

"RDP 보안 계층을 선택하면 네트워크 수준 인증을 사용할 수 없습니다."라는 또 다른 질문입니다.

http://www.windowsecurity.com/articles/logon-types.html 이 도움이되었다는 것을 알았습니다 . EventLogWatcher를 사용하고 "* [System / EventID = 4625 또는 System / EventID = 4624]"에 바인딩했기 때문에 사용자가 비밀번호를 잘못 알고 있으면 성공시 잘못된 카운트를 재설정 할 수 있습니다. 또한 :: 1, 0.0.0.0, 127.0.0.1 및 "-"를 허용했습니다. LAN / 관리 IP를 허용 목록에 추가하거나 원하지 않을 수 있습니다.

Forefront TMG를 사용하여 API를 사용하여 IP 그룹에 잘못된 IP 주소를 추가하는 방식으로 Cisco에 SMB 라우터 중 하나에 API 액세스 권한을 추가하도록 요청했습니다.

기본 Windows 방화벽을 사용하여 차단하려면 해당 API ( "netsh advfirewall")를 살펴보십시오.

금지하기 전에 x 회의 시도를 허용하며 성공하면 횟수가 재설정됩니다.


2

침입 또는 복잡한 로그를 방지하려고합니까? 침입을 방지하려는 경우 Windows에 로그인 시도를 차단하는 기본 제공 방법이 있습니다. 컴퓨터 구성-> 정책-> Windows 설정-> 보안 설정->에 계정 잠금 임계 값 그룹 정책 설정이 있습니다. 계정 정책-> 계정 잠금 정책.

공격자는 관리자와 같은 일반적인 사용자 이름을 사용하며 확실히 사용자 이름을 잠급니다. 실제 관리를 위해서는 별도의 계정이 필요합니다. 어쩌면 좋습니다.

방화벽 수준에서 자동으로 차단하려면 방화벽 규칙을 자동으로 업데이트하여 일부 스크립트 로그 읽기가 필요합니다. 이 방법으로 IP 주소를 기반으로 규칙을 추가 할 수 있어야합니다. 이것은 기본적으로 리눅스 시스템에서 iptables가하는 일입니다.

다소 명백 할 수도 있지만 비표준 포트 에서 원격 데스크톱 서비스를 실행하는 것도 고려 했습니까? 이것은 침입을 막는 데 매우 효과적이었습니다.


방화벽에서 반복적 인 연결 시도를 차단하는 것이 좋지만 무차별 대입 공격이 "방화벽 뒤에서"발생하지 않는다고 가정하는 것은 그리 좋은 가정이 아닙니다. 블록에 대한 호스트 기반의 무차별 대입은 제 생각에는 상당히 좋은 생각입니다. 계정 잠금을 사용하는 것이 좋은 아이디어이지만 로그를 깔끔하게 유지하려는 무차별 대입 공격의 아이디어를 좋아합니다.
Evan Anderson

1
이미 std가 아닌 포트에서 실행 중이며 더 큰 관심사는 실제로 많은 로그인 시도로 인해 서버를 효과적으로 오프라인 상태로 만드는 것입니다.
boomhauer

한 가지 옵션은 방화벽을 통해 원격 데스크톱에 대한 액세스를 완전히 비활성화하지만 서버에서 RDP 트래픽을 허용하도록 방화벽을 재구성하는 서비스를 실행하는 것입니다.이 서비스는 비밀번호로 보호되며 "신뢰할 수있는"IP 소스에서만 액세스 할 수 있습니다 ( 휴대 전화의 IP 범위 또는 사무실 등). 번거 로움을 소개하지만 작동합니다.
Dai

1

GUI 기반 솔루션을 사용하고 실제로 다른 이벤트에 대해 다른 규칙 세트를 작성하려는 경우 다른 솔루션도 있습니다. 가장 쉬운 방법은 RDPGuard (hxxp : //www.rdpguard.com)이지만 회사 환경에서는 공격이 발생한 위치 (국가, 출처) 및 사용자 이름과 같은 더 많은보고를 원할 것이므로 신속하게 처리 할 수 ​​있습니다. 자신의 사용자가 실수로 자신을 차단하거나 자신이 아닌 곳에서 로그인을 시도하는지 확인하십시오.

개인적으로 저는 Syspeace (hxxp : //www.syspeace.com)를 좋아합니다.



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.