* Ubuntu 18.04.4 LTS / Nginx 1.19.0 버전에서 테스트 했습니다.
* Ubuntu에 Nginx가 설치되어있다고 가정합니다.
필요 라이브러리 설치
apt-get install autotools-dev automake libtool m4 pkgconf libcurl4-openssl-dev libxml2 libxml2-dev libgeoip-dev libpcre3 libpcre3-dev zlib1g-dev g++
libmodsecurity 다운 및 컴파일
// Clone
$ git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity
// Compile
$ cd ModSecurity
$ git submodule init && git submodule update && ./build.sh && ./configure && make && make install
Nginx connector 다운 및 컴파일
// Clone
$ git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git
// Check Nginx version
$ nginx -v
nginx version: nginx/1.19.0
// Nginx source code download
$ wget http://nginx.org/download/nginx-1.19.0.tar.gz
// Compile
$ cd nginx-1.19.0
$ ./configure --with-compat --add-dynamic-module=../ModSecurity-nginx
$ make modules
// copy object file
$ cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules
Nginx 모듈 로드
// /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
# nginx module load -->
load_module "modules/ngx_http_modsecurity_module.so";
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
ModSecurity 설정 -> 아래 업데이트 된, ModSecurity 설정 참고
// 1.추천 설정 다운로드
$ mkdir /etc/nginx/modsec
$ wget -P /etc/nginx/modsec/ https://raw.githubusercontent.com/SpiderLabs/ModSecurity/master/modsecurity.conf-recommended
$ mv /etc/nginx/modsec/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf
// 2.“detection only” 모드에서 actively dropping traffic 로 변경
$ sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/nginx/modsec/modsecurity.conf
// 3. SecRequestBodyInMemoryLimit 줄 제거
Nginx 설정
// active ModSeucrity in Nginx each site conf
server {
...
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/modsec_includes.conf;
...
}
// reload nginx
$ nginx -s reload
참고 : https://itzone.tistory.com/707
--- 2020.07.24 업데이트 ---
위글 중, ModSecurity설정에서,
https://raw.githubusercontent.com/SpiderLabs/ModSecurity/master/modsecurity.conf-recommended
위 주소가 404 NotFound로 나온다..
그래서 다른 방법을 찾아서 추가한다.
OWASP에서 제공하는 ModSecurity Core Rule Set을 이용한다.
https://owasp.org/www-project-modsecurity-core-rule-set/
ModSeucrity 설정
// OWASP Core Rule Set 사용
$ mkdir /etc/nginx/modsec
$ cd /etc/nginx/modsec
$ wget https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/v3.1.0.tar.gz
$ tar -xvzf tar -xvzf v3.1.0.tar.gz
$ rm v3.1.0.tar.gz
$ cd v3.1.0.tar.gz/rules
$ cp REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
$ cp RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
$ cp /etc/nginx/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf
$ cp /etc/nginx/ModSecurity/unicode.mapping /etc/nginx/modsec/unicode.mapping
// make modsec conf and rules file
$ touch modsec_includes.conf
// write below in modsec_includes.conf
include modsecurity.conf
include owasp-modsecurity-crs/crs-setup.conf
include owasp-modsecurity-crs/rules/*.conf
// “detection only” 모드에서 actively dropping traffic 로 변경
$ sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/nginx/modsec/modsecurity.conf
// SecRequestBodyInMemoryLimit 줄 제거
'컴퓨터 > Server' 카테고리의 다른 글
[Error][Nginx] 없는 https로 접근한 경우, 다른 주소로 접속되는 현상. (0) | 2020.08.31 |
---|---|
Nginx log 일자별로 관리하기 - logrotate (0) | 2020.08.30 |
[Ubuntu] chmod 폴더만 또는 파일만 권한 변경하기 (0) | 2020.08.11 |
Ubuntu 18.04.4 LTS, Nginx에 Let's Encrypt 설치 및 HTTPS적용(SSL) (0) | 2020.06.21 |
OS X 10.15(Catalina) + nginx + php + mariadb 설치 (0) | 2020.04.23 |