MSSQL Bruteforce 공격 차단 방법

Posted by Breeze24
2016. 6. 5. 00:12 DB/MSSQL
MSSQL Bruteforce 공격 차단 방법


MSSQL서버에서 아래 명령어 입력시 "제공된 이름과 일치하는 로그인을 찾을 수 없습니다."라는 오류 메시지가 있는 것을 볼 수 있다.  

명령어 : sp_readerrorlog 0, 1, 'Failed', 'login'


 해당 내용은 특정 로그인 계정으로 로그인을 시도하려고 하다 로그인을 하지 못해 오류가 발생하는 것이다.


 보통 해커들이 MSSQL서버의 계정을 알아내기 위해 좀비 PC를 이용하여 사전 대입방식으로 암호를 알아내려고 할 때 위의 로그가 공격받는 쪽 서버에 기록이 된다.

.

보통은 IPS(침입방지시스템)을 이용하여 위의 공격을 차단할 수 있으나, 장비 구매가격으로 인해 현실적으로 구매를 하기 힘든 경우도 많다. 

 참입방지시스템 장비 구매가 어렵다면 윈도우에 있는 보안정책과 프로그램을 이용하여 실시간으로 불법 로그인 시도를 차단하기도 한다.


 

MSSQL 무차별 로그인 공격을 받고 있을 경우 ISP 장비 없이 IP 차단 방법을 알아보자.

1. 로컬 보안 정책 만들기

    윈도우에 있는 '로컬보안정책'을 실행한다. (관리도구 – 로컬보안정책)

 

     IP 보안정책을 클릭하여 새로운 정책을 생성한다.

     정책과 필터를 추가한다.

 

    정책 시간을 180분에서 1분으로 변경한다. 


     정책을 할당한다.


2. 프로그램 개발

     - 여기서는 프로그램의 기본 골격만 설명한다.

     2.1. 배치 프로그램 생성. 배치프로그램의 역할은 자바 프로그램을 실행 시키는 것이다.

     2.2. 자바 프로그램 생성

           2.2.1) 자바 프로그램은 배치성 프로그램으로 10초 단위로 실행한다.

           2.2.2) 배치 프로그램은 MSSQL에 접속하여 

                     sp_readerrorlog 0, 1, 'Failed', 'login'에 로그가 있는지 확인한다.

     2.2.3) 로그가 있을 경우 IP를 파싱해서 가져온다.

     2.2.4) 가져온 IP를 Runtime을 이용하여 netsh 명령을 실행해 보안정책에 추가한다.


"netsh ipsec static add filter filterlist=IP_block srcaddr=1.1.1.1 dstaddr=me dstport=1433 protocol=TCP mirrored=yes");


간혹 IP_block 에 IP가  많이 등록된 경우 IP_block 이 하나더 생성되는 경우가 있다. 이럴 경우 IP차단이 정상적으로 이루어 지지 않으므로, 주기적으로 모니터링 한다. 

3. 결론

       고가의 장비 구매보다 보안상 안전하다고는 할 수는 없지만, 위의 방법을 활용하면 

       실시간으로 MSSQL 불법 로그인 공격을 어느 정도는 차단할 수 있다.

.

'DB > MSSQL' 카테고리의 다른 글

MYSQL 암호 변경  (0) 2016.06.05
MSSQL 오류 순환 문제  (0) 2016.06.05
xp_ReadErrorLog  (0) 2016.06.05
MSSQL OS 메모리 사용량 확인  (0) 2016.06.05
MSSQL DMV (동적 관리 뷰)  (0) 2016.06.04