웹사이트 검색

Ubuntu 16.04에서 libmodsecurity 및 OWASP ModSecurity 핵심 규칙 세트가 포함된 Nginx


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 15.04(Vivid Vervet)

이 페이지에서

  1. 1. 전제 조건 설치
  2. 2. ModSecurity 다운로드
  3. 3. Nginx 다운로드
  4. 4. Nginx 구성 및 설치
  5. 5. OWASP ModSecuirty 핵심 규칙 세트 설치\n
  6. 저자 정보

이 튜토리얼에서는 Modsecurity 2.9와 혼동하지 않도록 최신 버전의 Nginx를 libmodsecurity(Modsecurity 3.x)로 컴파일하는 방법을 보여줍니다. 또한 OWASP ModSecurity 핵심 규칙 세트(CRS)를 통합할 예정입니다.

Libmodsecurity는 향상된 성능과 안정성을 제공하는 ModSecurity의 주요 재작성입니다. Modsecurity 2.9.x가 다른 플랫폼용으로 제공되었지만 Apache와 함께 배포하는 것이 정말 좋았고 다른 플랫폼과 함께 배포하려면 성능을 희생하면서 다양한 타사 종속성이 필요했습니다. Libmodsecurity는 처음부터 다시 작성함으로써 모든 것을 변경합니다. Libmodsecurity에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

이 가이드는 Ubuntu 16.04 64비트의 완전히 새로 업데이트된 인스턴스가 이미 있다고 가정합니다.

1. 필수 구성 요소 설치

필수 구성 요소 설치

apt-get install apache2-dev autoconf automake build-essential bzip2 checkinstall devscripts flex g++ gcc git graphicsmagick-imagemagick-compat graphicsmagick-libmagick-dev-compat libaio-dev libaio1 libass-dev libatomic-ops-dev libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libbz2-dev libcdio-cdda1 libcdio-paranoia1 libcdio13 libcurl4-openssl-dev libfaac-dev libfreetype6-dev libgd-dev libgeoip-dev libgeoip1 libgif-dev libgpac-dev libgsm1-dev libjack-jackd2-dev libjpeg-dev libjpeg-progs libjpeg8-dev liblmdb-dev libmp3lame-dev libncurses5-dev libopencore-amrnb-dev libopencore-amrwb-dev libpam0g-dev libpcre3 libpcre3-dev libperl-dev libpng12-dev libpng12-0 libpng12-dev libreadline-dev librtmp-dev libsdl1.2-dev libssl-dev libssl1.0.0 libswscale-dev libtheora-dev libtiff5-dev libtool libva-dev libvdpau-dev libvorbis-dev libxml2-dev libxslt-dev libxslt1-dev libxslt1.1 libxvidcore-dev libxvidcore4 libyajl-dev make openssl perl pkg-config tar texi2html unzip zip zlib1g-dev

2. ModSecurity 다운로드

Git 클론 Modsecurity, 체크아웃 및 빌드 libmodsecurity

cd /opt/ 
git clone https://github.com/SpiderLabs/ModSecurity
cd ModSecurity
git checkout -b v3/master origin/v3/master
sh build.sh
git submodule init
git submodule update
./configure
make
make install

Git 복제 Modsecurity-nginx 커넥터

cd /opt/ 
git clone https://github.com/SpiderLabs/ModSecurity-nginx.git

이제 Modsecurity-nginx 커넥터가 포함된 다음 디렉토리가 있어야 합니다.

/opt/ModSecurity-nginx

3. 엔진엑스 다운로드

최신 Nginx 안정 소스 다운로드

http://nginx.org/en/download.html로 이동하여 Nginx의 안정적인 최신 버전에 대한 링크를 가져옵니다. 이 글을 쓰는 시점에서 최신 안정 버전은 nginx-1.12.0.tar.gz였습니다. 특정 버전에 대해 아래 지침을 조정하십시오. 다운로드 및 추출

cd /opt 
wget http://nginx.org/download/nginx-1.12.0.tar.gz
tar -zxf nginx-1.12.0.tar.gz
cd nginx-1.12.0

4. Nginx 구성 및 설치

Modsecurity-nginx 커넥터로 Nginx 구성 및 설치

./configure --user=www-data --group=www-data --with-pcre-jit --with-debug --with-http_ssl_module --with-http_realip_module --add-module=/opt/ModSecurity-nginx 
make
make install

이전에 다운로드한 ModSecurity 소스 코드에는 몇 가지 권장 설정이 포함된 샘플 modsecurity.conf 파일이 포함되어 있습니다. 이 파일을 Nginx 구성 파일이 있는 폴더에 복사합니다.

