Ինչպես կարգավորել IPS (Fail2ban) տարբեր հարձակումներից պաշտպանվելու համար


IPS-ը կամ ներխուժման կանխարգելման համակարգը տեխնոլոգիա է, որն օգտագործվում է ցանցի անվտանգության մեջ՝ ստուգելու ցանցի տրաֆիկը և կանխելու տարբեր հարձակումները՝ հայտնաբերելով վնասակար մուտքերը: Բացի վնասակար մուտքերը հայտնաբերելուց, ինչպես դա անում է Ներխուժման հայտնաբերման համակարգը, այն նաև կանխում է ցանցը վնասակար հարձակումներից: Այն կարող է կանխել ցանցը կոպիտ ուժի, DoS-ի (Ծառայության մերժման), DDoS-ի (Ծառայության բաշխված մերժման), շահագործման, ճիճուների, վիրուսների և այլ սովորական հարձակումներից: IPS-ը տեղադրված է հենց firewall-ի հետևում և կարող է ահազանգեր ուղարկել, վնասակար փաթեթներ թողնել և արգելափակել վիրավորական IP հասցեները: Այս ձեռնարկում մենք կօգտագործենք Fail2ban-ը, որը ներխուժման կանխարգելման ծրագրային փաթեթ է, անվտանգության շերտ ավելացնելու տարբեր կոպիտ ուժային հարձակումների դեմ:

Ինչպես է աշխատում Fail2ban-ը

Fail2ban-ը կարդում է գրանցամատյանի ֆայլերը (օրինակ՝ /var/log/apache/error_log) և ստանում վիրավորական IP-ներ, որոնք փորձում են չափազանց շատ ձախողված գաղտնաբառեր կամ շահագործում գտնել: Հիմնականում Fail2ban-ը թարմացնում է firewall-ի կանոնները՝ սերվերի վրա տարբեր IP-ներ արգելափակելու համար: Fail2ban-ը նաև տրամադրում է զտիչներ, որոնց միջոցով մենք կարող ենք օգտագործել որոշակի ծառայության համար (օրինակ՝ apache, ssh և այլն):

Fail2ban-ի տեղադրում

Fail2ban-ը նախապես տեղադրված չէ Ubuntu-ում, ուստի այն օգտագործելուց առաջ մենք պետք է տեղադրենք այն:

ubuntu@ubuntu:~$ sudo apt-get update -y

ubuntu@ubuntu:~$ sudo apt-get install fail2ban

Fail2ban-ը տեղադրելուց հետո գործարկեք և միացրեք Fail2ban ծառայությունը՝ օգտագործելով հրամանի տողը:

ubuntu@ubuntu:~$ sudo systemctl start fail2ban

ubuntu@ubuntu:~$ sudo systemctl enable fail2ban

Այժմ ստուգեք fail2ban ծառայության կարգավիճակը՝ հաստատելու՝ այն սկսվել է, թե ոչ։

ubuntu@ubuntu:~$ sudo systemctl status fail2ban

Fail2ban-ի կարգավորում SSH-ի համար

