[DBMS/데이터베이스/dbms] 원격에서 DB 서버로의 접속 제한

 

 

D-05 원격에서 DB 서버로의 접속 제한

 

■ 점검영역 : 접근관리

 

■ 항목 중요도 :

 

■ 점검내용

 

지정된 IP주소만 DB 서버에 접근 가능하도록 설정되어 있는지 점검

 

■ 점검목적

 

지정된 IP주소만 DB 서버에 접근 가능하도록 설정되어 있는지 점검하여 비인가자의 DB 서버 접근을 원천적으로 차단하고자 함

 

■ 보안위협

 

DB 서버 접속 시 IP주소 제한이 적용되지 않은 경우 비인가자가 내·외부망 위치에 상관없이 DB 서버에 접근할 수 있는 위험이 존재함

 

■ 참고

 

-

 

 

점검대상 및 판단기준(데이터베이스/dbms 취약점 진단)

 

■ 대상 : OS, Oracle, MySQL, ALTIBASE, TIBERO, PostgreSQL 등

 

양호

DB서버에 지정된 IP주소에서만 접근 가능하도록 제한한 경우

 

취약

DB서버에 지정된 IP주소에서만 접근 가능하도록 제한하지 않은 경우

 

■ 조치방법

 

DB서버에 대해 지정된 IP주소에서만 접근 가능하도록 설정

 

 

점검 및 조치 방법(oracle, mssql, mysql 등)

 

■ OS

 

Step 1) 특정 IP주소에서만 접속 가능하도록 방화벽 등이 설정되어 있는지 확인
시작> 제어판> 보안 센터> windows 방화벽 설정
- 예외 tab -> 포트추가 -> 1433 -> TCP 추가 -> 범위 변경
- 예외 tab -> 포트추가 -> 135 -> TCP 추가 -> 범위 변경
- 예외 tab -> 포트추가 -> 1434 -> UDP 추가 -> 범위 변경

 

■ Oracle

 

Step 1) 원격 OS 인증 방식이 불필요한 경우, SYS 계정으로 접속하여 ‘REMOTE_OS_AUTHENT=FALSE’로 설정
1. spfile 사용하는 경우 아래와 같이 설정
SQL> ALTER SYSTEM SET REMOTE_OS_AUTHENT=FALSE SCOPE=spfile;


2. pfile 사용하는 경우 init<SID>.ora 파일 안에 아래와 같이 설정
SQL> ALTER SYSTEM SET REMOTE_OS_AUTHENT=FALSE;


Step 2) OS 원격 인증 방식이 필요한 경우
1. 방화벽을 통한 원격 접근 IP주소 제한
2. NAT(Network Address Translation)를 사용하여 비공인 IP주소 부여 후 외부 접근 제한


■ MySQL

 

Step 1) mysql.user 테이블과 mysql.db 테이블을 조회하여 host가 “%”인 필드 삭제하고 접속
IP주소를 지정하여 등록
mysql> delete from user where host=’%’;
mysql> delete from db where host=’%’;


■ Altibase

 

ALTIBASE HDB 프러퍼티 파일을 수정하여 접근제어를 적용


Step 1) $ALTIBASE_HOME/conf/altibase.properties를 변경


Step 2) IP access control lists 에서 내부 정책에 맞게 수정
※ ALTIBASE HDB 서버가 실행되지 않은 상태에서 할 수 있는 정적인 환경 설정 방법
※ 프로퍼티 파일에서 해당 구성 요소를 특정 값으로 설정한 후 ALTIBASE HDB 서버를 재구동해야 수정된 값이 ALTIBASE HDB 서버에 반영


■ PostgreSQL

 

Step 1) Data 디렉터리 안에 있는 pg_hba.conf 파일설정을 통해서 설정 가능
TYPE DATABASE  USER    CIDR-ADDRESS METHOD
----- ------------ -------- ------------------ -----------
host    (DB명)   (사용자)    (접속허용IP)       md5


Step 2) USER에 접근허용 ‘사용자명’과 CIDR-ADDRESS에 접속을 ‘허용할 IP’ 설정
※ PostgreSQL은 기본 설치 시 외부에서 접속할 수 없음

 

■ Tibero

 

※ 초기화 파라미터에 설정된 IP 주소에 따라 클라이언트의 네트워크 접속을 허용하거나 차단
※ $TB_SID 는 tibero 설치 시 입력한 데이터베이스 이름과 동일 / c:/tibero/tibero5/config/데이터베이스.tip

 

조치방법 1. LSNR_INVITED_IP
특정한 IP 주소를 갖는 클라이언트는 허용, 그 외 차단

 

Step 1) $TB_SID.tip 파일 안에 다음 예시 내용을 참조하여 입력
LSNR_INVITED_IP=192.168.1.1;192.168.2.0/24;192.1.0.0/16
※ LSNR_INVITED_IP의 최대 길이는 255자이다. 256 이상의 IP 주소를 설정할 경우에는 LSNR_INVITED_IP_FILE을 사용


조치방법 2. LSNR_INVITED_IP_FILE
특정 파일에 접속을 허용하는 IP 주소 목록을 기재한 후 해당 파일의 절대 경로를 적어주면 그 파일을 읽어서 INVITED_IP를 설정


Step 1) /home/tibero/invited_ip.txt 파일에 다음 예시 내용을 참조하여 입력
192.168.1.1
192.168.2.0/24
192.1.0.0/16


Step 2) $TB_SID.tip 파일에 invited_ip.txt 파일의 전체 경로를 입력
LSNR_INVITED_IP_FILE=/home/tibero/invited_ip.txt

 

조치방법 3. LSNR_DENIED_IP
특정한 IP 주소를 갖는 클라이언트의 네트워크 접속은 차단, 그 밖의 접속은 허용


Step 1) $TB_SID.tip 파일 안에 다음 예시 내용을 참조하여 입력
LSNR_DENIED_IP=192.168.1.1;192.168.2.0/24;192.1.0.0/16


조치방법 4. LSNR_DENIED_IP_FILE
특정 파일에 접속을 허용하지 않는 IP 주소 목록을 기재한 후 해당 파일의 절대 경로를 적어주면 그 파일을 읽어서 DENITED_IP를 설정


Step 1) /home/tibero/denied_ip.txt 파일에 다음 예시 내용을 참조하여 입력
192.168.1.1
192.168.2.0/24
192.1.0.0/16


Step 2) $TB_SID.tip 파일에 denied_ip.txt 파일의 전체 경로를 입력
LSNR_DENIED_IP_FILE=/home/tibero/denied_ip.txt


$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의설정을 변경한 후 파일을 저장하고 다음의 명령을 실행한다

- alter system listener parameter reload;
위의 명령을 실행하면 $TB_SID.tip 파일에서 LSNR_INVITED_IP 또는 LSNR_DENIED_IP의 내용을 다시 읽어 변경된 내용을 실시간으로 적용한다

 

조치 시 영향 : 허용되지 않은 IP에서 접속 제한

 

댓글

Designed by JB FACTORY