لینکس سرور تحفظ۔ پہلے کیا کرنا ہے۔

لینکس سرور تحفظ۔ پہلے کیا کرنا ہے۔
حبیب مہینی/ویکی میڈیا کامنزCC CC-SA

آج کل، ہوسٹنگ پر سرور کو بڑھانا چند منٹوں اور چند ماؤس کلکس کا معاملہ ہے۔ لیکن لانچ کے فوراً بعد، وہ خود کو ایک مخالف ماحول میں پاتا ہے، کیونکہ وہ راکر ڈسکو میں ایک معصوم لڑکی کی طرح پورے انٹرنیٹ کے لیے کھلا ہے۔ اسکینرز اسے تیزی سے تلاش کریں گے اور خود کار طریقے سے اسکرپٹ شدہ ہزاروں بوٹس کا پتہ لگائیں گے جو نیٹ ورک کو کمزوریوں اور غلط کنفیگریشنز کی تلاش میں اسکور کرتے ہیں۔ بنیادی تحفظ کو یقینی بنانے کے لیے آپ کو لانچ کے فوراً بعد کچھ چیزیں کرنی چاہئیں۔

مواد

غیر جڑ صارف

پہلا قدم یہ ہے کہ اپنے لیے ایک نان روٹ صارف بنائیں۔ بات یہ ہے کہ صارف 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 پاس ورڈ کی بجائے کلیدیں۔

بروٹ فورس یا پاس ورڈ لیک ایک معیاری اٹیک ویکٹر ہیں، اس لیے بہتر ہے کہ ایس ایس ایچ (سیکیور شیل) میں پاس ورڈ کی تصدیق کو غیر فعال کر دیں اور اس کے بجائے کلیدی تصدیق کا استعمال کریں۔

SSH پروٹوکول کو لاگو کرنے کے لیے مختلف پروگرام ہیں، جیسے lsh и ڈراپ بیئر، لیکن سب سے زیادہ مقبول 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، ویم جیسے ٹیکسٹ ایڈیٹر کا استعمال کرتے ہوئے:

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 میں آپ کو روٹ کے لیے تصدیق کو غیر فعال کرنے کی ضرورت ہے (یہی وجہ ہے کہ ہم نے ایک نیا صارف شروع کیا)۔

CentOS/Red Hat پر ہمیں لائن ملتی ہے۔ PermitRootLogin yes تشکیل فائل میں /etc/ssh/sshd_config اور اسے تبدیل کریں:

PermitRootLogin no

اوبنٹو پر لائن شامل کریں۔ 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

اوبنٹو پر لائن شامل کریں۔ 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 کے ساتھ - فائر والڈڈ.

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

Fail2Ban

سروس Fail2Ban سرور پر لاگز کا تجزیہ کرتا ہے اور ہر آئی پی ایڈریس سے رسائی کی کوششوں کی تعداد شمار کرتا ہے۔ سیٹنگز اس بات کے اصول بتاتی ہیں کہ ایک مخصوص وقفہ کے لیے رسائی کی کتنی کوششوں کی اجازت ہے - جس کے بعد اس IP ایڈریس کو ایک مخصوص مدت کے لیے بلاک کر دیا جاتا ہے۔ مثال کے طور پر، آئیے 5 گھنٹے کے اندر ایس ایس ایچ کی توثیق کی 2 ناکام کوششوں کی اجازت دیں، پھر دیئے گئے 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 پر آپ کو ایپلیکیشن انسٹال کرنے کی ضرورت ہے۔ ڈی این ایف آٹومیٹک اور ٹائمر آن کریں:

sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

ٹائمر چیک:

sudo systemctl status dnf-automatic.timer

پہلے سے طے شدہ بندرگاہوں کو تبدیل کرنا

ایس ایس ایچ کو 1995 میں ٹیل نیٹ (پورٹ 23) اور ایف ٹی پی (پورٹ 21) کو تبدیل کرنے کے لیے تیار کیا گیا تھا، اس لیے پروگرام کے مصنف، ٹیٹو الٹنن منتخب کردہ پورٹ 22 بطور ڈیفالٹ، اور IANA سے منظور شدہ ہے۔

قدرتی طور پر، تمام حملہ آور اس بات سے واقف ہوتے ہیں کہ SSH کس پورٹ پر چل رہا ہے - اور سافٹ ویئر ورژن معلوم کرنے کے لیے، معیاری روٹ پاس ورڈ چیک کرنے کے لیے، اور اسی طرح کی باقی معیاری بندرگاہوں کے ساتھ اسے اسکین کریں۔

معیاری بندرگاہوں کو تبدیل کرنا - ابہام - کئی بار کوڑے کی ٹریفک کی مقدار، لاگز کے سائز اور سرور پر بوجھ کو کم کرتا ہے، اور حملے کی سطح کو بھی کم کرتا ہے۔ اگرچہ کچھ "مبہمی کے ذریعے تحفظ" کے اس طریقہ پر تنقید کریں (غیر واضح کے ذریعے سیکورٹی) وجہ یہ ہے کہ یہ تکنیک بنیادی کے خلاف ہے۔ تعمیراتی تحفظ. لہذا، مثال کے طور پر، امریکی نیشنل انسٹی ٹیوٹ آف اسٹینڈرڈز اینڈ ٹیکنالوجی میں "سرور سیکورٹی گائیڈ" ایک اوپن سرور آرکیٹیکچر کی ضرورت کی نشاندہی کرتا ہے: "کسی سسٹم کی سیکیورٹی کو اس کے اجزاء کے نفاذ کی رازداری پر انحصار نہیں کرنا چاہیے،" دستاویز کہتی ہے۔

نظریاتی طور پر، پہلے سے طے شدہ بندرگاہوں کو تبدیل کرنا کھلے فن تعمیر کے عمل کے خلاف ہے۔ لیکن عملی طور پر، نقصان دہ ٹریفک کی مقدار اصل میں کم ہو جاتی ہے، اس لیے یہ ایک سادہ اور موثر اقدام ہے۔

پورٹ نمبر کو ہدایت کو تبدیل کر کے کنفیگر کیا جا سکتا ہے۔ Port 22 تشکیل فائل میں / etc / ssh / sshd_config. یہ پیرامیٹر سے بھی ظاہر ہوتا ہے۔ -p <port> в sshd. SSH کلائنٹ اور پروگرام sftp آپشن کی بھی حمایت کرتے ہیں۔ -p <port>.

پیرامیٹر -p <port> کمانڈ کے ساتھ جڑتے وقت پورٹ نمبر بتانے کے لیے استعمال کیا جا سکتا ہے۔ ssh لینکس میں میں sftp и scp پیرامیٹر استعمال کیا جاتا ہے۔ -P <port> (کیپٹل پی) کمانڈ لائن انسٹرکشن کنفیگریشن فائلوں میں کسی بھی قدر کو اوور رائیڈ کرتی ہے۔

اگر بہت سے سرورز ہیں، تو لینکس سرور کی حفاظت کے لیے تقریباً تمام ان کارروائیوں کو اسکرپٹ میں خودکار کیا جا سکتا ہے۔ لیکن اگر صرف ایک سرور ہے، تو بہتر ہے کہ اس عمل کو دستی طور پر کنٹرول کیا جائے۔

ایڈورٹائزنگ کے حقوق پر

آرڈر کریں اور ابھی شروع کریں! وی ڈی ایس کی تخلیق کسی بھی ترتیب اور کسی بھی آپریٹنگ سسٹم کے ساتھ ایک منٹ کے اندر۔ زیادہ سے زیادہ کنفیگریشن آپ کو مکمل طور پر آنے کی اجازت دے گی - 128 CPU کور، 512 GB RAM، 4000 GB NVMe۔ مہاکاوی 🙂

لینکس سرور تحفظ۔ پہلے کیا کرنا ہے۔

ماخذ: www.habr.com