راهکار عملی افزایش امنیت سرور

زمان مطالعه: 9 دقیقه
انتشار :
۱۴۰۲-۰۵-۳۰

امنیت سرور خود را با این مقاله افزایش دهید ، نوین هاست یار نوین شماست : برخی فکر می کنند اگر هیچ سرویس در حال اجرایی روی سرور وجود نداشته باشد ، خطرناک نیست و مهم نیست که همه درگاه ها باز باشند. اگر اتصال ها به پورتهای بلااستفاده مسدود شده یا از بین بروند ، اکثر مزاحمان مخرب به دستگاه های دیگری منتقل می شوند که درگاه های آن ها در حال پذیرش آن ها هستند. تنظیم یک فایروال فقط چند دقیقه طول می کشد – بنابراین ما به شدت توصیه می کنیم برای افزایش امنیت سرور ( سرور مجازی , سرور اختصاصی ) خود این کار را انجام دهید.

سپس بعد از ایجاد سرور ابری جدید ، توصیه می کنیم کارهای زیر را برای تقویت امنیت سرور انجام دهید.

راهکار عملی افزایش امنیت سرور

ورود به سرور :

با داشتن آدرس IP و رمز عبور خود ، با استفاده از دستور SSH زیر وارد سرور خود شوید:

ssh root@123.45.67.890

توجه: اگر وارد یک سرور مجازی بازسازی شده شده اید ، ممکن است پیامی را ببینید که می گوید شناسایی میزبان از راه دور تغییر کرده است. هنگام بازسازی سرور ابری ، کلید میزبان از راه دور تغییر می کند ، که نشان دهنده فعالیت غیرمعمول یا مشکوک در رایانه شما است. برای جلوگیری از این مشکل ، ورودی قدیمی تر را برای آدرس IP سرور حذف کنید. در رایانه خود ، با استفاده از دستور زیر ، پرونده SSH هاست را ویرایش کنید و هر ورودی که به آدرس IP سرور cloud خود اشاره دارد را حذف کنید:

nano ~/.ssh/known_hosts

اگر سیستم شما سیستم عامل دیگری غیر از لینوکس یا Mac OS X را اجرا می کند ، مکان پرونده هاست ها متفاوت خواهد بود. برای پیدا کردن مکان این پرونده ها به مستندات سیستم عامل خود مراجعه کنید.

تغییر پسورد روت :

پس از ورود به سرور خود طبق دستور زیر رمز خود را تغییر دهید :

Passwd

اضافه کردن user admin

۱- طیق دستور زیر user admin را وارد کرده و نام کاربری مورد نظر خود را وارد نمایید :

adduser demo

توجه: پس از مرحله اولیه ، شما نباید به عنوان کاربر اصلی وارد شوید . تا سرور مجازی عملیات روزانه را روی خود انجام دهد. با این حال ، برای انجام این کارهای اداری به امتیازات فوق العاده کاربر (sudo) نیاز دارید.

۲-برای اختصاص امتیازات sudo به user admin ، طبق دستور زیر عمل کنید ، که این دستور ویرایشگر nano را بطور پیش فرض در اوبونتو فراخوانی می کند:

Visudo

۳-در پایان کار ، نام user admin خود و متن زیر را وارد نمایید :

demo ALL=(ALL) ALL

۴-پس از پایان کار از پرونده خارج شوید و آن را طبق دستور زیر ذخیره کنید :

  1.  Ctrl-X را فشار دهید تا خارج شوید.
  2.  y را فشار دهید تا تغییرات را تأیید کنید.
  3. Enter را فشار دهید تا پرونده به عنوان /etc/sudoers.tmp ذخیره شود.

 

توجه: در حین کار در ویرایشگر نانو ، کلید backspace / Delete بطور غیر منتظره ای کار می کند ، و به جای پشت سر ، کلیدهای جلوی مکان نما را پاک می کنید. شما می توانید این مشکل را با ویرایش پرونده / etc / nanorc , طبق دستور زیر حل کنید:

set rebinddelete

بعد از ذخیره کردن پرونده و باز کردن مجدد نانو ، تغییرات جدید اعمال می شود.

 

تنظیم کلیدهای عمومی و خصوصی (keygen SSH)

یکی از راه های موثر برای دسترسی SSH به سرور ابری استفاده از یک کلید عمومی / خصوصی است ، به این معنی که یک کلید عمومی روی سرور اختصاصی قرار می گیرد و کلید خصوصی روی رایانه شما است. این کار باعث می شود که شخصی با استفاده از رمز عبور نتواند وارد سیستم شما شود . آنها باید کلید خصوصی داشته باشند. این تنظیم شامل مراحل زیر است: کلید را در رایانه خود ایجاد کنید ، کلید عمومی را روی سرور کپی کنید و مجوزهای صحیح را برای این کلید تنظیم کنید.

 

مرحله ۱ : ایجاد کلید های عمومی و خصوصی

I. طبق دستور زیر در رایانه خود برای نگه داری کلید ها یک پوشه ایجاد کنید :

mkdir ~/.ssh

II. طبق دستور زیر کلید های ssh را در رایانه خود ایجاد کنید :

ssh-keygen -t rsa

بعد از انجام مراحل فوق id_rsa و id_rsa.pub در دایرکتوری .ssh ایجاد می شود .و پرونده ras-pub حاوی کلید عمومی است که شما میتوانید آن را روی سرور خود قرار دهید .

پرونده id-ras حاوی کلید خصوصی شما است . شما هرگز نباید آن را در رایانه خود نگه دارید و یا آن را در معرض دید افراد قرار دهید . زیرا افراد سودجو با در دست داشتن کلید خصوصی شما میتوانن به سرور شما راه پیدا کنند .

 

مرحله ۲ : کپی کردن کلید عمومی

شما میتوانید با استفاده از دستور scp کلید عمومی خود را در روی سرور خود قرار دهید .

I. طبق دستور زیر شما میتوانید user admin خود ,آدرس ip و user directory خود را جایگزین کنید :

scp ~/.ssh/id_rsa.pub demo@123.45.67.890:/home/demo/

II. در صورت درخواست رمز عبور user admin خود را وارد نمایید .

III. طبق دستور زیر دایرکتوری را در پوشه خانگی سرور به نام ssh ایجاد کنید و کلید عمومی را داخل آن قرار دهید :

mkdir /home/demo/.ssh

mv /home/demo/id_rsa.pub /home/demo/.ssh/authorized_keys

مرحله ۳ : اصلاح مجوز های SSH

طبق دستورات زیر مجوز های صحیح را بر روی کلید های عمومی و خصوصی تنظیم کرده و تنظیمات کاربر (پیش فرض ) را به کاربر خود تغییر دهید .

chown -R demo:demo /home/demo/.ssh
chmod 700 /home/demo/.ssh
chmod 600 /home/demo/.ssh/authorized_keys

اکنون شما با موفقیت کلید را ایجاد کرده و آن را در سرور خود کپی کرده اید و مجوز های صحیح را برای آن ایجاد کرده اید .

 

تغییر پیکربندی SSH :

نگه داشتن سرویس SSH در درگاه ۲۲ آن را به یک هدف آسان تبدیل می کند. توصیه می کنیم تنظیمات پیش فرض SSH را تغییر دهید تا امنیت آن بیشتر شود.

I. دستور زیر را صادر نمایید :

nano /etc/ssh/sshd_config

II. طبق دستور زیر پورت پیش فرض ۲۲ را به یکی از انتخاب های خود تغییر دهید ، و ورود به سیستم root را خاموش کنید و تعریف کنید که کاربران می توانند وارد سیستم شوند :

Port 22 <— change to a port of your choosing
Protocol 2
PermitRootLogin no
PasswordAuthentication no
UseDNS no
AllowUsers demo

از آنجا که شما یک کلید عمومی / خصوصی تنظیم کرده اید ، می توانید پارامتر PasswordAuthentication را روی شماره تنظیم نکنید. با این حال ، اگر قصد دسترسی از طریق رایانه های مختلف را به سرور ابری و سرور مجازی خود دارید ، ممکن است بخواهید رمزعبور را تأیید کنید. در این حالت فقط در صورت ایمن بودن رایانه, از کلید خصوصی استفاده کنید (یعنی کلید خصوصی را روی رایانه کار قرار ندهید).

تنظیمات شما هنوز فعال نیستند قبل از شروع مجدد SSH با استفاده از درگاه جدید ، باید با استفاده از iptables یک فایروال ساده ایجاد کنید.

 

تنظیم فایروال خصوصی امنیت سرور با استفاده از iptables

ابزاری به نام iptables فایروال سیستم های لینوکس است. این کار با امتناع از اتصال به درگاهها یا خدماتی که مشخص کرده اید ، کار می کند. به عنوان بخشی از این رویه ، شما سه درگاه باز خواهید کرد: ssh ، http و https.

سپس دو پرونده ایجاد خواهید کرد:

/etc/iptables.test.rules

/etc/iptables.up.rules

دسته اول مجموعه ای از قوانین موقتی و دسته دوم مجموعه دائمی از قوانین است که از iptables استفاده می شود.

توجه: برای تکمیل مراحل ، باید مجوزهای کاربر را ریشه یابی کنید. اگر در حال حاضر به عنوان root وارد نشده اید ، از دستور sudo در مقابل دستورات زیر استفاده کنید .

 

I. دستور زیر را صادر کنید تا ببینید چه فرآیندهایی در حال اجرا هستند:

