ලිනක්ස් සේවාදායක ආරක්ෂාව. මුලින්ම කළ යුතු දේ

ලිනක්ස් සේවාදායක ආරක්ෂාව. මුලින්ම කළ යුතු දේ
Habib M'henni/Wikimedia CommonsCC BY-SA

වර්තමානයේ, සත්කාරක සේවාවක සේවාදායකයක් ඉහළ නැංවීම මිනිත්තු කිහිපයක් සහ මූසික ක්ලික් කිරීම් කිහිපයකි. නමුත් දියත් කළ විගසම ඔහු සතුරු පරිසරයක සිටින බව ඔහු සොයා ගනී, මන්ද ඔහු රොකර් ඩිස්කෝ එකක සිටින අහිංසක ගැහැණු ළමයෙකු මෙන් මුළු අන්තර්ජාලයටම විවෘතය. ස්කෑනර් එය ඉක්මනින් සොයා ගන්නා අතර දුර්වලතා සහ වැරදි වින්‍යාසයන් සොයන ජාලය සෝදිසි කරන ස්වයංක්‍රීයව ස්ක්‍රිප්ට් කළ බොට් දහස් ගණනක් හඳුනා ගනී. මූලික ආරක්ෂාව සහතික කිරීම සඳහා දියත් කළ වහාම ඔබ කළ යුතු දේවල් කිහිපයක් තිබේ.

අන්තර්ගතය

මූල නොවන පරිශීලක

පළමු පියවර වන්නේ ඔබටම root නොවන පරිශීලකයෙකු නිර්මාණය කිරීමයි. කාරණය වන්නේ පරිශීලකයා ය root පද්ධතියේ නිරපේක්ෂ වරප්‍රසාද, සහ ඔබ ඔහුට දුරස්ථ පරිපාලනයට ඉඩ දෙන්නේ නම්, ඔබ හැකර් සඳහා අඩක් වැඩ කරනු ඇත, ඔහුට වලංගු පරිශීලක නාමයක් තබයි.

එබැවින්, ඔබට වෙනත් පරිශීලකයෙකු නිර්මාණය කිරීමට අවශ්ය වන අතර, root සඳහා SSH හරහා දුරස්ථ පරිපාලනය අක්රිය කරන්න.

විධානය මඟින් නව පරිශීලකයෙකු ආරම්භ වේ useradd:

useradd [options] <username>

එවිට විධානය සමඟ එයට මුරපදයක් එකතු වේ passwd:

passwd <username>

අවසාන වශයෙන්, මෙම පරිශීලකයා උසස් විධාන ක්‍රියාත්මක කිරීමට අයිතිය ඇති කණ්ඩායමකට එක් කළ යුතුය sudo. ලිනක්ස් බෙදාහැරීම මත පදනම්ව, මේවා විවිධ කණ්ඩායම් විය හැකිය. උදාහරණයක් ලෙස, CentOS සහ Red Hat හි, පරිශීලකයා කණ්ඩායමට එකතු කරනු ලැබේ wheel:

usermod -aG wheel <username>

Ubuntu වල ඒක group එකට add කරනවා sudo:

usermod -aG sudo <username>

SSH මුරපද වෙනුවට යතුරු

Brute force හෝ password කාන්දු වීම සම්මත ප්‍රහාරක දෛශිකයකි, එබැවින් SSH (Secure Shell) හි මුරපද සත්‍යාපනය අක්‍රිය කිරීම සහ ඒ වෙනුවට යතුරු සත්‍යාපනය භාවිතා කිරීම වඩාත් සුදුසුය.

SSH ප්‍රොටෝකෝලය ක්‍රියාත්මක කිරීම සඳහා විවිධ වැඩසටහන් තිබේ lsh и ඩ්‍රොප්බයර්, නමුත් වඩාත්ම ජනප්රිය වන්නේ OpenSSH ය. උබුන්ටු මත OpenSSH සේවාලාභියා ස්ථාපනය කිරීම:

sudo apt install openssh-client

සේවාදායක ස්ථාපනය:

sudo apt install openssh-server

උබුන්ටු සේවාදායකයේ SSH ඩීමන් (sshd) ආරම්භ කිරීම:

sudo systemctl start sshd

සෑම ඇරඹුමකම ස්වයංක්‍රීයව ඩීමන් ආරම්භ කරන්න:

sudo systemctl enable sshd

