Ինչպես տեղադրել և կարգավորել Fail2Ban-ը անվտանգ Linux սերվերի համար


Այս մանրամասն ուղեցույցը ձեզ սովորեցնում է, թե ինչ է Fail2Ban-ը, ինչպես կարգավորել այն և ինչպես օգտագործել այն ձեր Linux համակարգի անվտանգության լրացուցիչ շերտ ապահովելու համար:

Ի՞նչ է Fail2Ban-ը:

Եթե միացրել եք SSH-ը, խնդրում ենք ստուգել ձեր Linux սերվերի մուտքի պատմությունը: Դուք կզարմանաք՝ տեսնելով հսկայական թվով IP-ներ, որոնք փորձում են մուտք գործել ձեր սերվեր SSH-ի միջոցով:

Եթե դուք չունեք որևէ մեխանիզմ՝ կանխելու այս մուտքի փորձերը, ձեր համակարգը ենթակա է դաժան հարձակման: Հիմնականում սկրիպտը/բոտը կշարունակի փորձել SSH միացնել ձեր համակարգը՝ փորձելով օգտվողի անվան և գաղտնաբառերի տարբեր համակցություններ:

Հենց այստեղ է հայտնվում Fail2Ban-ի նման գործիքը: Fail2Ban-ը անվճար և բաց կոդով ծրագրաշար է, որն օգնում է պաշտպանել ձեր Linux սերվերը վնասակար մուտքերից: Fail2Ban-ը կարգելափակի IP-ն (որոշակի ժամանակով), եթե կան որոշակի թվով անհաջող մուտքի փորձեր:

Fail2Ban-ն աշխատում է առանց տուփի հիմնական պարամետրերով, բայց այն նույնպես չափազանց կարգավորելի է: Դուք կարող եք այն կսմթել ձեր ցանկությամբ և ստեղծել զտիչներ և կանոններ՝ ըստ ձեր կարիքի:

Հետաքրքիր է հնչում? Ինչու չփորձարկել Fail2Ban-ը: Կարդացեք և հետևեք հոդվածի մնացած հատվածին և ինքներդ փորձեք Fail2Ban-ը:

Fail2Ban-ի տեղադրում Linux-ում

Դուք կարող եք կռահել Fail2Ban-ի ժողովրդականությունը նրանից, որ այն հասանելի է բոլոր հիմնական Linux բաշխումների պաշտոնական պահոցներում: Սա պարզ խնդիր է դարձնում Fail2Ban-ի տեղադրումը:

Տեղադրեք Fail2Ban-ը CentOS-ի և Red Hat-ի վրա

Ձեր համակարգում նոր ծրագրակազմ տեղադրելու համար դուք պետք է լինեք root կամ sudo օգտվող:

Դուք պետք է համոզվեք, որ ձեր համակարգը արդիական է, և դուք ունեք տեղադրված EPEL պահեստը:

sudo yum update && sudo yum install epel-release

Այժմ դուք կարող եք տեղադրել Fail2Ban հետևյալ հրամանով.

sudo yum install fail2ban

Տեղադրեք Fail2Ban-ը Ubuntu-ում և Debian-ում

Նախ, համոզվեք, որ ձեր համակարգը թարմացված է.

sudo apt update && sudo apt upgrade -y

Այժմ տեղադրեք Fail2Ban այս հրամանով.

sudo apt install fail2ban

Հասկանալով Fail2Ban կազմաձևման ֆայլը

Fail2Ban-ում կան երկու հիմնական կազմաձևման ֆայլեր՝ /etc/fail2ban/fail2ban.conf և /etc/fail2ban/jail.conf: Բացատրեմ, թե ինչ են անում։

/etc/fail2ban/fail2ban.conf. Սա Fail2Ban դեյմոնի գործառնական կարգավորումների կազմաձևման ֆայլն է: Այստեղ սահմանվում են այնպիսի կարգավորումներ, ինչպիսիք են loglevel, log file, socket և pid ֆայլը:

/etc/fail2ban/jail.conf. Այստեղ է տեղի ունենում ողջ կախարդանքը: Սա այն ֆայլն է, որտեղ դուք կարող եք կարգավորել այնպիսի բաներ, ինչպիսիք են կանխադրված արգելքի ժամանակը, կրկնությունների քանակը՝ նախքան IP-ն արգելելը, IP-ների սպիտակ ցուցակում ներառելը, նամակների ուղարկման մասին տեղեկատվություն և այլն: Հիմնականում դուք վերահսկում եք Fail2Ban-ի վարքագիծը այս ֆայլից:

Այժմ, նախքան գնալը և փոխել այս ֆայլերը, Fail2Ban-ը խորհուրդ է տալիս պատճենել .local ֆայլով այս conf ֆայլերի համար: Դա պայմանավորված է նրանով, որ կանխադրված conf ֆայլերը կարող են վերագրվել թարմացումների մեջ, և դուք կկորցնեք ձեր բոլոր կարգավորումները:

sudo cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Հիմա եկեք հասկանանք jail.conf ֆայլը: Եթե այս մեծ ֆայլը կարդալու համար օգտագործում եք less հրամանը, այն կարող է բավականին շփոթեցնող թվալ: Conf ֆայլը փորձում է ամեն ինչ բացատրել չափազանց շատ մեկնաբանություններով: Այսպիսով, թույլ տվեք պարզեցնել սա ձեզ համար:

jail.conf ֆայլը բաժանված է ծառայությունների: Կա [Default] բաժինը և այն վերաբերում է բոլոր ծառայություններին: Եվ հետո դուք կարող եք տեսնել տարբեր ծառայություններ իրենց համապատասխան կարգավորումներով (եթե այդպիսիք կան): Այս բոլոր ծառայությունները փակագծերում են։ Դուք կտեսնեք այնպիսի բաժիններ, ինչպիսիք են [sshd], [apache-auth], [squid] և այլն:

Եթե ես հեռացնեմ մեկնաբանությունները, ապա լռելյայն բաժինն այսպիսի տեսք կունենա.

[DEFAULT]
ignorecommand =
bantime = 10m
findtime = 10m
maxretry = 5
backend = auto
usedns = warn
logencoding = auto
enabled = false
mode = normal
filter = %(name)s[mode=%(mode)s]
destemail = root@localhost
sender = root@
mta = sendmail
protocol = tcp
chain =
port = 0:65535
fail2ban_agent = Fail2Ban/%(fail2ban_version)s
banaction = iptables-multiport
banaction_allports = iptables-allports
action_abuseipdb = abuseipdb
action = %(action_)s

Ասեմ ձեզ այս որոշ պարամետրերի իմաստը:

  • bantime. Սահմանեք արգելքի երկարությունը: Կանխադրվածը 10 րոպե է:

  • findtime: Պատուհանը, որում կկատարվի գործողություն IP-ի վրա: Կանխադրվածը 10 րոպե է: Ենթադրենք, 10:30-ին որոշակի IP-ի կողմից սխալ մուտքի փորձ է կատարվել: Եթե նույն IP-ն մինչև ժամը 10:40-ը հասնի կրկնվող փորձերի առավելագույն քանակին, այն կարգելվի: Հակառակ դեպքում ժամը 10:40-ից հետո հաջորդ անհաջող փորձը կհաշվվի որպես առաջին անհաջող փորձ:

  • maxretry. Չհաջողված կրկնությունների թիվը նախքան գործողություն կատարելը

  • usedns. «Զգուշացում» պարամետրը փորձում է օգտագործել հակադարձ-DNS՝ փնտրելու հոսթի անունը և արգելելու այն օգտագործել հոսթի անունը: «Ոչ»-ի վրա դնելը կարգելափակի IP-ները, այլ ոչ թե հոսթի անունը:

  • destemail. էլփոստի հասցեն, որին կուղարկվեն ծանուցումները (պետք է կազմաձևվի)

  • ուղարկող. ուղարկողի անունը ծանուցման նամակում

  • mta. Փոստի փոխանցման գործակալ, որն օգտագործվում է ծանուցման էլ

  • banaction. այս պարամետրը օգտագործում է /etc/fail2ban/action.d/iptables-multiport.conf ֆայլը՝ առավելագույն անհաջող կրկնություններից հետո գործողությունը սահմանելու համար:

  • արձանագրություն. երթևեկության տեսակը, որը կթողարկվի արգելքից հետո

Եթե ցանկանում եք որևէ փոփոխություն կատարել ցանկացած բանտում (կամ ամբողջ բանտում), օրինակ՝ առավելագույն կրկնվող փորձերը, արգելքի ժամանակը, ժամանակ գտնելը և այլն, դուք պետք է խմբագրեք jail.local ֆայլը:

Ինչպես օգտագործել Fail2Ban-ը Linux սերվերի ապահովման համար

Թույլ տվեք ցույց տալ ձեզ մի քանի եղանակներ, որոնցով կարող եք օգտագործել Fail2Ban-ը՝ Linux-ի անվտանգությունը խստացնելու համար:

Նկատի ունեցեք, որ fail2ban հրամանները գործարկելու համար դուք պետք է լինեք root օգտվող կամ ունենաք sudo մուտք:

Միացրեք Fail2Ban-ը ձեր սերվերում և ստուգեք բոլոր գործող բանտերը

Դուք կարող եք օգտագործել systemd հրամանները՝ ձեր Linux սերվերում Fail2Ban-ը սկսելու և միացնելու համար.

systemctl start fail2ban
systemctl enable fail2ban

Երբ Fail2Ban-ը միացված է, դուք կարող եք տեսնել կարգավիճակը և ակտիվ բանտերը fail2ban-client հրամանով.

fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd

Եթե ձեզ հետաքրքրում է, sshd jail-ը լռելյայն միացված է:

Տես Fail2Ban մատյան

Fail2Ban մատյանը գտնվում է /var/log/fail2ban.log հասցեում: Մատյան ֆայլերը հետևյալ ձևաչափով են.

2019-03-25 07:09:08,004 fail2ban.filter [25630]: INFO [sshd] Found 139.59.69.76 – 2019-03-25 07:09:07
2019-03-25 07:09:36,756 fail2ban.filter [25630]: INFO [sshd] Found 159.89.205.213 – 2019-03-25 07:09:36
2019-03-25 07:09:36,757 fail2ban.filter [25630]: INFO [sshd] Found 159.89.205.213 – 2019-03-25 07:09:36
2019-03-25 07:09:36,774 fail2ban.actions [25630]: NOTICE [sshd] Ban 159.89.205.213
2019-03-25 07:09:36,956 fail2ban.filter [25630]: INFO [sshd] Found 182.70.253.202 – 2019-03-25 07:09:36
2019-03-25 07:09:36,957 fail2ban.filter [25630]: INFO [sshd] Found 182.70.253.202 – 2019-03-25 07:09:36
2019-03-25 07:09:36,981 fail2ban.actions [25630]: NOTICE [sshd] Ban 182.70.253.202
2019-03-25 07:09:37,247 fail2ban.filter [25630]: INFO [sshd] Found 112.64.214.90 – 2019-03-25 07:09:37
2019-03-25 07:09:37,248 fail2ban.filter [25630]: INFO [sshd] Found 112.64.214.90 – 2019-03-25 07:09:37
2019-03-25 07:09:37,589 fail2ban.actions [25630]: NOTICE [sshd] Ban 112.64.214.90

Դուք կարող եք տեսնել, որ այն նույնացնում է IP-ներին և արգելում է դրանք, երբ նրանք անցնում են առավելագույն կրկնակի շեմը:

Տես Fail2Ban-ի կողմից արգելված IP-ները

Ճանապարհներից մեկը որոշակի բանտի կարգավիճակը ստուգելն է: Այս նպատակով կարող եք օգտագործել Fail2Ban հաճախորդը:

fail2ban-client status <jail_name>

Օրինակ, եթե դուք պետք է տեսնեք Fail2Ban-ի կողմից արգելված բոլոր վատ ssh մուտքերը, կարող եք այն օգտագործել հետևյալ կերպ. Արդյունքը ցույց կտա ընդհանուր անհաջող փորձերը և ընդհանուր արգելված IP-ները:

root@test-server:~# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 14
| |- Total failed: 715
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 7
|- Total banned: 17
`- Banned IP list: 177.47.115.67 118.130.133.110 68.183.62.73 202.65.154.110 106.12.102.114 61.184.247.3 218.92.1.150

Համակարգը, որը փորձում է մուտք գործել SSH-ի միջոցով ձախողված մուտքից, պետք է ստանա այսպիսի սխալ

ssh: connect to host 93.233.73.133 port 22: Connection refused

Ինչպես ընդմիշտ արգելել IP-ն Fail2Ban-ով

Մինչ այժմ դուք գիտեք, որ Fail2Ban-ի կողմից IP-ի վրա դրված արգելքը ժամանակավոր է: Լռելյայնորեն այն տևում է 10 րոպե, և հարձակվողը կարող է նորից փորձել մուտք գործել 10 րոպե հետո:

Սա անվտանգության վտանգ է ներկայացնում, քանի որ հարձակվողները կարող են օգտագործել սկրիպտ, որը փորձում է մուտք գործել 10 րոպե ընդմիջումից հետո:

Այսպիսով, ինչպե՞ս եք մշտական արգելք դնում Fail2Ban-ի միջոցով: Դրա համար հստակ պատասխան չկա։

Սկսելով Fail2Ban 0.11 տարբերակը, արգելքի ժամանակը ավտոմատ կերպով կհաշվարկվի, և մշտական IP-ների արգելքի ժամանակը երկրաչափականորեն կավելանա:

Բայց եթե ստուգեք ձեր Fail2Ban տարբերակը, դուք հավանաբար աշխատում եք 0.10 տարբերակով:

fail2ban-server --version 
Fail2Ban v0.10.2
Copyright (c) 2004-2008 Cyril Jaquier, 2008- Fail2Ban Contributors
Copyright of modifications held by their respective authors.
Licensed under the GNU General Public License v2 (GPL).

Ավելի վաղ տարբերակներում դուք կարող եք օգտագործել բացասական բանտայմ (bantime=-1) և դա հավասարազոր կլիներ մշտական արգելքի, բայց եթե փորձեք այս մեթոդը, հավանաբար կտեսնեք սխալ, ինչպիսին է «Սկսելով fail2ban. ERROR NOK: (' տվյալների բազայի սկավառակի պատկերը սխալ ձևավորված է',)':

Ոչ այնքան մաքուր լուծումներից մեկը կլինի բանտայմը հասցնել 1 օր, 1 շաբաթ, 1 ամիս կամ 1 տարի: Սա կարող է շրջանցել խնդիրը, քանի դեռ նոր տարբերակը հասանելի չէ ձեր համակարգում:

Ինչպես հեռացնել Fail2Ban-ի կողմից արգելափակված IP-ն

Նախ ստուգեք՝ IP-ն արգելափակվա՞ծ է, թե՞ ոչ։ Քանի որ Fail2Ban-ն աշխատում է iptable-ների վրա, կարող եք նայել iptable-ը՝ ձեր սերվերի կողմից արգելված IP-ները դիտելու համար.

iptables -n -L

Հնարավոր է, որ ստիպված լինեք օգտագործել grep հրամանը, եթե չափազանց շատ IP-ներ արգելված են:

Եթե ելքում գտնում եք նշված IP հասցեն, ապա այն արգելվում է.

Այսպիսով, հաջորդ քայլը գտնելն է, թե որ «բանտն» է արգելում նշված IP-ն: Այստեղ դուք պետք է օգտագործեք Grep հրամանը fail2ban տեղեկամատյանների հետ:

Ինչպես տեսնում եք ստորև բերված ելքում, IP-ն արգելվում է sshd բանտով:

root@test-server:~# grep -E ‘Ban.*61.184.247.3’ /var/log/fail2ban.log
2019-03-14 13:09:25,029 fail2ban.actions [25630]: NOTICE [sshd] Ban 61.184.247.3
2019-03-14 13:52:56,745 fail2ban.actions [25630]: NOTICE [sshd] Ban 61.184.247.3

Այժմ, երբ դուք գիտեք IP-ն արգելափակող բանտի անունը, կարող եք ապաարգելափակել IP-ն՝ օգտագործելով fail2ban-client:

fail2ban-client set <jail_name> unbanip <ip_address>

Ինչպես տեղադրել IP-ի սպիտակ ցուցակը Fail2Ban-ում

Լավ չի լինի, եթե արգելեք ինքներդ ձեզ, չէ՞: Fail2Ban-ի ընթացիկ նստաշրջանի կողմից IP հասցեի արգելքը անտեսելու համար կարող եք IP-ն սպիտակ ցուցակում՝ օգտագործելով հետևյալ հրամանը.

fail2ban-client set <JAIL_NAME> addignoreip <IP_Address>

Դուք կարող եք հեշտությամբ գտնել ձեր IP հասցեն Linux-ում: Իմ դեպքում դա եղել է

sudo fail2ban-client set sshd addignoreip 203.93.83.113
These IP addresses/networks are ignored:
`- 203.93.83.113

