본문 바로가기

Server Story....

Windows Server 2022: MSSQL 외부 접속 설정 및 필수 보안 강화

반응형

MSSQL 외부 접속 설정 및 필수 보안


1. 도입 및 배경 (Why?)

기본적으로 MSSQL은 설치 직후 외부 접속이 차단되어 있음. 로컬(localhost)에서만 붙는다면 상관없지만, 별도의 리눅스 서버에서 구동되는 파이썬 에이전트나 분석 툴이 DB에 접근하려면 '외부 접속 허용'이 필수임.

하지만 단순히 문을 열어주는 것은 매우 위험함. 전 세계 해커들은 지금 이 순간에도 1433 포트를 스캔하고 있기 때문임. 본 가이드에서는 접속 허용철통 보안을 동시에 잡는 실무 설정을 다룸.

. . .

2. 서비스 연결 구조 (What?)

리눅스 서버(클라이언트)가 윈도우 서버(데이터베이스)에 안전한 터널을 통해 접속하는 구조임.

Plaintext
 
[Linux Agent] --(Custom Port: 51433)--> [Windows Firewall] --(SQL Auth)--> [MSSQL Instance]
       |                                       |                             |
   (Python/PDO)                        (IP Whitelist Only)             (sa Account Lock)

. . .

3. 사전 준비 (Prerequisites)

  • OS: Windows Server 2022 Standard
  • DB: SQL Server 2022 (Express/Std/Ent)
  • 도구: SQL Server 구성 관리자(Configuration Manager), SSMS

. . .

4. 핵심 작업 단계 (Step-by-Step)

■ Step 1: TCP/IP 활성화 및 포트 변경

기본 1433 포트를 그대로 쓰는 것은 "나를 공격해달라"는 신호와 같음. 반드시 변경해야 함.

  1. SQL Server 구성 관리자 실행 -> SQL Server 네트워크 구성 -> MSSQLSERVER에 대한 프로토콜.
  2. TCP/IP를 '사용'으로 변경.
  3. TCP/IP 속성 -> IP 주소 탭 맨 아래 IP All 항목에서 TCP 포트를 51433(예시)으로 변경.
  4. SQL Server 서비스 재시작 필수.

■ Step 2: 혼합 모드 인증 및 계정 생성

윈도우 통합 인증이 아닌, ID/PW 기반의 SQL 인증을 활성화해야 리눅스에서 접속 가능함.

  1. SSMS 접속 -> 서버 우클릭 속성 -> 보안.
  2. SQL Server 및 Windows 인증 모드 선택.
  3. 전용 접속 계정 생성 (권한은 최소한으로, sa 계정 사용 금지).

■ Step 3: 윈도우 방화벽 규칙 설정 (가장 중요)

아무나 들어오지 못하게 특정 IP(내 리눅스 서버)만 허용해야 함.

  1. 고급 보안이 설정된 Windows 방화벽 실행.
  2. 인바운드 규칙 -> 새 규칙 -> 포트 -> TCP / 51433 입력.
  3. '연결 허용' 선택 후, 규칙 생성 완료.
  4. 생성된 규칙 우클릭 속성 -> 영역 -> 원격 IP 주소에 내 리눅스 서버의 공인 IP만 등록.

. . .

5. 실제 적용 및 검증 (Advanced)

리눅스 서버에서 telnet이나 nc 명령어로 포트가 열렸는지 최종 확인.

Bash
 
# 리눅스 터미널에서 실행
nc -zv [윈도우서버IP] 51433

# 성공 메시지 예시
# Connection to [IP] 51433 port [tcp/*] succeeded!

. . .

6. 트러블슈팅 및 삽질 기록 (Troubleshooting Log) ★

■ 에러: 포트를 바꿨는데 접속이 안 됨

  • 상황: SQL Server Browser 서비스가 꺼져 있거나 포트 반영이 안 된 경우.
  • 해결: 포트를 고정(Static)으로 사용한다면 Browser 서비스는 필요 없으나, IP All 설정에서 TCP 동적 포트란이 비어 있는지 반드시 확인해야 함.

■ 에러: Login failed for user 'xxx'

  • 상황: 혼합 인증 모드 변경 후 서비스를 재시작하지 않았을 때 자주 발생함.
  • 해결: SSMS에서 서버를 우클릭하여 '재시작'을 누르는 것과 윈도우 서비스(services.msc)에서 재시작하는 것은 다를 수 있음. 가급적 서비스 관리자에서 확실히 재시작할 것.

. . .

7. 관련 기록 및 태그

  • [Linux Agent - Python으로 MSSQL 데이터 추출하기]: 오늘 설정한 DB에 실제 연결하는 코드.
  • [Windows Server - 주기적 DB 백업 스케줄링]: 소중한 데이터를 안전하게 보관하는 법.
반응형