이전 글 보러 가기
앞선 실습에서는 Apache 웹 서버 설정과 SSL 보안 구성을 완료하였다. 이번에는 웹 서비스 구축에 필요한 PHP 모듈 설치 및 설정, 보안 강화를 위한 접근 제어, 그리고 phpinfo 조건부 출력 방식을 실습하였다. 웹 애플리케이션의 백엔드 구동을 위한 중요한 단계였다.
1. PHP 모듈 설치하기
PHP는 기본 상태로는 일부 기능이 제한적이기 때문에, 필요한 확장 모듈을 설치해주어야 한다. 이번 실습에서는 다음 모듈들을 설치하였다.
1. php-mbstring (멀티바이트 문자 처리용)
sudo apt install php-mbstring
- 한글, 일본어, 중국어 등 다국어 인코딩 처리에 필수
- mb_strlen(), mb_substr() 등 멀티바이트 문자열 함수 사용 가능
2. php-curl (HTTP 통신용)
sudo apt install php-curl
- 외부 API 요청, 파일 다운로드 등 HTTP 통신 가능.
- 다양한 HTTP 메서드(GET, POST 등) 지원
3. PHP-xml (XML 데이터 처리용)
sudo apt install php-xml
- XML 파싱, 생성, XPath 등 XML 기반 데이터 처리에 필요
2. Composer 개념 및 설치하기
Composer는 PHP의 패키지 의존성 관리 도구이다.
- 필요한 라이브러리를 자동 설치 및 업데이트
- 현대적인 PHP 개발에서 필수 도구
sudo apt install composer
설치 후 원하는 PHP 패키지를 composer require [패키지명]으로 쉽게 설치 가능하다.
3. PHP 보안 설정하기
웹 서버가 .php3 , .phtml 등 다양한 확장자를 실행하지 않도록 하기 위해 다음과 같은 설정을 추가하였다.
<FilesMatch ".+\.ph(p3|p4|p5|p7|ar|t|tml)$">
Require all denied
</FilesMatch>
- 의심스러운 PHP 유사 확장자에 대한 접근 차단
- 공격자가 .php3 등의 확장자로 악성 코드를 업로드하여 실행하는 것을 방지
4. phpinfo 출력 조건부 설정하기
phpinfo()는 서버의 환경 설정, 모듈, 경로 등 민감한 정보를 포함하고 있어 직접 노출 시 보안 위험이 크다.
따라서 조건부로 출력되도록 다음과 같이 코드를 작성하였다.
<?php
if (gethostname() == (empty($_GET['q']) ? '' : $_GET['q']))
phpinfo();
?>
동작 원리
- gethostname()으로 서버의 호스트 이름을 가져옴.
- URL의 q 파라미터 값이 호스트명과 일치할 경우에만 phpinfo() 실행.
예시
http://IP 주소/phpinfo.php?q=ahhyun-server
=> 서버의 호스트명이 ahhyun-server일 경우에만 phpinfo() 출력.
보안상 주의사항
phpinfo()는 운영 환경에서는 사용을 지양해야 하며, 반드시 제한된 환경에서만 출력되도록 설정하는 것이 바람직하다.
5. phpMyAdmin 다운로드 준비
데이터베이스 관리 도구인 phpMyAdmin 설치를 위해 Github에서 소스를 다운로드하였다.
공식 저장소 : https://github.com/phpmyadmin/phpmyadmin
GitHub - phpmyadmin/phpmyadmin: A web interface for MySQL and MariaDB
A web interface for MySQL and MariaDB. Contribute to phpmyadmin/phpmyadmin development by creating an account on GitHub.
github.com
설치 및 설정은 다음 실습에서 이어서 진행할 예정이다.
6. 마무리
이번 실습에서는 PHP 웹 서비스를 위한 확장 모듈 설치와 함께 보안 설정을 강화하고, 민감 정보 노출을 방지하는 방법을 실습하였다. 특히, phpinfo를 조건부로 출력하도록 설정한 부분은 민감 정보 노출을 방지하는 핵심 기법 중 하나이다.
다음 글에서는 phpMyAdmin 설치 및 MySQL 서버 연동 설정에 대해 다룰 예정이다.
다음 글 보러 가기
이 블로그는 불법 해킹 및 악의적인 활동을 지양하며, 그런 행위는 절대 권장하지 않습니다.
모든 실습은 허가된 환경에서만 진행해야 하며, 법적 책임은 사용자 본인에게 있습니다.
'리눅스 서버 구축' 카테고리의 다른 글
리눅스 시스템 관리 실습 - 사용자, 패키지, 서비스, 방화벽 관리 (4) | 2025.05.24 |
---|---|
리눅스 서버 구축 실습 - 5편 - Virtual Host 설정과 SSL 인증서 적용 프로젝트 (2) | 2025.05.23 |
리눅스 서버 구축 실습 - 4편 - phpMyAdmin 설치와 보안 설정 (2) | 2025.05.23 |
리눅스 서버 구축 실습 - 2편 - Apache 보안 설정 강화 및 SSL 활성화 (4) | 2025.05.22 |
리눅스 서버 구축 실습 - 1편 - 시스템 정보 확인부터 Apache2 웹서버 설정까지 (2) | 2025.05.22 |