티스토리 뷰
사전 요구 사항
1. Nginx latest 를 official repository 로부터 설치
nginx.org/en/linux_packages.html#mainline
2. 사전요구 패키지 설치
* Ubuntu
$ apt-get install -y apt-utils autoconf automaker build-essential git libcurl4-openssl-dev libgeoip-dev liblmdb-dev ibpcre++-dev lib tool libxml2-dev libyans-dev pkgconf wget zlib1g-dev
* CentOS
$ yum groupinstall -y "Development Tools"
$ yum install -y http httpd-devel pure pure-devel libxml2 libxml2-devel curl curl-devel openssl openssl-devel pcre-devel
libmodsecurity 다운받고 컴파일
1. Clone GitHub repository
$ git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity
2. CentOS 6.x 만 아래 단계 시행 (소스코드 컴파일 단계에서 macro `AM_PROG_AR' not found in library 오류 방지)
$ wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/monkeyiq:/centos6updates/CentOS_CentOS-6/noarch/automake-1.13.4-3.2.noarch.rpm
$ wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/monkeyiq:/centos6updates/CentOS_CentOS-6/noarch/autoconf-2.69-12.2.noarch.rpm
$ yum install -y autoconf-*.noarch.rpm automake-*.noarch.rpm
3. $ gcc --version 결과가 4.8.5 이상이 아니면
$ yum install -y centos-release-scl && yum install -y devtoolset-3-toolchain
$ source /opt/rh/devtoolset-3/enable
4. 소스코드 컴파일
$ cd ModSecurity
$ git submodule init && git submodule update && ./build.sh && ./configure && make && make install
Nginx connector 다운받고 컴파일
1. Clone GitHub repository
$ git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git
2. Nginx 버젼 측정
$ nginx -v
nginx version: nginx/1.13.7
3. 버젼에 맞는 Nginx 소스코드 다운로드
$ wget http://nginx.org/download/nginx-1.13.7.tar.gz
$ tar xvzf nginx-1.13.7.tar.gz
4. 동적 모듈 컴파일하고 Nginx 디렉토리에 복사
$ cd nginx-1.13.7
$ ./configure --with-compat --add-dynamic-module=../ModSecurity-nginx
$ make modules
$ cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules
Nginx 동적 모듈 로드
1. /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
load_module "modules/ngx_http_modsecurity_module.so";
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
2. 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 줄 제거
3. 테스트 rule 만들기
1. $ vi /etc/nginx/modsec/main.conf
# Edit to set SecRuleEngine On
Include "/etc/nginx/modsec/modsecurity.conf"
# Basic test rule
SecRule ARGS:testparam "@contains test" "id:1234,deny,status:403"
4. 최종 Nginx 설정
1. Nginx 사이트 설정에서 ModSecurity 활성
server {
# …
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;
}
2. nginx 재로드
$ nginx -t && nginx -s reload
3. 로그 확인
tail -f /var/log/modsec_audit.log
5. 테스트 해보기
1. 403 보기 위해서 다음의 curl 명령
$ curl localhost?testparam=test
<h1>403 forbidden</h1>
2. XSS 테스팅
$ curl localhost/?param="><script>alert(1);</script>
$ grep error /var/log/nginx/error.log
2017/02/15 14:07:54 [error] ModSecurity: Warning. detected XSS using libinjection.
ModSecurity: Audit 활성하고 Debug 로깅
1. Nginx 사이트 “ModSecurity: Logging and Debugging” 문서
https://www.nginx.com/blog/modsecurity-logging-and-debugging/
Deploy the OWASP Core Ruleset (CRS)
1. Nginx 사이트 “Enabling the OWASP CRS” 문서
참고
- https://www.slideshare.net/Nginx/modsecurity-30-and-nginx-getting-started
- https://www.vultr.com/docs/how-to-install-modsecurity-for-nginx-on-centos-7-debian-8-and-ubuntu-16-04
- https://www.howtoforge.com/tutorial/nginx-with-libmodsecurity-and-owasp-modsecurity-core-rule-set-on-ubuntu-1604/
- https://www.thermo.io/how-to/security/installing-modsec-for-nginx-on-centos7
- http://www.snoopybox.co.kr/1754
'OS-서버-서비스 > NginX' 카테고리의 다른 글
NginX PHP CORS 설정 (0) | 2016.05.02 |
---|---|
NginX + php-fpm 설치, 셋팅 (링크) (0) | 2015.12.08 |
NginX Laravel conf 참고 (0) | 2015.12.08 |
웹폰트를 위한 nginx 서버 CORS 허용 Header 설정 (0) | 2015.09.24 |
- Total
- Today
- Yesterday
- Make Use Of
- How to geek
- 인터넷 통계정보 검색시스템
- 트위터 공유 정보모음
- 웹표준KR
- 치우의 컴맹탈출구
- Dev. Cheat Sheets
- w3schools
- Dev. 조각들
- ASP Ajax Library
- CSS Tricks
- WebResourcesDepot
- jQuery Selectors Tester
- DeveloperSnippets
- Smashing Magazine
- Nettuts+
- devListing
- 웹 리소스 사이트(한)
- Mobile tuts+
- Dream In Code
- Developer Tutorials
- CSS3 Previews
- 자북
- 안드로이드 사이드
- Code Visually
- Code School
- SQLer.com
- 무료 파워포인트 템플릿
- iconPot
- Free PowerPoint Templates
- Design Bombs
- Web Designer Wall
- 1st Webdesigner
- Vandelay Design
- 무료 벡터 이미지 사이트들
- Tripwire Magazine
- Web TrendSet
- WebMonkey
- 윤춘근 프리젠테이션 디자이너 블로그
- cz.cc 무료 DNS
- [웹하드] MediaFire
- [웹하드] DivShare
- 한컴 인터넷 오피스
- JQuery
- Debug
- 워드프레스
- Linux
- CSS
- ASP
- laravel
- mssql
- classic asp
- nginx
- javascript
- API
- Chrome
- Docker
- Android
- Wordpress
- PHP
- centos
- Mac
- Prototype
- iphone
- git
- sencha touch
- 한글
- IE
- iis
- 안드로이드
- nodejs
- IOS
- JSON
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |