در دنیای زیرساخت به عنوان کد و توسعه بومی، سرور دیگر تنها یک ماشین نیست؛ بلکه پایهای برای یکپارچگی برنامه شماست. با این حال، نصب پیشفرض لینوکس به ندرت به صورت پیشفرض امن است. این سیستم برای سازگاری و سهولت استفاده طراحی شده است، نه برای دفاع در برابر حملات پیدرپی رباتهای خودکار و مهاجمان ماهر. این پست رویکرد چندلایه برای امنسازی محیط لینوکس شما را بررسی میکند و از محافظت ساده مبتنی بر رمز عبور فراتر رفته و به استراتژی قوی «دفاع در عمق» میپردازد.
خط مقدم دفاع: سختسازی SSH
پروتکل پوسته امن (SSH) اغلب اولین درهایی است که مهاجمان تلاش میکنند باز کنند. پیکربندیهای پیشفرض به طور مشهور ناامن هستند و پورت ۲۲ را در برابر حملات حدسزنی (Brute-force) باز میگذارند. برای سختسازی SSH، باید روشهای دسترسی را محدود کرده و معرضیت را کاهش دهیم.
ابتدا ورود ریشه (Root) و احراز هویت مبتنی بر رمز عبور را غیرفعال کنید. در عوض، به جفتکلیدهای SSH تکیه کنید که شکستن آنها به طور نمایی دشوارتر است. فایل /etc/ssh/sshd_config خود را با دستورالعملهای زیر بهروزرسانی کنید:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers deployer admin
پس از اعمال این تغییرات، سرویس SSH را مجدداً راهاندازی کنید. توجه داشته باشید که قبل از بستن جلسه کاری فعلی، اطمینان حاصل کنید که میتوانید با کلید جدید وارد شوید تا از قفل شدن خارج نشوید. علاوه بر این، در نظر بگیرید که پورت پیشفرض SSH را به یک عدد غیراستاندارد و بالا تغییر دهید تا نویش ناشی از اسکنرهای خودکار کاهش یابد.
کنترل دسترسی مبتنی بر زمینه: SELinux و AppArmor
هنگامی که آسیبپذیری در برنامهای مانند Apache یا Nginx مورد سوءاستفاده قرار میگیرد، مهاجم اغلب امتیازات آن سرویس را به دست میآورد. سیستمهای کنترل دسترسی اجباری (MAC) مانند SELinux (مبتنی بر Red Hat) و AppArmor (مبتنی بر Debian) با محدود کردن برنامهها به مجموعهای محدود از منابع، از این اتفاق جلوگیری میکنند.
SELinux در سه حالت عمل میکند: Enforcing (اجرا)، Permissive (توصیهای) و Disabled (غیرفعال). اگر به دنبال امنیت واقعی هستید، هرگز SELinux را در حالت غیرفعال اجرا نکنید. در حالت Enforcing، این سیستم به طور فعال دسترسیهای غیرمجاز را مسدود میکند. برای توسعهدهنگانی که نگران اشکالزدایی هستند، ابزارهایی مانند audit2allow میتوانند به ایجاد ماژولهای سیاست برای اقدامات مشروع که به اشتباه علامتگذاری شدهاند، کمک کنند.
# بررسی وضعیت فعلی
sestatus
# مشاهده گزارشهای دسترسی مسدود شده
sudo ausearch -m avc -ts recent
در حالی که AppArmor به طور کلی پیکربندی آسانتری دارد، SELinux کنترل دقیقتری ارائه میدهد. یکی را که با توزیع و تخصص تیم شما همخوانی دارد انتخاب کنید، اما اطمینان حاصل کنید که فعال است.
محیط شبکه: فایروالها و پیشگیری از نفوذ
فایروال شما به عنوان نگهبان عمل میکند. چه از iptables، nftables یا ابزارهای سطح بالاتری مانند ufw (فایروال ساده) استفاده میکنید، اصل یکسان است: فقط موارد ضروری را در لیست سفید قرار دهید. تمام ترافیک ورودی را به طور پیشفرض مسدود کنید و فقط پورتهای ۲۲ (SSH)، ۸۰ (HTTP) و ۴۴۳ (HTTPS) را مجاز بدانید.
با این حال، حتی یک فایروال به خوبی پیکربندی شده نیز نمیتواند از یک درخواست معتبر از سوی یک بازیگر مخرب که از رمز عبور ضعیف استفاده میکند، جلوگیری کند. اینجا جایی است که Fail2ban وارد عمل میشود. Fail2ban فایلهای گزارش را برای تلاشهای مکرر ناموفق ورود نظارت میکند و به طور موقت آدرسهای IP متخلف را مسدود میکند. این ابزار برای کاهش حملات حدسزنی ضروری است.
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo fail2ban-client status sshd
دیدپذیری و انطباق: حسابرسی
شما نمیتوانید چیزی را که نمیبینید، امن کنید. چارچوب حسابرسی لینوکس راهی قدرتمند برای نظارت بر فراخوانیهای سیستم، دسترسی به فایلها و دستورات کاربر فراهم میکند. با پیکربندی قوانین حسابرسی، میتوانید ناهنجاریهایی مانند تلاش یک فرآیند وبسرور برای نوشتن در /etc/passwd را تشخیص دهید.
تلاشهای حسابرسی خود را بر روی دایرکتوریهای حیاتی مانند /etc، /var/log و /root متمرکز کنید. اطمینان حاصل کنید که گزارشهای حسابرسی به یک سرور گزارشگیری متمرکز ارسال میشوند تا از دستکاری گزارشهای محلی توسط مهاجمان در صورت کسب دسترسی جلوگیری شود.
سختسازی سیستم: لایه نهایی
در نهایت، اقدامات عمومی سختسازی سیستم را پیادهسازی کنید. این شامل بهروز نگه داشتن هسته و بستهها، حذف سرویسهای غیرضروری و اعمال سیاستهای قوی رمز عبور از طریق passwd و پیکربندیهای PAM است. به طور منظم حسابهای کاربری را بازبینی کنید تا اطمینان حاصل کنید که امتیازات غیرفعال یا بیش از حد وجود ندارد.
نتیجهگیری
امنیت سرور یک راهاندازی یکباره نیست؛ بلکه یک فرآیند مداوم است. با ترکیب سختسازی SSH، سیستمهای MAC مانند SELinux، قوانین سختگیرانه فایروال، پیشگیری خودکار از نفوذ با Fail2ban و حسابرسی جامع، محیطی مقاوم ایجاد میکنید که میتواند در برابر حملات رایج و پیچیده مقاومت کند. به سرور لینوکس خود احترامی که شایسته آن است بگذارید، و برنامههای شما نیز از آن پیروی خواهند کرد.