لينڪس سرور جي حفاظت. پهرين ڇا ڪجي

لينڪس سرور جي حفاظت. پهرين ڇا ڪجي
حبيب مھيني/وڪيميڊيا ڪامنز، CC BY-SA

اڄڪلهه، هڪ هوسٽنگ تي سرور کي وڌائڻ چند منٽن ۽ چند ماؤس ڪلڪن جو معاملو آهي. پر لانچ کان پوءِ فوري طور تي، هو پاڻ کي دشمني واري ماحول ۾ ڳولي ٿو، ڇاڪاڻ ته هو سڄي انٽرنيٽ لاءِ کليل آهي جيئن هڪ معصوم ڇوڪري هڪ راڪر ڊسڪو ۾. اسڪينر جلدي ان کي ڳوليندا ۽ هزارين خودڪار اسڪرپٽ ٿيل بوٽن کي ڳوليندا جيڪي نيٽ ورڪ کي خرابين ۽ غلط ترتيبن کي ڳولي رهيا آهن. اتي ڪجھ شيون آھن جيڪي توھان کي ڪرڻ گھرجي لانچ کان پوءِ بنيادي تحفظ کي يقيني بڻائڻ لاءِ.

Contents

غير روٽ استعمال ڪندڙ

پهريون قدم پنهنجو پاڻ لاءِ هڪ غير روٽ استعمال ڪندڙ ٺاهڻ آهي. نقطي اهو آهي ته صارف root سسٽم ۾ مطلق استحقاق، ۽ جيڪڏهن توهان هن کي ريموٽ انتظاميه جي اجازت ڏيو ٿا، ته پوء توهان هيڪر لاء اڌ ڪم ڪندا، هن لاء صحيح صارف نالو ڇڏيندي.

تنهن ڪري، توهان کي هڪ ٻيو صارف ٺاهڻ جي ضرورت آهي، ۽ روٽ لاء SSH ذريعي ريموٽ انتظاميه کي بند ڪرڻ جي ضرورت آهي.

ھڪڙو نئون استعمال ڪندڙ حڪم ​​سان شروع ڪيو ويو آھي useradd:

useradd [options] <username>

پوءِ ان لاءِ پاس ورڊ شامل ڪيو ويو آھي حڪم سان passwd:

passwd <username>

آخرڪار، ھن صارف کي ھڪڙي گروپ ۾ شامل ڪرڻ جي ضرورت آھي جنھن کي اعلي حڪمن تي عمل ڪرڻ جو حق آھي sudo. لينڪس جي ورڇ تي مدار رکندي، اهي ٿي سگهن ٿا مختلف گروپ. مثال طور، CentOS ۽ Red Hat ۾، صارف کي گروپ ۾ شامل ڪيو ويو آھي wheel:

usermod -aG wheel <username>

Ubuntu ۾ اهو گروپ ۾ شامل ڪيو ويو آهي sudo:

usermod -aG sudo <username>

ڪي SSH پاسورڊ جي بدران

Brute Force يا پاسورڊ ليڪس هڪ معياري حملي وارو ویکٹر آهي، تنهنڪري اهو بهتر آهي ته SSH (Secure Shell) ۾ پاسورڊ جي تصديق کي غير فعال ڪيو وڃي ۽ ان جي بدران اهم تصديق استعمال ڪريو.

SSH پروٽوڪول کي لاڳو ڪرڻ لاء مختلف پروگرام آهن، جهڙوڪ lsh и ڊراپبار، پر سڀ کان وڌيڪ مشهور آهي OpenSSH. Ubuntu تي OpenSSH ڪلائنٽ کي انسٽال ڪرڻ:

sudo apt install openssh-client

سرور تنصيب:

sudo apt install openssh-server

Ubuntu سرور تي 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

ان کان پوء، روٽ جي هيٺان، صارف جي گهر ڊاريڪٽري ۾ سرور تي هڪ 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 حڪم استعمال ڪري سگهو ٿا، يوٽيليٽ ايس ايس ايفس فائل سسٽم يا ڊائريڪٽري کي دور دراز طور تي نصب ڪرڻ لاء.

اهو مشورو ڏنو ويو آهي ته پرائيويٽ ڪنجي جون ڪيتريون ئي بيڪ اپ ڪاپيون ٺاهيون، ڇو ته جيڪڏهن توهان پاسورڊ جي تصديق کي بند ڪيو ۽ ان کي وڃائي ڇڏيو، ته پوءِ توهان وٽ پنهنجي سرور ۾ لاگ ان ٿيڻ جو ڪو به طريقو نه هوندو.

جيئن مٿي ڄاڻايل آهي، SSH ۾ توهان کي روٽ جي تصديق کي بند ڪرڻ جي ضرورت آهي (اهو ئي سبب آهي ته اسان هڪ نئون استعمال ڪندڙ شروع ڪيو).

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 خارج ٿيل فهرست ۾ شامل آهي ۽ بلاڪ نه ڪيو ويندو. ٻي صورت ۾، فائر وال کي شروع ڪرڻ کان پوء، اسان سرور سان ڳنڍڻ جي قابل نه هوندا.

Ubuntu جي تقسيم غير پيچيده فائر وال سان اچي ٿي (ufw)، ۽ CentOS/Red Hat سان - فائرالڊ.

Ubuntu تي فائر وال ۾ SSH کي اجازت ڏيڻ:

sudo ufw allow ssh

CentOS / Red Hat تي حڪم استعمال ڪريو firewall-cmd:

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

هن عمل کان پوء، توهان فائر وال شروع ڪري سگهو ٿا.

CentOS / Red Hat تي، فائر والڊ لاء سسٽم ڊي سروس شروع ڪريو:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Ubuntu تي اسان هيٺ ڏنل حڪم استعمال ڪندا آهيون:

sudo ufw enable

في ميل 2

خدمت في ميل 2 سرور تي لاگن جو تجزيو ڪري ٿو ۽ هر IP پتي کان رسائي جي ڪوششن جو تعداد شمار ڪري ٿو. سيٽنگون قاعدن جي وضاحت ڪن ٿيون ته هڪ خاص وقفي لاءِ ڪيترين ئي ڪوششن جي رسائي جي اجازت ڏني وئي آهي - جنهن کان پوءِ هن IP پتي کي مخصوص وقت لاءِ بلاڪ ڪيو وڃي ٿو. مثال طور، اچو ته 5 ڪلاڪن اندر 2 ناڪام SSH تصديق جي ڪوششن جي اجازت ڏيو، پوءِ ڏنل IP پتي کي 12 ڪلاڪن لاءِ بلاڪ ڪريو.

CentOS ۽ Red Hat تي Fail2Ban انسٽال ڪرڻ:

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 منٽ).

[DEFAULT] ignorecommand=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 ۾ ٽيلنٽ (پورٽ 23) ۽ ايف ٽي پي (پورٽ 21) کي تبديل ڪرڻ لاءِ ترقي ڪئي وئي، تنهن ڪري پروگرام جو ليکڪ، ٽاتو ايلٽنين منتخب ٿيل پورٽ 22 ڊفالٽ طرفان، ۽ IANA پاران منظور ڪيو ويو آهي.

قدرتي طور تي، سڀني حملي ڪندڙن کي خبر آهي ته ڪهڙي بندرگاهه SSH تي هلندڙ آهي - ۽ ان کي اسڪين ڪريو باقي معياري بندرگاهن سان گڏ سافٽ ويئر ورزن کي ڳولڻ لاء، معياري روٽ پاسورڊ چيڪ ڪرڻ لاء، وغيره.

معياري بندرگاهن کي تبديل ڪرڻ - ڇڪڻ - ڪيترائي ڀيرا گندگي جي ٽرئفڪ جي مقدار کي گھٽائي ٿو، لاگز جي سائيز ۽ سرور تي لوڊ، ۽ حملي جي سطح کي پڻ گھٽائي ٿو. جيتوڻيڪ ڪجھ هن طريقي تي تنقيد ڪريو "غير جانبداري ذريعي تحفظ" (سيڪيورٽي ذريعي غير محفوظ). ان جو سبب اهو آهي ته هي ٽيڪنڪ بنيادي جي خلاف آهي تعميراتي تحفظ. تنهن ڪري، مثال طور، يو ايس نيشنل انسٽيٽيوٽ آف معيار ۽ ٽيڪنالاجي ۾ "سرور سيڪيورٽي گائيڊ" هڪ کليل سرور آرڪيٽيڪچر جي ضرورت کي ظاهر ڪري ٿو: "هڪ سسٽم جي سيڪيورٽي کي ان جي اجزاء جي عمل جي رازداري تي ڀروسو نه ڪرڻ گهرجي،" دستاويز چوي ٿو.

نظرياتي طور تي، ڊفالٽ بندرگاهن کي تبديل ڪرڻ کليل فن تعمير جي عمل جي خلاف آهي. پر عملي طور تي، بدسلوڪي ٽرئفڪ جو مقدار اصل ۾ گھٽجي ويو آهي، تنهنڪري اهو هڪ سادي ۽ موثر انداز آهي.

پورٽ نمبر ترتيب ڏئي سگهجي ٿو هدايت کي تبديل ڪندي Port 22 config فائل ۾ / وغيره / ssh / sshd_config. اهو پڻ پيٽرولر طرفان اشارو ڪيو ويو آهي -p <port> в ايس. SSH ڪلائنٽ ۽ پروگرام sftp اختيار جي حمايت پڻ -p <port>.

نيم -p <port> ڪمانڊ سان ڳنڍڻ دوران پورٽ نمبر بيان ڪرڻ لاءِ استعمال ٿي سگھي ٿو ssh لينڪس ۾. IN sftp и scp parameter استعمال ڪيو ويندو آهي -P <port> (سرمائي P). ڪمانڊ لائن هدايتون ترتيب واري فائلن ۾ ڪنهن به قيمت کي ختم ڪري ٿو.

جيڪڏھن گھڻا سرور آھن، لينڪس سرور کي بچائڻ لاءِ لڳ ڀڳ سڀئي عمل پاڻمرادو اسڪرپٽ ۾ ٿي سگھن ٿا. پر جيڪڏهن صرف هڪ سرور آهي، پوء اهو بهتر آهي ته دستي طور تي عمل کي ڪنٽرول ڪرڻ.

اشتهارن جي حقن تي

آرڊر ۽ فوري طور تي شروع ڪريو! VDS ٺاهڻ ڪنهن به ترتيب ۽ ڪنهن به آپريٽنگ سسٽم سان هڪ منٽ اندر. وڌ ۾ وڌ ترتيب ڏيڻ توهان کي مڪمل طور تي اچڻ جي اجازت ڏيندو - 128 سي پي يو ڪور، 512 GB ريم، 4000 GB NVMe. ايپيڪ 🙂

لينڪس سرور جي حفاظت. پهرين ڇا ڪجي

جو ذريعو: www.habr.com