فهرست محتوا
با آگاهی از روشهای افزایش امنیت سرور مجازی لینوکس، میتوانید از حملات و تهدیدات سایبری مختلفی جلوگیری کنید. با این حال کاربران علاوهبر بکارگیری راهکارهای امنیتی باید به صورت مداوم بر VPS خود نظارت کنند. در این مقاله در رابطه با انواع تهدیدات و آسیبپذیریهای امنیتی و همچنین راهکارهای افزایش امنیت سرور مجازی آشنا خواهید شد.
رایجترین تهدیدات امنیتی کدامند؟
با اینکه لینوکس به عنوان محبوبترین سیستمعامل متنباز دنیا، نسبت به سایر سیستمعاملها از امنیت بیشتری برخوردار است اما بازهم بسیاری از تهدیدات امنیتی ممکن است باعث آسیبرساندن به امنیت سرور و دادههای شما شوند. حال بیایید به صورت خلاصه با رایجترین آسیبپذیریها و تهدیدات امنیتی آشنا شویم:
بدافزار (Malware) : به نرمافزارهای مخربی گفته میشود که عمداً با هدف آسیبرساندن به کامپیوترها و سیستمعاملهای آنها طراحی میشوند. بدافزارها انواع مختلفی دارند که از میان آنها میتوان به
، باجافزارها (Ransomware)، ویروسها و نرمافزارهای جاسوسی اشاره کرد.حمله اسنیفینگ (Sniffing Attack): در این نوع حمله، هکرها از Packet Snifferها برای یافتن و استخراج دادههای شبکه استفاده میکنند.
حمله بروتفورس (Brute-Force Attack): در حمله بروت فورس، فرد مهاجم از روش آزمون و خطا برای حدسزدن اطلاعات ورود به سیستم کاربران استفاده میکند.
تزریق اسکیوال (SQL Injection): این حمله سایبری زمانی اتفاق میافتد که فرد هکر با نفوذ در کدهای یک وباپلیکیشن (یا وبسایت) و اضافه کردن یکسری کد مخرب به آنها، به پایگاهداده سرور دسترسی پیدا میکند.
اسکریپتنویسی متقابل سایت (XSS): این نوع حمله در سمت کلاینت (Client) اتفاق میافتد و در آن فرد مهاجم کدهای مخربی را به وبسایت هدف خود تزریق میکند.
کنترل نکردن سطوح دسترسی کاربران: یک سرور ممکن است به دلایل مختلفی دچار چنین مشکلی شود و به کاربران عمومی دسترسی ریشه (Root Access) دهد.
احراز هویت ضعیف: اطلاعات هویتی افراد معمولاً به دلیل عدم رمزگذاری دادهها، داشتن رمزهای عبور ضعیف و عدم استفاده از قابلیت
توسط افراد هکر به سرقت میروند.راهکارهای امنیتی برای افزایش امنیت سرور مجازی
قبل از بکارگیری هر گونه راهکار امنیتی، باید یکسری موارد را به صورت مداوم مورد بررسی قرار دهید که در زیر به برخی از آنها اشاره کردهایم:
- امنیت سرور مجازی
- نرمافزارهای سرور
- اتصال SSH
- دسترسی ریشه
- ورودهای انجام شده به سیستم
- رمزهای عبور
- اطلاعات مورد نیاز برای ورود به سیستم
- فایروال
- اتصال FTP
- میزان دسترسی کاربران
- فایلهای لاگ سرور
در رابطه با میزان امنیت شرکت ارائهدهنده خدمات میزبانی خود تحقیق کنید
تحقیق در مورد شرکت ارائهدهنده خدمات میزبانی وب امری ضروری است و مواردی مانند سرعت بارگذاری، هاستینگ مورد نظر شما باید دارای زیرساختهای امنیتی حرفهای باشد و بتواند به خوبی از سرور شما در برابر تهدیدات امنیتی محافظت کند. به عنوان مثال، یک شرکت ارائهدهنده خدمات هاستینگ میتواند با استفاده از ماژولهای امنیتی پیشرفتهای مانند mod_security، فایروال، قابلیت open_basedir امنیت سرورهای خود را افزایش دهد و با پشتیبانگیری منظم امکان بازیابی سریع وبسایتها را فراهم کند.
و همچنین امنیت وبسایت شما تا حد زیادی به شرکت هاستینگی که انتخاب میکنید، بستگی دارد. شرکت ارائهدهنده خدماتپورت پیشفرض SSH را تغییر دهید
اگر برای دسترسی به سرور مجازی خود از پورت پیشفرض ۲۲ استفاده کنید، در این صورت احتمال هکشدن VPS شما افزایش خواهد یافت زیرا افراد مهاجم میتوانند به راحتی پورتهای باز را اسکن و از آنها برای انجام حملات بروتفورس و داشتن دسترسی راه دور به سرور شما استفاده کنند. بنابراین به منظور افزایش امنیت سرور خود در برابر تهدیدات سایبری بهتر است پورت SSH خود را تغییر دهید. قبل از تغییر پورت حتما مطمئن شوید که برنامهها و سرویسهای نصب شده بر روی سرور خود را میتوانید بدون پورت پیشفرض نیز پیکربندی کنید زیرا تغییر دادن پورت ممکن است در مواقعی باعث از کار افتادن برنامهها و سرویسهای شما شود. اما چگونه پورت SSH را تغییر دهیم؟
۱. ترمینال لینوکس را باز کنید و وارد SSH شوید.
۲. فایل پیکربندی سرویس خود را با اجرای دستور زیر ویرایش کنید.
nano /etc/ssh/sshd_config
۳. خطی که در آن “Port 22” نوشته است را پیدا کنید.
۴. به جای ۲۲، یک شماره پورت جدید بنویسید و علامت # را نیز حذف کنید.
۵. تغییرات را ذخیره کرده و از ترمینال خارج شوید.
۶. برای راهاندازی مجدد سرویس خود، دستور زیر را وارد کنید و سپس دکمه Enter را بزنید.
کاربران توزیعهای دبیان (Debian) و اوبونتو (Ubuntu) از دستور زیر استفاده کنند:
Service ssh restart
کاربران توزیعهای سنتاواس (Centos) و ردهت (Red Hat) نیز از این دستور استفاده کنند:
systemctl restart sshd.service
۷. در پایان نیز با استفاده از پورت جدید وارد SSH شوید.
امکان ورود به سیستم از طریق کاربر ریشه را غیرفعال کنید
هر سرور مجازی لینوکس دارای یک کاربر با دسترسی ریشه میباشد که نسبت به سایر کاربران سیستم دارای اختیارات بیشتری است. مجرمان سایبری با هک کردن اطلاعات کاربر ریشه میتوانند به صورت کامل به سرور شما و دادههای آن دسترسی پیدا کنند. بنابراین، به منظور محافظت از سرور خود در برابر حملاتی مانند بروتفورس حتما باید امکان ورود به سیستم از طریق کاربر ریشه را غیرفعال کنید. برای انجام اینکار باید مراحل زیر را دنبال کنید اما قبل از آن حتما یک حساب کاربری جدید برای خود ایجاد کنید.
۱. وارد حساب SSH خود شوید.
۲. برای باز کردن و ویرایش فایل پیکربندی SSH، یکی از دو دستور زیر را اجرا کنید.
ویرایشگر nano:
nano /etc/ssh/sshd_config
ویرایشگر vi:
vi /etc/ssh/sshd_config
۳. سپس پارامتر زیر را پیدا کرده و آن را به “no” تغییر دهید:
PermitRootLogin = no
۴. تغییرات را ذخیره کرده و با استفاده از دستور زیر سرویس SSH خود را مجددا راهاندازی کنید:
توزیعهای Debian و Ubuntu:
service ssh restart
توزیعهای CentOS و Redhat:
systemctl restart sshd.service
استفاده از گذرواژههای قوی
حدس زدن رمزهای عبوری که حاوی اطلاعات شخصی و عبارتهای ساده هستند، کار آسانی است. بنابراین رمز عبور شما باید طولانی (حداقل ۹ کاراکتر) و ترکیبی از حروف کوچک و بزرگ، اعداد و کاراکترهای خاص (مانند 7*a#exaMple) باشد. ایجاد چنین گذرواژههایی باعث افزایش امنیت سرور شما در برابر حملات بروتفورس میشود. علاوهبراین، به هیچ وجه از رمز عبور تکراری استفاده نکنید. برای ایجاد گذرواژه های قوی میتوانید از ابزارهای حرفهای مانند LastPass و NordPass استفاده کنید.
استفاده از کلیدهای SSH
اگر برای ورود به حساب SSH خود از رمز عبور استفاده میکنید، در این صورت ممکن است هدف حملات sniffing قرار بگیرید. با استفاده از کلیدهای SSH میتوانید به راحتی از بروز چنین حملاتی جلوگیری کنید. کلیدهای SSH در مجموع بسیار امنتر از گذرواژهها هستند. این کلیدها توسط کامپیوترها ایجاد میشوند و میتوانند تا ۴۰۹۶ بیت طول داشته باشند و بنابراین حدس زدن آنها بسیار دشوار است. کلیدهای SSH به دو صورت عمومی (Public) و خصوصی (Private) هستند. کلید عمومی بر روی سرور و کلید خصوصی نیز بر روی دستگاه کاربر ذخیره میشود. سرور پس از شناسایی تلاشی برای ورود به سیستم، رشتهای تصادفی ایجاد و آن را با کلیدی عمومی رمزگذاری میکند. شما برای رمزگشایی این رشته نیاز به یک کلید خصوصی دارید. در ادامه با نحوه ایجاد کلیدهای SSH در سرور لینوکس آشنا میشوید.
۱. برای ایجاد کلیدهای عمومی و خصوصی SSH، دستور زیر را تایپ و سپس دکمه Enter را فشار دهید:
ssh-keygen -t rsa
۲. پس از دریافت پاسخ زیر دوباره دکمه Enter را بزنید:
Enter file in which to save the key (/root/.ssh/id_rsa)
۳. سپس از شما خواسته میشود تا عبارت رمزی (Passphrase) مورد نظر خود را وارد و آن را تایید کنید. اگر عبارت رمزی ندارید، دو بار دکمه Enter را بزنید.
۴. در پایان نیز کلیدهای خصوصی و عمومی SSH شما با موفقیت ذخیره خواهند شد.
راهاندازی فایروال IPtables
درخواستهای HTTP میتوانند از هر نقطهای از جهان ایجاد شوند و بنابراین به منظور جلوگیری از دسترسیهای غیرمجاز، درخواستهای جعلی و یا
باید ترافیک ورودی و خروجی سرور خود را فیلتر کنید. اکثر توزیعهای گنو لینوکس (GNU/Linux) دارای یک سرویس فایروال حرفهای به نام IPtables هستند. این فایروال با استفاده از یکسری جداول میتواند ترافیک سرور شما را کنترل کند. IPtables برای فیلترکردن دادههای ورودی و خروجی، از قوانینی به نام زنجیره (Chain) استفاده میکند.نحوه نصب Iptables و بررسی پیکربندی فعلی آن در سیستم عامل اوبونتو:
۱. ترمینال اوبونتو را باز کنید و وارد SSH شوید.
۲. با استفاده از دستور زیر ابزار IPtables را نصب کنید:
sudo apt-get install iptables
۳. پس از پایان نصب نیز برای مشاهده فهرست قوانین (Rules) موجود، دستور زیر را تایپ کنید و دکمه Enter را بزنید:
sudo iptables -L -v
فعال کردن فایروال UFW
به منظور کنترل بهتر ترافیک ورودی و خروجی سیستم خود میتوانید فایروال UFW را فعال کنید. این فایروال مبتنی بر فناوری Netfilter بوده و کار با آن نیز بسیار راحت است. فایروال UFW معمولاً به صورت پیشفرض بر روی توزیعهای لینوکس نصب میشود و میتواند با کنترل دقیق درخواستهای ورودی و خروجی تا حد زیادی از تهدیدات سایبری جلوگیری کند. شما همچنین میتوانید تنظیمات و قوانین آن را مطابق با نیازهای خود تغییر دهید.
نحوه فعال کردن فایروال UFW در اوبونتو:
۱. ترمینال را باز کنید و وارد SSH شوید.
۲. سپس برای فعال کردن فایروال UFW دستور زیر را وارد کنید:
sudo ufw enable
۳. اگر با پیام “command not found” مواجه شدید، فایروال را با استفاده از دستور زیر نصب کنید:
sudo apt-get install ufw
۴. پس از اتمام مراحل نصب، برای فعالسازی فایروال UFW مجددا دستور مرحله دوم را اجرا کنید.
۵. برای بررسی وضعیت فایروال خود نیز از دستور زیر استفاده کنید:
sudo ufw status
به جای FTP از SFTP استفاده کنید
FTP (پروتکل انتقال فایل) از قابلیت رمزگذاری پشتیبانی نمیکند و FTPS (با SFTP اشتباه نگیرید) نیز تنها اطلاعات مورد نیاز برای ورود به سیستم را رمزگذاری میکند و باعث افزایش امنیت فرایند انتقال فایل نمیشود و بنابراین استفاده از آنها میتواند دادههای شما را در معرض حملات سایبری مانند Sniffing و DDoS قرار دهد. پس بهتر است به جای FTP یا FTPS از پروتکل SFTP استفاده کنید. SFTP در واقع نسخه امن پروتکل FTP میباشد که تمام دادهها، اطلاعات هویتی و فرآیند انتقال فایل را به صورت کامل رمزنگاری میکند. SFTP همچنین از حملات مرد میانی (Man-in-the-middle) نیز جلوگیری میکند. با وجود SFTP هر کاربری باید قبل از دسترسی به سیستم احراز هویت شود.
مراحل راهاندازی SFTP :
۱. ترمینال لینوکس را باز کنید و وارد SSH شوید.
۲. سپس برای ایجاد اتصال SFTP، یکی از دو دستور زیر وارد کنید و دکمه Enter را بزنید:
sftp user@server_ipaddress
یا
sftp user@remotehost_domainname
۳. در صورت استفاده از پورت سفارشی نیز باید یکی از دو دستور زیر را اجرا کنید:
sftp -oPort=customport user@server_ipaddress
یا
sftp -oPort=customport user@remotehost_domainname
۴. پس از برقراری اتصال، در صفحه ترمینال یک اعلان SFTP ظاهر خواهد شد.
نرمافزار Fail2Ban را نصب کنید
Fail2Ban پلتفرمی است که تلاشهای کاربران برای ورود به سیستم را رصد میکند و آدرسهای IP که چندین بار ورود ناموفق داشته باشند را مسدود میکند. Fail2Ban همچنین میتواند تا حد زیادی از سرورها در برابر حملات دیکشنری، DoS ، DDoS و بروتفورس محافظت میکند. Fail2Ban برای مسدودکردن آدرسهای IP از ابزارهای Iptable و Firewalld استفاده میکند. نرمافزارهای OSSEC ،Tripwire و Wazuh نیز تقریبا عملکردی مشابه Fail2Ban دارند و در صورت نیاز میتوانید از آنها استفاده کنید.
مراحل نصب نرم افزار Fail2Ban در اوبونتو:
۱. ترمینال خود را باز و یک اتصال SSH ایجاد کنید.
۲. با وارد کردن دستور زیر بسته نرمافزاری Fail2Ban را نصب کنید:
sudo apt-get install fail2ban
۳. پس از مشاهده پرسش زیر حرف Y را تایپ کنید و دکمه Enter را بزنید.
Do you want to continue? [Y/n] y
۴. پس از پایان مراحل نصب، با اجرای دستور زیر وضعیت Fail2Ban را مورد بررسی قرار دهید:
sudo systemctl status fail2ban
۵. نرمافزار Fail2Ban باید به مانند تصویر زیر فعال و در حال اجرا باشد.
یک آنتیویروس نصب کنید
فایروالها تنها میتوانند ترافیک ورودی و خروجی سرور شما را کنترل کنند و بنابراین برای اسکن فایلهای ذخیره شده در سرورمجازی خود حتما باید از یک آنتیویروس حرفهای استفاده کنید. لینوکس با اینکه نسبت به سایر سیستمعاملها از امنیت بیشتری برخوردار است اما بازهم در برابر ویروسهای کامپیوتری مصون نبوده و مهاجمان همچنان میتوانند سرورهای شما و دادههای آنها را مورد هدف قرار دهند. آنتیویروسهای مختلفی در بازار وجود دارد اما توصیه ما این است که از ClamAV استفاده کنید. ClamAV یک آنتیویروس متنباز است که میتوانید از آن برای شناسایی فعالیتهای مشکوک و قرنطینه کردن فایلهای ناخواسته و مخرب استفاده کنید.
مراحل نصب آنتیویروس ClamAV در سیستمعامل CentOS :
۱. ترمینال را باز کنید و وارد SSH شوید.
۲. سپس با استفاده از دستور زیر، بستههای اضافی نرمافزاری لینوکس (EPEL) را نصب کنید:
sudo yum -y install epel-release
۳. پیام “!Complete” نشان میدهد که فرآیند نصب EPEL با موفقیت انجام شده است.
۴. با وارد کردن دستور زیر و زدن دکمه Enter، تمام اطلاعات کش موجود در حافظه پنهان را پاک کنید:
sudo yum clean all
۵. حال با اجرای دستور زیر ClamAV را نصب کنید:
sudo yum -y install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd
۶. پیام “!Complete” نشان میدهد که آنتیویروس ClamAV بر روی سیستمعامل شما نصب شده است.
۷. ClamAV نصب شده و در حال اجرا است.
نصب VPN
استفاده از اتصالات اینترنت عمومی باعث افزایش احتمال رهگیری ترافیک و سرقت دادهها میشود. بنابراین بهتر است برای جلوگیری از چنین تهدیدات سایبری، حتما بر روی سرور مجازی خود یک ویپیان نصب کنید. VPNها تمام ترافیک و دادههای شما را رمزگذاری کرده و با تغییر دادن آدرس IP، موقعیت مکانی و در نتیجه هویت واقعی شما را پنهان میکنند. با استفاده از VPN، شرکتهای ارائهدهنده اینترنت، هکرها و در کل هیچ شخص ثالثی نمیتواند دادههای شما را بخواند و یا آنها را به سرقت ببرد.
مراحل راهاندازی پروتکل OpenVPN در سیستم عامل CentOS:
۱. ترمینال را باز کنید و به SSH متصل شوید.
۲. با اجرای دستور زیر بسته net-tools را نصب کنید.
sudo yum install net-tools
۳. سپس برای دانلود بسته OpenVPN، دستور “curl” به صورت زیر وارد کنید و دکمه Enter را بزنید:
curl -O http://swupdate.openvpn.org/as/openvpn-as-2.7.3-CentOS7.x86_64.rpm
۴. برای تأیید اعتبار نصب OpenVPN، دستور زیر را اجرا کنید:
*-sha256sum openvpn-as
۵. سپس نتیجه اعتبارسنجی انجام شده را مطابق شکل زیر مشاهده خواهید کرد:
۶. مشخصات اعتبارسنجی خود را با آنچه در وبسایت ارائه شده است، مقایسه کنید و در صورت داشتن تطابق با اجرای دستور زیر فرآیند نصب OpenVPN را شروع کنید:
sudo rpm --install openvpn-as-*.rpm
۷. پس از پایان نصب، جزئیات رابطهای کاربری کلاینت و ادمین (Admin UI and Client UI) به صورت زیر در اختیار شما قرار خواهد گرفت.
۸. سپس با استفاده از دستور زیر یک گذرواژه جدید برای خود ایجاد کنید:
passwd openvpn
۹. برای تایید گذرواژه خود دوباره آن را تایپ کنید.
۱۰. با کلیک کردن بر روی لینک رابطهای کاربری کلاینت و ادمین میتوانید به صفحه زیر دسترسی پیدا کنید:
۱۱. در پایان نیز برای ورود به محیط VPN خود، نام کاربری (Username) و رمز عبوری (Password) که ایجاد کردهاید را وارد صفحه بالا کنید و دکمه Sign In را فشار دهید.
پروتکل IPv6 را غیرفعال کنید
فعال بودن
باعث آشکار شدن آسیبپذیریهای امنیتی سرور شما شده و آن را در معرض حملات سایبری مختلفی قرار میدهد. اگر استفاده خاصی از IPv6 ندارید، حتما آن را به صورت کامل غیرفعال کنید. مهاجمان اغلب از طریق IPv6، دادههای مخربی را به سمت اهداف خود ارسال میکنند و بنابراین فعال نگه داشتن این پروتکل میتواند سرور شما را در معرض بسیاری از نقضها و تهدیدات امنیتی قرار دهد.نحوه غیرفعال کردن IPv6 در اوبونتو:
۱. ترمینال را باز کنید و وارد SSH شوید.
۲. سپس برای غیرفعال سازی IPv6 دستور زیر را اجرا کنید:
sudo nano /etc/sysctl.d/99-sysctl.conf
۳. طبق تصویر، نوشتههای زیر را وارد فایل پیکربندی باز شده کنید:
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
۴. فایل را ذخیره کنید و از آن خارج شوید.
۵. برای اعمال تغییرات فوق، دستور زیر را تایپ کنید و دکمه Enter را بزنید:
sudo sysctl -p
۶. در پایان نیز دستور زیر را اجرا کنید
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
۷. مشاهده عدد ۱ نشان میدهد که مراحل غیرفعال سازی IPv6 با موفقیت انجام شده است.
علاوه بر موارد فوق حتما به طور منظم نرمافزارهای سرور خود را بهروزرسانی کنید و دسترسی کاربران خود را نیز با دقت زیر نظر داشته باشید.
سوالات متداول
سرور مجازی چیست؟
سرور مجازی یا VPS در واقع بخشی از یک سرور فیزیکی است که با استفاده از فناوری مجازیسازی به چند پارتیشن مجزا تقسیمبندی شده است که کاربران آن میتوانند به شکلی کاملا اختصاصی به منابع سرور خود دسترسی داشته باشند. بنابراین استفاده سایر وبسایتها از منابع سرور فیزیکی هیچ تاثیری بر وبسایت شما نخواهد گذاشت.
آیا سرور مجازی امن است؟
هیچ پلتفرم میزبانی کاملا امنی در بازار وجود ندارد اما با این وجود، سرور مجازی یکی از امنترین انواع سرورها میباشد و علت آن این است که هر VPS به مانند سرور اختصاصی دارای محیطی ایزوله میباشد و در نتیجه هیچ فردی نمیتواند به فایلها، نرمافزارها و سیستمعامل شما دسترسی پیدا کند.
چرا باید از سرور مجازی استفاده کنیم؟
سرورمجازی در کل دارای مزایای و کاربردهای متعددی میباشد که همین مسئله باعث افزایش محبوبیت VPSها در میان کاربران شده است. از میان مزایای سرورهای مجازی میتوان به نرخ آپتایم، مقیاسپذیری، امنیت بالا و همچنین مقرونبهصرفه بودن آن اشاره کرد.
امیدواریم از خواندن این مقاله لذت برده باشید. در تهیه این مقاله از وبسایتهای معتبری مانند Hostinger و Inmotionhosting استفاده شده است.