해당 Project는 대략 2년전 GitHub - hoon37/Ban_REMOTE_MSSQL: Windows Server 에서 공개한 version을 다소 변경한 것으로 기본 동작개념이나 사용방법은 거의 동일하며 아래와 같은 사항이 반영되었습니다.
- 기반 platform이 .NET Framework에서 .NET6로 바뀌었습니다.
- 설정file이 ini에서 json으로 바뀌었습니다.
- 약간의 source code개선이 있습니다.
- Repository가 cliel/Ban_Server: 무차별 대입 공격 방어(Brute Force Attack Defend) (github.com) (https://github.com/cliel/Ban_Server.git)로 변경되었습니다.
Remote Desktop의 경우 원격 port는 3389, MS-SQL Server의 경우 1433이 기본 port입니다. 그런데 server를 외부에서 접속 가능하도록 두면 이 2개 port에 대해서 무차별 대입 공격이 발생함을 알 수 있습니다.
port번호를 바꾸면 일시적으로는 공격 빈도가 줄지만 시간이 지나면 다시 공격이 되살아나서 별 의미가 없습니다. 때문에 접속 가능한 IP만 제한적으로 열어두는 것이 제일 좋은데 만약 접속을 허용하는 IP만 특정할 수 없는 경우라면 해결 방법을 달리해야 합니다.
무차별 대입 공격에 대응할 수 있는 방법이야 여러가지로 존재할테지만 그 방법중의 하나로 Ban_Server를 소개하고자 합니다. Ban_Server는 Windows Server에서 원격제어와 MSSQL Server의 전용port로 무단 접속을 시도하면 이와 관련된 Log를 만들때 이를 감지하고 공격자의 IP를 차단하는 역활을 수행합니다.
1. 설치방법
우선 아래 file을 내려 받고
file을 server의 C:\Ban_Server경로에 풀어줍니다. 물론 임의의 다른 위치로 압축을 풀어도 됩니다.
압축을 풀고나면 먼저 Remote Desktop에 대응할 Task Scheduler를 등록해야 합니다. 이를 위해 Control Panel -> Administrative Tools -> Task Scheduler를 실행하여 아래 제시된 방법으로 Task Scheduler를 등록합니다.
오른쪽의 Create Task를 선택합니다.
Name에 Ban_REMOTE를 입력하고 아래 Security Options에는 'Run whether user is logged on or not'을 선택합니다. 이때 Name은 해당 Task Scheduler가 어떠한 목적으로 만들어졌는지를 구분할 수 있을 정도면 다른 이름을 지정할 수도 있습니다.
다음으로 Trigger Tab으로 이동해 Begin the task에 'On an event'를 선택하고 Log에는 Security를 Event ID로는 4625를 입력합니다.
Actions tab에서는 Action에 'Start a program'을 선택하고 Program/script에 Ban_Server.exe를 명시한 뒤 Start in (optional)에 Ban_Server.exe가 존재하는 folder를 지정합니다.
여기까지의 내용을 설정한뒤 새로운 Task Scheduler를 저장합니다. 같은 방법으로 MSSQL에 관한 event로 등록해 줘야 하는데 위의 설정과정 대부분이 일치하지만 Remote Desktop과 MSSQL이 다른 점은 Trigger에서 Log를 Application을 잡고 Event ID를 18456으로 해야 한다는 점 뿐입니다.
2. 사용방법
압축을 풀어놓은 folder를 보면 jsconfig.json이라는 이름의 file을 볼 수 있습니다. 해당 file을 아래 내용으로 구성되어 있는데
{ "REMOTE": true, "MSSQL": true, "FailedCount": 1, "WhiteLists": [] } |
REMOTE는 Ban_Server.exe에서 Remote Desktop의 방확벽처리를 수행할 것인지를 지정하며 MSSQL은 Ban_Server.exe에서 MSSQL의 방화벽처리를 수행할 것인지를 지정합니다.
FailedCount는 실패건에 대한 대응으로 같은 IP에 대하여 위 설정한 1회이상의 접속실패건이 발생하는 경우 해당 IP를 방화벽에 등록하여 차단을 수행하도록 합니다.
WhiteLists는 Ban_Server.exe가 예외로 둘 IP를 지정하는 곳이며 만약 아래와 같이 설정된 경우
{ "REMOTE": true, "MSSQL": true, "FailedCount": 1, "WhiteLists": ["192.168.10.1", "192.168.10.2"] } |
192.168.10.1과 192.168.10.2의 IP에 대해서만 접속실패가 발생하더라도 차단방화벽의 IP로 등록하지 않게 됩니다.
3. 기타
Ban_Server는 Open source project이며 Git을 통해 source를 살펴보고 변경할 수 있습니다.
cliel/Ban_Server: 무차별 대입 공격 방어(Brute Force Attack Defend) (github.com)
※ 해당 프로그램 사용으로 인한 부작용에 대해서는 책임지지 않습니다.
※ json에서 FailedCount는 정확성을 보장하지 않습니다. FailCount를 3으로 하면 "3번 실패 시 작동한다."가 아니라 "3번 이상 실패 시 작동한다"쯤으로 해석하면 될 것 같습니다. LOG를 읽고 프로그램이 동작하는 시점에 다시 공격이 들어올 수 있는 등 여러 가지 제반사항이 발생하므로 IP가 Block 완료될 때쯤 실제 공격은 3회 이상으로 이루어질 수 있습니다.
※ Ban_Server는 어디까지나 발생하는 EventLog를 기반으로 합니다. 실패에 대한 EventLog가 많이 쌓이면 그만큼 처리하는데 시간이 오래 걸릴 수 있으며 반대로 EventLog가 수시로 삭제되면 원하는 방향으로 프로그램이 동작하지 않을 수 있기 때문에 적절한 관리가 필요합니다.
'Server > Windows Server' 카테고리의 다른 글
[Windows Server] 원격제어(원격데스크톱) 접속 로그 확인 (0) | 2021.12.16 |
---|---|
GIT원격서버 설치 / Visual Studio 연동 (0) | 2021.04.02 |
무차별 대입 공격 도구 (Brute Force Attack Tool) - Ban_REMOTE_MSSQL (0) | 2020.11.24 |
[Windows Server] netstat 명령어 (0) | 2019.10.07 |
[Windows Server] 사용자 격리(전역 가상 디렉터리 사용 안 함) 하기 (2) | 2019.08.13 |