Ինչպես տեղադրել և կարգավորել 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 սերվերի վրա: