PHP 실무

.htaccess 접근 제한 팁

프리터코더 2026. 9. 25. 14:33

관리자 페이지가 외부에 다 노출된 사례를 봤습니다. /admin URL만 알면 누구나 접속 가능했죠. 간단한 조치로 큰 보안 효과를 낼 수 있습니다.

.htaccess 파일은 Apache 웹서버의 디렉토리별 설정파일입니다. 작은 텍스트 파일 하나로 URL 리다이렉션, 접근 제어, 캐싱, 에러 페이지 등을 간단히 설정할 수 있죠. 레거시 PHP 사이트 대부분이 이 파일로 보안과 기능을 관리합니다.

문제는 이 파일의 존재와 중요성을 모르는 관리자가 많다는 점입니다. 실제로 어떤 쇼핑몰은 /admin 디렉토리에 아무 제한 없이 관리자 페이지가 열려 있었고, 구글에 "site:example.com admin"으로 검색하면 바로 나왔습니다. 누구나 관리자 로그인 페이지에 접속할 수 있었죠. 다행히 비밀번호가 뚫리진 않았지만, Brute Force 공격 시도가 무수히 많았습니다.

핵심 활용법

1. 특정 디렉토리 IP 제한

관리자 페이지는 사무실 IP에서만 접속 가능하게 설정하세요.

# /admin/.htaccess
Order Deny,Allow
Deny from all
Allow from 123.123.123.123  # 허용할 IP
Allow from 124.124.0.0/16   # IP 대역도 가능

Apache 2.4 이상은 문법이 다릅니다:

Require ip 123.123.123.123
Require ip 124.124.0.0/16

2. 특정 파일 접근 차단

config.php, .env 같은 설정 파일 노출 방지:

<FilesMatch "^(config|\.env|\.git)">
    Order allow,deny
    Deny from all
</FilesMatch>

3. 디렉토리 리스팅 차단

파일 목록이 브라우저에 보이지 않도록:

Options -Indexes

4. 파일 업로드 디렉토리 PHP 실행 금지

업로드 폴더에서 악성 PHP 파일 실행 차단:

# /uploads/.htaccess
<FilesMatch "\.php$">
    Order allow,deny
    Deny from all
</FilesMatch>

5. HTTP → HTTPS 리다이렉션

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

6. www 붙이기/빼기 통일

# www 붙이기
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

7. 특정 User-Agent 차단

악성 봇 차단:

SetEnvIfNoCase User-Agent "badbot" bad_bot
Order allow,deny
Allow from all
Deny from env=bad_bot

8. Basic 인증 (간단한 비밀번호 보호)

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/to/.htpasswd
Require valid-user

.htpasswd 파일은 htpasswd 명령으로 생성:

htpasswd -c .htpasswd username

실무 주의사항

  • .htaccess 문법 오류가 있으면 500 에러가 나며 사이트 전체가 먹통됩니다. 수정 전 백업 필수!
  • Nginx 서버는 .htaccess를 지원하지 않습니다. nginx.conf에서 직접 설정해야 합니다.
  • 공유 호스팅에서는 일부 설정이 제한될 수 있습니다.

디버깅 팁

문법 오류로 500 에러가 났다면:

  1. Apache 에러 로그 확인: /var/log/apache2/error.log
  2. 마지막 수정 부분 되돌리기
  3. 로컬 또는 테스트 서버에서 먼저 테스트

간단한 조치로 큰 보안 효과를 낼 수 있습니다. .htaccess 몇 줄이 해킹 시도를 차단합니다. 5분 투자로 몇백만 원 피해를 막습니다. 유지보수는 작은 방패입니다.