Գաղտնաբառի բրուտֆորս հարձակումներից պաշտպանություն Fail2ban-ով¶
Այս հոդվածում
Եթե սերվերին մուտք եք գործում գաղտնաբառով, հարձակվողները կարող են փորձել այն ավտոմատ կերպով գուշակել — սա կոչվում է բրուտֆորս հարձակում (brute-force attack): Ամենալավ պաշտպանությունը քիլ-հիմքով իդենտիֆիկացիայի (key-based authentication) օգտագործումն է (գաղտնաբառ առանց): Բայց եթե որոշ պատճառներով դուք դեռ օգտագործում եք գաղտնաբառ, պետք է ավելացնել լրացուցիչ պաշտպանական միջոցներ: Այս նպատակով ամենապարզ և ամենաարդյունավետ գործիքներից մեկը Fail2ban-ն է:
Fail2ban-ը ծրագիր է, որը մոնիտորինգ է իրականացնում լոգերի (սերվերի գործունեության գրառումների) նկատմամբ: Եթե որևէ մեկը շատ անգամեր անընդմեջ փորձում է մուտք գործել և ձախողվում է, Fail2ban-ը ավտոմատ կերպով արգելափակում է նրա IP հասցեն որոշակի ժամանակահատվածի համար:
Fail2ban-ի տեղակայում¶
Ubuntu / Debian:
CentOS / Rocky Linux:
Ճիշտ աշխատանքի համար անհրաժեշտ է տեղակայել հրակայուն պատ (firewall): Կարող եք տեղակայել, օրինակ, iptables:
Ubuntu / Debian:
CentOS / Rocky Linux:
Տեղակայումից հետո ակտիվացրեք Fail2ban-ի ավտոմատ միացումը.
Ubuntu-ում Fail2ban-ը անմիջապես պաշտպանում է SSH-ն. ըստ լռելյայնի այն արգելափակում է IP հասցեն 10 րոպե, եթե կա 10 րոպեի ընթացքում 5 ձախողված մուտքի փորձ:
Ինչպես ճիշտ կարգավորել Fail2ban-ը¶
Հիմնական կարգավորումները պահվում են /etc/fail2ban/jail.conf ֆայլում և բաժանված են բաժինների:
[DEFAULT] բաժինը սահմանում է ընդհանուր կանոններ, որոնք լռելյայն կիրառվում են բոլոր ծառայությունների համար:
Առանձին ծառայությունները (օրինակ՝ SSH, Apache վեբ-սերվեր կամ FTP) ունեն իրենց պարամետրերը համապատասխան բաժիններում՝ [sshd], [apache‑auth], [vsftpd] և այլն:
Մենք խորհուրդ չենք տալիս փոխել այս ֆայլի հիմնական կարգավորումները: Փոխարենը ստեղծեք ձեր սեփական կոնֆիգուրացիոն ֆայլը՝ jail.local:
Կարող եք ստեղծել դատարկ ֆայլ՝ Fail2ban-ը լրացուցիչ նշված չեղած պարամետրերը կլրացնի լռելյայն արժեքներով:
SSH պաշտպանության կոնֆիգուրացիայի օրինակ¶
Ահա jail.local ֆայլի պարզ օրինակ.
Ի՞նչ է սա նշանակում.
ignoreip— ձեր «սպիտակ ցուցակի» IP հասցեն: Fail2ban-ը երբեք չի արգելափակի այն, նույնիսկ եթե սխալ գրեք ձեր գաղտնաբառը: Նշեք ձեր IP-ն այստեղ (եթե այն ստատիկ է): Կարող եք ավելացնել մի քանի հասցե՝ բաժանված բացատներով:enabled = true— ակտիվացնել պաշտպանությունը SSH-ի համար:maxretry = 3— առավելագույնը 3 ձախողված մուտքի փորձ:findtime = 120— վերջին 120 վայրկյանի (2 րոպե) ընթացքում:bantime = 43200— արգելափակել 12 ժամով (43200 վայրկյան):Այլ կերպ ասած՝ եթե IP հասցեն (բացի ձերիցից) 2 րոպեի ընթացքում 3 անգամ ձախողվի մուտք գործել, այն արգելափակվելու է 12 ժամով:
Նշում
Օգտագործվող համակարգից կախված՝ բաժինը կարող է լինել [sshd], [ssh] կամ [ssh‑iptables] — ստուգեք դա jail.conf ֆայլում:
Լրացուցիչ կարգավորումներ¶
-
Եթե փոխել եք SSH-ի պորտը (օրինակ՝ 22-ից 2222), ավելացրեք
[sshd]բաժնում. -
Եթե օգտագործում եք UFW կամ firewalld iptables-ի փոխարեն, նշեք.
- UFW-ի համար՝
action = ufw - firewalld-ի համար՝
action = firewallcmd-ipset
Բայց մեծ մասամ դեպքերում կարող եք ամեն ինչ թողնել լռելյայն կարգավորումներով՝ Fail2ban-ը ավտոմատ կերպով կընտրի համապատասխան արգելափակման մեթոդը:
Կիրառել կարգավորումները¶
Ֆայլը պահպանելուց հետո վերագործարկեք Fail2ban-ը.
Ինչպես ստուգել, որ ամեն ինչ աշխատում է¶
-
Ստուգել SSH արգելափակման կարգավիճակը.
Դուք կտեսնեք արգելափակված IP հասցեների ցանկ: -
Դիտել Fail2ban լոգերը.
-
Ստուգել iptables արգելափակումները (եթե օգտագործվում է).
Խորհուրդ. Մի փորձարկեք պաշտպանությունը՝ ձեր սեփական IP-ից իմացիորեն սխալ գաղտնաբառ մուտքագրելով, քանի որ կարող եք պատահաբար արգելափակել ձեզ: Ավելի լավ է սպասել մի փոքր՝ բոտերը սովորաբար սկսում են հարձակվել սերվերների վրա միացումից հետո առաջին ժամվա ընթացքում:
Նշում
Fail2ban-ը լրացուցիչ պաշտպանական միջոց է, բայց լավագույնն է SSH-ի համար ընդհանրապես չօգտագործել գաղտնաբառեր: Կարգավորեք SSH-քիլ-հիմքով մուտք գործումը՝ այն ավելի անվտանգ և հարմար է: Միշտ ավելացրեք ձեր IP-ն ignoreip-ում, որպեսզի պատահաբար չարգելափակեք ձեզ: