بلاگ ابرفردوسی > آموزش سرور ابری : آموزش امن‌سازی سرور لینوکس + آموزش Hardening

آموزش امن‌سازی سرور لینوکس + آموزش Hardening

امنیت سرور لینوکس

احتمالاً شما هم شنیده‌اید که لینوکس ذاتاً سیستم‌عامل امنی است؛ اما در واقعیت، درست چند ثانیه بعداز روشن شدن یک سرور خام و اتصال آن به اینترنت، بات‌های اتوماتیک تلاش برای حدس زدن پسورد و نفوذ را شروع می‌کنند. اگر تنظیمات پیش‌فرض را به حال خود رها کنید، حتی پایدارترین توزیع‌ها نیز خیلی زود قربانی حملات می‌شوند. اما با اشاره به این اهمیت، خوشبختانه تأمین امنیت لینوکس سرور در گرو اجرای دقیق و ساختاریافته‌ی فرایند Hardening لینوکس است.

در این مقاله، می‌خواهیم یاد بگیریم که چگونه سرور لینوکس را امن کنیم. مواردی مثل محدود کردن دسترسی‌ها و مدیریت اصولی کاربران، تنظیم دقیق فایروال و نصب ابزارهای مانیتورینگ مانند Fail2Ban و بررسی یک چک لیست امنیت سرور لینوکس کاربردی برای محیط Production را قدم‌به‌قدم بررسی خواهیم کرد تا مطمئن شویم هیچ حفره‌ای در لایه نرم‌افزار و شبکه سرور شما باز نمانده است.

مدیریت کاربران

راحت‌ترین کار برای کانفیگ سرور این است که با کاربر root لاگین کنید و تمام دستورات را بدون هیچ مانعی اجرا کنید؛ اما این‌کار در عمل، دقیقاً معادل این است که کلید اصلی اتاق سرور سازمان را روی میز نگهبانی رها کنید!

برای افزایش امنیت لینوکس سرور، مدیریت صحیح کاربران همیشه نقطه شروع است. براساس استانداردهای امنیتی (مانند مستندات Ubuntu Security)، پیاده‌سازی اصلِ حداقل دسترسی (Least Privilege) یک الزام قطعی است. مطابق این اصل، برای امن سازی سرور لینوکس در لایه کاربران، این سه قانون طلایی را پیاده‌سازی کنید:

  • غیرفعال کردن root login:
    هیچ‌کس (حتی خود شما) نباید بتواند مستقیماً با یوزر روت ازطریق شبکه لاگین کند.
  • استفاده از مکانیزم sudo:
  • یک کاربر معمولی بسازید و فقط برای اجرای دستورات مهم، موقتاً سطح دسترسی را با sudo ارتقا دهید.
  • محدود کردن دسترسی کاربران:
    کاربران را گروه‌بندی کنید و مجوز خواندن و نوشتن فایل‌های سیستمی را فقط به کسانی بدهید که واقعاً به آن نیاز دارند.

امنیت SSH به‌عنوان ورودی اصلی سرور

پروتکل SSH راه اصلی ارتباط شما با سرور است و دقیقاً به همین دلیل، جذاب‌ترین هدف برای هکرها محسوب می‌شود. یکی از مهم‌ترین گام‌ها در آموزش hardening لینوکس سرور، ایمن‌سازی همین درگاه است. به گفتۀ OpenSSH Best Practices، اگر سرویس SSH خود را با تنظیمات پیش‌فرض رها کنید، در واقع سرور خود را در معرض حملات مداوم قرار داده‌اید. برای افزایش امنیت ssh در لینوکس، سه اقدام زیر از نان شب واجب‌تر هستند:

۱- تغییر پورت پیش‌فرض

بات‌های اسکنر اینترنت، معمولاً فقط پورت ۲۲ (پورت پیش‌فرض SSH) را برای یافتن سرورهای آسیب‌پذیر جستجو می‌کنند. با تغییر پورت SSH به یک عدد تصادفی بین ۱۰۲۴ تا ۶۵۵۳۵ (مثلاً ۲۲۴۴)، حجم عظیمی از این حملات کور و خودکار را خنثی می‌کنید و اولین قدم را برای جلوگیری از هک سرور لینوکس برمی‌دارید.

۲- استفاده از کلید SSH

پسوردها هرچقدر هم که پیچیده باشند، قابل حدس زدن یا فاش شدن هستند. استفاده از SSH key (جفت کلید عمومی و خصوصی) به‌جای رمز عبور، امنیت احراز هویت را به‌شدت بالا می‌برد. پس‌از تنظیم کلیدها، ورود با پسورد را در فایل sshd_config کاملاً غیرفعال کنید.

۳- محدود کردن IPهای مجاز

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

تنظیمات فایروال شبکه

 بدون فایروال (Firewall)، سرور شما شبیه خانه‌ای است که تمام در و پنجره‌هایش باز است! یکی از تنظیمات امنیتی ضروری لینوکس، فعال سازی firewall و پیکربندی دقیق آن است. فرقی نمی‌کند به دنبال تامین امنیت سرور ubuntu / centos باشید؛ قانون طلایی فایروال در لینوکس (چه UFW و چه Firewalld) یک چیز است: همه‌چیز را مسدود کن، مگر آنچه واقعاً نیاز است.

بستن پورت‌های غیرضروری در لینوکس باعث می‌شود سرویس‌های داخلی که نیازی به ارتباط با اینترنت ندارند، از دسترس هکرها دور بمانند.

وضعیتنوع ترافیک / پورتسرویس مربوطه
مجاز (Allow)۸۰ و ۴۴۳ترافیک وب (HTTP / HTTPS)
مجاز (Allow)پورت سفارشی (مثلاً ۲۲۴۴)دسترسی SSH (ترجیحاً محدود به IP خاص)
مسدود (Drop)سایر پورت‌هادیتابیس‌ها، سرویس‌های ایمیل داخلی و…

ابزارهای جلوگیری از نفوذ و مانیتورینگ پیشگیرانه

امن سازی سرور لینوکس برای production فقط به تنظیمات اولیه ختم نمی‌شود؛ شما به چشمانی بیدار برای مانیتورینگ امنیت سرور نیاز دارید. مدیریت امنیت سرور یک فرایند مستمر است و ابزارهای مانیتورینگ به شما کمک می‌کنند تا حملات به سرور لینوکس را پیش‌از تبدیل شدن به بحران شناسایی و دفع کنید.

مسدودسازی حملات Brute-Force با نصب Fail2Ban

حتی اگر پورت SSH را تغییر داده باشید، باز هم ممکن است مهاجمان پورت جدید را پیدا کنند. در مرحله بعدی است که نصب Fail2Ban به‌عنوان یک سپر دفاعی هوشمند اهمیت پیدا می‌کند.

این ابزار با مانیتورینگ لاگ‌ها (مانند لاگ‌های ورود ناموفق)، رفتارهای مشکوک را تشخیص می‌دهد. اگر یک IP ناشناس چندین‌بار تلاش ناموفق برای ورود داشته باشد، Fail2Ban به‌صورت خودکار آن IP را ازطریق فایروال (iptables/nftables) برای مدت‌زمان مشخصی مسدود می‌کند. این کار بار پردازشی سرور را در زمان حملات Brute-Force به‌شدت کاهش می‌دهد.

فعال‌سازی SELinux یا AppArmor

بسیاری از مدیران سیستم به‌محض راه‌اندازی سرور، SELinux یا AppArmor را غیرفعال می‌کنند، چون تنظیم آن‌ها کمی پیچیده است! اما این ماژول‌های امنیتی (Mandatory Access Control)، لایه نهایی دفاع در امنیت زیرساخت سازمانی هستند.

اگر هکری بتواند ازطریق یک باگ نرم‌افزاری به وب‌سرور شما نفوذ کند، SELinux  مانع از آن می‌شود که هکر بتواند به فایل‌های حساس سیستم‌عامل یا سایر سرویس‌ها دسترسی پیدا کند. در واقع، این ابزارها آسیب‌پذیری‌ها را در یک محیط ایزوله حبس می‌کنند که برای امنیت سرور در ایران و میزبانی داده‌های مهم، یک ضرورت غیرقابل انکار است.

اهمیت آپدیت سیستم‌عامل

ساده‌ترین راه مقابله با آسیب‌پذیری‌ها آپدیت‌کردن است؛ چون هکرها همیشه از روش‌های پیچیده استفاده نمی‌کنند و گاهی فقط منتظر می‌مانند تا شما به‌روزرسانی سیستم را فراموش کنید! براساس Red Hat Security Updates Guide، درصد بالایی از حملات به سرور لینوکس ازطریق رخنه‌های شناخته‌شده‌ای انجام می‌شود که مدت‌ها پیش وصله (Patch) امنیتی آن‌ها منتشر شده است؛ بنابراین بررسی و نصب منظم آپدیت سیستم عامل، یک اصل حیاتی برای تأمین امنیت لینوکس سرور است و نقش مهمی در جلوگیری از هک سرور دارد.

اما ازآنجاکه بررسی روزانه پکیج‌ها برای مدیران سیستم خسته‌کننده و زمان‌بر است، بهترین راه‌حل، فعال‌سازی آپدیت‌های امنیتی خودکار است. استفاده از ابزارهایی مانند unattended-upgrades (در اوبونتو/دبیان) یا dnf-automatic (در توزیع‌های مبتنی‌بر ردهت) به شما اطمینان می‌دهد که سیستم به‌محض انتشار پچ‌های حیاتی، آن‌ها را بی‌سروصدا در پس‌زمینه دریافت و نصب می‌کند.

چک لیست امنیت لینوکس سرور برای زیرساختی نفوذناپذیر

امنیت لینوکس سرور

بسیاری از کاربران از ما می‌پرسند که به‌طور خلاصه بگویید که چگونه سرور لینوکس را امن کنیم؟ بهترین پاسخ، داشتن نقشه راهی شفاف است. براساس استانداردهای سخت‌گیرانه CIS Linux Hardening Benchmarks، ما در ابر فردوسی مهم‌ترین تنظیمات امنیتی ضروری لینوکس را در قالب یک لیست سریع برای شما آماده کرده‌ایم.

برای تبدیل یک سرور خام به سرور امن لینوکس، مطمئن شوید که این اقداماتِ مرتبط با hardening لینوکس را تیک زده‌اید:

  • مدیریت دسترسی: غیرفعال کردن root login ازطریق SSH و استفاده انحصاری از کاربری با دسترسی sudo
  • ایمن‌سازی ورود: تغییر پورت پیش‌فرض SSH، غیرفعال‌سازی ورود با رمز عبور و استفاده از SSH Key
  • پیکربندی فایروال: مسدود کردن تمام پورت‌های غیرضروری شبکه و بازگذاشتن پورت‌های ضروری (مثل ۸۰ و ۴۴۳)
  • نصب ابزارهای دفاعی: کانفیگ Fail2Ban برای بلاک کردن IPهای مهاجم در حملات Brute-Force
  • به‌روزرسانی مداوم: فعال‌سازی دریافت خودکار پچ‌های امنیتی سیستم‌عامل
  • محیط شبکه ایزوله: درصورت نیاز به افزایش امنیت سرور در اینترنت ملی، محدود کردن دسترسی‌ها به شبکه خصوصی (Private Network) و استفاده از یک زیرساخت امن ابری استاندارد.

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

امنیت در لایه زیرساخت شبکه

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

طبق اصول معماری امنیت، دفاع واقعی باید ساختار لایه‌ای داشته باشد. بخش بزرگی از امنیت شبکه لینوکس به دیتاسنتر و بستر ابریِ میزبان شما بستگی دارد. استفاده از یک زیرساخت ابری استاندارد که مجهز به فایروال‌های سخت‌افزاری، سیستم‌های Anti-DDoS و شبکه‌ای پایدار باشد، همان سد دفاعی اولیه‌ای است که حملات سنگین را پیش‌از رسیدن به سیستم‌عامل شما دفع می‌کند. ما در ابر فردوسی، این دغدغه را با معماری شبکه ایزوله و امن برطرف کرده‌ایم. اگر می‌خواهید خیالتان از بابت پایداری در برابر حملات زیرساختی راحت باشد، می‌توانید با استفاده از ۱۰۰ هزار تومان اعتبار هدیه، همین حالا کیفیت شبکه و لایه‌های امنیتی ما را تست کنید و برای اجاره سرور ابری با خیالی آسوده قدم بردارید.

سرور ابری

جمع‌بندی

همان‌طورکه در این مقاله گفتیم و در منابعی مثل  SANS Security Resources تاکیدشده، ترکیب Hardening سیستم‌عامل (مثل محدودسازی SSH و فایروال) در کنار انتخاب یک زیرساخت ابری قدرتمند، ریسک نفوذ را به حداقل ممکن می‌رساند و تأثیر زیادی روی تامین امنیت لینوکس سرور دارد.

حالا شما بگویید که در میان تمام این تنظیمات، کدام مرحله از چک لیست امنیتی لینوکس معمولاً توسط مدیران سیستم فراموش می‌شود؟ آیا تجربه‌ای از دفع حملات روی سرورهای خود داشته‌اید؟ نظرات و تجربیات ارزشمندتان را در بخش دیدگاه‌ها با ما درمیان بگذارید.

منابع:
csrc | ubuntu | man.openbsd | fail2ban | access | cisecurity

 سؤالات متداول

آیا سرور لینوکسی خامِ من به‌طور پیش‌فرض امن است؟

به هیچ وجه! سرورهای خام معمولاً با تنظیمات پیش‌فرض سازندگان سیستم‌عامل تحویل داده می‌شوند و تمرکز بیشتری روی رابط کاربری دارند. از لحظه‌ای که سرور به اینترنت متصل می‌شود، در معرض اسکن‌های خودکار ربات‌ها قرار دارد و باید بلافاصله فرایند Hardening روی آن اجرا شود.

برای SSH، رمز عبور قوی بهتر است یا کلید SSH ؟

