برای امن کردن یک سرور لینوکس تازه، هشت کار را به همین ترتیب انجام دهید: بهروزرسانی سیستم، ساخت کاربر معمولی با sudo، ورود با کلید SSH، بستن ورود با رمز، فعال کردن فایروال، نصب fail2ban، بهروزرسانی خودکار و پشتیبانگیری. دستورها برای اوبونتو و دبیان است و بیشتر حملههای خودکار را بیاثر میکند.
چرا سرور تازه فوراً هدف میشود؟
هر IP عمومی در اینترنت مرتب توسط رباتهای خودکار اسکن میشود و تلاش برای حدس زدن رمز SSH از همان دقایق اول شروع میشود. پس امنسازی را به «بعداً» نیندازید. هر دستوری که اینجا هست را اول روی یک سرور آزمایشی بزنید و قبل از بستن هر راه ورود، یک نشست SSH دیگر باز نگه دارید تا قفل نشوید.
۱. سیستم را بهروز کنید
apt update && apt upgrade -yبهروزرسانیها حفرههای شناختهشده را میبندد. اگر هسته بهروز شد، یک بار سرور را راهاندازی مجدد کنید.
۲. کاربر معمولی بسازید
adduser deploy
usermod -aG sudo deployکار روزمره را با این کاربر انجام دهید و فقط وقتی لازم است از sudo استفاده کنید.
۳. با کلید SSH وارد شوید
روی کامپیوتر خودتان کلید بسازید و آن را روی سرور بگذارید (جزئیات در SSH چیست):
ssh-keygen -t ed25519
ssh-copy-id deploy@IP۴. ورود با رمز و ورود مستقیم root را ببندید
پس از اینکه مطمئن شدید ورود با کلید کار میکند، فایل /etc/ssh/sshd_config را باز کنید و این مقدارها را بگذارید:
PasswordAuthentication no
PermitRootLogin noسپس systemctl restart ssh را بزنید. یادتان باشد پیش از آن، نشست دوم را باز نگه دارید.
۵. فایروال را روشن کنید
با ufw فقط پورتهایی را باز کنید که لازم دارید:
ufw allow OpenSSH
ufw allow 80,443/tcp
ufw enableپورتهای یک سرویس را فقط وقتی باز کنید که آن را اجرا میکنید. پایگاه داده هرگز نباید مستقیم به اینترنت باز باشد.
۶. fail2ban را نصب کنید
apt install fail2ban -yاین ابزار IPهایی را که چند بار رمز اشتباه میزنند موقتاً مسدود میکند. تنظیم پیشفرض برای SSH فعال است.
۷. بهروزرسانی امنیتی خودکار
apt install unattended-upgrades -y
dpkg-reconfigure --priority=low unattended-upgrades۸. پشتیبان بگیرید
امنیت بدون پشتیبان کامل نیست؛ خطای خودتان هم داده را از بین میبرد. حداقل از دادههای مهم بیرون از سرور نسخه بگیرید و بازیابی را یک بار امتحان کنید.
بعد از آن چه؟
- فقط نرمافزارهایی را نصب کنید که لازم دارید.
- گزارشهای
/var/log/auth.logرا گاهی نگاه کنید. - رمزها را در مدیر رمز نگه دارید و تکرار نکنید.
چه چیزهایی را نباید فراموش کرد؟
امنیت فقط سیستمعامل نیست. افزونهها و برنامههایی که خودتان نصب میکنید (مثل وردپرس و افزونههایش) مسیر رایج نفوذند و باید بهروز بمانند. به هر برنامه و کاربر حداقل دسترسی لازم را بدهید. برای دیدن ورودهای اخیر از last و برای تلاشهای ناموفق از lastb استفاده کنید. هر چیزی که غیرعادی است، مثل ورود از IP ناشناس یا مصرف ناگهانی CPU، را بررسی کنید.
چکلیست سریع پس از امنسازی
- با کاربر معمولی و کلید SSH وارد میشوید و ورود با رمز بسته است.
ufw statusفقط پورتهای لازم را باز نشان میدهد.systemctl status fail2banفعال است.- بهروزرسانی خودکار روشن است.
- یک پشتیبان تستشده از دادههای مهم دارید.
- فهرست پورتهای باز را با
ss -tulpnبررسی کردهاید و هر سرویس ناشناس را بستهاید.
ابزارهای کلوداسنپ برای این کارها
در صفحهٔ سرور کلوداسنپ میتوانید اسنپشات بگیرید (اسنپشات تا وقتی نگهش دارید ساعتی از موجودی حساب میشود)، رمز را عوض کنید و در صورت پشتیبانی سرور، سیستمعامل را دوباره نصب کنید؛ نصب مجدد همهٔ دادهها را پاک میکند. در سرورهایی که کنسول وب دارند، اگر ورود SSH قفل شد این کنسول راه نجات است. فایروال و سختسازی سیستمعامل با خود شماست. برای شروع به ربات یا قیمتها بروید.
پرسشهای پرتکرار
مهمترین کار امنیتی چیست؟
ورود با کلید SSH و بستن ورود با رمز، چون بیشتر حملههای خودکار به رمز ضعیف متکیاند.
آیا تغییر پورت SSH لازم است؟
لازم نیست. تغییر پورت از لاگهای شلوغ میکاهد ولی جای کلید و فایروال را نمیگیرد.
اگر خودم را از سرور قفل کردم چه کنم؟
از کنسول وب ارائهدهنده وارد شوید و تنظیم را اصلاح کنید؛ اگر کنسول نبود، نصب مجدد با از دست رفتن داده همراه است.
fail2ban جلوی همه چیز را میگیرد؟
نه. فقط تلاشهای مکرر ورود را کند میکند و جایگزین رمز قوی یا کلید نیست.
چند بار باید سرور را بهروز کنم؟
بهروزرسانی امنیتی خودکار را فعال کنید و هر چند هفته یک بار بهروزرسانی کامل را دستی بزنید.
