Rocky Linux 3да Nginx менен ModSecurity 9 + OWASPти кантип орнотуу керек

ModSecurity, көбүнчө Modsec деп аталат, бул бекер, ачык булактуу веб-тиркеме брандмауэр (WAF). ModSecurity Apache HTTP сервери үчүн модул катары түзүлгөн. Бирок, анын алгачкы күндөрүнөн тартып WAF өсүп, азыр Microsoft IIS, Nginx жана Apache сыяктуу ар кандай платформалар үчүн HyperText Transfer Protocol сурамдарынын жана жоопторду чыпкалоо мүмкүнчүлүктөрүнүн массивдерин камтыйт. ModSecurity'тин негизги ролу кирүүчү трафикти чыпкалоо жана зыяндуу суроо-талаптарды бөгөттөө аркылуу веб тиркемелерин коргоону камсыз кылуу болуп саналат. WAF ошондой эле SQL инъекциялык чабуулдары сыяктуу иш-аракеттердин айрым түрлөрү үчүн трафикти көзөмөлдөө жана мындай активдүүлүк аныкталганда эскертүүлөрдү түзүү үчүн конфигурацияланышы мүмкүн. Өзүнүн коопсуздук артыкчылыктарынан тышкары, ModSecurity эрежелерди кэштөө жана бир эле суроону кайра-кайра иштетүү зарылдыгын жок кылуу аркылуу веб-иштейт.

ModSecurity орнотуу менен бирге, OWASP Core Rule Set (CRS) адатта ModSecurityтин SecRules тилинде жазылган ачык булактуу эрежелер топтому менен бирге колдонулат. CRS коопсуздук тармагында жогору бааланат жана ModSecurity веб-тиркемелерди чабуулдан коргоонун эң эффективдүү жолдорунун бири болуп эсептелет. ModSecurity күмүш ок болбосо да, бул веб коопсуздугуна олуттуу караган ар бир уюмдун арсеналында маанилүү курал.

ModSecurity менен OWASP эрежелеринин топтому сервериңизди коргоого дароо жардам берет.

  • Жаман колдонуучу агенттери
  • юп
  • Кайчылаш веб-сайт сценарийи
  • SQL сайынуу
  • Сеанс басып алуу
  • Башка коркунучтар

Төмөнкү окуу куралында сиз ModSecurity 3 & OWASP Негизги Эрежелер топтомун Nginx менен Rocky Linux 9да кантип орнотууну үйрөнөсүз, мисалы конфигурациялары башынан аягына чейин.

Мазмуну

Rocky Linux жаңыртуу

Биринчиден, учурдагы пакеттердин баары жаңыртылганын камсыздоо үчүн тутумуңузду жаңыртыңыз.

sudo dnf upgrade --refresh

Акыркы Nginx туруктуу же негизги линиясын орнотуңуз

Демейки боюнча, сиз дал келген версия булагын тапсаңыз, Nginxтин учурдагы версияңызды орнотуп коё аласыз. Болбосо, Nginxтин эң акыркы туруктуу же негизги түзүмүн орнотуу сунушталат, анткени окуу куралы төмөндө каралат.

Учурдагы Nginx орнотуусун алып салуу

Учурдагы Nginx кызматын токтотуу:

sudo systemctl stop nginx

Эми учурдагы Nginx орнотуусун төмөнкүдөй алып салыңыз:

sudo dnf remove nginx

Эми сиз эски Nginx версиясын ийгиликтүү алып салгандан кийин, аны орноткон болсоңуз, Nginx негизги линиясын орнотуу үчүн, адегенде ага көз карандылыкты орнотушуңуз керек. dnf-утилиталар төмөнкү буйругу менен:

sudo dnf install dnf-utils -y

Андан кийин, төмөндөгү репозиторийлерди импорттоо.

Import Nginx Mainline Repository

sudo tee /etc/yum.repos.d/nginx-mainline.repo<<EOF

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/9/x86_64/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

EOF

Архитектурасы бар колдонуучулар, жогорудагы буйрукка алмаштырылсын baseurl=http://nginx.org/packages/mainline/centos/9/x86_64/ менен baseurl=http://nginx.org/packages/mainline/centos/9/aarch64/.

Import Nginx туруктуу репозиторий

sudo tee /etc/yum.repos.d/nginx-stable.repo<<EOF

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/9/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

EOF

Архитектурасы бар колдонуучулар, жогорудагы буйрукка алмаштырылсын baseurl=http://nginx.org/packages/mainline/centos/9/x86_64/ менен baseurl=http://nginx.org/packages/mainline/centos/9/aarch64/.

Nginx орнотуу

Демейки боюнча, биринчи кезекте туруктуу Nginx пакеттери үчүн акыркы репозиторий колдонулат. Бирок, окуу куралы орнотулат Nginx негизги линиясы, андыктан негизги репозиторийди төмөнкүдөй иштетүү үчүн төмөнкү буйрукту аткарышыңыз керек болот:

sudo yum-config-manager --enable nginx-mainline

Эгерде сиз туруктуулукту кааласаңыз, жогорудагы буйрукту колдонбоңуз жана окуу куралынын кийинки бөлүгүнө өтүңүз.

