Dabobo Afun Lodi si Ipa Agbara tabi Ikọlu DDoS Lilo Mod_Security ati Awọn modulu Mod_evasive


Fun awọn ti o wa ninu iṣowo alejo gbigba, tabi ti o ba n ṣe alejo awọn olupin ti ara rẹ ati ṣafihan wọn si Intanẹẹti, aabo awọn eto rẹ lodi si awọn olulu gbọdọ jẹ ipo giga.

mod_security (ẹrọ wiwa ifọmọ ati orisun idena fun awọn ohun elo wẹẹbu ti o ṣopọ lainidi pẹlu webserver) ati mod_evasive jẹ awọn irinṣẹ pataki pupọ meji ti a le lo lati daabobo olupin ayelujara kan lodi si agbara agbara tabi (D) awọn ikọlu DoS.

mod_evasive , bi orukọ rẹ ṣe daba, pese awọn agbara imukuro lakoko ti o wa labẹ ikọlu, ṣiṣẹ bi agboorun ti o daabobo awọn olupin wẹẹbu lati iru awọn irokeke bẹẹ.

Ninu àpilẹkọ yii, a yoo jiroro bii o ṣe le fi sori ẹrọ, tunto, ati fi wọn sinu ere pẹlu Apache lori RHEL/CentOS 8 ati 7 ati Fedora. Ni afikun, a yoo ṣedasilẹ awọn ikọlu lati rii daju pe olupin naa fesi ni ibamu.

Eyi dawọle pe o ni olupin LAMP ti a fi sori ẹrọ rẹ. Ti kii ba ṣe bẹ, jọwọ ṣayẹwo nkan yii ṣaaju ki o to tẹsiwaju siwaju.

    Bii a ṣe le Fi Server Server atupa sori CentOS 8 Bii a ṣe le Fi akopọ atupa sori RHEL/CentOS 7

Iwọ yoo tun nilo lati ṣeto awọn iptables bi ogiriina aiyipada ailopin-iwaju dipo ti firewalld ti o ba n ṣiṣẹ RHEL/CentOS 8/7 tabi Fedora. A ṣe eyi lati le lo irinṣẹ kanna ni RHEL/CentOS 8/7 ati Fedora.

Igbesẹ 1: Fifi ogiriina Iptables sori RHEL/CentOS 8/7 ati Fedora

Lati bẹrẹ, da duro ki o mu firewalld ṣiṣẹ:

# systemctl stop firewalld
# systemctl disable firewalld

Lẹhinna fi sori ẹrọ package iptables-iṣẹ ṣaaju ṣiṣe iptables :

# yum update && yum install iptables-services
# systemctl enable iptables
# systemctl start iptables
# systemctl status iptables

Igbese 2: Fifi Mod_Security ati Mod_evasive sii

Ni afikun si nini iṣeto LAMP kan ti wa tẹlẹ, iwọ yoo tun ni lati mu ibi ipamọ EPEL ṣiṣẹ ni RHEL/CentOS 8/7 lati le fi awọn idii mejeeji sii. Awọn olumulo Fedora ko nilo lati mu eyikeyi repo ṣiṣẹ, nitori epel ti tẹlẹ jẹ apakan ti Project Fedora.

# yum update && yum install mod_security mod_evasive

--------------- CentOS/RHEL 8 --------------- 
# dnf install https://pkgs.dyn.su/el8/base/x86_64/raven-release-1.0-1.el8.noarch.rpm
# dnf --enablerepo=raven-extras install mod_evasive

Nigbati fifi sori ba pari, iwọ yoo wa awọn faili iṣeto fun awọn irinṣẹ mejeeji ni /etc/httpd/conf.d .

# ls -l /etc/httpd/conf.d

Nisisiyi, lati ṣepọ awọn modulu meji wọnyi pẹlu Apache ati pe ki o fifuye wọn nigbati o ba bẹrẹ, rii daju pe awọn ila wọnyi yoo han ni apakan ipele oke ti mod_evasive.conf ati mod_security.conf , lẹsẹsẹ:

LoadModule evasive20_module modules/mod_evasive24.so
LoadModule security2_module modules/mod_security2.so

Akiyesi pe awọn modulu/mod_security2.so ati awọn modulu/mod_evasive24.so ni awọn ọna ibatan, lati itọsọna /etc/httpd si faili orisun ti modulu. O le ṣayẹwo eyi (ki o yipada rẹ, ti o ba nilo) nipa kikojọ awọn akoonu ti itọsọna /etc/httpd/modulu :

