728x90
우분투에 Nginx와 ModSecurity 모듈을 설치하고 OWASP ModSecurity Core Rule Set을 적용하는 방법
Nginx 설치
- 설치되어 있는 nginx 삭제
sudo apt-get purge -y nginx nginx-* && sudo apt-get autoremove -y nginx nginx-*
- nginx 저장소 삭제
sudo add-apt-repository -y --remove ppa:ondrej/nginx
nginx 설치 스크립트
sudo curl -fsSL https://raw.githubusercontent.com/anti1346/zz/main/ubuntu/nginx_install.sh | bash
더보기
---
nginx 저장소 추가
- 안정적인 PPA
sudo add-apt-repository -y ppa:ondrej/nginx
메인라인 PPA
sudo add-apt-repository -y ppa:ondrej/nginx-mainline
sudo apt-get update
- nginx 패키지 설치
sudo apt-get install -y nginx
$ nginx -v
nginx version: nginx/1.24.0
---
빌드 패키지 설치
sudo apt-get install -y gcc make build-essential libtool autoconf automake pkg-config
sudo apt-get install -y zlib1g-dev libcurl4-openssl-dev libxml2-dev libpcre3-dev libpcre2-dev ssdeep doxygen
sudo apt-get install -y libyajl-dev libgeoip-dev libmaxminddb-dev liblmdb-dev libfuzzy-dev lua5.3-dev
sudo apt-get install -y dpkg-dev uuid-dev
sudo apt-get install -y openssl libssl-dev
ModSecurity 다운로드 및 컴파일
작업 디렉토리로 이동
cd /usr/local/src
ModSecurity 소스 코드 다운로드
git clone --depth 1 -b v3/master --single-branch \
https://github.com/owasp-modsecurity/ModSecurity.git
cd ModSecurity
git submodule init
git submodule update
bash build.sh
./configure --with-lmdb --with-ssdeep
make -j4
make install
Nginx 커넥터 다운로드
sudo mkdir -p /usr/local/src/nginx
sudo chown _apt:nogroup /usr/local/src/nginx
작업 디렉토리로 이동
cd /usr/local/src/nginx
Nginx 커넥터 다운로드
git clone --depth 1 https://github.com/owasp-modsecurity/ModSecurity-nginx.git
Nginx 소스 코드 다운로드
더보기
---
ondrej-ubuntu-nginx-jammy.list 파일에서 deb-src 라인에 주석을 제거합니다.
sudo vim /etc/apt/sources.list.d/ondrej-ubuntu-nginx-jammy.list
deb https://ppa.launchpadcontent.net/ondrej/nginx/ubuntu/ jammy main
deb-src https://ppa.launchpadcontent.net/ondrej/nginx/ubuntu/ jammy main
(또는)
sudo sed -i 's/# deb-src/deb-src/g' /etc/apt/sources.list.d/ondrej-ubuntu-nginx-jammy.list
---
echo "deb-src [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu jammy nginx" \
>> /etc/apt/sources.list.d/nginx.list
sudo apt-get update
cd /usr/local/src/nginx
nginx 소스 코드 다운로드(nginx source code)
sudo apt-get source nginx
$ ls -l
total 1168
drwxr-xr-x 10 root root 183 Feb 26 21:48 nginx-1.24.0
-rw-r--r-- 1 root root 72736 Feb 26 18:22 nginx_1.24.0-2+ubuntu22.04.1+deb.sury.org+3.debian.tar.xz
-rw-r--r-- 1 root root 4012 Feb 26 18:22 nginx_1.24.0-2+ubuntu22.04.1+deb.sury.org+3.dsc
-rw-r--r-- 1 root root 1112471 May 26 2023 nginx_1.24.0.orig.tar.gz
-rw-r--r-- 1 root root 683 May 26 2023 nginx_1.24.0.orig.tar.gz.asc
소스 코드를 다운로드한 후에는 다운로드한 소스 버전이 설치된 Nginx 버전과 일치하는지 확인해야 합니다.
cd /usr/local/src/nginx/nginx-1.24.0
apt build-dep nginx
./configure --with-compat --with-openssl=/usr/include/openssl/ --add-dynamic-module=../ModSecurity-nginx
더보기
---
./configure \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--user=nginx \
--group=nginx \
--with-compat \
--with-file-aio \
--with-threads \
--with-http_addition_module \
--with-http_auth_request_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_mp4_module \
--with-http_random_index_module \
--with-http_realip_module \
--with-http_secure_link_module \
--with-http_slice_module \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_v2_module \
--with-mail \
--with-mail_ssl_module \
--with-stream \
--with-stream_realip_module \
--with-stream_ssl_module \
--with-stream_ssl_preread_module \
--with-cc-opt='-g -O2 -ffile-prefix-map=/data/builder/debuild/nginx-1.24.0/debian/debuild-base/nginx-1.24.0=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' \
--with-ld-opt='-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie' \
--with-openssl=/usr/include/openssl \
--add-dynamic-module=../ModSecurity-nginx
---
make modules
Nginx 모듈 활성화
sudo cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules/
$ ls -la /etc/nginx/modules/ngx_http_modsecurity_module.so
-rwxr-xr-x 1 root root 231632 Feb 27 15:13 /etc/nginx/modules/ngx_http_modsecurity_module.so
nginx 모듈 로드
vim /etc/nginx/nginx.conf
load_module modules/ngx_http_modsecurity_module.so;
ModSecurity 규칙 구성
sudo mkdir /etc/nginx/modsec
cd /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/modsecurity/unicode.mapping
OWASP CRS 설치 및 활성
cd /usr/local/src
OWASP ModSecurity Core Rule Set 다운로드
wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.5.tar.gz
압축 해제
tar -zxf v3.3.5.tar.gz
mv coreruleset-3.3.5 /usr/local/.
설정 파일 복사
cp crs-setup.conf.example crs-setup.conf
설정 파일 편집
Nginx 설정 수정
vim /etc/nginx/modsec/main.conf
# Include the recommended configuration
Include /etc/nginx/modsec/modsecurity.conf
# A test rule
#SecRule ARGS:testparam "@contains test" "id:1234,deny,log,status:403"
# OWASP CRS v3 rules
/usr/local/coreruleset-3.3.5/crs-setup.conf
/usr/local/coreruleset-3.3.5/rules/*.conf
Nginx 재시작
sudo systemctl restart nginx
Nginx에 ModSecurity와 OWASP CRS가 추가되어 웹 애플리케이션의 보안이 강화됩니다. OWASP CRS의 보안 규칙이 적용되어 SQL 인젝션, 크로스 사이트 스크립팅 등과 같은 공격으로부터 보호됩니다.
728x90
'리눅스' 카테고리의 다른 글
우분투에서 socat을 설치하고 사용하는 방법(포트 포워딩) (0) | 2024.02.29 |
---|---|
리눅스 배포판(Linux Distros) (0) | 2024.02.28 |
우분투에 qos mod를 설치하고 설정하는 방법(mod_qos) (0) | 2024.02.26 |
우분투에 HAProxy를 설치하는 방법 (0) | 2024.02.23 |
우분투에서 Elasticsearch 8.x 설치 및 클러스터 구성 방법 (0) | 2024.02.22 |