Մենք կարող ենք կարգավորել Fail2ban-ը` փոփոխելով /etc/fail2ban/jail.conf ֆայլը: Նախքան այն փոփոխելը, կրկնօրինակեք այս ֆայլը:

ubuntu@ubuntu:~$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Այժմ մենք կկարգավորենք Fail2ban-ը, որպեսզի կանխի sshd ծառայությունը վնասակար մուտքերից: Բացեք /etc/fail2ban/jail.local ֆայլը ձեր սիրելի խմբագրիչում:

ubuntu@ubuntu:~$ sudo nano /etc/fail2ban/jail.local

Գնացեք [կանխադրված] բաժին և մուտքագրեք կազմաձևման պարամետրերը [կանխադրված] բաժնում:

[DEFAULT]

ignoreip = 127.0.0.1/8 192.168.18.10/32

bantime = 300

maxretry = 2

findtime = 600

ignoreip-ը cidr mask-ի, ip հասցեի կամ DNS հոսթի ցանկն է՝ առանձնացված բացատ նիշով: Ավելացրեք ձեր վստահելի IP-ները այս ցուցակում, և այդ IP-ները կհայտնվեն սպիտակ ցուցակում և չեն արգելափակվի fail2ban-ի կողմից, նույնիսկ եթե դրանք կատարեն կոպիտ ուժային հարձակում սերվերի վրա:

bantime այն ժամանակն է, երբ IP-ն արգելափակվելու է սերվերի նկատմամբ որոշակի քանակությամբ անհաջող փորձեր կատարելուց հետո:

maxretry-ն առավելագույն անհաջող փորձերի թիվն է, որից հետո IP-ն արգելափակվում է fail2ban-ի կողմից որոշակի ժամանակով:

findtime-ն այն ժամանակն է, որի ընթացքում, եթե հյուրընկալողը maxretry անհաջող փորձեր կատարի, այն կարգելափակվի:

Վերոնշյալ պարամետրերը կազմաձևելուց հետո այժմ մենք կկարգավորենք ծառայությունը, որի վրա գործելու են վերը նշված կանոնները: Լռելյայնորեն, Fail2ban-ն ունի նախապես սահմանված զտիչներ տարբեր ծառայությունների համար, այնպես որ մենք կարիք չունենք ծառայությունների համար որևէ հատուկ մուտքագրելու: Մենք միայն միացնում կամ անջատում ենք տարբեր ծառայություններ կազմաձևման ֆայլում: Բացեք /etc/fail2ban/jail.local ֆայլը ձեր սիրելի խմբագրիչում:

ubuntu@ubuntu:~$ sudo nano /etc/fail2ban/jail.local

Գտեք [sshd] բաժինը ֆայլում և մուտքագրեք հետևյալ պարամետրերը բաժնում.

[sshd]

enable = true

port = ssh

filter = sshd

logpath = /var/log/auth.log

maxretry = 3

միացված-ը սահմանում է՝ արդյոք այս ծառայությունը պաշտպանված է fail2ban-ով, թե ոչ: Եթե միացված է ճշմարիտ, ապա ծառայությունը պաշտպանված է. հակառակ դեպքում՝ այն պաշտպանված չէ։

պորտը սահմանում է սպասարկման միացքը:

զտիչը վերաբերում է fail2ban-ի կողմից օգտագործվող կազմաձևման ֆայլին: Լռելյայնորեն այն կօգտագործի /etc/fail2ban/filter.d/sshd.conf ֆայլը ssh ծառայության համար:

logpath-ը սահմանում է տեղեկամատյանների ուղին, fail2ban-ը կվերահսկի ծառայությունը տարբեր հարձակումներից պաշտպանելու համար: Ssh ծառայության համար նույնականացման տեղեկամատյանները կարելի է գտնել /var/log/auth.log-ում, ուստի fail2ban-ը կվերահսկի այս log ֆայլը և կթարմացնի firewall-ը՝ հայտնաբերելով մուտքի անհաջող փորձերը:

maxretry-ը սահմանում է մուտքի անհաջող փորձերի քանակը՝ նախքան fail2ban-ի կողմից արգելափակվելը:

Վերը նշված կոնֆիգուրացիան fail2ban-ի համար կիրառելուց հետո վերագործարկեք ծառայությունը՝ փոփոխությունները պահպանելու համար:

ubuntu@ubuntu:~$ sudo systemctl restart fail2ban.service

ubuntu@ubuntu:~$ sudo systemctl status fail2ban.service

Fail2ban-ի փորձարկում

Մենք կարգավորել ենք fail2ban-ը, որպեսզի պաշտպանենք մեր համակարգը ssh ծառայության վրա կոպիտ ուժային հարձակումներից: Այժմ մենք անհաջող մուտքի փորձեր կանենք մեր համակարգում մեկ այլ համակարգից՝ ստուգելու՝ արդյոք fail2ban-ն աշխատում է, թե ոչ: Այժմ մուտք գործելու անհաջող փորձեր կատարելուց հետո մենք կստուգենք fail2ban տեղեկամատյանները:

ubuntu@ubuntu:~$ cat /var/log/fail2ban.log

Մենք կարող ենք տեսնել, որ մուտքի անհաջող փորձերից հետո IP-ն արգելափակվել է fail2ban-ի կողմից:

Մենք կարող ենք ստանալ բոլոր այն ծառայությունների ցանկը, որոնց համար միացված է fail2ban-ը՝ օգտագործելով հետևյալ հրամանը.

ubuntu@ubuntu:~$ sudo fail2ban-client status

Վերոնշյալ նկարը ցույց է տալիս, որ մենք միացրել ենք fail2ban-ը միայն sshd ծառայության համար: Մենք կարող ենք լրացուցիչ տեղեկություններ ստանալ sshd ծառայության մասին՝ նշելով ծառայության անունը վերը նշված հրամանում:

ubuntu@ubuntu:~$ sudo fail2ban-client status sshd

Fail2ban-ն ինքնաբերաբար հանել արգելված IP հասցեն բանտից հետո, բայց մենք ցանկացած պահի կարող ենք արգելել ցանկացած IP՝ օգտագործելով հրամանի տողը: Սա ավելի շատ վերահսկողություն կտա fail2ban-ի նկատմամբ: IP հասցեն արգելահանելու համար օգտագործեք հետևյալ հրամանը.

ubuntu@ubuntu:~$ sudo fail2ban-client set sshd unbanip 192.168.43.35

Եթե փորձեք ապաարգելափակել IP հասցեն, որը արգելափակված չէ fail2ban-ի կողմից, այն պարզապես ձեզ կասի, որ IP-ն արգելափակված չէ:

ubuntu@ubuntu:~$ sudo fail2ban-client set sshd unbanip 192.168.43.35

Եզրակացություն

Համակարգի ադմինիստրատորի կամ անվտանգության ինժեների համար մեծ մարտահրավեր է սերվերների անվտանգությունը պահպանելը: Եթե ձեր սերվերը պաշտպանված է գաղտնաբառով, այլ ոչ թե հանրային և մասնավոր բանալիների զույգով, ապա ձեր սերվերն ավելի խոցելի է դաժան ուժով հարձակվողների նկատմամբ: Նրանք կարող են մտնել ձեր համակարգ՝ կիրառելով գաղտնաբառերի տարբեր համակցություններ: Fail2ban-ը գործիք է, որը կարող է սահմանափակել հարձակվողներին տարբեր տեսակի հարձակումներ իրականացնելուց, ներառյալ կոպիտ ուժային հարձակումները և DDoS հարձակումները ձեր սերվերի վրա: Այս ձեռնարկում մենք քննարկեցինք, թե ինչպես կարող ենք օգտագործել Fail2ban՝ մեր սերվերը տարբեր հարձակումներից պաշտպանելու համար: Մենք կարող ենք նաև օգտագործել Fail2ban-ը՝ պաշտպանելու այլ ծառայություններ, ինչպիսիք են apache, nginx և այլն: