D-10: 원격에서 DB 서버로의 접속 제한
분류: DBMS
중요도: 상
개요
점검 내용
지정된 IP주소만 DB 서버에 접근 가능하도록 설정되어 있는지 점검
점검 목적
지정된 IP주소만 DB 서버에 접근 가능하도록 설정되어 있는지 점검하여 비인가자의 DB 서버 접근을 원천적으로 차단하고자 함
보안 위협
DB 서버 접속 시 IP주소 제한이 적용되지 않은 경우 비인가자가 내·외부망 위치에 상관없이 DB 서버에 접근할 수 있는 위험이 존재함
참고
-
점검 대상 및 판단 기준
대상
Windows OS, Oracle DB, MySQL, Altibase, Tibero, PostgreSQL 등
판단 기준
✅ 양호: DB 서버에 지정된 IP주소에서만 접근 가능하도록 제한한 경우
❌ 취약: DB 서버에 지정된 IP주소에서만 접근 가능하도록 제한하지 않은 경우
조치 방법
DB 서버에 대해 지정된 IP주소에서만 접근 가능하도록 설정
조치 시 영향
허용되지 않은 IP에서 접속 제한
점검 및 조치 사례
Windows OS
Step 1) 특정 IP주소에서만 접속 가능하도록 방화벽 등이 설정되어 있는지 확인
시작 > 제어판 > 시스템 및 보안 > Windows Defender 방화벽 > 고급 설정 > 고급 보안이 포함된 Windows Defender 방화벽 > 인바운드 규칙 > 원격 데스크톱 – 사용자 모드(TCP-In)/사용자 모드 (UDP-In)

Step 2) DB서버에 접근 가능한 특정 IP 지정
원격 데스크톱 – 사용자 모드(TCP-In)/사용자 모드(UDP-In) 속성 > 영역 > 원격 IP주소 > 다음 IP주소 > 추가 > IP주소 입력


Oracle DB
Step 1) oracle 계정으로 로그인
Step 2) 텍스트 에디터로 $ORA_NET/sqlnet.ora 파일 오픈
Step 3) sqlnet.ora 파일의 끝에 다음 두 라인을 추가
Step 4) Listener 재시작
MySQL
Step 1) user 테이블을 조회하여 모든 클라이언트에서 접속 가능하도록 설정되어 있는 계정을 특정 IP에서만 접속 가능하도록 변경
Altibase
Step 1) Altibase HDB Property 파일을 수정하여 접근 제어 적용
$Altibase_HOME/conf/altibase.properties의 IP Access Control Lists에서 내부 정책에 맞게 수정
참고
Altibase HDB 서버가 실행되지 않은 상태에서 할 수 있는 정적인 환경설정 방법으로 Property 파일에서 해당 구성 요소를 특정 값으로 설정한 후 Altibase HDB 서버를 구동해야 수정된 값이 Altibase HDB 서버에 반영 됨

Step 2) Altibase HDB 서버에 적용된 접근 제어 설정 확인
PostgreSQL
Step 1) Data 디렉터리 내에 postgres.conf 파일 설정

참고
listen_addresses는 서버가 클라이언트 애플리케이션의 연결을 수신 대기할 TCP/IP 주소를 지정함. 호스트 이름 및/또는 숫자 IP 주소의 쉼표로 구분된 목록 형식으로 지정할 수 있으며, *를 사용하는 경우 모든 IP에 대해 수신 대기함. 기본값은 localhost 이며 로컬 TCP/IP “루프백” 연결 만 허용
Step 2) Data 디렉터리 내에 pg_hba.conf 파일 설정
| TYPE | DATABASE | USER | CIDR-ADDRESS | METHOD |
|---|---|---|---|---|
| host | (DB명) | (사용자) | (접속 허용 IP) | md5 |

Step 3) USER에 접근 허용 '계정명'과 CIDR-ADDRESS에 접속을 '허용할 IP' 설정
참고
- PostgreSQL은 기본 설치 시 외부에서 접속할 수 없음
- IP 접근 제한 설정 시
postgresql.conf와pg_hba.conf두 개의 설정 파일이 연계되어 있으므로 하나의 파일이라도 설정이 잘못되어 있는 경우 DB 접속이 불가능 할 수 있음
Tibero
Step 1) LSNR_INVITED_IP(특정 IP주소를 갖는 클라이언트만 허용, 그 외 차단)
$TB_SID.tip 파일 안에 다음 예시 내용을 참조하여 입력
LSNR_INVITED_IP의 최대 길이는 255자이며, 256자 이상의 IP주소를 설정할 경우에는 LSNR_INVITED_IP_FILE을 사용 (특정 IP주소를 기재한 파일의 절대 경로를 LSNR_INVITED_IP_FILE에 입력)
참고
- 초기화 파라미터에 설정된 IP주소에 따라 클라이언트의 네트워크 접속을 허용하거나 차단
- $TB_SID는 Tibero 설치 시 입력한 데이터베이스 이름과 동일
/tibero/tibero5/config/데이터베이스.tip
$TB_SID.tip파일에 LSNR_INVITED_IP와 LSNR_DENIED_IP가 모두 설정되어 있는 경우 LSNR_DENIED_IP의 설정은 무시되며 LSNR_INVITED_IP만 적용된다. 즉, LSNR_INVITED_IP에 설정된 IP 주소의 클라이언트를 제외하고는 모든 접속이 차단된다.$TB_SID.tip파일에 LSNR_INVITED_IP와 LSNR_DENIED_IP가 모두 설정되지 않은 경우 모든 클라이언트의 네트워크 접속이 허용된다.- 루프백 주소(Loopback Address, 127.0.0.1)에서 접속하는 경우 LSNR_INVITED_IP 또는 LSNR_DENIED_IP 의 설정과는 무관하게 항상 허용된다.
- Tibero 서버를 운영하는 중에 서버를 다시 기동하지 않고 LSNR_INVITED_IP 또는 LSNR_DENIED_IP의 설정을 변경하려는 경우 우선
$TB_SID.tip파일에 LSNR_INVITED_IP 또는 LSNR_DENIED_IP의 설정을 변경한 후 파일을 저장하고 다음의 명령을 실행한다. 위의 명령을 실행하면$TB_SID.tip파일에서 LSNR_INVITED_IP 또는 LSNR_DENIED_IP의 내용을 다시 읽어 변경된 내용을 실시간으로 적용한다.