NGINX ModSecurity рд╕реНрдерд╛рдкрдирд╛ рдирд┐рд░реНрджреЗрд╢



рдпрд╣ рдЖрд▓реЗрдЦ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝рд╛рдпрд░рд╡реЙрд▓ (WAF) рдХреЗ рд░реВрдк рдореЗрдВ NGINX рд╡реЗрдм рд╕рд░реНрд╡рд░ рдкрд░ рдбрд╛рдпрдиреЗрдорд┐рдХ рдореЛрдбрд╕реЗрдХреНрд╡рд┐рдЯреА рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред NGINX рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ред рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - CentOS 7 ред рдореЙрдбреНрдпреВрд▓ рдХреЛ "рдЧрддрд┐рд╢реАрд▓" рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕реЗрд╡рд╛ рд▓рдЪреАрд▓реА рдмрдиреА рд░рд╣реЗред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ NGINX рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЧрд╛рдЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


1. рдШрдЯрдХреЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛


рд╕реЗрд╡рд╛ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗред рд╕реЛрд░реНрд╕ рдХреЛрдб рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЬрд░реВрд░рдд рд╣реЛрдЧреАред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрджреНрдпрддрди рдкреНрд░рдгрд╛рд▓реА ( # yum рдЕрджреНрдпрддрди ) рд╣реИред

yum install install -y apt-utils autoconf automake build-essential git libcurl4-openssl-dev libgeoip-dev liblmdb-dev libpcre++-dev libtool libxml2-dev libyajl-dev pkgconf wget zlib1g-dev 


2. рд╕реЗрд╡рд╛ рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ



рд╕реЗрд╡рд╛ nginx рд╕реНрдЯрд╛рд░реНрдЯ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рди рд╣реЛ рдЗрд╕рдХреЗ рд▓рд┐рдП, GitHub рдкрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдлрд╝рд╛рдЗрд▓ /etc/yum.repos.d/nginx.repo рдмрдирд╛рдПрдБ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рд╡рд┐рддрд░рдг рд╕рдВрд╕реНрдХрд░рдг рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛, рд╕рд╛рдЗрдЯ рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЕрдВрддрд┐рдо рдПрдХ рдКрдкрд░ рдЦреАрдВрдЪ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

 [nginx-1.13.7] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=0 enabled=1 

рдЕрдЧрд▓рд╛, рдмрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

 yum install nginx 

3. рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдВрдХрд▓рди




рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреБрдХреНрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдВ:

 cd /home/user/Downloads 

GitHub рдкрд░ рдореБрдЦреНрдп рд╢рд╛рдЦрд╛ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ:

 git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity.git 

рдЕрдЧрд▓рд╛, рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ:

 cd ModSecurity git submodule init git submodule update ./build.sh ./configure make make install 

4. рдХрдиреЗрдХреНрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд▓рдЪреАрд▓рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, NGINX рдФрд░ ModSecurity рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рд░реНрд╡рд░ рдХреЛрдб рдореЗрдВ рд╡рд╛рдпрд░реНрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдШрдЯрдХ рд╣реЛрдЧрд╛, рдЬреЛ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдордп рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреЛрдб рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛, рдЖрджрд┐ред

 git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git 

5. рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг


NGINX рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдЬреБрдбрд╝рд╛ рд╣реЛрдЧрд╛, рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ NGINX рдХрд╛ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рд╣реИ:

 nginx тАУv 

рдЖрдЙрдЯрдкреБрдЯ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ)

nginx рд╕рдВрд╕реНрдХрд░рдг: nginx / 1.13.7

рдЕрдЧрд▓рд╛, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдХреЛрдИ рддреНрд░реБрдЯрд┐ рди рд╣реЛ рдФрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рди рдХрд░реЗрдВ:

 cd .. wget http://nginx.org/download/nginx-1.13.7.tar.gz tar zxvf nginx-1.13.7.tar.gz 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 

/Etc/nginx/nginx.conf рдореЗрдВ рдкрд╣рд▓реЗ рдмреНрд▓реЙрдХ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ:

 load_module modules/ngx_http_modsecurity_module.so; 

6. рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓


рд╡реЗрдм рд╕рдВрд╕рд╛рдзрди рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреЗ рдмреБрдирд┐рдпрд╛рджреА рдирд┐рдпрдореЛрдВ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐, рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреЛ рд╕рднреНрдп рд╕реНрддрд░ рдкрд░ рдирд╣реАрдВ рдЧрд┐рдирдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд░реНрдорд╛рддрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рд▓реЗрдЦрди рдирд┐рдпрдореЛрдВ рдХреА рдкреВрд░реА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдорд╛рдирдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдирд┐рдпрдореЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИред

 mkdir /etc/nginx/modsec cd /etc/nginx/modsec sudo wget https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/modsecurity.conf-recommended sudo mv modsecurity.conf-recommended modsecurity.conf 


Modsecurity.conf рдлрд╝рд╛рдЗрд▓ рдореЗрдВ , SecRuleEngine DetectionOnly рдХреЛ SecRuleEngine On рд╕реЗ рдмрджрд▓реЗрдВ
рдЕрдЧрд▓рд╛, /etc/nginx/modsec/main.conf рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

 # Include the recommended configuration Include /etc/nginx/modsec/modsecurity.conf 

7. OWASP рдирд┐рдпрдо


рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ OWASP рд╡реЗрдм рд╕реБрд░рдХреНрд╖рд╛ рдореБрджреНрджреЛрдВ рдореЗрдВ рдПрдХ рдиреЗрддрд╛ рд╣реИред рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдЕрдкрдирд╛ рд╕реЗрдЯ рд╣реИ, рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рддрд░рд╣, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдореВрд▓ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

 cd /usr/local wget https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/v3.0.0.tar.gz tar -xzvf v3.0.0.tar.gz mv owasp-modsecurity-crs-3.0.0 /usr/local cd /usr/local/owasp-modsecurity-crs-3.0.0 cp crs-setup.conf.example crs-setup.conf 

/Etc/nginx/modsec/main.conf рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:

 # OWASP CRS v3 rules Include /usr/local/owasp-modsecurity-crs-3.0.0/crs-setup.conf Include /usr/local/owasp-modsecurity-crs-3.0.0/rules/*.conf 

8. рдХрд╛рдо рдкреВрд░рд╛ рдХрд░рдирд╛


рдлрд╝рд╛рдЗрд▓ рдореЗрдВ /etc/nginx/conf.d/proxy.conf рдЬреЛрдбрд╝реЗрдВ

 server { listen 80; modsecurity on; modsecurity_rules_file /etc/nginx/modsec/main.conf; # If you have proxy location / { proxy_pass http://192.168.xx; } } 

9. рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдБрдЪ


рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЗ рдШрдЯрдХреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред рдЕрдХреНрд╕рд░, рдЖрдкрдХреЛ рдЙрд╕ рдирд┐рдпрдо рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рдЪреЗрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрд┐рдпреЛрдЖрдИрдкреА )ред рдЗрд╕рд▓рд┐рдП, рдЖрдк рдЗрд╕ рдирд┐рдпрдо рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред

 rm /usr/local/owasp-modsecurity-crs-3.0.0/rules/REQUEST-910-IP-REPUTATION.conf 

рдпреВрдирд┐рдХреЛрдб рд╕рдВрдмрдВрдзреА рддреНрд░реБрдЯрд┐ рднреА рд╕рдВрднрд╡ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ ( рдЕрдВрдд рдореЗрдВ ) рдореЗрдВ рдмрддрд╛рддреЗ рд╣реИрдВ ред

 #SecUnicodeMapFile unicode.mapping 20127 

рд╕рд░реНрд╡рд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реНрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рдЖрд╡реЗрджрди рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рд╣реИ, рддреЛ 200 рдУрдХреЗ рдХреЛрдб рд╡рд╛рд▓рд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЖрдкрдХреЗ рдкрд╛рд╕ рдЖ рдЬрд╛рдПрдЧрд╛

 curl -I 127.0.0.1 

рд╕реБрд░рдХреНрд╖рд╛рддреНрдордХ рддрдВрддреНрд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдХреНрдХреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 nikto -host localhost 

рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

 service nginx start 

Source: https://habr.com/ru/post/hi437032/


All Articles