OpenSSH හි සේවාදායක කොටසෙහි සේවාදායක කොටස ඇතුළත් බව සැලකිල්ලට ගත යුතුය. එනම්, හරහා openssh-server ඔබට වෙනත් සේවාදායකයන්ට සම්බන්ධ විය හැක. එපමනක් නොව, ඔබගේ සේවාදායක යන්ත්‍රයෙන්, ඔබට SSH උමගක් දුරස්ථ සේවාදායකයකින් තෙවන පාර්ශවීය ධාරකයකට ආරම්භ කළ හැක, එවිට තෙවන පාර්ශවීය සත්කාරක ඉල්ලීම් ප්‍රභවය ලෙස දුරස්ථ සේවාදායකය සලකනු ඇත. ඔබේ පද්ධතිය වසන් කිරීම සඳහා ඉතා පහසු විශේෂාංගයක්. විස්තර සඳහා ලිපිය බලන්න "ප්‍රායෝගික ඉඟි, උදාහරණ, සහ SSH උමං".

සේවාදායක යන්ත්‍රයක, පරිගණකයකට දුරස්ථ සම්බන්ධතාවයේ හැකියාව වැළැක්වීම සඳහා (ආරක්ෂක හේතූන් මත) සම්පූර්ණ සර්වරයක් ස්ථාපනය කිරීම සාමාන්‍යයෙන් තේරුමක් නැත.

එබැවින්, ඔබගේ නව පරිශීලකයා සඳහා, ඔබ ප්‍රථමයෙන් ඔබ සේවාදායකයට ප්‍රවේශ වන පරිගණකයේ SSH යතුරු ජනනය කළ යුතුය:

ssh-keygen -t rsa

පොදු යතුර ගොනුවක ගබඩා කර ඇත .pub සහ ආරම්භ වන අහඹු අක්ෂර මාලාවක් ලෙස පෙනේ ssh-rsa.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname

ඉන්පසුව, root යටතේ සිට, පරිශීලකයාගේ මුල් නාමාවලියෙහි සේවාදායකයේ SSH නාමාවලියක් සාදා ගොනුවට SSH පොදු යතුර එක් කරන්න. authorized_keys, Vim වැනි පෙළ සංස්කාරකයක් භාවිතා කරමින්:

mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keys

vim /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 විධානය භාවිතා කළ හැකිය, උපයෝගීතාව sshfs ගොනු පද්ධතියක් හෝ නාමාවලි දුරස්ථව සවි කිරීමට.

පුද්ගලික යතුරේ උපස්ථ පිටපත් කිහිපයක් සෑදීම සුදුසුය, මන්ද ඔබ මුරපද සත්‍යාපනය අක්‍රිය කර එය නැති වුවහොත්, ඔබට ඔබේම සේවාදායකයට ලොග් වීමට ක්‍රමයක් නොමැති බැවිනි.

ඉහත සඳහන් කළ පරිදි, SSH හි ඔබට root සඳහා සත්‍යාපනය අක්‍රිය කිරීමට අවශ්‍ය වේ (අපි නව පරිශීලකයෙකු ආරම්භ කිරීමට හේතුව මෙයයි).

CentOS/Red Hat මත අපි රේඛාව සොයා ගනිමු PermitRootLogin yes config ගොනුවේ /etc/ssh/sshd_config සහ එය වෙනස් කරන්න:

PermitRootLogin no

Ubuntu මත රේඛාව එක් කරන්න PermitRootLogin no config ගොනුවට 10-my-sshd-settings.conf:

sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

නව පරිශීලකයා ඔවුන්ගේ යතුර සමඟ සත්‍යාපනය කරන බව තහවුරු කර ගැනීමෙන් පසු, ඔබට මුරපද කාන්දු වීමේ හෝ තිරිසන් බලයේ අවදානම ඉවත් කිරීමට මුරපද සත්‍යාපනය අක්‍රිය කළ හැකිය. දැන්, සේවාදායකයට ප්‍රවේශ වීම සඳහා, ප්‍රහාරකයෙකුට පුද්ගලික යතුරක් ලබා ගැනීමට අවශ්‍ය වනු ඇත.

CentOS/Red Hat මත අපි රේඛාව සොයා ගනිමු PasswordAuthentication yes config ගොනුවේ /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.conf

SSH හරහා ද්වි-සාධක සත්‍යාපනය සක්‍රීය කිරීම පිළිබඳ උපදෙස් සඳහා, බලන්න මෙහි.

ගිනි පවුර

ෆයර්වෝලය මඟින් ඔබ සෘජුවම ඉඩ දෙන වරායන්හි ගමනාගමනය පමණක් සේවාදායකය වෙත යන බව සහතික කරයි. මෙය වෙනත් සේවාවන් සමඟ අහම්බෙන් සක්‍රීය කර ඇති වරායන් සූරාකෑමෙන් ආරක්ෂා කරයි, එමඟින් ප්‍රහාරක පෘෂ්ඨය බෙහෙවින් අඩු කරයි.

ෆයර්වෝලයක් ස්ථාපනය කිරීමට පෙර, SSH බැහැර කිරීමේ ලැයිස්තුවට ඇතුළත් කර ඇති අතර අවහිර නොකරන බවට ඔබ සහතික විය යුතුය. එසේ නොමැතිනම්, ෆයර්වෝලය ආරම්භ කිරීමෙන් පසුව, අපට සේවාදායකයට සම්බන්ධ වීමට නොහැකි වනු ඇත.

උබුන්ටු බෙදා හැරීම සංකීර්ණ නොවූ ෆයර්වෝල් සමඟ පැමිණේ (ufw), සහ CentOS/Red Hat සමඟ - ෆයර්වෝල්ඩ්.

උබුන්ටු හි ෆයර්වෝලයේ SSH ඉඩ දීම:

sudo ufw allow ssh

CentOS/Red Hat මත විධානය භාවිතා කරන්න firewall-cmd:

sudo firewall-cmd --zone=public --add-service=ssh --permanent

මෙම ක්රියාපටිපාටිය පසු, ඔබට ගිනි පවුර ආරම්භ කළ හැකිය.

CentOS/Red Hat මත, ෆයර්වෝල්ඩ් සඳහා systemd සේවාව ආරම්භ කරන්න:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Ubuntu හි අපි පහත විධානය භාවිතා කරමු:

sudo ufw enable

Fail2Ban

සේවා Fail2Ban සේවාදායකයේ ලඝු-සටහන් විශ්ලේෂණය කර එක් එක් IP ලිපිනයෙන් ප්‍රවේශ වීමේ උත්සාහයන් ගණන ගණනය කරයි. යම් කාල පරතරයක් සඳහා කොපමණ ප්‍රවේශ උත්සාහයන් සඳහා අවසර දී තිබේද යන්න පිළිබඳ නීති සැකසීම් නියම කරයි - ඉන් පසුව මෙම IP ලිපිනය නිශ්චිත කාලයක් සඳහා අවහිර කරනු ලැබේ. උදාහරණයක් ලෙස, අසාර්ථක වූ SSH සත්‍යාපන උත්සාහයන් 5කට පැය 2ක් ඇතුළත ඉඩ දෙමු, පසුව ලබා දී ඇති IP ලිපිනය පැය 12ක් අවහිර කරමු.

CentOS සහ Red Hat මත Fail2Ban ස්ථාපනය කිරීම:

sudo yum install fail2ban

උබුන්ටු සහ ඩේබියන් මත ස්ථාපනය:

sudo apt install fail2ban

දියත් කරන්න:

systemctl start fail2ban
systemctl enable fail2ban

වැඩසටහනට වින්‍යාස ගොනු දෙකක් ඇත: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. තහනම් සීමා කිරීම් දෙවන ගොනුවේ දක්වා ඇත.

SSH සඳහා බන්ධනාගාරය පෙරනිමි සැකසුම් සමඟ පෙරනිමියෙන් සක්‍රීය කර ඇත (උත්සාහයන් 5 ක්, විනාඩි 10 ක පරතරයක්, විනාඩි 10 ක් සඳහා තහනමක්).

[පෙරනිමිය] නොසලකා හැරීම Command=bantime=10m findtime=10m maxretry=5

SSH වලට අමතරව, Fail2Ban හට nginx හෝ Apache වෙබ් සේවාදායකයේ වෙනත් සේවාවන් ආරක්ෂා කළ හැක.

ස්වයංක්‍රීය ආරක්ෂක යාවත්කාලීන කිරීම්

ඔබ දන්නා පරිදි, සියලුම වැඩසටහන් වල නව දුර්වලතා නිරන්තරයෙන් දක්නට ලැබේ. තොරතුරු ප්‍රකාශයට පත් කිරීමෙන් පසු, ජනප්‍රිය සූරාකෑම් ඇසුරුම්වලට සූරාකෑම් එකතු කරනු ලැබේ, ඒවා පේළියක ඇති සියලුම සේවාදායකයන් පරිලෝකනය කිරීමේදී හැකර්වරුන් සහ යෞවනයන් විසින් විශාල වශයෙන් භාවිතා කරනු ලැබේ. එමනිසා, ආරක්ෂක යාවත්කාලීනයන් දිස් වූ වහාම ඒවා ස්ථාපනය කිරීම ඉතා වැදගත් වේ.

Ubuntu සේවාදායකයේ, ස්වයංක්‍රීය ආරක්ෂක යාවත්කාලීන කිරීම් පෙරනිමියෙන් සක්‍රීය කර ඇත, එබැවින් වැඩිදුර ක්‍රියාමාර්ග අවශ්‍ය නොවේ.

CentOS/Red Hat මත ඔබ යෙදුම ස්ථාපනය කළ යුතුය dnf-ස්වයංක්‍රීය සහ ටයිමරය සක්රිය කරන්න:

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 (port 23) සහ ftp (port 21) ප්‍රතිස්ථාපනය කිරීම සඳහා සංවර්ධනය කරන ලදී, එබැවින් වැඩසටහනේ කතුවරයා වන Tatu Iltonen පෙරනිමියෙන් තෝරාගත් වරාය 22, සහ IANA විසින් අනුමත කර ඇත.

ස්වාභාවිකවම, සියලුම ප්‍රහාරකයින් SSH ක්‍රියාත්මක වන්නේ කුමන වරායද යන්න දැන සිටියි - සහ මෘදුකාංග අනුවාදය සොයා ගැනීමට, සම්මත මූල මුරපද පරීක්ෂා කිරීමට සහ යනාදිය සඳහා එය අනෙකුත් සම්මත වරායන් සමඟ ස්කෑන් කරන්න.

සම්මත වරායන් වෙනස් කිරීම - අපැහැදිලි කිරීම - කිහිප වතාවක් කසළ ගමනාගමනය, ලොග් වල ප්‍රමාණය සහ සේවාදායකයේ බර අඩු කරයි, සහ ප්‍රහාරක මතුපිට ද අඩු කරයි. සමහරක් වුවද "අපැහැදිලි භාවය හරහා ආරක්ෂා කිරීමේ" මෙම ක්‍රමය විවේචනය කරන්න (නොපැහැදිලි හරහා ආරක්ෂාව). හේතුව මෙම තාක්ෂණය මූලික දේට විරුද්ධ වීමයි වාස්තුවිද්යාත්මක ආරක්ෂාව. එබැවින්, උදාහරණයක් ලෙස, එක්සත් ජනපද ජාතික ප්‍රමිති සහ තාක්ෂණ ආයතනය "සේවාදායක ආරක්ෂක මාර්ගෝපදේශය" විවෘත සේවාදායක ගෘහ නිර්මාණ ශිල්පයක අවශ්‍යතාවය පෙන්නුම් කරයි: "පද්ධතියක ආරක්ෂාව එහි සංරචක ක්‍රියාත්මක කිරීමේ රහස්‍යභාවය මත රඳා නොසිටිය යුතුය" යනුවෙන් ලේඛනය පවසයි.

න්‍යායාත්මකව, පෙරනිමි වරායන් වෙනස් කිරීම විවෘත ගෘහ නිර්මාණ ශිල්පයේ භාවිතයට පටහැනිය. නමුත් ප්රායෝගිකව, අනිෂ්ට ගමනාගමන ප්රමාණය ඇත්ත වශයෙන්ම අඩු වී ඇත, එබැවින් මෙය සරල හා ඵලදායී පියවරකි.

විධානය වෙනස් කිරීමෙන් වරාය අංකය වින්‍යාසගත කළ හැක Port 22 config ගොනුවේ / etc / ssh / sshd_config. එය පරාමිතිය මගින් ද දැක්වේ -p <port> в sshd. SSH සේවාදායකයා සහ වැඩසටහන් sftp විකල්පය සඳහා ද සහාය දක්වයි -p <port>.

පරාමිතිය -p <port> විධානය සමඟ සම්බන්ධ වන විට වරාය අංකය සඳහන් කිරීමට භාවිතා කළ හැක ssh ලිනක්ස් වල. තුල sftp и scp පරාමිතිය භාවිතා වේ -P <port> (ප්රාග්ධනය P). විධාන රේඛා උපදෙස් වින්‍යාස ගොනු වල ඕනෑම අගයක් අභිබවා යයි.

බොහෝ සේවාදායකයන් තිබේ නම්, ලිනක්ස් සේවාදායකය ආරක්ෂා කිරීම සඳහා මෙම ක්‍රියා සියල්ලම පාහේ ස්ක්‍රිප්ට් එකකින් ස්වයංක්‍රීය කළ හැකිය. නමුත් එක් සේවාදායකයක් පමණක් තිබේ නම්, ක්රියාවලිය අතින් පාලනය කිරීම වඩා හොඳය.

දැන්වීම් ප්රචාරණ අයිතිවාසිකම්

ඇණවුම් කර වහාම ආරම්භ කරන්න! VDS නිර්මාණය කිරීම ඕනෑම වින්‍යාසයක් සහ ඕනෑම මෙහෙයුම් පද්ධතියක් සමඟ මිනිත්තුවක් ඇතුළත. උපරිම වින්‍යාසය මඟින් ඔබට උපරිමයට පැමිණීමට ඉඩ සලසයි - 128 CPU cores, 512 GB RAM, 4000 GB NVMe. එපික් 🙂

ලිනක්ස් සේවාදායක ආරක්ෂාව. මුලින්ම කළ යුතු දේ

මූලාශ්රය: www.habr.com