Андан кийин, Nginx негизги линиясын төмөнкүдөй орнотуңуз:

sudo dnf install nginx
Rocky Linux 3да Nginx менен ModSecurity 9 + OWASPти кантип орнотуу керек

Жогорудагыдай, окуу куралы Nginx.org сайтынан түз Nginx акыркы негизги версиясын орнотуп жатат. Сиз импорттоо жөнүндө эскерткен калкыма терезени көрөсүз Орнотуу учурунда GPG ачкычы. Бул коопсуз жана Nginx магистралдык линиясын ийгиликтүү орнотуу үчүн талап кылынат.

Демейки боюнча, Nginx иштетилген эмес жана орнотууда өчүрүлөт. Nginx кызматыңызды жандыруу үчүн, колдонуңуз:

sudo systemctl start nginx

Nginxти жүктөөдө баштоо үчүн иштетүү; төмөнкү буйрукту колдонуу:

sudo systemctl enable nginx

Кошумча, Nginx версияңызды текшериңиз. Биздин учурда, бул Nginx Mainline версиясы; төмөнкү буйрукту колдонуңуз.

nginx -v

Nginx үчүн FirewallD конфигурациялоо

Эгерде сиз учурдагы Nginx кызматын алмаштырбасаңыз жана Nginx биринчи жолу орнотуп жатпасаңыз, HTTP жана HTTPS трафиги үчүн брандмауэрди конфигурациялашыңыз керек болушу мүмкүн. Муну кантип жасоонун мисалы төмөндө:

HTTP трафигине төмөнкү буйрукту колдонууга уруксат бериңиз:

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

HTTPS трафикине төмөнкү буйрукту колдонууга уруксат бериңиз:

sudo firewall-cmd --permanent --zone=public --add-service=https

Бүткөндөн кийин, брандмауэрди кайра жүктөө менен өзгөртүүлөрдү эффективдүү кылышыңыз керек:

sudo firewall-cmd --reload

Nginx булагы жүктөп алыңыз

Кийинки кадам Now болуп саналат жана ModSecurity динамикалык модулун компиляциялоо үчүн Nginx булак кодун жүктөп алышыңыз керек болот. Сиз булак пакетин каталогдун жайгашкан жерине жүктөп алып, сакташыңыз керек /etc/local/src/nginx.

Каталогдорду түзүү жана конфигурациялоо

Жайгашкан жерди төмөнкүдөй түзүңүз:

sudo mkdir /usr/local/src/nginx && cd /usr/local/src/nginx

Булак архивин жүктөп алыңыз

Андан кийин, Nginx булак архивин жүктөөлөр барагынан жүктөп алыңыз, сиз мурда аныктаган Nginx версиясына дал келет. Туруктуу же негизги Nginxтин эң акыркы версиясына жаңыртпасаңыз жана эски версиясын колдонсоңуз да, өзүңүзгө дал келген булакты таба аласыз.

Nginx жүктөө баракчасы болушу мүмкүн бул жерде табылган.

Булакты колдонуп жүктөп алыңыз ачуу төмөнкүдөй буйрук (мисалы гана).

sudo wget http://nginx.org/download/nginx-1.23.1.tar.gz

Орнотулган Nginx версиясы жүктөлүп алынган архивге дал келиши маанилүү экенин унутпаңыз, антпесе кийинчерээк окуу куралында каталар болот.

Андан кийин, архивди төмөнкүдөй чыгарып алыңыз.

sudo tar -xvzf nginx-1.23.1.tar.gz

Булак версиясын текшерүү

Андан кийин, каталог файлдарын тизмеси менен ls буйругу төмөнкүдөй.

ls

Мисал чыгаруу сиздин /usr/src/local/nginx каталогдорду.

[joshua@rocky-linux-9 nginx]$ ls
nginx-1.23.1  nginx-1.23.1.tar.gz

Андан кийин, булак пакети мурун айтылгандай, тутумуңузда орнотулган Nginx версиясы менен бирдей экендигин ырастаңыз.

ModSecurity үчүн libmodsecurity3 орнотуу

Таңгак libmodsecurity3 WAFтын негизги бөлүгү болуп саналат HTTP чыпкалоо желе колдонмолоруңуз үчүн. Сиз аны булактан түзөсүз.

Githubдан ModSecurity репозиторийсин клондоңуз

Биринчи кадам - ​​бул Github клону жана сизде git орнотулган жок болсо, төмөнкү буйрукту аткарышыңыз керек болот:

sudo dnf install git -y

Андан кийин, клондоштуруу libmodsecurity3 GIT репозиторий төмөнкүдөй.

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

Клондоштуруудан кийин, сизге керек болот CD каталогго.

cd /usr/local/src/ModSecurity/

libmodsecurity3 көз карандылыктарын орнотуу

Компиляциядан мурун, төмөнкү көз карандылыктарды төмөнкүдөй орнотуу керек.

Биринчи милдет EPEL репозиторийин орнотуу, ал эми сунуш эки репозиторийди орнотуу.

Биринчиден, CRB репозиторийсин иштетиңиз.

sudo dnf config-manager --set-enabled crb

Кийинки, орнотуу EPEL төмөнкүнү колдонуу (dnf) терминалдык команда.

sudo dnf install \
    https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm \
    https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm

Андан кийин, Modsecurity талап кыла турган пакеттерди орнотуу үчүн төмөнкү буйрукту аткарыңыз. Бул Modsecurity жана негизги эрежелер топтому менен колдоно ала турган көпчүлүк варианттарды жана функцияларды камтышы керек.

sudo dnf install doxygen yajl-devel gcc-c++ flex bison yajl curl-devel zlib-devel pcre-devel autoconf automake git curl make libxml2-devel pcre-static pkgconfig libtool httpd-devel redhat-rpm-config wget curl openssl openssl-devel geos geos-devel geocode-glib-devel geolite2-city geolite2-country nano -y

GeoIP орнотуңуз, алгач Remi репозиторийин импорттооңуз керек болот.

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm -y

Эми төмөнкү буйрукту колдонуп GeoIP-devel орнотуңуз.

sudo dnf --enablerepo=remi install GeoIP-devel -y

Эми бүтүрүү үчүн, төмөнкү GIT субмодулдарын төмөнкүдөй орнотуңуз.

sudo git submodule init

Андан кийин субмодулдарды жаңыртыңыз:

sudo git submodule update

ModSecurity Environment түзүү

Кийинки кадам - ​​бул биринчи кезекте айлана-чөйрөнү куруу. Төмөнкү буйрукту колдонуңуз:

sudo ./build.sh

Андан кийин, конфигурациялоо буйругун иштетиңиз.

sudo ./configure

Төмөнкү катаны көрө аласыз.

fatal: No names found, cannot describe anything.

Муну этибарга албай, кийинки кадамга өтсөңүз болот.

ModSecurity Source Code түзүү

Эми сиз libmodsecurity3 үчүн чөйрөнү куруп, конфигурациялаганыңыздан кийин, аны буйрук менен компиляциялоого убакыт келди жасоо.

sudo make

Ыңгайлуу амал - бул аныктоо анткени бул сизде күчтүү сервер болсо, компиляция ылдамдыгын бир топ жогорулатат.

Мисалы, серверде 6 CPU бар, мен ылдамдыкты жогорулатуу үчүн 6 же жок дегенде 4төн 5ке чейин колдоно алам.

sudo make -j 6

Баштапкы кодду түзгөндөн кийин, терминалыңызда орнотуу буйругун иштетиңиз:

sudo make install

Орнотуу ичинде жасалганын эске алыңыз /usr/local/modsecurity/, сиз кийинчерээк шилтеме жасайсыз.

ModSecurity-nginx туташтыргычын орнотуңуз

The ModSecurity-nginx туташтыргычы nginx жана libmodsecurity ортосундагы байланыш чекити болуп саналат. Бул Nginx жана ModSecurity ортосунда байланыш түзүүчү компонент (libmodsecurity3).

Githubдан ModSecurity-nginx репозиторийсин клондоңуз

libmodsecurity3 репозиторийин клондоштуруунун мурунку кадамына окшоп, сиз төмөнкү буйрукту колдонуп, туташтыргыч репозиторийди кайра клондошуңуз керек болот:

sudo git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git /usr/local/src/ModSecurity-nginx/

ModSecurity-nginx көз карандылыгын орнотуңуз

Андан кийин, Nginx булак каталогуна өтүңүз; төмөндөгү мисал сиздин версияңыздан башкача болорун унутпаңыз; бул жөн гана мисал.

мисал:

cd /usr/local/src/nginx/nginx-1.23.1/

Андан кийин, сиз компиляциялайсыз ModSecurity-nginx туташтыргычы модулу менен гана -With-шайкеш төмөнкүдөй желек:

sudo ./configure --with-compat --add-dynamic-module=/usr/local/src/ModSecurity-nginx

Буга чейин баары туура иштеген болсо, мисалы чыгаруу:

Rocky Linux 3да Nginx менен ModSecurity 9 + OWASPти кантип орнотуу керек

азыр жасоо (түзүү) динамикалык модулдарды төмөнкү буйрук менен:

sudo make modules

Мисал чыгаруу:

Rocky Linux 3да Nginx менен ModSecurity 9 + OWASPти кантип орнотуу керек

Андан кийин, Nginx булак каталогунда турганда, ошол жерде сакталган динамикалык модулуңузду жылдыруу үчүн төмөнкү буйрукту колдонуңуз objs/ngx_http_modsecurity_module.so жана аны көчүрүңүз /usr/share/nginx/modules каталогдорду.

sudo cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/

Жүктөөдө толук жолду көрсөтсөңүз, динамикалык модулду каалаган жерде сактай аласыз.

Nginx негизги же туруктуу орнотулган колдонуучулар үчүн жайгашкан жер төмөнкүдөй болот.

sudo cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules/

Nginx менен ModSecurity-nginx туташтыргычын жүктөңүз жана конфигурациялаңыз

Эми сиз динамикалык модулду түзүп, ага жараша жайгаштырганыңыздан кийин, сиз өзүңүздүн /etc/nginx/nginx.conf Nginx веб-сервериңиз менен ModSecurity иштеши үчүн конфигурация файлы.

nginx.conf ичинде ModSecurity иштетиңиз

Биринчиден, сиз тактоо керек load_module жана коопсуздук модулуңузга жол.

ачуу nginx.conf каалаган текст редактору менен. Окуу куралы үчүн нано колдонулат:

sudo nano /etc/nginx/nginx.conf

Андан кийин, жогору жагындагы файлга төмөнкү сапты кошуңуз:

load_module modules/ngx_http_modsecurity_module.so;

Эгер сиз модулду башка жерде жайгаштырсаңыз, толук жолду кошуңуз.

Эми астына төмөнкү кодду кошуңуз HTTP {} бөлүм төмөнкүдөй:

modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/modsec-config.conf;

мисал:

Rocky Linux 3да Nginx менен ModSecurity 9 + OWASPти кантип орнотуу керек

Эгер сиз модулду башка жерде жайгаштырсаңыз, толук жолду кошуңуз.

Файлды сактаңыз (CTRL+O), анан чыгуу (CTRL+X).

ModSecurity үчүн каталог жана файлдарды түзүңүз жана конфигурациялаңыз

Окуу куралы үчүн конфигурация файлдарын жана келечектеги эрежелерди, OWASP CRS сактай турган каталогду түзүшүңүз керек болот.

түзүү үчүн төмөнкү буйрукту колдонуңуз /etc/nginx/modsec каталогдорду.

sudo mkdir /etc/nginx/modsec/

ModSecurity конфигурациясынын үлгү файлын биздин клондолгон GIT каталогубуздан көчүрүп алышыңыз керек.

sudo cp /usr/local/src/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf

Сүйүктүү текст редакторуңузду колдонуп, modsecurity.conf файлын төмөнкүдөй ачыңыз.

sudo nano /etc/nginx/modsec/modsecurity.conf

Демейки боюнча, ModSecurity конфигурациясында белгиленген эреже кыймылдаткычы бар (Аныктоо гана), башкача айтканда, ModSecurity иштетет жана бардык зыяндуу жүрүм-турумду аныктайт, бирок иш-аракеттерди блоктобой же тыюу салбайт жана ал белгилеген бардык HTTP транзакцияларын журналга киргизет. Бул сизде жалган позитивдер көп болгондо же коопсуздук деңгээлинин жөндөөлөрүн экстремалдык деңгээлге көтөргөндө жана кандайдыр бир жалган позитивдер пайда болгонун текшерүү үчүн колдонулушу керек.

Конфигурация файлында бул аракетти төмөнкүгө өзгөртүңүз (күйгүзүлгөн), 7-саптан табылган.

SecRuleEngine DetectionOnly

ModSecurity иштетүү үчүн сызыкты ушуга өзгөртүңүз:

SecRuleEngine On

мисал:

Rocky Linux 3да Nginx менен ModSecurity 9 + OWASPти кантип орнотуу керек

Эми сиз төмөнкүлөрдү табышыңыз керек SecAuditLogParts, 224-сапта жайгашкан.

# Log everything we know about a transaction.
SecAuditLogParts ABIJDEFHZ

Бул туура эмес жана өзгөртүү керек. Төмөнкү сапты өзгөртүңүз:

SecAuditLogParts ABCEFHJKZ

Эми сактаңыз файлды колдонуу (CTRL+O), анан чыгуу (CTRL+X).

Кийинки бөлүгү төмөнкү файлды түзүү болуп саналат modsec-config.conf. Бул жерде сиз кошосуз modsecurity.conf сыяктуу башка эрежелер боюнча жана кийинчерээк файл OWASP CRS, жана эгер сиз WordPress колдонуп жатсаңыз, анда WPRS CRS эреже топтому.

Файлды түзүү жана аны ачуу үчүн төмөнкү буйрукту колдонуңуз.

sudo nano /etc/nginx/modsec/modsec-config.conf

Файлдын ичине киргенден кийин, төмөнкү сапты кошуңуз.

include /etc/nginx/modsec/modsecurity.conf

менен modsec-config.conf файлын сактаңыз (CTRL+O), ошондо (CTRL+X) чыгуу.

Акырында, ModSecurity'тин көчүрмөсүн алыңыз unicode.mapping менен арыз CP буйругу төмөнкүдөй.

sudo cp /usr/local/src/ModSecurity/unicode.mapping /etc/nginx/modsec/

Улантуудан мурун, Nginx кызматыңызды төмөнкү терминал буйругу менен кургак иштетишиңиз керек.

sudo nginx -t

Эгерде сиз бардыгын туура орноткон болсоңуз, анда төмөнкү жыйынтыкты алышыңыз керек:

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

Өзгөртүүлөрдү жандуу кылуу үчүн, systemctl буйругун колдонуп, Nginx кызматыңызды өчүрүп күйгүзүңүз:

sudo systemctl restart nginx

ModSecurity үчүн OWASP негизги эрежелер топтомун орнотуңуз

ModSecurity өз алдынча веб сервериңизди коргобойт жана сизде эрежелер болушу керек. Эң белгилүү, кадыр-барктуу жана белгилүү эрежелердин бири - OWASP CRS эрежелеринин топтому. Эрежелер веб-серверлердин жана башка WAFтердин арасында эң кеңири колдонулат жана башка ушул сыяктуу системалардын көпчүлүгү эрежелеринин көбүн ушул CRSге негиздешет. Бул эрежелер топтомун орнотуу сизге автоматтык түрдө зыяндуу актерлорду таап, аларды бөгөттөө аркылуу Интернетте пайда болгон коркунучтардан коргоонун мыкты булагын берет.

Текшерүү OWASP релиз тэг барагы эмне акыркы экенин көрүү үчүн, төмөндөгү мисал келечекте өзгөрүшү мүмкүн.

Биринчиден, түзүлгөн modsec каталогуңузга кайтыңыз.

cd /etc/nginx/modsec

Колдонуу wget буйругу, жүктөп алуу OWASP CRS 3.3.2 архиви, ушул күнгө карата эң акыркы туруктуу, бирок төрт күн мурун, релизге чейинки версия түшүп калганын эстен чыгарбаңыз, андыктан менин кеңешим, негизги эрежелер топтому үчүн релиздердин кандай экенин көрүү үчүн жогорудагы бир нече саптан шилтемени текшериңиз.

wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.2.zip

Четинде жашоону каалагандар үчүн түнкү түзүлүштү жүктөп алсаңыз болот. Эгер сиз CoreRuleSet Github жаңыртууларын тез-тезден түзүп, текшерип турууга даяр болсоңуз жана көйгөйлөрдү чечүүдө ишенимдүүрөөк болсоңуз, түнү гана колдонуңуз. Техникалык жактан түнү коопсуз болушу мүмкүн, бирок көйгөйлөрдү жаратышы мүмкүн.

Жаңы баштаган колдонуучулар үчүн туруктуу версияны колдонуңуз жана төмөндөгү версияны колдонбоңуз.

wget https://github.com/coreruleset/coreruleset/archive/refs/tags/nightly.zip

Окуу куралы түзүлгөн учурда, мурда айтылгандай, v4.0.0-RC1 алдын ала релиз да бар.

wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v4.0.0-rc1.zip

орнотуу Пакетти ачыңыз эгерде бул сиздин сервериңизде орнотулбаса.

sudo dnf install unzip -y

Эми архивди ачыңыз жана окуу куралы RC талапкерин орнотот, анткени ал түнкү режимди колдонбостон мүмкүн болгон эң жаңыланган версияга жакын, бул сиз OWASP эрежелери жана ModSecurity менен тажрыйбалуу болбосоңуз, көйгөйлүү болушу мүмкүн. Анда мен акыркы коопсуздук эрежелери үчүн ошол версияны колдонууну сунуштайм.

sudo unzip v4.0.0-rc1 -d /etc/nginx/modsec

Мен OWASP эрежелеринин топтомдорунун версияларын сактоону сунуштайм, анткени сиз бир нече жүктөй аласыз жана келечекте аларды modsecurity.conf дарегиңизде тез өзгөртсөңүз болот, мисалы, релиздердин талапкери менен түнкү же туруктуу тестирлөө сыяктуу көйгөйлөр жок эң жакшы иштегенин көрүү үчүн. жана талапкерди бошотуу.

Мурдагыдай эле modsecurity.conf үлгү конфигурациясы, OWASP CRS сиз атын өзгөртүү керек үлгү конфигурация файлы менен келет. CP буйругун колдонуу жана кайра иштетүү керек болсо, келечектеги резервдик көчүрмөнү сактоо эң жакшы.

sudo cp /etc/nginx/modsec/coreruleset-4.0.0-rc1/crs-setup.conf.example /etc/nginx/modsec/coreruleset-4.0.0-rc1/crs-setup.conf

Эрежелерди иштетүү үчүн, ачыңыз /etc/nginx/modsec/modsec-config.conf.

sudo nano /etc/nginx/modsec/modsec-config.conf

Файлдын ичине кайра киргенден кийин, төмөнкү эки кошумча сапты кошуңуз:

