반응형
지난 글에서 FEDERATED 엔진을 간단히 살펴보았는데
해당 글에서 소개한
MariaDB [(none)]> create table fed_test_local.fed_test_local ( num int)
-> engine=federated connection='mysql://test:test123@11.11.111.111:1111/fed_test_remote/fed_test_remote';
구문으로 생성 시 원격지 서버 접속정보가 노출 되는 보안 취약점이 있습니다.
이번 글에서는 보안 취약점과 해결방법에 대해 알아보겠습니다.
1) 원격지 테이블 생성
mysql> create table fed_test_remote.fed_test_remote ( num int);
Query OK, 0 rows affected (0.04 sec)
2) local 테이블 생성 (federated 엔진)
MariaDB [(none)]> create table fed_test_local.fed_test_local ( num int)
-> engine=federated connection='mysql://test:test123@11.11.111.111:1111/fed_test_remote/fed_test_remote';
Query OK, 0 rows affected (0.04 sec)
3) 테이블 생성 구문 확인
MariaDB [(none)]> show create table fed_test_local.fed_test_local\G;
*************************** 1. row ***************************
Table: fed_test_local
Create Table: CREATE TABLE "fed_test_local" (
"num" int(11) DEFAULT NULL
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 COLLATE=utf8_bin CONNECTION='mysql://test:test123@11.11.111.111:1111/fed_test_remote/fed_test_remote'
1 row in set (0.00 sec)
=> 원격지의 접속 정보 (계정,패스워드,IP address) 노출 되어 보안상 위험함
4) 해결방법
=> FEDERATED 엔진 테이블 생성 시 remote 서버 정보를 기재하는 구문이 아닌 remote 서버 정보 등록 하여 생성하는 방법 사용
MariaDB [(none)]> CREATE SERVER fed_security
-> FOREIGN DATA WRAPPER mysql
-> OPTIONS (
-> USER 'test',
-> PASSWORD 'test123',
-> HOST '원격지 HOST',
-> PORT 3310,
-> DATABASE 'fed_test_remote');
Query OK, 0 rows affected (0.00 sec)
=> 원격지<->로컬 통신 위한 서버 생성
MariaDB [(none)]> create table fed_test_local.fed_security ( num int)
-> engine=federated connection='fed_security/fed_test_remote';
Query OK, 0 rows affected (0.04 sec)
=> connection='생성한 서버명/원격지 테이블명'
MariaDB [(none)]> select * from fed_test_local.fed_security;
+------+
| num |
+------+
| 1 |
+------+
1 row in set (0.01 sec)
=> 테이블 정상생성 확인
MariaDB [(none)]> show create table fed_test_local.fed_security\G;
*************************** 1. row ***************************
Table: fed_security
Create Table: CREATE TABLE "fed_security" (
"num" int(11) DEFAULT NULL
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 COLLATE=utf8_bin CONNECTION='fed_security/fed_test_remote'
1 row in set (0.00 sec)
=> 원격지의 접속정보가 없음 확인
반응형