iptables –L

بعد از اجرای دستور فوق شما فرایند های زیر را مشاهده خواهید کرد :

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

این بدان معنی است که سرور, هر شخصی را در هر پورت قبول می کند.

II. طبق دستور زیر برای ساخت فایروال ، پرونده /etc/iptables.test.rules را ایجاد کرده و برخی از قوانین را اضافه کنید. اگر قبلاً از طریق این مراحل کار کرده اید ، ممکن است این پرونده خالی نباشد:

nano /etc/iptables.test.rules

III. در صورت لزوم پورت ها را تغییر داده و اضافه کنید.

IV. دستور زیر را برای اعمال قوانین روی سرور خود صادر کنید:

iptables-restore < /etc/iptables.test.rules

V. دستور زیر را برای ذکر تفاوت صادر کنید:

iptables –L

VI. اگر تغییری در خروجی رخ نداد ، مراحل قبل را تکرار کنید و دوباره امتحان کنید.

VII. قوانین را بررسی کنید و ببینید دقیقاً چه چیزی پذیرفته شده و رد می شود. هنگامی که از قوانین راضی هستید ، با صدور دستور زیر آنها را برای همیشه ذخیره کنید:

iptables-save > /etc/iptables.up.rules

توجه: اگر سرور قبل از ذخیره دائمی قوانین , دوباره راه اندازی مجدد شود ، تغییرات از بین می روند و سرور (ابری و سرور مجازی ) به تنظیمات قبلی برمی گردد.

طبق دستور زیر اسکریپتی را اضافه کنید که سیستم با شروع رابط های شبکه شما اجرا شود:

nano /etc/network/if-pre-up.d/iptables

دستور زیر را به پرونده جدید اضافه کنید :

#!/bin/sh

/sbin/iptables-restore < /etc/iptables.up.rules

طبق دستور زیر تغییرات خود را ذخیره کنید ، و سپس اسکریپت جدید را اجرایی کنید:

chmod +x /etc/network/if-pre-up.d/iptables

تنظیم iptables در Red Hat :

اگر از توزیع red hat استفاده می کنید ، iptables کمی متفاوت از آنچه در توزیع اوبونتو انجام می شود کار می کند. با استفاده از دستورات زیر می توانید خط iptables را مستقیماً از خط فرمان تغییر دهید.

HTTP – port 80

برای RHEL 7 و CentOS 7 ، از دستور زیر استفاده کنید تا پورت ۸۰ را برای ترافیک HTTP (وب) در فایروال iptables خود باز کنید:

sudo firewall-cmd –add-service=http –permanent

و برای نسخه های قدیمی تر سیستم عامل CentOS 7 و RHEL 7 ، از دستور زیر استفاده کنید:

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp –dport http -j ACCEPT

HTTPS/SSL – port 443

برای RHEL 7 و CentOS 7 ، از دستور زیر برای باز کردن پورت ۴۴۳ برای ترافیک امن HTTP استفاده کنید:

sudo firewall-cmd –add-service=https –permanent

و برای نسخه های قدیمی تر سیستم عامل CentOS 7 و RHEL 7 ، از دستور زیر استفاده کنید :

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp –dport https -j ACCEPT

SSH – port 22

اگرچه پورت ۲۲ بصورت پیش فرض باز است تا بتواند پس از ساخته شدن به SSH به سرور خود اجازه دسترسی دهد ، دستور زیر به شما نشان می دهد که چگونه می توانید پورت ۲۲ را در RHEL 7 و CentOS 7 باز کنید:

sudo firewall-cmd –add-service=ssh –permanent

اگر یک درگاه دلخواه برای SSH تنظیم کرده اید ، میتوانید از دستور زیر برای RHEL 7 و CentOS 7 استفاده کنید:

sudo firewall-cmd –add-port=<customport>/tcp –permanent

شما میتوانید برای نسخه های قدیمی تر سیستم عامل ، از دستور زیر برای باز کردن پورت ۲۲ استفاده کنید:

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp –dport ssh -j ACCEPT

FTP – port 21

FTP یک سرویس معمول برای انتقال پرونده است ، اما به دلیل اینکه یک پروتکل مطمئن نیست ، منسوخ شده است. ما اکیداً توصیه می کنیم به جای آن از یک پروتکل انتقال فایل امن مانند SFTP استفاده کنید. اگر کاملاً مجبور به استفاده از FTP هستید. از دستور زیر برای باز کردن پورت پیش فرض ۲۱ در RHEL 7 و CentOS 7 استفاده کنید:

 

sudo firewall-cmd –add-service=ftp –permanent

شما میتوانید برای نسخه های قدیمی تر سیستم عامل ، از دستورات زیر استفاده کنید:

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp –dport ftp -j ACCEPT
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp –dport ftp-data -j ACCEPT

