
, CC BY-SA
Մեր օրերում սերվերը հոսթինգում բարձրացնելը մի քանի րոպեի և մի քանի մկնիկի կտտոցների խնդիր է։ Բայց գործարկումից անմիջապես հետո նա հայտնվում է թշնամական միջավայրում, քանի որ նա բաց է ողջ համացանցի համար, ինչպես անմեղ աղջիկը ռոքեր դիսկոտեկում: Սկաներներն արագ կգտնեն այն և կհայտնաբերեն ավտոմատ կերպով գրված հազարավոր բոտեր, որոնք մաքրում են ցանցը՝ փնտրելով խոցելիություններ և սխալ կազմաձևումներ: Կան մի քանի բաներ, որոնք դուք պետք է անեք գործարկումից անմիջապես հետո՝ հիմնական պաշտպանությունն ապահովելու համար:
Պարունակություն
Ոչ արմատային օգտվող
Առաջին քայլը ձեզ համար ոչ արմատային օգտատեր ստեղծելն է: Բանն այն է, որ օգտատերը 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-serverSSH daemon (sshd) գործարկում Ubuntu սերվերի վրա.
sudo systemctl start sshdԱվտոմատ կերպով գործարկել deemon-ը յուրաքանչյուր բեռնախցիկի վրա.
sudo systemctl enable sshd Հարկ է նշել, որ OpenSSH-ի սերվերային մասը ներառում է հաճախորդի մասը։ Այսինքն՝ միջոցով openssh-server դուք կարող եք միանալ այլ սերվերների: Ավելին, ձեր հաճախորդի մեքենայից դուք կարող եք սկսել SSH թունելը հեռավոր սերվերից դեպի երրորդ կողմի հոսթ, այնուհետև երրորդ կողմի հոսթը կդիտարկի հեռավոր սերվերը որպես հարցումների աղբյուր: Շատ հարմար հատկություն՝ ձեր համակարգը քողարկելու համար: Մանրամասների համար տե՛ս հոդվածը .
Հաճախորդի մեքենայի վրա, սովորաբար, անիմաստ է տեղադրել լիարժեք սերվեր, որպեսզի կանխվի համակարգչին հեռակա կապի հնարավորությունը (անվտանգության նկատառումներով):
Այսպիսով, ձեր նոր օգտատիրոջ համար նախ պետք է ստեղծեք SSH ստեղներ այն համակարգչում, որտեղից դուք մուտք կունենաք սերվեր.
ssh-keygen -t rsa Հանրային բանալին պահվում է ֆայլում .pub և կարծես պատահական նիշերի շարան լինի, որը սկսվում է ssh-rsa.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname
Այնուհետև արմատի տակից ստեղծեք SSH գրացուցակ սերվերի վրա օգտվողի հիմնական գրացուցակում և ավելացրեք SSH հանրային բանալին ֆայլին: authorized_keys, օգտագործելով Vim-ի նման տեքստային խմբագրիչ.
mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keysvim /home/user_name/.ssh/authorized_keysՎերջապես, սահմանեք ճիշտ թույլտվությունները ֆայլի համար.
chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keysև փոխել սեփականության իրավունքն այս օգտատիրոջը՝
chown -R username:username /home/username/.sshՀաճախորդի կողմից դուք պետք է նշեք նույնականացման գաղտնի բանալի գտնվելու վայրը.
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:
sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.confՍտուգելուց հետո, որ նոր օգտվողը նույնականացնում է իր բանալիով, կարող եք անջատել գաղտնաբառի նույնականացումը՝ գաղտնաբառի արտահոսքի կամ կոպիտ ուժի վտանգը վերացնելու համար: Այժմ, սերվեր մուտք գործելու համար հարձակվողը պետք է ստանա անձնական բանալի:
CentOS/Red Hat-ի վրա մենք գտնում ենք գիծը PasswordAuthentication yes կազմաձևման ֆայլում /etc/ssh/sshd_config և փոխել այն այսպես.
PasswordAuthentication no Ubuntu-ում ավելացրեք տողը PasswordAuthentication no ներկայացնել 10-my-sshd-settings.conf:
sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.confSSH-ի միջոցով երկգործոն նույնականացումը միացնելու հրահանգների համար տե՛ս .
Firewall
Firewall-ը ապահովում է, որ միայն այն նավահանգիստների երթևեկությունը, որոնք դուք ուղղակիորեն թույլ եք տալիս, կգնա սերվեր: Սա պաշտպանում է այլ ծառայությունների կողմից պատահաբար միացված նավահանգիստների շահագործումից, ինչը մեծապես նվազեցնում է հարձակման մակերեսը:
Նախքան firewall-ը տեղադրելը, դուք պետք է համոզվեք, որ SSH-ը ներառված է բացառությունների ցանկում և չի արգելափակվի: Հակառակ դեպքում, firewall-ը գործարկելուց հետո մենք չենք կարողանա միանալ սերվերին:
Ubuntu բաշխումը գալիս է Uncomplicated Firewall-ով (), և CentOS/Red Hat-ով - .
SSH-ի թույլտվություն Ubuntu-ի firewall-ում.
sudo ufw allow ssh CentOS/Red Hat-ի վրա օգտագործեք հրամանը firewall-cmd:
sudo firewall-cmd --zone=public --add-service=ssh --permanentԱյս ընթացակարգից հետո կարող եք գործարկել firewall-ը:
CentOS/Red Hat-ում գործարկեք համակարգային ծառայությունը firewall-ի համար.
sudo systemctl start firewalld
sudo systemctl enable firewalldUbuntu-ում մենք օգտագործում ենք հետևյալ հրամանը.
sudo ufw enable
Fail2Ban
Ծառայություն վերլուծում է սերվերի տեղեկամատյանները և հաշվում յուրաքանչյուր IP հասցեից մուտքի փորձերի քանակը: Պարամետրերը սահմանում են կանոններ, թե քանի մուտքի փորձ է թույլատրվում որոշակի ընդմիջումով, որից հետո այս IP հասցեն արգելափակվում է որոշակի ժամանակահատվածով: Օրինակ՝ թույլ տանք 5 ժամվա ընթացքում SSH նույնականացման 2 անհաջող փորձ, ապա արգելափակել տրված IP հասցեն 12 ժամով։
Fail2Ban-ի տեղադրում CentOS-ի և Red Hat-ի վրա.
sudo yum install fail2banՏեղադրում Ubuntu-ում և Debian-ում.
sudo apt install fail2banԳործարկել:
systemctl start fail2ban
systemctl enable fail2ban Ծրագիրն ունի երկու կազմաձևման ֆայլ. /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Արգելքի սահմանափակումները նշված են երկրորդ ֆայլում:
SSH-ի համար կալանավայրը լռելյայն միացված է լռելյայն կարգավորումներով (5 փորձ, 10 րոպե ընդմիջում, 10 րոպե արգելք):
[ԼԱՆԿԱՅԻՆ] ignorecommand=bantime=10m findtime=10m maxretry=5
Բացի SSH-ից, Fail2Ban-ը կարող է պաշտպանել այլ ծառայություններ nginx կամ Apache վեբ սերվերի վրա:
Անվտանգության ավտոմատ թարմացումներ
Ինչպես գիտեք, բոլոր ծրագրերում մշտապես հայտնաբերվում են նոր խոցելիություններ։ Տեղեկատվության հրապարակումից հետո օգտատերերը ավելացվում են հանրաճանաչ Exploit փաթեթներին, որոնք զանգվածաբար օգտագործվում են հաքերների և դեռահասների կողմից բոլոր սերվերները անընդմեջ սկանավորելիս: Հետևաբար, շատ կարևոր է տեղադրել անվտանգության թարմացումները դրանց հայտնվելուն պես:
Ubuntu սերվերում անվտանգության ավտոմատ թարմացումները լռելյայն միացված են, ուստի հետագա գործողություն չի պահանջվում:
CentOS/Red Hat-ի վրա դուք պետք է տեղադրեք հավելվածը և միացրեք ժամաչափը.
sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timerԺամաչափի ստուգում.
sudo systemctl status dnf-automatic.timer
Նախնական պորտերի փոփոխություն
SSH-ը մշակվել է 1995 թվականին՝ փոխարինելու telnet-ը (պորտ 23) և ftp-ը (պորտ 21), ուստի ծրագրի հեղինակ Թաթու Իլտոնենը , և հաստատվել է IANA-ի կողմից:
Բնականաբար, բոլոր հարձակվողները տեղյակ են, թե որ պորտի վրա է աշխատում SSH-ը և սկանավորել այն մնացած ստանդարտ նավահանգիստների հետ՝ պարզելու ծրագրաշարի տարբերակը, ստուգելու ստանդարտ արմատային գաղտնաբառերը և այլն:
Ստանդարտ նավահանգիստների փոփոխությունը՝ խճճվածություն, մի քանի անգամ նվազեցնում է աղբի տրաֆիկի քանակը, տեղեկամատյանների չափը և սերվերի բեռը, ինչպես նաև նվազեցնում է հարձակման մակերեսը: Չնայած ոմանք (անվտանգություն անհայտության միջոցով): Պատճառն այն է, որ այս տեխնիկան հակադրվում է հիմնարարին . Հետևաբար, օրինակ, ԱՄՆ Ստանդարտների և տեխնոլոգիաների ազգային ինստիտուտը XNUMXթ մատնանշում է բաց սերվերի ճարտարապետության անհրաժեշտությունը. «Համակարգի անվտանգությունը չպետք է հիմնվի դրա բաղադրիչների իրականացման գաղտնիության վրա», - ասվում է փաստաթղթում:
Տեսականորեն, լռելյայն նավահանգիստների փոփոխությունը դեմ է բաց ճարտարապետության պրակտիկային: Բայց գործնականում վնասակար տրաֆիկի քանակը իրականում կրճատվում է, ուստի սա պարզ և արդյունավետ միջոց է:
Նավահանգստի համարը կարող է կազմաձևվել՝ փոխելով հրահանգը Port 22 կազմաձևման ֆայլում . Այն նաև նշվում է պարամետրով -p <port> в . SSH հաճախորդ և ծրագրեր նաև աջակցեք տարբերակին -p <port>.
Parameter -p <port> կարող է օգտագործվել հրամանի հետ միանալու ժամանակ պորտի համարը նշելու համար ssh linux-ում։ IN и scp պարամետրը օգտագործվում է -P <port> (կապիտալ P): Հրամանի տողի հրահանգը վերացնում է ցանկացած արժեք կազմաձևման ֆայլերում:
Եթե կան շատ սերվերներ, Linux սերվերը պաշտպանելու համար այս բոլոր գործողությունները կարող են ավտոմատացվել սկրիպտով: Բայց եթե կա միայն մեկ սերվեր, ապա ավելի լավ է ձեռքով վերահսկել գործընթացը:
Գովազդի իրավունքների մասին
Պատվիրեք և սկսեք անմիջապես: ցանկացած կոնֆիգուրացիա և ցանկացած օպերացիոն համակարգով մեկ րոպեի ընթացքում: Առավելագույն կոնֆիգուրացիան թույլ կտա առավելագույնս դուրս գալ՝ 128 պրոցեսորի միջուկ, 512 ԳԲ RAM, 4000 ԳԲ NVMe: Էպոս 🙂
Source: www.habr.com
