Ubuntu 16.04에서 phpMyAdmin을 설치하고 보호하는 방법
소개
많은 사용자가 MySQL과 같은 데이터베이스 관리 시스템의 기능을 필요로 하지만 MySQL 프롬프트에서만 시스템과 상호 작용하는 것이 불편할 수 있습니다.
phpMyAdmin은 사용자가 웹 인터페이스를 통해 MySQL과 상호 작용할 수 있도록 만들어졌습니다. 이 가이드에서는 Ubuntu 16.04 시스템에서 안전하게 데이터베이스를 관리할 수 있도록 phpMyAdmin을 설치하고 보호하는 방법에 대해 설명합니다.
전제 조건
이 가이드를 시작하기 전에 몇 가지 기본 단계를 완료해야 합니다.
먼저 Ubuntu 16.04의 초기 서버 설정에서 1-4단계에 설명된 대로 sudo 권한이 있는 루트가 아닌 사용자를 사용하고 있다고 가정합니다.
또한 Ubuntu 16.04 서버에 LAMP(Linux, Apache, MySQL 및 PHP) 설치를 완료했다고 가정합니다. 아직 완료되지 않은 경우 Ubuntu 16.04에 LAMP 스택 설치에 대한 이 가이드를 따를 수 있습니다.
마지막으로 phpMyAdmin과 같은 소프트웨어를 사용할 때 다음과 같은 중요한 보안 고려 사항이 있습니다.
- MySQL 설치와 직접 통신
- MySQL 자격 증명을 사용하여 인증 처리
- 임의의 SQL 쿼리 실행 및 결과 반환
이러한 이유와 자주 공격 대상이 되는 널리 배포된 PHP 응용 프로그램이기 때문에 일반 HTTP 연결을 통해 원격 시스템에서 phpMyAdmin을 실행해서는 안 됩니다. SSL/TLS 인증서로 구성된 기존 도메인이 없는 경우 Ubuntu 16.04에서 Let's Encrypt를 사용하여 Apache 보안에 대한 이 가이드를 따를 수 있습니다.
이 단계를 마치면 이 가이드를 시작할 준비가 된 것입니다.
1단계 - phpMyAdmin 설치
시작하려면 기본 Ubuntu 리포지토리에서 phpMyAdmin을 설치합니다.
로컬 패키지 인덱스를 업데이트한 다음 apt
패키징 시스템을 사용하여 파일을 풀다운하고 시스템에 설치하면 됩니다.
- sudo apt-get update
- sudo apt-get install phpmyadmin php-mbstring php-gettext
설치를 올바르게 구성하기 위해 몇 가지 질문을 합니다.
경고: 첫 번째 프롬프트가 나타나면 apache2가 강조 표시되지만 선택되지는 않습니다. Space를 눌러 Apache를 선택하지 않으면 설치 프로그램이 설치 중에 필요한 파일을 이동하지 않습니다. Space, Tab, Enter를 차례로 눌러 Apache를 선택합니다.
- 서버 선택을 위해 apache2를 선택합니다.
dbconfig-common
을 사용하여 데이터베이스를 설정할 것인지 물으면 예를 선택하십시오.- 데이터베이스 관리자 비밀번호를 입력하라는 메시지가 표시됩니다
- 그러면
phpMyAdmin
애플리케이션 자체의 비밀번호를 선택하고 확인하라는 메시지가 표시됩니다
설치 프로세스는 실제로 phpMyAdmin Apache 구성 파일을 /etc/apache2/conf-enabled/
디렉토리에 추가하고 여기서 자동으로 읽습니다.
우리가 해야 할 유일한 일은 PHP mcrypt
및 mbstring
확장을 명시적으로 활성화하는 것입니다. 다음을 입력하여 수행할 수 있습니다.
- sudo phpenmod mcrypt
- sudo phpenmod mbstring
그런 다음 변경 사항을 인식하려면 Apache를 다시 시작해야 합니다.
- sudo systemctl restart apache2
이제 /phpmyadmin
다음에 서버의 도메인 이름 또는 공용 IP 주소를 방문하여 웹 인터페이스에 액세스할 수 있습니다.
https://domain_name_or_IP/phpmyadmin

이제 root
사용자 이름과 MySQL 설치 중에 설정한 관리 암호를 사용하여 인터페이스에 로그인할 수 있습니다.
로그인하면 다음과 같은 사용자 인터페이스가 표시됩니다.