cp /opt/ModSecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf

/usr/local/nginx/sbin/nginx에서 /bin/nginx로 심볼릭 링크 생성

ln -s /usr/local/nginx/sbin/nginx /bin/nginx

다음 디렉터리를 만듭니다.

mkdir /usr/local/nginx/conf/sites-available 
mkdir /usr/local/nginx/conf/sites-enabled
mkdir /usr/local/nginx/conf/ssl
mkdir /etc/nginx

/usr/local/nginx/conf/ssl /etc/nginx/ssl에서 심볼릭 링크를 만듭니다.

ln -s /usr/local/nginx/conf/ssl /etc/nginx/ssl

conf/nginx.conf 파일의 백업 복사본 만들기

cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.bak

/usr/local/nginx/conf/nginx.conf 파일 구성

vi /usr/local/nginx/conf/nginx.conf

"server {"로 시작하고 두 번째에서 마지막 닫는 중괄호 "}"로 끝나는 모든 항목을 찾아 제거합니다. 즉, 마지막 중괄호는 그대로 둡니다.

마지막 중괄호 바로 위에 다음을 삽입합니다. 이렇게 하면 Nginx가 "/usr/local/nginx/conf/sites-enabled" 디렉토리에서 사이트 구성을 찾도록 지시합니다.

include /usr/local/nginx/conf/sites-enabled/*;

따라서 파일의 끝은 아래와 같아야 합니다(닫는 }이 있는지 확인).

include /usr/local/nginx/conf/sites-enabled/*; 
}

비활성화된 경우 "#" 접두사를 제거하여 "user" 지시문을 활성화하고 기본 "nobody" 대신 사용자 "www-data"로 설정되어 아래와 같이 표시되는지 확인하십시오.

user www-data;

파일을 저장합니다.

nginx 서비스 관리를 위한 Jason Giedymins Nginx init 스크립트를 다운로드하고 서비스로 구성

wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx 
chmod +x /etc/init.d/nginx
update-rc.d nginx defaults

이 스크립트는 Nginx 서비스 관리를 위한 다음 옵션을 제공합니다.

# service nginx start|stop|restart|force-reload|reload|status|configtest|quietupgrade|terminate|destroy

5. OWASP ModSecuirty 핵심 규칙 세트 설치

Git 복제 및 현재 버전의 OWASP 규칙 세트 및 구성을 Nginx에 복사

cd /opt/ 
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
cd owasp-modsecurity-crs/
cp -R rules/ /usr/local/nginx/conf/
cp /opt/owasp-modsecurity-crs/crs-setup.conf.example /usr/local/nginx/conf/crs-setup.conf

OWASP ModSecuirty 핵심 규칙 세트로 Nginx 구성

/usr/local/nginx/conf/modsecurity.conf 편집

vi /usr/local/nginx/conf/modsecurity.conf

파일 끝에 다음을 붙여넣습니다.

#Load OWASP Config 
Include crs-setup.conf
#Load all other Rules
Include rules/*.conf
#Disable rule by ID from error message
#SecRuleRemoveById 920350

Nginx modsecurity.conf 파일 또는 개별 서버 conf 파일에서 서버 또는 위치 블록에 다음을 입력합니다. 아래 예는 서버와 위치 블록 모두에 항목을 추가하는 조합을 보여줍니다.

server { 
.....
modsecurity on;
location / {
modsecurity_rules_file /usr/local/nginx/conf/modsecurity.conf;
.....
}
}

Nginx 구성 테스트

service nginx configtest

오류가 없으면 Nginx를 다시 로드하거나 다시 시작하십시오.

service nginx reload

이제 모든 ModSecurity 이벤트에 대한 /var/log/modsec_audit.log를 볼 수 있습니다.

tail -f /var/log/modsec_audit.log

만족하면 /usr/local/nginx/conf/modsecurity.conf 파일을 편집하고 아래와 같이 "DetectionOnly"에서 "On"으로 "SecRuleEngine"을 설정합니다.

SecRuleEngine On

이것으로 이 가이드를 마칩니다.

저자 소개

Dino Edwards는 연방, 주 및 민간 부문에서 20년 이상의 경력을 가진 IT 전문가입니다. 그는 또한 프로그래밍에 손을 대는 것으로 알려져 있습니다.

그는 주로 기억력이 좋지 않고 같은 프로젝트를 다시 수행해야 하는 경우 바퀴를 다시 발명하고 싶지 않기 때문에 특정 프로젝트를 마친 후에 가이드나 방법을 작성하는 경향이 있습니다.

연락하기