웹사이트 검색

PhpMyAdmin 로그인 보안을 위해 HTTPS(SSL 인증서)를 설정하는 방법


이 팁을 소개하기 위해 클라이언트 시스템과 Debian 8 서버 사이의 HTTP 트래픽을 스니핑해 보겠습니다. 여기서 우리는 다음 기사에서 데이터베이스 루트 사용자의 자격 증명을 사용하여 로그인하는 무고한 실수를 저질렀습니다. 변경 및 보안 기본 PhpMyAdmin 로그인 URL

이전 팁에서 언급했듯이 자격 증명을 노출하고 싶지 않다면 아직 이 작업을 시도하지 마세요. 트래픽 스니핑을 시작하기 위해 다음 명령을 입력하고 Enter를 눌렀습니다.

tcpdump port http -l -A | egrep -i 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user ' --line-buffered -B20

tcpdump의 잘린 출력에서 볼 수 있듯이 사용자 이름비밀번호가 일반 텍스트 형식으로 유선을 통해 전송되었음을 깨닫는 데는 오랜 시간이 걸리지 않습니다. 아래 이미지.

파란색 표시가 있는 루트 비밀번호 부분이 숨겨져 있습니다.

이를 방지하려면 인증서로 로그인 페이지를 보호합시다. 이렇게 하려면 CentOS 기반 배포판에 mod_ssl 패키지를 설치하세요.

yum install mod_ssl

Debian/Ubuntu 경로와 이름을 사용하지만 아래 명령과 경로를 바꾸면 CentOSRHEL에도 동일한 절차가 유효합니다. CentOS와 동등한 기능을 사용합니다.

키와 인증서를 저장할 디렉터리를 만듭니다.

mkdir /etc/apache2/ssl    [On Debian/Ubuntu based systems]
mkdir /etc/httpd/ssl      [On CentOS based systems]

키와 인증서를 만듭니다.

----------- On Debian/Ubuntu based systems ----------- 
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

----------- On CentOS based systems ----------- 
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/apache.key -out /etc/httpd/ssl/apache.crt
샘플 출력
........................+++
.....................................................+++
writing new private key to '/etc/httpd/ssl/apache.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:Maharashtra
Locality Name (eg, city) [Default City]:Mumbai
Organization Name (eg, company) [Default Company Ltd]:TecMint
Organizational Unit Name (eg, section) []:TecMint
Common Name (eg, your name or your server's hostname) []:TecMint
Email Address []:[email 

다음으로 키와 인증서를 확인합니다.

cd /etc/apache2/ssl/   [On Debian/Ubuntu based systems]
cd /etc/httpd/ssl/     [On CentOS based systems]
ls -l

total 8
-rw-r--r--. 1 root root 1424 Sep  7 15:19 apache.crt
-rw-r--r--. 1 root root 1704 Sep  7 15:19 apache.key

Debian/Ubuntu에서 Apache가 기본 사이트(/etc/apache2/sites-)에 대해 443 포트에서 수신 대기하는지 확인하세요. available/000-default.conf) VirtualHost 선언 내에 SSL 관련 라인 3개를 추가하세요.

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

CentOS 기반 배포판에서는 Apache에게 포트 443에서 수신 대기하고 /etc/httpd/conf/에서 Listen 지시어를 찾도록 지시합니다. httpd.conf 아래에 위의 줄을 추가하세요.

SSLEngine on
SSLCertificateFile /etc/httpd/ssl/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl/apache.key

변경 사항을 저장하고 Debian/Ubuntu 배포판에서 SSL Apache 모듈을 로드합니다. (CentOS에서는 mod_ssl을 설치할 때 자동으로 로드됩니다. 강함> 이전):

a2enmod ssl

phpmyadminSSL을 사용하도록 강제하고 /etc/phpmyadmin/config.inc.php 또는 /에 다음 줄이 있는지 확인하세요. etc/phpMyAdmin/config.inc.php 파일:

$cfg['ForceSSL'] = true;

웹 서버를 다시 시작하십시오.

systemctl restart apache2   [On Debian/Ubuntu based systems]
systemctl restart httpd     [On Debian/Ubuntu based systems]

그런 다음 웹 브라우저를 실행하고 아래와 같이 https:///my(PhpMyAdmin 로그인 URL 변경 방법 알아보기)를 입력하세요.

중요: 자체 서명된 인증서를 사용하고 있기 때문에 연결이 안전하지 않다는 의미일 뿐입니다. 고급을 클릭하고 보안 예외를 확인합니다.

보안 예외를 확인한 후 로그인하기 전에 HTTPHTTPS 트래픽 스니핑을 시작해 보겠습니다.

tcpdump port http or port https -l -A | egrep -i 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user ' --line-buffered -B20

그런 다음 이전과 동일한 자격 증명을 사용하여 로그인합니다. 트래픽 스니퍼는 기껏해야 횡설수설만 캡처합니다.

지금은 그게 다입니다. 다음 기사에서는 사용자 이름/비밀번호로 PhpMyAdmin 액세스를 제한하는 방법을 공유하겠습니다. 그때까지는 Tecmint를 계속 지켜봐 주시기 바랍니다.