본문 바로가기

리눅스

[draft] 우분투에 Nginx와 ModSecurity를 설치하고 OWASP ModSecurity CRS를 적용하는 방법

우분투에 Nginx와 ModSecurity를 설치하고 OWASP ModSecurity Core Rule Set을 적용하는 방법

Nginx 에 ModSecurity v3 모듈을 동적 모듈로 연동하고 OWASP ModSecurity Core Rule Set(CRS) 를 적용하는 방법을 설명합니다.

1. 기존 Nginx 완전 제거

sudo apt-get purge -y nginx nginx-*
sudo apt-get autoremove -y

PPA 제거

sudo add-apt-repository -y --remove ppa:ondrej/nginx

2. Nginx 설치

자동 설치 스크립트 (권장)

sudo curl -fsSL https://raw.githubusercontent.com/anti1346/zz/main/ubuntu/nginx_install.sh | bash
더보기

---

ondrej PPA 사용 (수동 설치)

sudo add-apt-repository -y ppa:ondrej/nginx
sudo apt-get update
sudo apt-get install -y nginx

---

버전 확인

$ nginx -v
nginx version: nginx/1.24.0

3. ModSecurity 빌드를 위한 필수 패키지 설치

sudo apt-get install -y \
gcc make build-essential libtool autoconf automake pkg-config \
zlib1g-dev libcurl4-openssl-dev libxml2-dev libpcre3-dev libpcre2-dev \
libyajl-dev libgeoip-dev libmaxminddb-dev liblmdb-dev libfuzzy-dev \
lua5.3-dev uuid-dev ssdeep doxygen \
openssl libssl-dev dpkg-dev

4. ModSecurity v3 다운로드 및 컴파일

cd /usr/local/src
git clone --depth 1 -b v3/master https://github.com/owasp-modsecurity/ModSecurity.git
cd ModSecurity
git submodule init
git submodule update

빌드 및 설치

bash build.sh
./configure --with-lmdb --with-ssdeep
make -j$(nproc)
sudo make install

5. Nginx ModSecurity 커넥터 다운로드

mkdir -p /usr/local/src/nginx
cd /usr/local/src/nginx
git clone --depth 1 https://github.com/owasp-modsecurity/ModSecurity-nginx.git

6. Nginx 소스 코드 다운로드 (설치 버전과 동일해야 함)

deb-src 활성화

sudo sed -i 's/# deb-src/deb-src/g' \
/etc/apt/sources.list.d/ondrej-ubuntu-nginx-jammy.list
sudo apt-get update

소스 다운로드

cd /usr/local/src/nginx
sudo apt-get source nginx
cd nginx-1.24.0
sudo apt build-dep nginx

7. ModSecurity 동적 모듈 컴파일

./configure \
--with-compat \
--with-openssl=/usr/include/openssl \
--add-dynamic-module=../ModSecurity-nginx
make modules

모듈 복사

sudo cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules/

8. Nginx에 ModSecurity 모듈 로드

sudo vim /etc/nginx/nginx.conf
load_module modules/ngx_http_modsecurity_module.so;

9. ModSecurity 기본 설정

sudo mkdir -p /etc/nginx/modsec
sudo cp /usr/local/src/ModSecurity/modsecurity.conf-recommended \
/etc/nginx/modsec/modsecurity.conf
sudo cp /usr/local/src/ModSecurity/unicode.mapping \
/etc/nginx/modsec/

DetectionOnly → On 변경 권장

SecRuleEngine On

10. OWASP CRS 설치

cd /usr/local/src
wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.5.tar.gz
tar -xzf v3.3.5.tar.gz
sudo mv coreruleset-3.3.5 /usr/local/
cd /usr/local/coreruleset-3.3.5
cp crs-setup.conf.example crs-setup.conf

11. ModSecurity 메인 설정 파일 작성

sudo vim /etc/nginx/modsec/main.conf
Include /etc/nginx/modsec/modsecurity.conf

Include /usr/local/coreruleset-3.3.5/crs-setup.conf
Include /usr/local/coreruleset-3.3.5/rules/*.conf

12. Nginx 서버 블록에 ModSecurity 적용

server {
    modsecurity on;
    modsecurity_rules_file /etc/nginx/modsec/main.conf;
}

13. 설정 검증 및 재시작

sudo nginx -t
sudo systemctl restart nginx

 

Nginx에 ModSecurity와 OWASP CRS가 추가되어 웹 애플리케이션의 보안이 강화됩니다. OWASP CRS의 보안 규칙이 적용되어 SQL 인젝션, 크로스 사이트 스크립팅 등과 같은 공격으로부터 보호됩니다.

 

참고URL

- github ModSecurity 소스 코드 다운로드 : https://github.com/owasp-modsecurity/ModSecurity

- github Nginx 커넥터 다운로드 : https://github.com/owasp-modsecurity/ModSecurity-nginx

- github OWASP ModSecurity Core Rule Set 다운로드 : https://github.com/coreruleset/coreruleset/tags