استفاده از کلید SSH (به‌ویژه با الگوریتم‌های مدرن مانند Ed25519) همیشه اولویت دارد. رمزهای عبور، هرچقدر هم پیچیده باشند، دربرابر حملات Brute-Force و حدس کلمات عبور آسیب‌پذیرند، درحالی‌که کلیدهای رمزنگاری‌شده عملاً غیرقابل هک هستند.

آیا تغییر پورت SSH (پورت ۲۲) واقعاً به امنیت کمک می‌کند؟

تغییر پورت پیش‌فرض جلوی هکرهای حرفه‌ای (که پورت‌اسکن انجام می‌دهند) را نمی‌گیرد، اما امنیت در برابر بدافزارهای خودکار را به‌شدت افزایش می‌دهد. این کار باعث می‌شود لاگ‌های سرور شما از تلاش‌های ناموفق ربات‌های اینترنتی پر نشود و منابع سرور هدر نرود.

در زمان مواجهه با حملات عظیم DDoS چه کاری از لینوکس برمی‌آید؟

ابزارهای داخلی لینوکس و فایروال‌های نرم‌افزاری (مثل UFW یا iptables) توانایی پردازش ترافیک میلیونی حملات DDoS را ندارند و در نهایت منابع سرور مختل می‌شود. برای دفع این حملات، باید امنیت را به لایه شبکه ببرید و از دیتاسنترها و سرورهای ابری مجهز به تجهیزات سخت‌افزاری Anti-DDoS استفاده کنید.

آیا باید SELinux یا AppArmor را غیرفعال کنم؟

خیر. بسیاری از مدیران سیستم به دلیل چالش‌برانگیز بودن تنظیمات SELinux، در اولین قدم آن را غیرفعال (disable) می‌کنند. این کار یکی از بزرگترین اشتباهات امنیتی است. این ابزارها آخرین خط دفاعی سیستم‌عامل در برابر دسترسی‌های غیرمجاز به فایل‌های سیستمی هستند؛ توصیه می‌شود به‌جای غیرفعال‌سازی، آن‌ها را در حالت permissive قرار دهید تا پس‌از بررسی لاگ‌ها، تنظیمات صحیح را اعمال کنید.

کدام فایروال بهتر است: UFW، iptables یا firewalld؟

در هسته لینوکس، همه این ابزارها در نهایت با Netfilter کار می‌کنند. انتخاب آن‌ها به توزیع شما و راحتی خودتان بستگی دارد. UFW برای اوبونتو و کاربران تازه‌کار بسیار ساده و کاربردی است، اما Firewalld برای RHEL/CentOS استاندارد محسوب می‌شود. Iptables نیز قدرتمندترین اما پیچیده‌ترین گزینه است.

آیا بستن تمام پورت‌ها و باز کردن فقط پورت‌های ضروری، استراتژی درستی است؟

بله، این قانون طلایی فایروال‌هاست: «همه‌چیز را مسدود کن (Drop All)، مگر آنکه صراحتاً به آن نیاز داشته باشی.» تنها پورت‌های موردنیاز سرویس‌هایتان (مثلاً ۸۰ و ۴۴۳ برای وب‌سرور و یک پورت سفارشی برای SSH) باید در دسترس عموم قرار بگیرند.

یاسین اسدی

اگه می‌خوای زندگیت تغیر کنه کتاب نخون؛ نوشته‌های منو بخون!
پست های مرتبط

چک‌لیست کامل جلوگیری از حملات دیداس (DDoS)

بسیاری فکر می‌کنند که صرفاً با فعال‌سازی CDN یا WAF، داستان تمام شده و سرورشان ضد DDoS است. اما تجربه واقعی چیز دیگری می‌گوید. یک حمله هوشمندانه کافی است تا بفهمیم این ابزارها تنها بخشی از یک…

۲۶ اردیبهشت ۱۴۰۵

کاهش Latency شبکه: راهنمای عملی رفع تاخیر و پینگ اینترنت

کاهش latency شبکه (تأخیر شبکه) و رفع مشکل پینگ بالا، حیاتی‌ترین اقدام برای کاربرانی است که به اتصال سریع، پایدار و بدون وقفه نیاز دارند. تاخیر یا Latency در واقع مدت‌زمانی است که طول می‌کشد تا یک…

۲۶ اردیبهشت ۱۴۰۵

اتصال پایتون به MySQL در 5 دقیقه

احتمالاً تا به‌حال شنیده‌اید که اتصال پایتون به MySQL فقط با چند خط کد ساده انجام می‌شود.اما در عمل، همین چند خط ساده اگر بدون درک درست از نحوه مدیریت اتصال‌ها نوشته شود، خیلی زود تبدیل می‌شود…

۲۶ اردیبهشت ۱۴۰۵
0 0 رای ها
به مقاله امتیاز بدید
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه نظرات