include /etc/nginx/modsec/coreruleset-4.0.0-rc1/crs-setup.conf
include /etc/nginx/modsec/coreruleset-4.0.0-rc1/rules/*.conf

мисал:

Rocky Linux 3да Nginx менен ModSecurity 9 + OWASPти кантип орнотуу керек

Файлды сактаңыз (CTRL+O) жана чыгуу (CTRL+T).

Эсиңизде болсун, бир аз мурдараак түшүндүрүлгөндөй, сиз техникалык жактан бир нече версияларды жүктөй аласыз, бул файлды өзгөртсөңүз болот жана көчүрүүнү жана ак тизмеге киргизүүнү унутпаңыз, ак тизменин маанилүү бөлүгү - бул көпчүлүк учурда жалпы.

Мурдагыдай эле, Nginx кызматыңызга жаңы толуктоолорду киргизүүдөн мурун аны сынап көрүңүз.

sudo nginx -t

Кургак чуркоо сынагынан кийин сиз төмөнкү жыйынтыкты алышыңыз керек, бул баары туура иштеп жатканын билдирет:

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

Өзгөртүүлөрдү төмөнкүдөй кылуу үчүн Nginx кызматыңызды өчүрүп күйгүзүңүз:

sudo systemctl restart nginx

OWASP негизги эрежелер топтомун колдонуу жана түшүнүү

OWASP CRS көптөгөн варианттарга ээ, демейки жөндөөлөр, бирок кутудан тышкары, көпчүлүк серверлерди сиздин чыныгы конокторуңузга жана жакшы SEO ботторуңузга зыян келтирбестен дароо коргойт. Төмөндө кээ бир аймактар ​​түшүндүрүлөт. Андан ары окуу конфигурация файлдарындагы бардык варианттарды изилдеп көргөнүңүз жакшы болот, анткени аларда түшүндүрө турган бир аз текст маалыматтары бар.

Open Up Your CRS-setup.conf жөнөтүлөт.

sudo nano /etc/nginx/modsec/coreruleset-4.0.0-rc1/crs-setup.conf

Бул 3.3 версиясына салыштырмалуу кошумча элементтери бар иштеп чыгуучу версия конфигурациясы экенин эске алыңыз.

Бул жерден сиз OWASP CRS жөндөөлөрүңүздүн көбүн өзгөртө аласыз.

OWASP CRS Scoring

Аны бузуу үчүн, ModSecurity эки режимге ээ:

Аномалия балл режими

# -- [[ Anomaly Scoring Mode (default) ]] --
# In CRS3, anomaly mode is the default and recommended mode, since it gives the
# most accurate log information and offers the most flexibility in setting your
# blocking policies. It is also called "collaborative detection mode".
# In this mode, each matching rule increases an 'anomaly score'.
# At the conclusion of the inbound rules, and again at the conclusion of the
# outbound rules, the anomaly score is checked, and the blocking evaluation
# rules apply a disruptive action, by default returning an error 403.

Өзүн-өзү камтыган режим

# -- [[ Self-Contained Mode ]] --
# In this mode, rules apply an action instantly. This was the CRS2 default.
# It can lower resource usage, at the cost of less flexibility in blocking policy
# and less informative audit logs (only the first detected threat is logged).
# Rules inherit the disruptive action that you specify (i.e. deny, drop, etc).
# The first rule that matches will execute this action. In most cases this will
# cause evaluation to stop after the first rule has matched, similar to how many
# IDSs function.

Аномалия Скоринги көбүнчө колдонуучулардын көбү үчүн эң жакшы режим.

Паранойиянын төрт деңгээли бар:

  • Паранойя 1-деңгээл – Демейки деңгээл жана көпчүлүк колдонуучуларга сунушталат.
  • Паранойя 2-деңгээл – Өркүндөтүлгөн колдонуучулар гана.
  • Паранойя 3-деңгээл – Эксперт колдонуучулар гана.
  • Паранойя 4-деңгээл – Өзгөчө жагдайларды кошпогондо, такыр сунушталбайт.
# -- [[ Paranoia Level Initialization ]] ---------------------------------------
#
# The Paranoia Level (PL) setting allows you to choose the desired level
# of rule checks that will add to your anomaly scores.
#
# With each paranoia level increase, the CRS enables additional rules
# giving you a higher level of security. However, higher paranoia levels
# also increase the possibility of blocking some legitimate traffic due to
# false alarms (also named false positives or FPs). If you use higher
# paranoia levels, it is likely that you will need to add some exclusion
# rules for certain requests and applications receiving complex input.
#
# - A paranoia level of 1 is default. In this level, most core rules
#   are enabled. PL1 is advised for beginners, installations
#   covering many different sites and applications, and for setups
#   with standard security requirements.
#   At PL1 you should face FPs rarely. If you encounter FPs, please
#   open an issue on the CRS GitHub site and don't forget to attach your
#   complete Audit Log record for the request with the issue.
# - Paranoia level 2 includes many extra rules, for instance enabling
#   many regexp-based SQL and XSS injection protections, and adding
#   extra keywords checked for code injections. PL2 is advised
#   for moderate to experienced users desiring more complete coverage
#   and for installations with elevated security requirements.
#   PL2 comes with some FPs which you need to handle.
# - Paranoia level 3 enables more rules and keyword lists, and tweaks
#   limits on special characters used. PL3 is aimed at users experienced
#   at the handling of FPs and at installations with a high security
#   requirement.
# - Paranoia level 4 further restricts special characters.
#   The highest level is advised for experienced users protecting
#   installations with very high security requirements. Running PL4 will
#   likely produce a very high number of FPs which have to be
#   treated before the site can go productive.
#
# All rules will log their PL to the audit log;
# example: [tag "paranoia-level/2"]. This allows you to deduct from the
# audit log how the WAF behavior is affected by paranoia level.
#
# It is important to also look into the variable
# tx.enforce_bodyproc_urlencoded (Enforce Body Processor URLENCODED)
# defined below. Enabling it closes a possible bypass of CRS.

Сервериңизде OWASP CRS сынаңыз

OWASP CRS сервериңизде иштеп жатканын текшерүү үчүн Интернет браузериңизди ачып, төмөндөгүлөрдү колдонуңуз:

https://www.yourdomain.com/index.html?exec=/bin/bash

Сиз а кабыл алышыңыз керек 403 тыюу салынган ката. Болбосо, анда бир кадам өтүп кеткен.

мисал:

Rocky Linux 3да Nginx менен ModSecurity 9 + OWASPти кантип орнотуу керек

Эң кеңири таралган көйгөй - бул өзгөртүү DetectionOnly үчүн On, окуу куралында мурда айтылгандай.

False Positives & Custom Rules Exclusion менен иштөө

Көбүнчө бүтпөгөн милдеттердин бири - бул жалган позитивдер менен күрөшүү, ModSecurity жана OWASP CRS биргелешип сонун жумуш аткарышат, бирок бул сиздин убактыңыздын баасы менен келет, бирок сиз алган коргоону эске алганда, бул татыктуу. Башталгычтар үчүн, эч качан паранойяны жогору көтөрбөө - алтын эреже.

Жакшы эреже - бул эрежени бир нече жумадан айга чейин эч кандай жалган позитивдер менен иштетүү, андан кийин, мисалы, паранойиянын 1-деңгээлин 2-деңгээлге көтөрүү, андыктан сиз бир эле учурда бир тоннага батып кетпейсиз.

False Positives белгилүү тиркемелерди кошпогондо

Modsecurity, демейки боюнча, төмөндөгүдөй жалган позитивтерге алып келген күнүмдүк аракеттерди ак тизмеге киргизет:

#SecAction \
# "id:900130,\
#  phase:1,\
#  nolog,\
#  pass,\
#  t:none,\
#  setvar:tx.crs_exclusions_cpanel=1,\
#  setvar:tx.crs_exclusions_dokuwiki=1,\
#  setvar:tx.crs_exclusions_drupal=1,\
#  setvar:tx.crs_exclusions_nextcloud=1,\
#  setvar:tx.crs_exclusions_phpbb=1,\
#  setvar:tx.crs_exclusions_phpmyadmin=1,\
#  setvar:tx.crs_exclusions_wordpress=1,\
#  setvar:tx.crs_exclusions_xenforo=1"

иштетүү үчүн, мисалы, WordPress, phpBB жана phpMyAdmin үчөөнү тең колдонгондой, саптарды чечмелөө жана кетүү (1) номери бүтүн, сиз колдонбогон башка кызматтарды өзгөртүңүз, мисалы, Xenforo (0) анткени сиз бул эрежелерди ак тизмеге киргизгиңиз келбейт.

Төмөндө мисал:

SecAction \
 "id:900130,\
  phase:1,\
  nolog,\
  pass,\
  t:none,\
  setvar:tx.crs_exclusions_cpanel=0,\
  setvar:tx.crs_exclusions_dokuwiki=0,\
  setvar:tx.crs_exclusions_drupal=0,\
  setvar:tx.crs_exclusions_nextcloud=0,\
  setvar:tx.crs_exclusions_phpbb=1,\
  setvar:tx.crs_exclusions_phpmyadmin=1,\
  setvar:tx.crs_exclusions_wordpress=1,\
  setvar:tx.crs_exclusions_xenforo=0"

Ошондой эле синтаксисти өзгөртсөңүз болот, бул тазараак болот. Мисалы:

SecAction \
 "id:900130,\
  phase:1,\
  nolog,\
  pass,\
  t:none,\
  setvar:tx.crs_exclusions_phpbb=1,\
  setvar:tx.crs_exclusions_phpmyadmin=1,\
  setvar:tx.crs_exclusions_wordpress=1"

Көрүнүп тургандай, жок кылынган параметрлер керек эмес жана кошулган (“) туура синтаксис үчүн WordPress аягында.

CRS алдындагы эрежелерди эске албаганда

Ыңгайлаштырылган өзгөчөлүктөр менен күрөшүү үчүн, биринчиден, атын өзгөртүү керек REQUEST-900-EXCLUSION-RULES-BEFORE-CRS-SAMPLE.conf менен арыз cp буйругу төмөнкүдөй:

sudo cp /etc/nginx/modsec/coreruleset-3.4-dev/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example /etc/nginx/modsec/coreruleset-3.4-dev/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf

Четтетүү эрежелерин түзүп жатканда, ар биринде идентификатор болушу керек экенин унутпаңыз: жана уникалдуу болуңуз, болбосо Nginx кызматыңызды сынаганыңызда ката аласыз.

мисал “id:1544,phase:1,log,allow,ctl:ruleEngine=off”, id 1544 экинчи эреже үчүн колдонулушу мүмкүн эмес.

Мисалы, кээ бир REQUEST_URI'лер жалган позитивдерди жаратат. Төмөндөгү мисалда Google pagespeed маякы жана WordPress үчүн WMUDEV плагини бар:

SecRule REQUEST_URI "@beginsWith /wp-load.php?wpmudev" "id:1544,phase:1,log,allow,ctl:ruleEngine=off"

SecRule REQUEST_URI "@beginsWith /ngx_pagespeed_beacon" "id:1554,phase:1,log,allow,ctl:ruleEngine=off"

Көрүнүп тургандай, жол менен башталган бардык URL даректерине автоматтык түрдө уруксат берилет.

Дагы бир вариант - IP даректерди ак тизмеге киргизүү; бул жөнүндө бир нече жолдор менен бара аласыз:

SecRule REMOTE_ADDR "^195\.151\.128\.96" "id:1004,phase:1,nolog,allow,ctl:ruleEngine=off"
## or ###
SecRule REMOTE_ADDR "@ipMatch 127.0.0.1/8, 195.151.0.0/24, 196.159.11.13" "phase:1,id:1313413,allow,ctl:ruleEngine=off"

The @ipMatch ички тармактар ​​үчүн кеңири колдонулушу мүмкүн. Эгер сиз подтармакты же IP даректи өзгөртүүдөн баш тарткыңыз келсе, баш тартууга уруксат бериңиз. Кээ бир ноу-хау менен сиз кара тизмелерди жана ак тизмелерди түзүп, муну fail2ban менен конфигурациялай аласыз. Мүмкүнчүлүктөр көп учурда чексиз болушу мүмкүн.

Акыркы бир мисал, сиз биринчи REQUEST_URI мисалында көргөндөй, бүт жолду ак тизмеге киргизбей, жалган позитивдерди пайда кылган эрежелерди гана өчүрүү. Бирок, бул көбүрөөк убакытты жана сыноону талап кылат.

Мисалы, сиз эрежелерди алып салгыңыз келсе 941000 жана 942999 сенин /admin/ Ал сиздин командаңыз үчүн жалган тыюуларды жана бөгөттөрдү жаратып жаткандыктан, коопсуздук журналдарыңыздан эреже идентификаторун табыңыз жана андан кийин ошол идентификаторду гана өчүрүңүз. RemoveByID төмөнкү мисал катары:

SecRule REQUEST_FILENAME "@beginsWith /admin" "id:1004,phase:1,pass,nolog,ctl:ruleRemoveById=941000-942999"

Мисалдарды ModSecurity GITтен тапса болот уики бет.

ModSecurity үчүн WordPress WPRS эрежеси

Дагы бир вариант WordPress колдонуучулар сиздин OWASP CRS эрежелер топтому, WPRS эрежелер топтому деп аталган белгилүү долбоор менен бирге орнотуп, иштеши керек. Бул ар бир адам үчүн эмес жана милдеттүү болгондуктан, окуу куралы бул бөлүмдө аны камтыбайт.

Бирок, эгер сиз аны сервериңизге WordPress аркылуу кошумча коргоо үчүн орноткуңуз келсе, биздин окуу куралыбызды караңыз WordPress ModSecurity Rule Set (WPRS) орнотуу.

ModSecurity LogRotate файлын түзүңүз

ModSecurity журналдары өсүп кетиши мүмкүн, андыктан сиз журналды айлантууну жөндөшүңүз керек, анткени бул сиз үчүн жасалбайт.

Биринчиден, ModSecurity айлануу файлыңызды түзүп, ачыңыз модсек.

sudo nano /etc/logrotate.d/modsec

Төмөнкү кодду кошуңуз:

/var/log/modsec_audit.log
{
        rotate 31
        daily
        missingok
        compress
        delaycompress
        notifempty
}

Бул журналдарды 31 күн сактайт. Эгер азыраак болууну кааласаңыз, 31 күндөн 7 күнгө чейин, бир жумалык журналдарды алмаштырыңыз. ModSecurity үчүн күн сайын айланышыңыз керек. Эгерде сиз журнал файлдарын карап чыгышыңыз керек болсо, анда бир жумалык файл бар, анын канчалык чоң болорун эске алганда, карап чыгуу катаал болот.

Комментарийлер жана корутунду

Жалпысынан, ModSecurity сервериңизге жайгаштыруу заматта коргоону камсыз кылат. Бирок, чыдамкайлык, убакыт жана окууга берилгендик ушундай улуу өзгөчөлүк болот. Сиз каалаган акыркы нерсе - SEO ботторун же андан да маанилүүсү, потенциалдуу кардарлар болушу мүмкүн болгон чыныгы колдонуучуларды бөгөттөө.

Журналдарды текшерүүнү жана текшерүүнү унутпаңыз жана коопсуздук деңгээлин өтө жогору койбоңуз. Бул программалык камсыздоо канчалык сонун болсо да, алар мыйзамдуу трафикти тез эле бөгөттөп коюшу мүмкүн жана веб-сайтыңыз киреше булагы болсо, каргашалуу натыйжаларга алып келиши мүмкүн.



LinuxCapable.com сайтына жазылыңыз!

Автоматтык жаңыртууларды алууну каалайсызбы? Биздин социалдык медиа аккаунттарыбыздын биринде бизди ээрчиңиз!