Եթե ցանկանում եք մշտապես ներառել IP-ի սպիտակ ցուցակում, դուք պետք է խմբագրեք բանտի կազմաձևման ֆայլը: Գնացեք նշված բանտի բաժին և ավելացրեք ignoreip տողը այսպես.

ignoreip = 127.0.0.1/8 <IP_TO_BE_WHITELISTED>

Եթե ցանկանում եք IP ցուցակագրել ձեր համակարգի բոլոր բանտերից, ապա ավելի լավ կլինի խմբագրել /etc/fail2ban/jail.local ֆայլը և ավելացնել մի տող DEFAULT բաժնի տակ, ինչպես տեսանք վերևում:

Այս փոփոխությունն ուժի մեջ մտնելու համար դուք պետք է վերագործարկեք Fail2Ban-ը:

Ինչպես տեսնել IP սպիտակ ցուցակը բանտում

Դուք կարող եք տեսնել բանտի կողմից սպիտակ ցուցակում ներառված բոլոր IP-ները՝ օգտագործելով այս հրամանը.

fail2ban-client get <JAIL_NAME> ignoreip

Այն պետք է ցույց տա, որ բոլոր IP-ները անտեսված են Fail2Ban-ի կողմից այդ բանտի համար.

sudo fail2ban-client set sshd addignoreip 203.93.83.113
These IP addresses/networks are ignored:
|- 127.0.0.0/8
|- ::1
`- 203.93.83.113

Ինչպես հեռացնել IP-ն Fail2Ban սպիտակ ցուցակից

Եթե դուք հեռացնում եք IP-ն որոշակի բանտի սպիտակ ցուցակից, կարող եք օգտագործել այս հրամանը.

fail2ban-client set <JAIL_NAME> delignoreip <IP_Address>

Եթե ցանկանում եք ընդմիշտ հեռացնել IP-ն, ապա պետք է խմբագրեք /etc/fail2ban/jail.local ֆայլը:

Ուրիշ ի՞նչ:

Դուք կարող եք շատ ավելին անել Fail2Ban-ի հետ: Այս ուղեցույցը ձեզ տալիս է Fail2Ban-ով սկսելու հիմունքները: Ես չեմ շոշափել այնպիսի թեմաներ, ինչպիսիք են գործողությունները, փոստի ծանուցումները, զտիչները և այլն:

Երբ դուք տեղյակ եք Fail2Ban հիմունքների մասին, կարող եք սկսել ավելին ուսումնասիրել դրա մասին: Առայժմ պարզապես խաղացեք դրա հետ և ավելացրեք անվտանգության լրացուցիչ շերտ SSH-ին ձեր Linux սերվերի վրա: