개요
wail2ban은 윈도우 원격접속(RDP)에 대한 무차별 대입공격을 방어하기 위한 스크립트입니다.
(윈도우버전 fail2ban이라 보시면 될것 같습니다.)
전제조건은 방화벽을 윈도우 디펜더 방화벽을 사용했을때 구동하는 스크립트입니다.
다른 방화벽을 사용한다면 구동되지 않습니다.
개발소스(GitHub)
https://github.com/glasnt/wail2ban/
Github를 보면 더이상 프로젝트가 진행이 되지 않습니다.
그래서 그런지 윈도우10에서 구동이 되지 않는 문제가 있었는데 그부분은 수정되었습니다.
비슷한 기능을 하는 프로젝트를 테스트해보았지만 직관적인 스크립트로 구성된 wail2ban이 괜찮은것 같습니다.
wail2ban은 PowerShell로 작성되어 있으며, 구동되는 방식(기본설정)은 윈도우 이벤트에서 원격데스크톱연결 실패에 대한 이벤트(ID 4625)를 검색하여, 일정시간(120초)안에 RDP 접속실패 이벤트(ID 4625)를 특정횟수(5회) 초과하는 IP인경우 윈도우 디펜더 방화벽에서 일정시간동안 차단하는 방식입니다.
방화벽에서 차단한 IP는 일정시간이 지나면, 다시 허용(방화벽 차단목록 삭제)되도록 구현됩니다.
IP가 차단되는 시간은 증분형식으로 최대 3개월까지 차단합니다.
설치
다운로드 및 파일복사
윈도우 스케쥴러 등록
실행확인
윈도우 재부팅후 작업관리자를 보시면 Windows PowerShell 프로세스가 실행되는것을 볼수 있습니다.
차단 테스트
wail2ban이 설치된 컴퓨터를 기준으로 다른 컴퓨터에서 원격 데스크톱 연결 접속을 시도합니다.
여러번 아이디or비밀번호를 틀리게 입력하면 계정 입력창이 뜨지 않고 차단됨을 확인합니다.
wail2ban이 설치된 컴퓨터 방화벽을 확인합니다.
아래는 방화벽 확인 절차입니다.
만료시간 IP 차단해제 기능은 새로운 IP차단 이벤트가 발생할때 이루어 집니다.
만료시간이 지나도 차단이 안풀리는것은 그 이후로 신규차단이 없다는겁니다.
wail2ban 세부설정
bannedIPLog.ini | 차단IP목록, 차단횟수 설정 파일 |
start wail2ban onstartup.xml | 윈도우 스케쥴러 등록 XML |
start_wail2ban.bat | wail2ban 실행 배치파일 |
wail2ban.ps1 | wail2ban PowerShell 파일(실제구동되는 스크립트) |
wail2ban_config.ini | Event ID 및 whitelist 추가설정 |
wail2ban_htmlgen.ps1 | 차단된 IP리스트를 HTML형식으로 변환 |
wail2ban_log.log | wail2ban 로그 |
wail2ban.ps1 설정
.
.
.
$CHECK_WINDOW = 120 # We check the most recent X seconds of log. Default: 120
$CHECK_COUNT = 5 # Ban after this many failures in search period. Default: 5
$MAX_BANDURATION = 7776000 # 3 Months in seconds
.
.
.
$CHECK_WINDOW
지정된 시간(초)안의 로그를 확인해서 차단합니다. 기본은 120초(2분) 동안의 로그를 확인합니다.
가끔 무작위 시도 간격을 길게 가지고, 시도하는 경우도 있습니다.
이때는 로그 확인하는 시간을 좀 길게(1200, 20분) 잡아주면 차단 가능합니다.
$CHECK_COUNT
원격접속 시도횟수가 $CHECK_COUNT초과하면 방화벽에서 차단 합니다.(기본값 5회)
원격 접속하는 컴퓨터 일정하고, 접속 컴퓨터에 이미 원격접속 비밀번호가 저장되어 있는경우, 시도회수를 줄여서 빠르게 차단되도록 할수 있습니다.
$MAX_BANDURATION
증분값으로 증가한 차단 최대기간을 설정합니다.(기본값: 3개월)
wail2ban_config.ini 설정
# Wail2ban Configuration
[Events]
[Security]
4625=RDP Logins
[Application]
18456=MSSQL Logins
[Whitelist]
# Add your whitelist here, in the format `IP = Comment`
# Supports plain IPs , e.g. `12.34.56.78 = My Machine`
# Also, ranges, e.g. `11.22.33.0/24 = My Company Range`
이벤트 뷰어 Security 이벤트 ID 4625(원격 데스크톱 연결 실패), Application 이벤트 ID 18456(MSSQL 원격 접속 실패)을 필터링해서 차단합니다.
추가적으로 차단하고자 하는 이벤트ID가 있으면 추가하면 됩니다.
[Whitelist] 설정은 차단 예외 IP나 대역을 설정할수 있습니다.
wail2ban_log.log 로그파일
IP에 대한 차단 및 해제 로그를 확인할수 있습니다.
wail2ban_log.log 실시간 확인
PowerShell로 스크립트 작성해서 실시간 로그를 확인할수 있습니다.
아래처럼 파일을 생성합니다.
c:\scripts\wail2ban\log_liveview.ps1
Get-Content wail2ban_log.log -Wait -Tail 20
c:\scripts\wail2ban\log_listview.bat (PowerShell Policy 우회용 배치파일)
rem PowerShell Policy 우회실행(-executionpolicy bypass)
start powershell -executionpolicy bypass -file .\log_liveview.ps1
아래처럼 파일이 생성됩니다.
log_listview.bat를 실행하면 실시간으로 로그파일을 확인할수 있습니다.
실시간으로 로그파일을 볼수 있습니다.
wail2ban_htmlgen.ps1 (HTML레포트 생성)
- c:\scripts\wail2ban\public_html 폴더 생성
- wail2ban_htmlgen.ps1 PowerShell로 실행
- public_html폴더내에 index.html 파일 생성 확인
- wail2ban 레포트를 확인할수 있습니다. 원래 IP별 국가조회 기능이 있었지만 서비스해주는 사이트에서 차단한것 같습니다.
차단된 IP해제방법
실수로 차단된 경우 해제하는 방법입니다.
'컴퓨터관리' 카테고리의 다른 글
ASUS ESC8000-E11(GPU Server) 팬 소음 해결 방법 (0) | 2024.05.23 |
---|---|
HP LaserJet P2035 토너, 주의 LED 깜박임 (Toner Missing, Attention Light Bliking) (0) | 2024.05.23 |
원격 데스크톱 연결(RDP) 이벤트 로그 확인 방법 (윈도우10,11) (0) | 2023.09.14 |
VCRUNTIME140_1.dll이(가) 없어 코드 실행을 진행할 수 없습니다. 프로그램을 다시 설치하면 이 문제가 해결될 수 있습니다. (윈도우11+오피스2019) (0) | 2023.09.11 |
전동드라이버 WORX WX242 (3개월 사용후기) (0) | 2023.08.30 |