Apache 보안 강화를 위한 ModSecurity 설정 가이드

웹 서버의 보안은 항상 중요한 이슈입니다.
오늘은 Apache 웹서버에서 사용할 수 있는 강력한 오픈소스 웹 애플리케이션 방화벽인 'ModSecurity'를 활용하여, 일반적인 보안을 강화하는 방법에 대해 알아보겠습니다.

ModSecurity란?

ModSecurity는 다양한 공격 유형으로부터 웹 애플리케이션을 보호하는 데 도움을 주는 인기있는 오픈소스 웹 애플리케이션 방화벽(WAF)입니다.

Ubuntu에서의 Modsecurity 설치 및 설정

ModSecurity 설치하기

먼저, Ubuntu에서는 아래의 명령어를 통해 ModSecurity와 필수 의존성 패키지들을 설치할 수 있습니다.


1
2
sudo apt-get update
sudo apt-get install libapache2-mod-security2
cs


설치가 완료되면, 아래의 명령어를 통해 Apache에 mod_security 모듈이 제대로 로드되었는지 확인할 수 있습니다.

1
apachectl -M | grep security2_module
cs

위의 명령어를 실행하였을 때 "security2_module (shared)"라는 출력이 나타난다면, mod_security 모듈이 정상적으로 로드된 것입니다.


<이렇게 나온다면 정상입니다.>

만약 출력되지 않는다면, 아래의 명령어를 통해 mod_security 모듈을 활성화하세요.

1
sudo a2enmod security2
cs

모듈 활성화 후에는 Apache 서버를 재시작하여 변경사항을 적용합니다.

1
sudo systemctl restart apache2.service 
cs

ModSecurity 설치가 완료되었습니다.
이제 기본 구성 파일을 활성화하고 OWASP CRS를 적용하는 과정으로 넘어갑시다.

기본 구성 파일 활성화

아래 명령어를 실행하여 Modsecurity의 기본 구성 파일을 활성화합니다.

1
sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
cs

SecRuleEngine 값 변경

다음으로, 아래 명령어를 통해 'SecRuleEngine' 값을 'On'으로 변경하고, ModSecurity를 활성화합니다.

1
sudo sed -'s/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/modsecurity/modsecurity.conf
cs

OWASP CRS 설치 및 적용

OWASP Core Rule Set(CRS)은 공개된 범용적인 규칙 세트로, 다양한 웹 애플리케이션 공격에 대비할 수 있게 해줍니다.

1
2
3
cd /usr/src/
sudo git clone https://github.com/coreruleset/coreruleset.git
sudo cp -R coreruleset/rules/* /usr/share/modsecurity-crs/
cs

CRS 설정 파일도 마찬가지로 모듈 디렉터리로 복사합니다.

1
sudo cp /usr/src/coreruleset/crs-setup.conf.example /usr/share/modsecurity-crs/crs-setup.conf
cs

그리고 Apache의 ModSecurity 설정파일에 CRS 규칙셋 경로를 추가합니다.

1
2
sudo echo "IncludeOptional /usr/share/modsecurity-crs/*.conf" >> /etc/apache2/mods-enabled/security2.conf
sudo echo "IncludeOptional /usr/share/modcurity-crs/rules/*.conf" >>  /etc/apache2/mods-enabled/security2.conf
cs

Apache 재시작

마지막으로, 아래 명령어를 통해 Apache를 재시작하여 변경사항을 적용합니다.

1
sudo systemctl restart apache2.service
cs

결론

Apache 서버의 보안을 강화하는 데 있어서 ModSecurity는 매우 중요한 도구입니다.
이 포스트에서는 제가 얼마전 Ubuntu에 Apache를 세팅하면서 ModSecurity와 OWASP CRS를 설치 및 설정한 내용을 바탕으로 그 과정을 기록하는 방식으로 포스팅을 작성했습니다.
Ubuntu 22.04 LTS, Apache 2.4.52버전을 기준으로 작성했으며 사용자의 환경에 따라, 그리고 웹 애플리케이션의 특성과 보호해야 할 데이터 등에 따라 추가적인 규칙 작성이 필요할 수 있습니다.
따라서, 이 가이드가 시작점이 되어 각자의 환경에 맞게 최적화된 보안 설정을 구축하는데 도움이 되기를 바랍니다.

댓글

이 블로그의 인기 게시물

crontab 설정방법과 로그 확인하는 법

Microsoft Defender 방화벽 설정 또는 해제하는 방법

한국 군비지출 세계 9위