Како инсталирати МодСецурити за Нгинк на ЦентОС 7, Дебиан 8 и Убунту 16.04

МодСецурити је модул заштитног зида за веб апликације (ВАФ) отвореног кода који је одличан за заштиту Апацхе-а, Нгинк-а и ИИС-а од разних сајбер напада који циљају на потенцијалне рањивости у различитим веб апликацијама

У овом чланку ћемо инсталирати и конфигурисати МодСецурити за Нгинк на ЦентОС 7, Дебиан 8 и Убунту 16.04.

Предуслови

  • До-то-дате инсталација ЦентОС 7, Дебиан 8, или Убунту 16.04 64-бит.
  • Пријављивање као root.

Корак 1: Ажурирајте систем

Пратећи овај водич , ажурирајте кернел и пакете вашег сервера на најновију доступну верзију.

Корак 2: Инсталирајте зависности

Пре него што успете да преведете Нгинк и МодСецурити, потребно је да инсталирате неколико софтверских пакета на следећи начин.

а) На ЦентОС 7:

yum groupinstall -y "Development Tools"
yum install -y httpd httpd-devel pcre pcre-devel libxml2 libxml2-devel curl curl-devel openssl openssl-devel
shutdown -r now

б) На Дебиан 8 или Убунту 16.04:

apt-get install -y git build-essential libpcre3 libpcre3-dev libssl-dev libtool autoconf apache2-dev libxml2-dev libcurl4-openssl-dev automake pkgconf

Корак 3: Компилирајте МодСецурити

Због неколико нестабилности пријављених на МодСецурити за Нгинк мастер грану, за сада се званично препоручује коришћење најновије верзије nginx_refactoringгране кад год је то могуће.

Преузмите nginx_refactoringграну МодСецурити за Нгинк:

cd /usr/src
git clone -b nginx_refactoring https://github.com/SpiderLabs/ModSecurity.git

Компилирајте МодСецурити:

а) На ЦентОС 7:

cd ModSecurity
sed -i '/AC_PROG_CC/a\AM_PROG_CC_C_O' configure.ac
sed -i '1 i\AUTOMAKE_OPTIONS = subdir-objects' Makefile.am
./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make

Напомена: две sedгорње команде се користе за спречавање порука упозорења када се користе новије верзије аутомаке-а.

б) На Дебиан 8 или Уб��нту 16.04:

cd ModSecurity
./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make

Корак 4: Саставите Нгинк

Преузмите и деархивирајте најновије стабилно издање Нгинк-а које је Nginx 1.10.3у тренутку писања:

cd /usr/src
wget https://nginx.org/download/nginx-1.10.3.tar.gz
tar -zxvf nginx-1.10.3.tar.gz && rm -f nginx-1.10.3.tar.gz

а) На ЦентОС 7:

Прво, морате да креирате наменског корисника nginxи наменску групу nginxза Нгинк:

groupadd -r nginx
useradd -r -g nginx -s /sbin/nologin -M nginx

Затим компајлирајте Нгинк док омогућавате МодСецурити и ССЛ модуле:

cd nginx-1.10.3/
./configure --user=nginx --group=nginx --add-module=/usr/src/ModSecurity/nginx/modsecurity --with-http_ssl_module
make
make install

Измените подразумеваног корисника Нгинк-а:

sed -i "s/#user  nobody;/user nginx nginx;/" /usr/local/nginx/conf/nginx.conf

б) На Дебиан 8 или Убунту 16.04:

Прво, требало би да користите постојећег корисника www-dataи постојећу групу www-data.

Затим компајлирајте Нгинк док омогућавате МодСецурити и ССЛ модуле:

cd nginx-1.10.3/
./configure --user=www-data --group=www-data --add-module=/usr/src/ModSecurity/nginx/modsecurity --with-http_ssl_module
make
make install

Измените подразумеваног корисника Нгинк-а:

sed -i "s/#user  nobody;/user www-data www-data;/" /usr/local/nginx/conf/nginx.conf

Након што је Нгинк успешно инсталиран, повезане датотеке ће се налазити на:

nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"

можете тестирати инсталацију са:

/usr/local/nginx/sbin/nginx -t

Ако ништа не крене по злу, излаз би требао бити:

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

Ради ваше удобности, можете подесити системд јединичну датотеку за Нгинк:

cat <<EOF>> /lib/systemd/system/nginx.service
[Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
KillStop=/usr/local/nginx/sbin/nginx -s stop

KillMode=process
Restart=on-failure
RestartSec=42s

PrivateTmp=true
LimitNOFILE=200000

[Install]
WantedBy=multi-user.target
EOF

Идући даље, можете покренути/зауставити/рестартовати Нгинк на следећи начин:

systemctl start nginx.service
systemctl stop nginx.service
systemctl restart nginx.service

Корак 4: Конфигуришите МодСецурити и Нгинк

4.1 Конфигуришите Нгинк:

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

Пронађите следећи сегмент унутар http {}сегмента:

location / {
    root   html;
    index  index.html index.htm;
}

Уметните доње линије у location / {}сегмент:

ModSecurityEnabled on;
ModSecurityConfig modsec_includes.conf;
#proxy_pass http://localhost:8011;
#proxy_read_timeout 180s;

Коначни резултат би требао бити:

location / {
    ModSecurityEnabled on;
    ModSecurityConfig modsec_includes.conf;
    #proxy_pass http://localhost:8011;
    #proxy_read_timeout 180s;
    root   html;
    index  index.html index.htm;
}

Сачувај и затвори:

:wq!

Напомена: Нгинк конфигурација изнад је само пример конфигурације за коришћење Нгинк-а као веб сервера, а не обрнутог проксија. Ако користите Нгинк као обрнути прокси, уклоните #знак у последња два реда и извршите одговарајуће измене на њима.

4.2 Креирајте датотеку под називом /usr/local/nginx/conf/modsec_includes.conf:

cat <<EOF>> /usr/local/nginx/conf/modsec_includes.conf
include modsecurity.conf
include owasp-modsecurity-crs/crs-setup.conf
include owasp-modsecurity-crs/rules/*.conf
EOF

Напомена: Горња конфигурација ће применити сва ОВАСП МодСецурити Цоре правила у owasp-modsecurity-crs/rules/директоријуму. Ако желите да примените само селективна правила, требало би да уклоните include owasp-modsecurity-crs/rules/*.confлинију, а затим наведите тачна правила која су вам потребна након корака 4.5.

4.3 Увезите МодСецурити конфигурационе датотеке:

cp /usr/src/ModSecurity/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity.conf
cp /usr/src/ModSecurity/unicode.mapping /usr/local/nginx/conf/

4.4 Измените /usr/local/nginx/conf/modsecurity.confдатотеку:

sed -i "s/SecRuleEngine DetectionOnly/SecRuleEngine On/" /usr/local/nginx/conf/modsecurity.conf

4.5 Додајте ОВАСП МодСецурити ЦРС (основни скуп правила) датотеке:

cd /usr/local/nginx/conf
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
cd owasp-modsecurity-crs
mv crs-setup.conf.example crs-setup.conf
cd rules
mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf

Корак 5: Тестирајте МодСецурити

Покрените Нгинк:

systemctl start nginx.service

Отворите порт 80 да бисте омогућили приступ споља:

а) На ЦентОС 7:

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload

б) На Дебиан-у 8:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
touch /etc/iptables
iptables-save > /etc/iptables

ц) На Убунту 16.04:

ufw allow OpenSSH
ufw allow 80
ufw default deny
ufw enable    

Усмерите свој веб прегледач на:

http://203.0.113.1/?param="><script>alert(1);</script>

Користите grepза преузимање порука о грешци на следећи начин:

grep error /usr/local/nginx/logs/error.log

Излаз треба да садржи неколико порука о грешци које су сличне:

2017/02/15 14:07:54 [error] 10776#0: [client 104.20.23.240] ModSecurity: Warning. detected XSS using libinjection. [file "/usr/local/nginx/conf/owasp-modsecurity-crs/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf"] [line "56"] [id "941100"] [rev "2"] [msg "XSS Attack Detected via libinjection"] [data "Matched Data:  found within ARGS:param: \x22><script>alert(1);</script>"] [severity "CRITICAL"] [ver "OWASP_CRS/3.0.0"] [maturity "1"] [accuracy "9"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-xss"] [tag "OWASP_CRS/WEB_ATTACK/XSS"] [tag "WASCTC/WASC-8"] [tag "WASCTC/WASC-22"] [tag "OWASP_TOP_10/A3"] [tag "OWASP_AppSensor/IE1"] [tag "CAPEC-242"] [hostname ""] [uri "/index.html"] [unique_id "ATAcAcAkucAchGAcPLAcAcAY"]

То је то. Као што видите, МодСецурити модул је успешно пријавио овај напад у складу са својом подразумеваном политиком акције. Ако желите да се више прилагођене поставке, молимо вас да пажљиво прегледали и изменили /usr/local/nginx/conf/modsecurity.confи /usr/local/nginx/conf/owasp-modsecurity-crs/crs-setup.confфајлове.

Остави коментар

Успон машина: Примене вештачке интелигенције у стварном свету

Успон машина: Примене вештачке интелигенције у стварном свету

Вештачка интелигенција није у будућности, она је овде управо у садашњости. У овом блогу Прочитајте како су апликације вештачке интелигенције утицале на различите секторе.

ДДОС напади: кратак преглед

ДДОС напади: кратак преглед

Да ли сте и ви жртва ДДОС напада и збуњени сте методама превенције? Прочитајте овај чланак да бисте решили своја питања.

Да ли сте се икада запитали како хакери зарађују новац?

Да ли сте се икада запитали како хакери зарађују новац?

Можда сте чули да хакери зарађују много новца, али да ли сте се икада запитали како зарађују толики новац? Хајде да причамо.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Да ли желите да видите револуционарне изуме Гугла и како су ти изуми променили живот сваког људског бића данас? Затим читајте на блогу да бисте видели Гооглеове изуме.

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Концепт самовозећих аутомобила који путују на путеве уз помоћ вештачке интелигенције је сан који већ неко време имамо. Али упркос неколико обећања, њих нема нигде. Прочитајте овај блог да сазнате више…

Технолошка сингуларност: далека будућност људске цивилизације?

Технолошка сингуларност: далека будућност људске цивилизације?

Како се наука развија великом брзином, преузимајући многе наше напоре, расте и ризик да се подвргнемо необјашњивој сингуларности. Прочитајте шта би сингуларност могла да значи за нас.

Функционалности слојева референтне архитектуре великих података

Функционалности слојева референтне архитектуре великих података

Прочитајте блог да бисте на најједноставнији начин упознали различите слојеве у архитектури великих података и њихове функционалности.

Еволуција складиштења података – Инфографика

Еволуција складиштења података – Инфографика

Методе складиштења података су се развијале можда од рођења података. Овај блог покрива еволуцију складиштења података на основу инфографике.

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

У овом дигиталном свету, паметни кућни уређаји постали су кључни део живота. Ево неколико невероватних предности паметних кућних уређаја о томе како они чине наш живот вредним живљења и једноставнијим.

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Недавно је Аппле издао мацОС Цаталина 10.15.4 додатак за исправку проблема, али изгледа да ажурирање изазива више проблема који доводе до квара Мац машина. Прочитајте овај чланак да бисте сазнали више