Last Updated on 4월 9, 2022 by Jade(정현호)
Contents
1. 웹 기반의 MySQL 관리 툴
PHP 로 개발 된 오픈소스이고, 웹 기반으로 MySQL Database 를 관리, 테이블 과 같은 오브젝트 생성, 삭제 , 유저 생성, 권한 관리, 데이터 조회, 추출, 입력 등의 일반적인 MySQL 기능을 지원하는 웹 UI 형태의 MySQL 관리 툴 입니다.
phpMyAdmin 사이트가 접속 가능한 위치가 내부망에 있거나 특정 서비스 안에 플러그인 형태로 하여 로그인 후 접속 하는 형태로 내부적으로 위치 해 있다면 보안상 큰 문제는 없을 것으로 생각 됩니다.
다만 그렇지 않고 외부에서 언제든지 접속 가능한 환경 또는 네트워크 , 공인 IP 망에서 phpMyAdmin 이 사용중이라면 로그인 관련하여 보안에 조금은 더 신경 써야 할 필요가 있습니다.
2. phpMyAdmin 보안 설정
위에서 언급한 내용처럼 phpMyAdmin 이 외부에서 바로 접속한 가능한 상태라는 것은 사실상 MySQL TCP:3306 포트의 방화벽이 오픈 되어 있다고 생각 해볼 수도 있습니다.
TCP 80번 포트와 같은 알려진 포트를 사용하지 않거나 예상하기 어려운 서브도메인을 사용하더라도 접속 경로가 공격자에게 확인 된다면 그 다음 부터 무작위 아이디/패스워드 대입 공격을 시도 하게 될 수도 있습니다.
그로 인하여 로그인이 되게 된다면 실제로 DB에 접속한 것과 동일한게 DB 데이터를 모두 조회 또는 변경/삭제 할 수 있기 때문에 phpMyAdmin 로그인에 대해서 보안을 신경 쓰거나 설정 할 필요성은 있습니다.
phpMyAdmin 서비스가 외부에서 접속이 가능한 형태일 경우 로그인 관련하여 보안을 할 수 있는 방법 중에서 몇가지를 나열 해보면
• 웹 서버(apache,nginx) 의 basic authentication 를 이용
• Google reCAPTCHA 를 설정
관련 포스팅
• 2차 인증 OTP 설정(2FA,MFA)
이번 포스팅에서는 언급할 내용은 phpMyAdmin 에 2차 인증인 OTP 를 설정 관련된 내용을 다루려고 합니다.
[참고] phpMyAdmin 설치는 아래 포스팅을 참조하세요
3. OTP 설정
2차 인증인 OTP 설정은 phpMyAdmin 4.8.0 버전 부터 지원하기 시작한 기능 입니다. 그래서 OTP 를 통한 2차 인증 설정 하기위해서는 4.8.0 이상 사용하시면 됩니다.
3-1 two-factor 설정
설정 -> Two-factor authentication -> Authentication Application (2FA) 를 선택 후 아래 "Configure two-factor authentication" 를 클릭 합니다.
3-2 Application OTP 설치
애플리케이션 OTP 로는 FreeOTP, Google Authenticator , Authy 가 사용 할 수 있으며 포스팅에서는 Google Authenticator 를 사용 하였습니다.
사용할 OTP 를 선택하여 스마트폰에서 설치를 진행 합니다.
3-3 Application OTP 등록
다시 phpMyAdmin 에서 아래와 같이 보이는 QR 코드를 카메라 등을 통해 인식을 시키면 됩니다.
먼저 QR 코드를 위와 같이 OTP 앱에서 QR 코드 스캔을 통해 등록을 한 후에 아래 Authentication code 를 OTP 에서 보이는 6개 일회용 패스워드를 입력 후 하단의 "Enable two-factor authentication" 을 클릭 합니다.
설정이 완료 되었다면 아래와 같은 메세지를 확인 할 수 있습니다.
3-4 로그인 확인
설정이 완료 되었기 때문에 로그아웃 후 정상적으로 OTP 입력을 받는지를 확인을 진행 합니다.
먼저 phpMyAdmin 에 접속 하여 로그인을 합니다. 참고로 아래 화면은 Google reCAPTCHA 가 적용되어 동작하고 있는 화면 입니다.
정상적으로 로그인을 하고 난 후 아래와 같이 2차 인증 코드를 입력을 받는 것을 확인 할 수 있습니다.
웹으로 간단하고 손쉽게 MySQL 을 다룰 수 있는 웹UI 툴인 만큼 로그인 관련 보안에 문제가 발생되어 로그인 되었을 경우 데이터베이스의 정보와 자료가 유출 및 변경 조작 될 수 있기 때문에 로그인 관련하여서는 보안에 대해서는 신경 써야 할 필요성이 있다고 생각 됩니다.
연관된 다른 글
Principal DBA(MySQL, AWS Aurora, Oracle)
핀테크 서비스인 핀다에서 데이터베이스를 운영하고 있어요(at finda.co.kr)
Previous - 당근마켓, 위메프, Oracle Korea ACS / Fedora Kor UserGroup 운영중
Database 외에도 NoSQL , Linux , Python, Cloud, Http/PHP CGI 등에도 관심이 있습니다
purityboy83@gmail.com / admin@hoing.io