관리 메뉴

투덜이 개발자

[apache] 아파치 설정 보안 mod rewrite 설치 본문

OS/Linux

[apache] 아파치 설정 보안 mod rewrite 설치

엠투 2025. 4. 7. 11:34
반응형

apache mod rewrite

 

Apache에서 mod_rewrite 모듈이 활성화되어 있는지 확인하려면 아래 방법을 사용하시면 됩니다.

 

모듈이 활성화 확인

Ubuntu/Debian 계열

apache2ctl -M | grep rewrite

출력에 rewrite_module이 보이면 활성화된 상태입니다:

 rewrite_module (shared)

 

CentOS/RHEL 계열

httpd -M | grep rewrite

 

 

모듈이 비활성화된 경우 활성화 방법

Ubuntu/Debian 계열

sudo a2enmod rewrite
sudo systemctl restart apache2


CentOS/RHEL  계열
보통 /etc/httpd/conf/httpd.conf에서 다음 줄이 주석 처리되어 있다면 해제하면 됩니다:

LoadModule rewrite_module modules/mod_rewrite.so


그 후 Apache 재시작:

sudo systemctl restart httpd

 

 

아파치 보안 설정

<VirtualHost *:80>
	# ServerAdmin webmaster@localhost
	ServerName www.yourdomain.or.kr
	DocumentRoot /data/www/yourdomain.or.kr/www
	DirectoryIndex index.php
	ErrorLog "|/usr/bin/cronolog ${APACHE_LOG_DIR}/%Y%m%yourdomain.or.kr_error.log"
	CustomLog "|/usr/bin/cronolog ${APACHE_LOG_DIR}/%Y%m%d_yourdomain.or.kr_access.log" combined

	<LimitExcept GET POST>
		Require all denied
	</LimitExcept>
    
	# mod_rewrite 활성화
	RewriteEngine On
    
	# HEAD 요청이 오면 403 Forbidden 처리
	RewriteCond %{REQUEST_METHOD} ^HEAD$
	RewriteRule .* - [F]    

	# QUERY_STRING에서 XSS 특수문자 차단
	RewriteCond %{QUERY_STRING} [<>\"']
	RewriteRule .* - [F,L]

	# REQUEST_URI(경로)에서 XSS 특수문자 차단
	RewriteCond %{REQUEST_URI} [<>\"']
	RewriteRule .* - [F,L]

	# .php 뒤에 슬래시가 붙으면 403 또는 404로 차단
	RewriteCond %{REQUEST_URI} \.php/
	RewriteRule .* - [F,L]

	# 사용자 정의 에러 페이지 설정
	ErrorDocument 403 /403.php
	ErrorDocument 404 /404.php
	ErrorDocument 500 /500.php
</VirtualHost>

 

# mod_rewrite 활성화
RewriteEngine On

# QUERY_STRING에서 XSS 특수문자 차단
RewriteCond %{QUERY_STRING} [<>\"']
RewriteRule .* - [F,L]

# REQUEST_URI(경로)에서 XSS 특수문자 차단
RewriteCond %{REQUEST_URI} [<>\"']
RewriteRule .* - [F,L]

# .php 뒤에 슬래시가 붙으면 403 또는 404로 차단
RewriteCond %{REQUEST_URI} \.php/
RewriteRule .* - [F,L]

 

*** 테스트 ***

403 Forbidden 응답되면 된다.

 

QUERY_STRING에 XSS 특수문자 있을 때 차단 테스트

curl -i "http://domain_address/index.php?xss=<script>"



REQUEST_URI에 XSS 특수문자 있을 때 차단 테스트

curl -i "http://domain_address/<script>.php"



.php/ 뒤에 슬래시 붙는 요청 차단 테스트

curl -i "http://domain_address/test.php/"

 

 

***   참고   ***

CentOS 7에서 Apache용 mod_rewrite를 설정하는 방법

반응형