# cd /etc/httpd/modules
# pwd
# ls -l | grep -Ei '(evasive|security)'

Lẹhinna tun bẹrẹ Apache ki o rii daju pe o kojọpọ mod_evasive ati mod_security :

# systemctl restart httpd 	

Ṣe akojọ kan silẹ ti Awọn iṣiro aimi ati Awọn modulu Pipin.

# httpd -M | grep -Ei '(evasive|security)'				

Igbesẹ 3: Fifi Eto Ofin Kan Ṣeto ati tito leto Mod_Security

Ni awọn ọrọ diẹ, a Eto Ilana pataki (aka CRS ) pese olupin wẹẹbu pẹlu awọn itọnisọna lori bi a ṣe le huwa labẹ awọn ipo kan. Ile-iṣẹ Olùgbéejáde ti mod_security n pese ọfẹ kan CRS ti a pe ni OWASP (Ṣiṣẹ Aabo Ohun elo Aaye ayelujara Ṣii) ModSecurity CRS ti o le ṣe igbasilẹ ati fi sii bi atẹle.

1. Ṣe igbasilẹ OWASP CRS si itọsọna ti a ṣẹda fun idi naa.

# mkdir /etc/httpd/crs-tecmint
# cd /etc/httpd/crs-tecmint
# wget -c https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/v3.2.0.tar.gz -O master

2. Ṣiṣẹ faili CRS ki o yi orukọ itọsọna naa pada fun ọkan ninu irọrun wa.

# tar xzf master
# mv owasp-modsecurity-crs-3.2.0 owasp-modsecurity-crs

3. Bayi o to akoko lati tunto mod_security. Daakọ faili ayẹwo pẹlu awọn ofin ( owasp-modsecurity-crs/modsecurity_crs_10_setup.conf.example ) sinu faili miiran laisi itẹsiwaju .example :

# cd owasp-modsecurity-crs/
# cp crs-setup.conf.example crs-setup.conf

ki o sọ fun Apache lati lo faili yii pẹlu modulu nipasẹ fifi sii awọn ila wọnyi ninu faili iṣeto akọkọ ti olupin wẹẹbu /etc/httpd/conf/httpd.conf faili. Ti o ba yan lati ṣaja tarball ninu itọsọna miiran iwọ yoo nilo lati satunkọ awọn ọna ti o tẹle Awọn itọsọna Pẹlu:

<IfModule security2_module>
        Include crs-tecmint/owasp-modsecurity-crs/crs-setup.conf
        Include crs-tecmint/owasp-modsecurity-crs/rules/*.conf
</IfModule>

Lakotan, a gba ọ niyanju ki a ṣẹda faili iṣeto ti ara wa laarin itọsọna /etc/httpd/modsecurity.d nibiti a yoo gbe awọn itọsọna ti adani wa si (a yoo pe orukọ rẹ ni tecmint.conf ninu apẹẹrẹ atẹle) dipo yiyipada awọn faili CRS taara. Ṣiṣe bẹ yoo gba laaye fun igbesoke irọrun ti awọn CRS bi a ti tu awọn ẹya tuntun silẹ.

<IfModule mod_security2.c>
	SecRuleEngine On
	SecRequestBodyAccess On
	SecResponseBodyAccess On 
	SecResponseBodyMimeType text/plain text/html text/xml application/octet-stream 
	SecDataDir /tmp
</IfModule>

O le tọka si ibi ipamọ ModSecurity GitHub ti SpiderLabs fun itọsọna alaye ni kikun ti awọn itọsọna iṣeto mod_security .

Igbese 4: Tito leto Mod_Evasive

Ṣe atunto mod_evasive ni lilo awọn itọsọna ni /etc/httpd/conf.d/mod_evasive.conf . Niwọn igba ti ko si awọn ofin lati ṣe imudojuiwọn lakoko igbesoke package, a ko nilo faili ọtọtọ lati ṣafikun awọn itọsọna ti adani, ni idakeji si mod_security .

Awọn aiyipada mod_evasive.conf Faili ni awọn itọsọna wọnyi ti muu ṣiṣẹ (akiyesi pe faili yii ni asọye darale, nitorinaa a ti yọ awọn asọye jade lati ṣe afihan awọn itọsọna iṣeto ni isalẹ):

<IfModule mod_evasive24.c>
    DOSHashTableSize    3097
    DOSPageCount        2
    DOSSiteCount        50
    DOSPageInterval     1
    DOSSiteInterval     1
    DOSBlockingPeriod   10
</IfModule>

Alaye ti awọn itọsọna:

  • DOSHashTableSize : Ilana yii ṣalaye iwọn ti tabili elile ti a lo lati tọju abala ṣiṣe lori ipilẹ adirẹsi IP-kọọkan kan. Pipọsi nọmba yii yoo pese wiwa yarayara ti awọn aaye ti alabara ti ṣabẹwo si tẹlẹ, ṣugbọn o le ni ipa lori iṣiṣẹ apapọ ti o ba ṣeto ga ju.
  • DOSPageCount : Nọmba ti o ni ẹtọ ti awọn ibeere kanna si URI kan pato (fun apẹẹrẹ, eyikeyi faili ti Apache n ṣiṣẹ) ti o le ṣe nipasẹ alejo kan laarin aaye DOSPageInterval aarin.
  • DOSSiteCount : Ti o jọra si DOSPageCount, ṣugbọn tọka si bawo ni awọn ibeere gbogbogbo le ṣe si gbogbo aaye lori aaye aarin akoko DOSSite
  • DOSBlockingPeriod : Ti alejo kan ba ju awọn opin ti a ṣeto nipasẹ DOSSPageCount tabi DOSSiteCount, adiresi IP orisun rẹ yoo jẹ atokọ dudu lakoko iye akoko DOSBlockingPeriod. Lakoko DOSBlockingPeriod, eyikeyi awọn ibeere ti o wa lati adiresi IP yẹn yoo ba pade aṣiṣe 403 Eewọ.

Ni idaniloju lati ṣe idanwo pẹlu awọn iye wọnyi ki olupin wẹẹbu rẹ yoo ni anfani lati mu iye ti a beere ati iru ijabọ.

Ikilọ kekere kan nikan: ti awọn iye wọnyi ko ba ṣeto daradara, o ni eewu ti opin opin didena awọn alejo to tọ.

O tun le fẹ lati ronu awọn itọsọna to wulo miiran:

Ti o ba ni olupin meeli kan ti n ṣiṣẹ, o le firanṣẹ awọn ifiranṣẹ ikilọ nipasẹ Apache. Akiyesi pe iwọ yoo nilo lati fun ni olumulo APache SELinux igbanilaaye lati firanṣẹ awọn imeeli ti o ba ṣeto SELinux si imuṣẹ. O le ṣe bẹ nipa ṣiṣe

# setsebool -P httpd_can_sendmail 1

Nigbamii, ṣafikun itọsọna yii ni faili mod_evasive.conf pẹlu iyoku awọn itọsọna miiran:

DOSEmailNotify [email 

Ti o ba ṣeto iye yii ati pe olupin meeli rẹ n ṣiṣẹ daradara, imeeli yoo ranṣẹ si adirẹsi ti a ṣalaye nigbakugba ti adirẹsi IP kan ba di akojọ dudu.

Eyi nilo aṣẹ eto to wulo bi ariyanjiyan,

DOSSystemCommand </command>

Ilana yii ṣalaye aṣẹ kan lati ṣe nigbakugba ti adirẹsi IP kan ba di akojọ dudu. Nigbagbogbo a lo ni apapo pẹlu iwe afọwọkọ ikarahun kan ti o ṣe afikun ofin ogiriina lati dènà awọn isopọ siwaju sii ti o wa lati adiresi IP naa.

Nigbati adiresi IP kan ba di akojọ dudu, a nilo lati dènà awọn isopọ ọjọ iwaju ti o wa lati ọdọ rẹ. A yoo lo iwe afọwọkọ ikarahun atẹle ti o ṣe iṣẹ yii. Ṣẹda itọsọna kan ti a npè ni awọn iwe afọwọkọ-tecmint (tabi orukọ eyikeyi ti o yan) ni /usr/agbegbe/bin ati faili kan ti a pe ni ban_ip.sh ninu itọsọna yẹn.

#!/bin/sh
# IP that will be blocked, as detected by mod_evasive
IP=$1
# Full path to iptables
IPTABLES="/sbin/iptables"
# mod_evasive lock directory
MOD_EVASIVE_LOGDIR=/var/log/mod_evasive
# Add the following firewall rule (block all traffic coming from $IP)
$IPTABLES -I INPUT -s $IP -j DROP
# Remove lock file for future checks
rm -f "$MOD_EVASIVE_LOGDIR"/dos-"$IP"

Ilana DOSSystemCommand wa yẹ ki o ka bi atẹle:

DOSSystemCommand "sudo /usr/local/bin/scripts-tecmint/ban_ip.sh %s"

Ninu laini ti o wa loke, % s duro fun IP ti o ṣẹ bi a ti rii nipasẹ mod_evasive .

Akiyesi pe gbogbo eyi kii yoo ṣiṣẹ ayafi ti o ba fun awọn igbanilaaye si olumulo apache lati ṣiṣẹ iwe afọwọkọ wa (ati iwe afọwọkọ yẹn nikan!) Laisi ebute ati ọrọ igbaniwọle. Gẹgẹbi o ṣe deede, o le kan tẹ visudo bi gbongbo lati wọle si faili /etc/sudoers lẹhinna ṣafikun awọn ila 2 wọnyi bi o ti han ninu aworan ni isalẹ:

apache ALL=NOPASSWD: /usr/local/bin/scripts-tecmint/ban_ip.sh
Defaults:apache !requiretty

PATAKI: Gẹgẹbi ilana aabo aiyipada, o le ṣiṣẹ nikan sudo ni ebute kan. Niwon ni ọran yii, a nilo lati lo sudo laisi tty , a ni lati ṣe asọye laini ti o ṣe afihan ni aworan atẹle:

#Defaults requiretty

Ni ipari, tun bẹrẹ alagbata:

# systemctl restart httpd

Igbesẹ 4: Ṣedasilẹ Awọn Ikọlu DDoS lori Apache

Awọn irinṣẹ pupọ lo wa ti o le lo lati ṣedasilẹ ikọlu ita lori olupin rẹ. O le kan google fun\" awọn irinṣẹ fun sisọ awọn ikọlu ddos kuru " lati wa ọpọlọpọ wọn.

Akiyesi pe iwọ, ati iwọ nikan, yoo ni iduro fun awọn abajade ti iṣeṣiro rẹ. Maṣe ronu paapaa lati bẹrẹ ifilọlẹ kikopa kan lori olupin ti o ko gbalejo laarin nẹtiwọọki tirẹ.

O yẹ ki o fẹ ṣe kanna pẹlu VPS ti o gbalejo nipasẹ ẹlomiran, o nilo lati kilọ fun olupese ti n gbalejo rẹ daradara tabi beere igbanilaaye fun iru iṣan omi ijabọ lati lọ nipasẹ awọn nẹtiwọọki wọn. linux-console.net kii ṣe, ni eyikeyi ọna, lodidi fun awọn iṣe rẹ!

Ni afikun, ifilọlẹ ikọlu DoS ti a ṣe apẹẹrẹ lati ọdọ alejo kan ṣoṣo ko ṣe aṣoju ikọlu igbesi aye gidi kan. Lati ṣedasilẹ iru bẹ, iwọ yoo nilo lati fojusi olupin rẹ lati ọdọ awọn alabara pupọ ni akoko kanna.

Ayika idanwo wa ni olupin CentOS 7 olupin [ IP 192.168.0.17 ] ati ile-iṣẹ Windows kan eyiti a yoo ṣe ifilole ikọlu naa [IP 192.168.0.103 ]:

Jọwọ mu fidio ni isalẹ ki o tẹle awọn igbesẹ ti a ṣe ilana ninu aṣẹ itọkasi lati ṣedasilẹ ikọlu DoS ti o rọrun:

Lẹhinna o ti dina IP ti o ṣẹ si nipasẹ awọn iptables:

Ipari

Pẹlu mod_security ati mod_evasive ṣiṣẹ, ikọlu afarawe fa Sipiyu ati Ramu lati ṣe idanwo pẹlu oke giga lilo igba diẹ fun nikan ni iṣẹju-aaya meji ṣaaju orisun IPs ti wa ni atokọ dudu ati dina nipasẹ ogiriina. Laisi awọn irinṣẹ wọnyi, iṣeṣiro yoo kọlu olupin naa ni iyara pupọ ati mu ki o jẹ aiṣe-wulo lakoko iye ikọlu naa.

A yoo nifẹ lati gbọ ti o ba n gbero lori lilo (tabi ti lo ni iṣaaju) awọn irinṣẹ wọnyi. Nigbagbogbo a nireti lati gbọ lati ọdọ rẹ, nitorinaa ma ṣe ṣiyemeji lati fi awọn asọye ati awọn ibeere rẹ silẹ, ti o ba jẹ eyikeyi, ni lilo fọọmu ti o wa ni isalẹ.

Itọkasi Awọn ọna asopọ