14 نکته برای افزایش امنیت سرور مجازی لینوکس
افزایش امنیت سرور مجازی لینوکس کمک می کند از تهدیدات و حملات سایبری مختلف جلوگیری نمائیم. با در نظر گرفتن این موضوع در این مقاله بیشتر به امنیت لینوکس و نقاط ضعف رایج آن خواهیم پرداخت، همچنین 14 نکته امنیتی را برای جلوگیری از حملات سایبری به سرور مجازی معرفی میکنیم.
افزایش امنیت سرور مجازی لینوکس
یکی از ویژگیهای اصلی لینوکس امنیت بالای آن است ولی آسیب پذیری هایی هم دارد. بسیاری از تهدیدات امنیتی می توانند به امنیت و داده های سرور آسیب بزنند.
در ادامه فهرستی از رایج ترین تهدیدها و نقاط ضعف را با جزئیات مرور کنیم:
- Malware – بدافزار برای آسیب رساندن به کامپیوتر و سیستم عامل آن طراحی شده و در اشکال مختلفی از جمله تروجان ، باج افزار، ویروس و نرم افزارهای جاسوسی وجود دارد.
- Sniffing attack – زمانی اتفاق میافتد که هکر از Packet sniffer برای اختلال یا استخراج دادهها از شبکه استفاده میکند.
- Brute-force – یک روش هک شامل مهاجمی است که از آزمون و خطا برای حدس زدن رمز ورود استفاده می کند.
- SQL injection – زمانی اتفاق می افتد که یک هکر از کد موجود در یک برنامه وب برای دسترسی به پایگاه داده سرور سوء استفاده کند.
- Cross-site scripting (XSS) – یک حمله client-side که در طی آن هکر کد مخرب را به یک وب سایت تزریق می کند.
- No function-level control – سرور ممکن است با تأیید نکردن حقوق دسترسی به درستی باعث ایجاد آن شود و به کاربران عمومی امتیازات root را بدهد.
- Broken authentication – سرقت هویت که معمولا به دلیل دادههای رمزگذاری نشده، رمزهای عبور ضعیف، یا ضعیف session timeout اتفاق میافتد.
روشهای افزایش امنیت سرور مجازی لینوکس - 14 نکته کلیدی
-
در مورد امنیت میزبان وب خود تحقیق کنید
ابتدا باید بدانیم که امنیت 100% وجود ندارد و چنین ادعایی نمیتواند علی و فنی باشد.ارائه دهنده هاست مورد نظر باید زیرساخت امنیتی قوی داشته باشد و محافظت بیشتری برای ایمن نگه داشتن سرور ارائه دهد. در مورد سابقه سرویس دهنده خود تحقیق کنید.
در پارسدو، ماژولهای امنیتی پیشرفتهای را برای محافظت از VPS ارائه میشود، مانند فایروال سختسازی ، سرویس DDOS Protection و...
علاوه بر این، پارسدو سرویس بکاپ و اسنپ شات را ارائه میدهد که میتوانید از آنها برای بازیابی سریع اطلاعات خود در صورت خرابی استفاده کنید.
با وجود این پنل مدیریت قوی بر روی سرورمجازی کنترل کاملی بر روی سرور خواهید داشت و نیاز شما به پشتیبانی و ثبت تیکت بسیار کم خواهد شد.
-
پورت پیش فرض SSH را تغییر دهید
اگر از پورت 22 برای دسترسی به SSH سرور مجازی استفاده می کنید، سرور را در معرض حملات و تهدیدات بیشتری قرار خواهید داد به این دلیل است که مهاجمان می توانند پورت های باز را برای انجام حملات brute-force اسکن کنند و به سرور دسترسی از راه دور داشته باشند.
توصیه می کنیم از یک پورت متفاوت برای SSH برای محافظت از داده های خود در برابر حملات سایبری استفاده کنید.
در پارسدو سرور با پورت متفاوت تقدیم شما خواهد شد.
در ادامه نحوه تغییر پورت SSH آورده شده است:
- ترمینال را باز کنید و وارد SSH شوید.
- فایل پیکربندی سرویس را با اجرای دستور زیر ویرایش کنید:
nano /etc/ssh/sshd_config
- خطی را که پورت 22 را می خواند پیدا کنید.
- پورت 22 را با یک پورت جدید جایگزین و کاراکتر # را حذف کنید.
- تغییرات را ذخیره کرده و خارج شوید.
- با وارد کردن دستور زیر و فشردن Enter سرویس را مجددا راه اندازی کنید:
systemctl restart sshd.service
- در نهایت سعی کنید با استفاده از پورت جدید وارد SSH شوید.
-
Root Login را غیرفعال کنید
هر VPS لینوکس یک کاربر root دارد که در مقایسه با سایر کاربران دارای بیشترین امتیازات است. مجرمان سایبری ممکن است آنها را برای دسترسی کامل به سرور هدف قرار دهند.
بنابراین، غیرفعال کردن ورود از کاربر root برای ایمن سازی سرور در برابر حملات brute-force بسیار مهم است. همچنین توصیه می کنیم یک نام کاربری جایگزین با امتیاز اجرای دستورات سطح root ایجاد کنید.
برای غیرفعال کردن root login مراحل زیر را دنبال کنید:
- به حساب SSH خود وارد شوید
- برای باز کردن و ویرایش فایل کانفیگ، دستور زیر را با استفاده از nano یا vi اجرا کنید:
nano /etc/ssh/sshd_config
- پارامتر زیر را پیدا کنید و آن را به no تغییر دهید:
PermitRootLogin=no
- تغییرات را ذخیره کرده و با اجرای دستور زیر سرویس SSH را مجددا راه اندازی کنید:
systemctl restart sshd.service
- با این کار ورود root غیرفعال می شود.
-
از رمز عبور قوی استفاده کنید
رمزهایی حاوی اطلاعات مربوط به هویت یا عبارت رمزی (passphrase) ساده به راحتی قابل حدس زدن هستند. بنابراین یک رمز عبور طولانی و قوی با چندین عنصر مانند حروف کوچک و بزرگ، اعداد و کاراکترهای خاص به افزایش امنیت سرور مجازی لینوکس کمک نموده و انجام این کار سیستم شما را در برابر حملات brute-force ایمن می کند.
علاوه بر این، از یک رمز عبور برای سرورهای مختلف استفاده نکنید.
بسیاری از کاربران هنوز از رمزهایی مانند myP@ssword ، 12345 و... استفاده میکنند، این عزیزان براین باروند که مگر من با سرور چکار میکنم که کسی بخواهد من را هک کند!
توجه کنید که شما مالک سرویس هستید و باید امنیت آن را ارتقاء دهید چون مسئولیت سرور با شما خواهد بود. سرورهایی با رمز عبور ضعیف حتی میتوانند در کمتر از یکساعت هک یا آلوده شوند.
-
استفاده از SSH Key برای ورود
اگر هنوز از رمز عبور برای ورود به حساب SSH استفاده می کنید، ممکن است هدف حملات sniffing قرار بگیرید. برای جلوگیری از این، به جای آن از SSH Key استفاده کنید.کلیدهای SSH روش احراز هویت امن تری نسبت به رمز عبور هستند.
از آنجایی که کامپیوتر این کلیدها را تولید میکند، میتوانند تا 4096 بیت طول داشته باشند که آنها را طولانیتر و پیچیدهتر از رمز عبور میکند.
کلیدهای SSH در دو مجموعه عمومی (public) و خصوصی (private) ارائه می شوند. اولی در سرور و دومی در دستگاه کاربر ذخیره می شود. هنگامی که تلاش برای ورود شناسایی می شود، سرور یک رشته تصادفی ایجاد و آن را با یک کلید عمومی رمزگذاری می کند. پیام رمزگذاری شده را فقط می توان با استفاده از کلید خصوصی مرتبط رمزگشایی کرد.
در ادامه نحوه تولید یک کلید SSH در سرور لینوکس آمده است:
- وارد SSH شوید
- برای تولید کلیدهای عمومی و خصوصی، دستور زیر را تایپ کرده و Enter را فشار دهید:
ssh-keygen -t rsa
- هنگامی که یک پاسخ ظاهر شد، Enter را بزنید:
Enter file in which to save the key (/root/.ssh/id_rsa):
- از شما خواسته می شود که یک عبارت عبور را دو بار پر کنید. اگر آن را ندارید، می توانید دو بار Enter را فشار دهید.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
- کلیدهای خصوصی و عمومی شما اکنون با موفقیت ذخیره شده اند.
-
راه اندازی یک فایروال داخلی (IPtables)
از آنجایی که ترافیک HTTP میتواند از هر نقطهای باشد، فیلتر کردن آن ضروری است تا اطمینان حاصل شود که فقط بازدیدکنندگان خوش سابقه میتوانند به سیستم شما دسترسی داشته باشند. انجام این کار به شما کمک می کند تا از ترافیک ناخواسته و حملات DDoS جلوگیری کنید.
توزیع های لینوکس دارای یک سرویس فایروال داخلی به نام iptables هستند. این ابزار با استفاده از جداول، ترافیک ورودی و خروجی سرور را کنترل می کند. از قوانینی به نام زنجیره (chains)برای فیلتر کردن بستههای داده های ورودی و خروجی استفاده می کند.
با استفاده از آن می توانید محدودیت های فایروال را بر اساس نیاز خود تنظیم کنید.
در ادامه نحوه نصب و بررسی پیکربندی فعلی iptables در اوبونتو آمده است:
- وارد SSH شوید
- iptables را با اجرای دستور زیر نصب کنید:
sudo apt-get install iptables
- پس از اتمام نصب، دستور زیر را تایپ کرده و Enter را فشار دهید:
sudo iptables -L -v
- خروجی شامل فهرستی از تمام قوانین در قالبی دقیق خواهد بود.
- فایروال UFW خود را پیکربندی کنید
توصیه می کنیم یک فایروال Uncomplicated Firewall (UFW) را به عنوان یک لایه اضافی برای کنترل ترافیک ورودی و خروجی سیستم خود فعال کنید. این یک فایروال netfilter است که برای استفاده آسان طراحی شده است.
UFW به عنوان بخش جلویی برای iptable ها عمل می کند و معمولا روی توزیع های لینوکس از قبل نصب شده است. به طور کلی، تمام کانکشنهای ورودی را رد (deny) می کند و به کانکشنهای خروجی اجازه می دهد، خطر تهدیدات بالقوه را کاهش می دهد. علاوه بر این، می توانید قوانینی را مطابق با اولویت خود تغییر دهید و به فایروال اضافه کنید.
در ادامه نحوه فعال کردن آن در اوبونتو آمده است:
- از طریق SSH متصل شوید.
- دستور زیر را برای فعال کردن UFW وارد کنید و Enter را فشار دهید:
sudo ufw enable
- اگر در پاسخ می گوید که دستور پیدا نشد، فایروال را با استفاده از این دستور نصب کنید:
sudo apt-get install ufw
- پس از اتمام نصب، دستور مرحله دوم را اجرا کنید تا UFW فعال شود.
- با استفاده از دستور زیر وضعیت فایروال را بررسی کنید:
sudo ufw status
-
به جای FTP از SFTP استفاده کنید
در حالی که کانکشنهایFTP رمزگذاری را فعال نمی کنند، FTP over TLS (FTPS) فقط اعتبارنامه ها را رمزگذاری می کند و نه انتقال فایل را.
در نتیجه، استفاده از هر دو اتصال ممکن است داده های شما را در معرض خطر قرار دهد. هکرها به راحتی می توانند یک حمله sniffing انجام دهند تا اعتبار ورود شما را به سرقت برده و انتقال فایل را رهگیری کنند.
برای جلوگیری از آن، به جای آن از FTP over SSH یا SFTP استفاده کنید. این یک اتصال FTP امن است زیرا تمام دادهها، از جمله اعتبارنامهها و فایلهای در حال انتقال را به طور کامل رمزگذاری می کند. علاوه بر این، SFTP از کاربران در برابر حملات man-in-the-middle محافظت می کند زیرا مشتری باید قبل از دسترسی به سیستم توسط سرور احراز هویت شود.
برای راه اندازی یک اتصال SFTP مراحل زیر را دنبال کنید:
- وارد SSH شوید.
- با وارد کردن این دستور و فشار دادن Enter یک اتصال SFTP را شروع کنید:
sftp user@server_ipaddress
- اگر از پورت سفارشی استفاده می کنید، دستور زیر را اجرا کنید:
sftp -oPort=customport user@server_ipaddress
- پس از اتصال، یک اعلان SFTP ظاهر می شود.
-
Fail2Ban را راه اندازی کنید
Fail2Ban نرم افزاری است که لاگ های سیستم را رصد می کند و پس از چندین بار ورود ناموفق، هکرها را مسدود می کند. علاوه بر این، از سرورها در برابر حملات DoS، DDoS، دیکشنری و brute-force محافظت می کند. Fail2Ban از iptables و firewalld برای ممنوع کردن آدرس های IP استفاده می کند.
برای راه اندازی بسته نرم افزاری Fail2Ban در اوبونتو مراحل زیر را دنبال کنید:
- یک اتصال SSH را شروع کنید.
- بسته نرم افزاری Fail2Ban را با وارد کردن دستور زیر و فشردن Enter نصب کنید:
sudo apt-get install fail2ban
- خروجی زیر ظاهر می شود. Y را تایپ کرده و Enter را بزنید.
Do you want to continue? [Y/n] y
- پس از اتمام نصب، با اجرای دستور زیر وضعیت را بررسی کنید:
sudo systemctl status fail2ban
- نرم افزار Fail2Ban باید فعال و در حال اجرا باشد.
-
یک آنتی ویروس نصب کنید
علاوه بر راه اندازی فایروال برای فیلتر کردن ترافیک ورودی، نظارت بر فایل های ذخیره شده در VPS خود را در نظر بگیرید. از آنجایی که لینوکس ذاتا در برابر حملات ویروس مصون نیست، تهدیدات سایبری می توانند سرورهای شما را هدف قرار دهند و به داده های شما آسیب برسانند.
بنابراین، نصب نرمافزار آنتی ویروس به عنوان یک عمل امنیتی دشوار کننده بسیار مهم است. گزینه های زیادی وجود دارد، اما قابل توجه ترین آنها ClamAV است که منبع باز بوده و برای شناسایی فعالیت های مشکوک و قرنطینه کردن فایل های ناخواسته استفاده می شود.
- ترمینال را باز کنید و وارد SSH شوید.
- با اجرای این دستور، بسته های اضافی را برای لینوکس Enterprise (EPEL) نصب کنید:
sudo yum -y install epel-release
کامل! خروجی نشان می دهد که نصب 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 اکنون باید راهاندازی شود.
-
بررسی حقوق کاربران
اگر کاربران زیادی از سرور مجازی VPS شما استفاده می کنند، توزیع کنترل و حقوق باید با دقت مورد توجه قرار گیرد. ارائه امتیازات سطح root به همه کاربران ممکن است استفاده از منابع و داده های حساس شما را در معرض خطر قرار دهد.
بنابراین، برای جلوگیری از بروز مشکلات در سرور خود باید یک محدودیت دسترسی تعیین کنید. این را می توان با مدیریت کاربران و اعطای سطوح مختلف مجوز به مجموعه خاصی از فایلها و منابع انجام داد.
لینوکس دارای یک ویژگی امتیاز سیستم است که به شما در تعریف حقوق کاربر کمک می کند. برای انجام این کار، یک گروه برای کاربران با امتیازات مشابه ایجاد کنید.
- از طریق SSH متصل شوید
- برای ایجاد یک گروه دستور زیر را وارد کرده و Enter را فشار دهید:
sudo addgroup my_group
- سپس با اجرای دستور زیر یک کاربر جدید ایجاد کنید:
adduser first_user
- خروجی از شما می خواهد که یک رمز عبور تنظیم کنید و بیو را پر کنید، مانند نام کامل، شماره اتاق و تلفن. y را تایپ کرده و Enter را فشار دهید تا اطلاعات وارد شده تایید شود.
- برای افزودن کاربر به یک گروه، دستور زیر را اجرا کنید. توجه داشته باشید که هیچ خروجی تولید نمی کند.
sudo usermod -a -G group1,group2 first_user
- اگر می خواهید به کاربر دسترسی root بدهید، دستور زیر را اجرا کنید. به خاطر داشته باشید که این نیز هیچ خروجی تولید نمی کند.
sudo usermod -aG sudo first_user
- از طرف دیگر، اگر یک دایرکتوری دارید و می خواهید امتیاز خواندن و نوشتن را به آن اضافه کنید، دستور اصلی در ادامه آمده است:
sudo chmod -R g+w /directory
-
IPv6 را غیرفعال کنید
فعال بودن IPv6 آسیب پذیری های امنیتی را افشا و میزبان VPS شما را مستعد حملات سایبری مختلف می کند. اگر به طور فعال از آن استفاده نمی کنید، توصیه می کنیم آن را به طور کامل غیرفعال کنید.
از آنجایی که هکرها اغلب ترافیک مخرب را از طریق IPv6 ارسال می کنند، باز گذاشتن پروتکل می تواند سرور شما را در معرض بسیاری از نقض های امنیتی احتمالی قرار دهد. حتی اگر به طور فعال از IPv6 استفاده نمی کنید، برخی از برنامه های شما ممکن است listening sockets را روی آن باز کنند. بنابراین هر بار که یک بسته وارد می شود، آنها آن را شامل بسته های مخرب پردازش می کنند.
- از طریق SSH متصل شوید
- برای غیرفعال کردن IPv6 دستور زیر را وارد کرده و Enter را فشار دهید:
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
- ذخیره کنید و فایل را ببندید.
- سپس دستور زیر را برای اجرای تغییرات اجرا کنید:
sudo sysctl -p
- در آخر دستور زیر را وارد کرده و Enter را بزنید. اگر 1 را مشاهده کردید، به این معنی است که IPv6 با موفقیت غیرفعال شده است.
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
- لاگهای سرور را بررسی کنید
نظارت بر log سرور کمک میکند که رویدادها و اتفاقات روی سرور آگاه باشیم. لاگ همچنین می تواند در تجزیه و تحلیل و گزارش ها برای اطلاعات دقیق در مورد وضعیت فعلی سرور استفاده شود.
لاگهای سرور اطلاع میدهند که آیا سرور در حال تجربه حملات سایبری یا سایر تهدیدات امنیتی است. هرچه زودتر این آسیبپذیریها برطرف شوند، مهاجمان فرصت کمتری برای رهگیری دادهها خواهند داشت.
یکی از دایرکتوری های مهم در سیستم لینوکس /var/log نام دارد. مجموعهای از فایلهای لاگ را ذخیره میکند که حاوی اطلاعات مهم مربوط به سیستم، کرنل، package managers و برنامههای مختلف در حال اجرا بر روی سرور است.
در ادامه نحوه باز کردن /var/log و بررسی گزارش های سیستم در سرور اوبونتو آمده است:
- از طریق SSH متصل شوید
- دستور زیر را برای تغییر دایرکتوری کاری به /var/log اجرا کنید. به خاطر داشته باشید که این هیچ خروجی تولید نمی کند.
cd /var/log
- برای لیست کردن همه فایل ها، دستور زیر را وارد کرده و Enter را بزنید:
ls
- برای بررسی گزارش های سیستم، دستور زیر را وارد کرده و Enter را فشار دهید:
sudo cat syslog
-
برنامه های خود را به روز نگه دارید
هر چه نرم افزار VPS شما قدیمیتر باشد آسیب پذیرتر است. توسعهدهندگان معمولا بهروزرسانیها و وصلههای امنیتی را به طور مرتب منتشر میکنند. برای افزایش امنیت سرور مجازی لینوکس حتما به دنبال آخرین نسخه های نرم افزار خود باشید و به محض در دسترس قرار گرفتن آنها را نصب کنید.
در ادامه نحوه انجام آن در دبیان یا اوبونتو آمده است:
- اگر لیست کل بسته را به روز می کنید، دستور زیر را اجرا کنید:
sudo apt-get update
- برای آپگرید دستور زیر را وارد کرده و Enter را بزنید:
sudo apt-get upgrade
برای انجام این کار در CentOS/RHEL این مراحل را دنبال کنید:
- برای تازه کردن پایگاه داده بسته و نصب آپدیت ها، این دستور را تایپ کرده و Enter را فشار دهید.
sudo yum update
- برای بررسی هر گونه به روز رسانی، دستور زیر را وارد کرده و Enter را بزنید.
sudo yum check-update
اگر از سیستم مدیریت محتوا (CMS) در سرور خود استفاده می کنید، توصیه می کنیم این فرایند را با فعال کردن به روز رسانی خودکار اتوماتیک کنید. علاوه بر این، شما همچنین می توانید cron jobs ایجاد کنید، یک ابزار مبتنی بر لینوکس برای برنامه ریزی یک فرمان یا اسکریپت برای اجرا در زمان و تاریخ مشخص.
راحت ترین راه برای نصب و اجرای cron job در CentOS یا RHEL استفاده از yum-cron است. هر بار که نسخه جدیدی منتشر می شود، به طور خودکار نرم افزار را به روز می کند.
در ادامه نحوه تنظیم آن در CentOS یا RHEL آمده است:
- از طریق SSH متصل شوید.
- yum-cron را با اجرای دستور زیر نصب کنید:
sudo yum install yum-cro
- با وارد کردن دستور زیر و زدن Enter سرویس را فعال کنید. توجه داشته باشید که این هیچ خروجی تولید نمی کند.
sudo systemctl enable yum-cron.service
- سرویس را با تایپ دستور زیر و کلیک بر روی Enter شروع کنید. به خاطر داشته باشید که این دستور پاسخی ایجاد نمی کند.
sudo systemctl start yum-cron.service
با اجرای این دستور وضعیت سرویس را بررسی کنید:
sudo systemctl status yum-cron.service
فایل پیکربندی را با دستور زیر باز کنید:
sudo vi /etc/yum/yum-cron.conf
خط زیر را در خروجی پیدا کنید و no را با yes جایگزین کنید. تغییرات را ذخیره کرده و از فایل خارج شوید.
apply_updates = yes
خرید سرور مجازی لینوکس در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
جمع بندی
مهم است که VPS خود را همیشه ایمن نگه دارید، به خصوص که داده ها و برنامه های حساس شما را ذخیره می کند.
البته قبل از استفاده از هر یک از پیشنهادهای بالا باید آگاهی مناسبی نسبت به لینوکس داشته باشید، از طریق محیط کاربری و مدیریت سرور بکاپ یا اسنپ شات تهیه کنید.
در این مقاله متوجه شدیم که اگرچه لینوکس به دلیل امنیت قوی خود مشهور است، اما هنوز هم آسیب پذیری هایی دارد که باید مراقب آنها باشید. حملات سایبری متداول و مسائلی که باید از آنها آگاه بود عبارتند از Malware - Sniffing attack - Brute-force - SQL injection - Cross-site scripting (XSS) - No function-level control - Broken authentication
بنابراین صاحبان سرورهای مجازی باید نحوه محافظت و نظارت بر VPS را بدانند. برای کمک در این مقاله از پارسدو 14 نکته امنیتی را گردآوری کرده ایم که امیدواریم به شما در تامین امنیت سرور مجازی لینوکس کمک کند.