2단계 — phpMyAdmin 인스턴스 보안
우리는 phpMyAdmin 인터페이스를 꽤 쉽게 가동할 수 있었습니다. 그러나 아직 끝나지 않았습니다. 편재성 때문에 phpMyAdmin은 공격자에게 인기 있는 대상입니다. 무단 액세스를 방지하기 위해 추가 조치를 취해야 합니다.
이를 수행하는 가장 쉬운 방법 중 하나는 전체 애플리케이션 앞에 게이트웨이를 배치하는 것입니다. Apache의 내장 .htaccess
인증 및 권한 부여 기능을 사용하여 이를 수행할 수 있습니다.
.htaccess 재정의를 허용하도록 Apache 구성
먼저 Apache 구성 파일을 편집하여 .htaccess
파일 재정의 사용을 활성화해야 합니다.
Apache 구성 디렉토리에 있는 링크된 파일을 편집합니다.
- sudo nano /etc/apache2/conf-available/phpmyadmin.conf
다음과 같이 구성 파일의
섹션 내에 AllowOverride All
지시문을 추가해야 합니다.
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
. . .
이 줄을 추가했으면 파일을 저장하고 닫습니다.
변경 사항을 구현하려면 Apache를 다시 시작하십시오.
- sudo systemctl restart apache2
.htaccess 파일 생성
이제 애플리케이션에 .htaccess
사용을 활성화했으므로 보안을 실제로 구현하기 위해 생성해야 합니다.
이 작업이 성공하려면 응용 프로그램 디렉터리 내에 파일을 만들어야 합니다. 다음을 입력하여 필요한 파일을 만들고 루트 권한으로 텍스트 편집기에서 열 수 있습니다.
- sudo nano /usr/share/phpmyadmin/.htaccess
이 파일에 다음 정보를 입력해야 합니다.
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
각 행의 의미를 살펴보겠습니다.
AuthType Basic
: 이 행은 구현 중인 인증 유형을 지정합니다. 이 유형은 암호 파일을 사용하여 암호 인증을 구현합니다.AuthName
: 인증 대화 상자에 대한 메시지를 설정합니다. 권한이 없는 사용자가 보호 대상에 대한 정보를 얻지 못하도록 이 일반 정보를 유지해야 합니다.AuthUserFile
: 인증에 사용될 암호 파일의 위치를 설정합니다. 이것은 제공되는 디렉터리 외부에 있어야 합니다. 곧 이 파일을 만들 것입니다.유효 사용자 필요
: 인증된 사용자에게만 이 리소스에 대한 액세스 권한을 부여하도록 지정합니다. 이것은 승인되지 않은 사용자가 들어오는 것을 실제로 막는 것입니다.
완료되면 파일을 저장하고 닫습니다.
인증을 위한 .htpasswd 파일 생성
암호 파일에 대해 선택한 위치는 "/etc/phpmyadmin/.htpasswd
\입니다. 이제 이 파일을 만들고 htpasswd
를 사용하여 초기 사용자에게 전달할 수 있습니다. 공익사업:
- sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
만들고 있는 사용자의 암호를 선택하고 확인하라는 메시지가 표시됩니다. 그러면 입력한 해시 비밀번호로 파일이 생성됩니다.
추가 사용자를 입력하려면 다음과 같이 -c
플래그 없이 입력해야 합니다.
- sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser
이제 phpMyAdmin 하위 디렉터리에 액세스하면 방금 구성한 추가 계정 이름과 암호를 입력하라는 메시지가 표시됩니다.
https://domain_name_or_IP/phpmyadmin

Apache 인증을 입력하면 일반 phpMyAdmin 인증 페이지로 이동하여 다른 자격 증명을 입력합니다. 이것은 phpMyAdmin이 과거에 취약점으로 인해 어려움을 겪었기 때문에 추가적인 보안 계층을 추가할 것입니다.
결론
이제 phpMyAdmin이 구성되어 Ubuntu 16.04 서버에서 사용할 준비가 되었습니다. 이 인터페이스를 사용하여 데이터베이스, 사용자, 테이블 등을 쉽게 생성하고 구조 및 데이터 삭제 및 수정과 같은 일반적인 작업을 수행할 수 있습니다.