Մեր օրերում սերվերը հոսթինգում բարձրացնելը մի քանի րոպեի և մի քանի մկնիկի կտտոցների խնդիր է։ Բայց գործարկումից անմիջապես հետո նա հայտնվում է թշնամական միջավայրում, քանի որ նա բաց է ողջ համացանցի համար, ինչպես անմեղ աղջիկը ռոքեր դիսկոտեկում: Սկաներներն արագ կգտնեն այն և կհայտնաբերեն ավտոմատ կերպով գրված հազարավոր բոտեր, որոնք մաքրում են ցանցը՝ փնտրելով խոցելիություններ և սխալ կազմաձևումներ: Կան մի քանի բաներ, որոնք դուք պետք է անեք գործարկումից անմիջապես հետո՝ հիմնական պաշտպանությունն ապահովելու համար:
Առաջին քայլը ձեզ համար ոչ արմատային օգտատեր ստեղծելն է: Բանն այն է, որ օգտատերը root բացարձակ արտոնություններ համակարգում, և եթե թույլ տաք նրան հեռավար կառավարում, ապա հաքերի աշխատանքի կեսը կկատարեք՝ նրա համար վավեր օգտանուն թողնելով։
Հետևաբար, դուք պետք է ստեղծեք մեկ այլ օգտվող և անջատեք հեռավոր կառավարումը SSH-ի միջոցով root-ի համար:
Նոր օգտվողը սկսվում է հրամանով useradd:
useradd [options] <username>
Այնուհետև հրամանով դրա համար գաղտնաբառ է ավելացվում passwd:
passwd <username>
Վերջապես, այս օգտվողը պետք է ավելացվի մի խմբի, որն իրավունք ունի կատարել բարձրացված հրամաններ sudo. Կախված Linux բաշխումից, դրանք կարող են լինել տարբեր խմբեր: Օրինակ, CentOS-ում և Red Hat-ում օգտատերը ավելացվում է խմբին wheel:
usermod -aG wheel <username>
Ubuntu-ում այն ավելացվում է խմբին sudo:
usermod -aG sudo <username>
SSH գաղտնաբառերի փոխարեն ստեղներ
Կոպիտ ուժի կամ գաղտնաբառի արտահոսքը ստանդարտ հարձակման վեկտոր է, ուստի ավելի լավ է անջատել գաղտնաբառի նույնականացումը SSH-ում (Secure Shell) և փոխարենը օգտագործել բանալիների նույնականացում:
SSH արձանագրության ներդրման համար կան տարբեր ծրագրեր, ինչպիսիք են լշ и կաթիլ, բայց ամենահայտնին OpenSSH-ն է։ OpenSSH հաճախորդի տեղադրում Ubuntu-ում.
sudo apt install openssh-client
Սերվերի տեղադրում.
sudo apt install openssh-server
SSH daemon (sshd) գործարկում Ubuntu սերվերի վրա.
sudo systemctl start sshd
Ավտոմատ կերպով գործարկել deemon-ը յուրաքանչյուր բեռնախցիկի վրա.
sudo systemctl enable sshd
Հարկ է նշել, որ OpenSSH-ի սերվերային մասը ներառում է հաճախորդի մասը։ Այսինքն՝ միջոցով openssh-server դուք կարող եք միանալ այլ սերվերների: Ավելին, ձեր հաճախորդի մեքենայից դուք կարող եք սկսել SSH թունելը հեռավոր սերվերից դեպի երրորդ կողմի հոսթ, այնուհետև երրորդ կողմի հոսթը կդիտարկի հեռավոր սերվերը որպես հարցումների աղբյուր: Շատ հարմար հատկություն՝ ձեր համակարգը քողարկելու համար: Մանրամասների համար տե՛ս հոդվածը «Գործնական խորհուրդներ, օրինակներ և SSH թունելներ».
Հաճախորդի մեքենայի վրա, սովորաբար, անիմաստ է տեղադրել լիարժեք սերվեր, որպեսզի կանխվի համակարգչին հեռակա կապի հնարավորությունը (անվտանգության նկատառումներով):
Այսպիսով, ձեր նոր օգտատիրոջ համար նախ պետք է ստեղծեք SSH ստեղներ այն համակարգչում, որտեղից դուք մուտք կունենաք սերվեր.
ssh-keygen -t rsa
Հանրային բանալին պահվում է ֆայլում .pub և կարծես պատահական նիշերի շարան լինի, որը սկսվում է ssh-rsa.
Այնուհետև արմատի տակից ստեղծեք SSH գրացուցակ սերվերի վրա օգտվողի հիմնական գրացուցակում և ավելացրեք SSH հանրային բանալին ֆայլին: authorized_keys, օգտագործելով Vim-ի նման տեքստային խմբագրիչ.
Հաճախորդի կողմից դուք պետք է նշեք նույնականացման գաղտնի բանալի գտնվելու վայրը.
ssh-add DIR_PATH/keylocation
Այժմ դուք կարող եք մուտք գործել սերվեր օգտվողի անվան տակ՝ օգտագործելով այս բանալիը.
ssh [username]@hostname
Թույլտվությունից հետո դուք կարող եք օգտագործել scp հրամանը ֆայլերը, կոմունալը պատճենելու համար սշֆս ֆայլային համակարգ կամ գրացուցակներ հեռակա տեղադրելու համար:
Ցանկալի է ստեղծել մասնավոր բանալու մի քանի կրկնօրինակներ, քանի որ եթե անջատեք գաղտնաբառի նույնականացումը և կորցնեք այն, ապա ընդհանրապես ձեր սեփական սերվեր մուտք գործելու հնարավորություն չեք ունենա:
Ինչպես նշվեց վերևում, SSH-ում դուք պետք է անջատեք նույնականացումը root-ի համար (սա է պատճառը, որ մենք սկսեցինք նոր օգտվող):
CentOS/Red Hat-ի վրա մենք գտնում ենք գիծը PermitRootLogin yes կազմաձևման ֆայլում /etc/ssh/sshd_config և փոխիր այն.
PermitRootLogin no
Ubuntu-ում ավելացրեք տողը PermitRootLogin no դեպի կազմաձևման ֆայլ 10-my-sshd-settings.conf:
Ստուգելուց հետո, որ նոր օգտվողը նույնականացնում է իր բանալիով, կարող եք անջատել գաղտնաբառի նույնականացումը՝ գաղտնաբառի արտահոսքի կամ կոպիտ ուժի վտանգը վերացնելու համար: Այժմ, սերվեր մուտք գործելու համար հարձակվողը պետք է ստանա անձնական բանալի:
CentOS/Red Hat-ի վրա մենք գտնում ենք գիծը PasswordAuthentication yes կազմաձևման ֆայլում /etc/ssh/sshd_config և փոխել այն այսպես.
PasswordAuthentication no
Ubuntu-ում ավելացրեք տողը PasswordAuthentication no ներկայացնել 10-my-sshd-settings.conf:
SSH-ի միջոցով երկգործոն նույնականացումը միացնելու հրահանգների համար տե՛ս այստեղ.
Firewall
Firewall-ը ապահովում է, որ միայն այն նավահանգիստների երթևեկությունը, որոնք դուք ուղղակիորեն թույլ եք տալիս, կգնա սերվեր: Սա պաշտպանում է այլ ծառայությունների կողմից պատահաբար միացված նավահանգիստների շահագործումից, ինչը մեծապես նվազեցնում է հարձակման մակերեսը:
Նախքան firewall-ը տեղադրելը, դուք պետք է համոզվեք, որ SSH-ը ներառված է բացառությունների ցանկում և չի արգելափակվի: Հակառակ դեպքում, firewall-ը գործարկելուց հետո մենք չենք կարողանա միանալ սերվերին:
Ubuntu բաշխումը գալիս է Uncomplicated Firewall-ով (ufw), և CentOS/Red Hat-ով - firewalld.
SSH-ի թույլտվություն Ubuntu-ի firewall-ում.
sudo ufw allow ssh
CentOS/Red Hat-ի վրա օգտագործեք հրամանը firewall-cmd:
Ծառայություն Fail2Ban վերլուծում է սերվերի տեղեկամատյանները և հաշվում յուրաքանչյուր IP հասցեից մուտքի փորձերի քանակը: Պարամետրերը սահմանում են կանոններ, թե քանի մուտքի փորձ է թույլատրվում որոշակի ընդմիջումով, որից հետո այս IP հասցեն արգելափակվում է որոշակի ժամանակահատվածով: Օրինակ՝ թույլ տանք 5 ժամվա ընթացքում SSH նույնականացման 2 անհաջող փորձ, ապա արգելափակել տրված IP հասցեն 12 ժամով։
Բացի SSH-ից, Fail2Ban-ը կարող է պաշտպանել այլ ծառայություններ nginx կամ Apache վեբ սերվերի վրա:
Անվտանգության ավտոմատ թարմացումներ
Ինչպես գիտեք, բոլոր ծրագրերում մշտապես հայտնաբերվում են նոր խոցելիություններ։ Տեղեկատվության հրապարակումից հետո օգտատերերը ավելացվում են հանրաճանաչ Exploit փաթեթներին, որոնք զանգվածաբար օգտագործվում են հաքերների և դեռահասների կողմից բոլոր սերվերները անընդմեջ սկանավորելիս: Հետևաբար, շատ կարևոր է տեղադրել անվտանգության թարմացումները դրանց հայտնվելուն պես:
Ubuntu սերվերում անվտանգության ավտոմատ թարմացումները լռելյայն միացված են, ուստի հետագա գործողություն չի պահանջվում:
CentOS/Red Hat-ի վրա դուք պետք է տեղադրեք հավելվածը dnf-ավտոմատ և միացրեք ժամաչափը.
SSH-ը մշակվել է 1995 թվականին՝ փոխարինելու telnet-ը (պորտ 23) և ftp-ը (պորտ 21), ուստի ծրագրի հեղինակ Թաթու Իլտոնենը լռելյայն ընտրված նավահանգիստ 22-ը, և հաստատվել է IANA-ի կողմից:
Բնականաբար, բոլոր հարձակվողները տեղյակ են, թե որ պորտի վրա է աշխատում SSH-ը և սկանավորել այն մնացած ստանդարտ նավահանգիստների հետ՝ պարզելու ծրագրաշարի տարբերակը, ստուգելու ստանդարտ արմատային գաղտնաբառերը և այլն:
Ստանդարտ նավահանգիստների փոփոխությունը՝ խճճվածություն, մի քանի անգամ նվազեցնում է աղբի տրաֆիկի քանակը, տեղեկամատյանների չափը և սերվերի բեռը, ինչպես նաև նվազեցնում է հարձակման մակերեսը: Չնայած ոմանք քննադատել «անհայտության միջոցով պաշտպանվելու» այս մեթոդը. (անվտանգություն անհայտության միջոցով): Պատճառն այն է, որ այս տեխնիկան հակադրվում է հիմնարարին ճարտարապետական պաշտպանություն. Հետևաբար, օրինակ, ԱՄՆ Ստանդարտների և տեխնոլոգիաների ազգային ինստիտուտը XNUMXթ «Սերվերի անվտանգության ուղեցույց» մատնանշում է բաց սերվերի ճարտարապետության անհրաժեշտությունը. «Համակարգի անվտանգությունը չպետք է հիմնվի դրա բաղադրիչների իրականացման գաղտնիության վրա», - ասվում է փաստաթղթում:
Տեսականորեն, լռելյայն նավահանգիստների փոփոխությունը դեմ է բաց ճարտարապետության պրակտիկային: Բայց գործնականում վնասակար տրաֆիկի քանակը իրականում կրճատվում է, ուստի սա պարզ և արդյունավետ միջոց է:
Նավահանգստի համարը կարող է կազմաձևվել՝ փոխելով հրահանգը Port 22 կազմաձևման ֆայլում / etc / ssh / sshd_config. Այն նաև նշվում է պարամետրով -p <port> в sshd. SSH հաճախորդ և ծրագրեր sftp նաև աջակցեք տարբերակին -p <port>.
Parameter -p <port> կարող է օգտագործվել հրամանի հետ միանալու ժամանակ պորտի համարը նշելու համար ssh linux-ում։ IN sftp и scp պարամետրը օգտագործվում է -P <port> (կապիտալ P): Հրամանի տողի հրահանգը վերացնում է ցանկացած արժեք կազմաձևման ֆայլերում:
Եթե կան շատ սերվերներ, Linux սերվերը պաշտպանելու համար այս բոլոր գործողությունները կարող են ավտոմատացվել սկրիպտով: Բայց եթե կա միայն մեկ սերվեր, ապա ավելի լավ է ձեռքով վերահսկել գործընթացը:
Գովազդի իրավունքների մասին
Պատվիրեք և սկսեք անմիջապես: VDS-ի ստեղծում ցանկացած կոնֆիգուրացիա և ցանկացած օպերացիոն համակարգով մեկ րոպեի ընթացքում: Առավելագույն կոնֆիգուրացիան թույլ կտա առավելագույնս դուրս գալ՝ 128 պրոցեսորի միջուկ, 512 ԳԲ RAM, 4000 ԳԲ NVMe: Էպոս 🙂