MySQL – port 3306

اگر می خواهید از سرور دیگری اتصال به راه دور را به پایگاه داده MySQL خود برقرار کنید. باید در iptables پورت ۳۳۰۶ را باز کنید. شما میتوانید از دستور زیر برای RHEL 7 و CentOS 7 استفاده کنید:

sudo firewall-cmd –add-service=mysql –permanent

و برای نسخه های قدیمی تر سیستم عامل CentOS 7 و RHEL 7 ، از دستور زیر استفاده کنید :

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp –dport mysql -j ACCEPT

ذخیره کردن قوانین امنیت سرور :

برای ذخیره کلیه قوانینی که ایجاد کرده اید شما میتوانید از دستور زیر استفاده کنید. اگر قبل از راه اندازی مجدد سرور شما ذخیره نشود ، آیین نامه iptables به صفحه اصلی پیش فرض باز می گردد و همه ترافیک را به جز درگاه ۲۲ مسدود می کند. اگر از RHEL 7 یا CentOS 7 استفاده می کنید ، این مرحله لازم نیست:

sudo /sbin/service iptables save

راه اندازی مجدد iptables

تغییرات شما در iptables فقط پس از ذخیره قوانین و در سرویس iptables قابل اجرا است. به یاد داشته باشید ، اگر iptables را قبل از ذخیره کردن قوانین خود مجدداً راه اندازی کنید ، iptables به صفحه پیش فرض برگردانده می شود.

برای راه اندازی مجدد iptables در RHEL 7 و CentOS 7 از دستور زیر استفاده کنید:

firewall-cmd –reload

و برای نسخه های قدیمی تر میتوانید از دستور عمل زیر استفتده کنید :

sudo /sbin/service iptables restart

بررسی قوانین امنیت سرور

برای بررسی قوانین پس از بارگیری مجدد فایروال در RHEL 7 و CentOS 7 ، میتوانید از دستورات زیر استفاده کنید:

firewall-cmd –get-active-zones

طبق دستور عمل زیر شما میتوانید مشاهده کنید که کدام منطقه فعال است :

firewall-cmd –zone=<zone> –list-all

دستور فوق سرویس های فعال شده در یک منطقه را مشخص میکند .

 

راه اندازی مجدد ssh

اکنون می توانید سرویس SSH را مجدداً راه اندازی کنید. با راه اندازی مجدد ssh وارد سیستم شوید و آنرا با اتصال جدید آزمایش کنید. به این ترتیب اگر خطایی رخ دهد ، می توانید آن را راحت تر عیب یابی کنید.

در اکثر توزیع ها ، سرویس sshd است ، و شما میتوانید با دستور زیر آن را مجدداً راه اندازی می کنید:

sudo service sshd restart

در اوبونتو و برخی توزیع های دیگر ، به این سرویس ssh گفته می شود و شما میتوانید با دستور زیر آن را مجدداً راه اندازی کنید:

sudo service ssh restart

اگر بعد از راه اندازی مجدد SSH در ایجاد ارتباط جدید مشکلی دارید ، علائم آن را بررسی کنید تا تشخیص دهید چه اشتباهی ممکن است باشد.

در صورت قطع زمان اتصال ، ممکن است در پیکربندی iptables مشکلی ایجاد شود.

اگر درباره یک کلید خصوصی هشدار دهد ، ممکن است کلید شما به درستی روی سرور نصب نشده باشد .

اگر در حال بازسازی سرور هستید ، لازم است قبل از برقراری ارتباط ، کلید میزبان را از پرونده معروف_هاست خود حذف کنید.

پیکربندی نادرست SSH ، sudo یا iptables باعث می شود سیستم شما از سیستم خارج شود. در صورت بروز چنین اتفاقی ، به صفحه کنترل Rackspace Cloud وارد شوید و از حالت اضطراری کنسول یا حالت نجات برای تعمیر پیکربندی ها استفاده کنید.

اینها اصول اولیه اتصال به یک سرور ابری لینوکس و تنظیم امنیت است. برای انجام این مراحل روی سرور ویندوز ، به سرور Windows مراجعه کنید.

بازخوردها
مقالات مرتبط
مزایا و معایب مجازی ساز KVM
مجازی ساز KVM چیست و چه مزایایی دارد؟
یکی از پرکاربردترین مجازی سازها که برای کاربران مزایای بسیار زیادی را به همراه دارد، مجازی ساز KVM…
زمان مطالعه: 4 دقیقه
حافظه NVMe چیست؟
حافظه NVMe چیست و چه مزایایی دارد؟
بیشتر افرادی که دارنده وب سایت هستند یا قصد دارند وب سایتی را راه‌اندازی کنند، با هارد سرور…
زمان مطالعه: 4 دقیقه