مقدمه
اولین سرورهایم را به یاد دارم. من تقریباً هیچ کاری برای ایمن نگه داشتن آنها انجام ندادم زیرا نمی دانستم که شخصی با نیت بد می تواند به سرور من برسد. و می توانید حدس بزنید که چگونه به پایان رسید. خوشبختانه، من پشتیبانگیری داشتم و به راحتی میتوانستم آنها را بازیابی کنم. اما دوباره این اتفاق افتاد. بنابراین، این بار، کمی تحقیق کردم، تکالیفم را انجام دادم و سرورهایم را ایمن تر کردم. من می دانم که هیچ سرور غیرقابل هک وجود ندارد، اما به شما نشان خواهم داد که چگونه سرور خود را ایمن نگه دارید و در صورت از کار افتادن آن چه کاری باید انجام دهید.
ما با تنظیمات اولیه شروع می کنیم. شما یاد خواهید گرفت که هنگام ایجاد یک سرور جدید چه کاری باید انجام دهید. سپس نحوه نگهداری آن را با انجام معاینات منظم پوشش خواهیم داد. در نهایت، یاد خواهید گرفت که وقتی سرور شما از کار بیفتد، چه کاری انجام دهید. این آموزش شما را به یک مدیر سرور حرفه ای تبدیل نمی کند، زیرا این کار به کار زیادی نیاز دارد و یک کار جدی است. اما حداقل می توانید پروژه های سرگرمی خود را ایمن نگه دارید.
پیش نیازها
- 1 سرور (به عنوان مثال با Hetzner)
مرحله 1 – راه اندازی اولیه و امنیت اولیه
بعد از اینکه سرور خود را ایجاد کردید، مراحل 1 تا 5 را در آموزش “Initial Server Setup with Ubuntu” دنبال کنید. توضیح می دهد که چگونه:
- یک کاربر جدید با مجوزهای sudo ایجاد کنید
- یک کلید SSH اضافه کنید
پس از تکمیل 5 مرحله اول آموزش پیوند داده شده و اتصال به کاربر جدید sudo، می توانید مراحل زیر را ادامه دهید.
به روز رسانی سیستم
اولین کاری که باید انجام دهید این است که بهروزرسانیها را بررسی کنید، زیرا نرمافزار قدیمی میتواند دارای آسیبپذیریهایی باشد که به راحتی قابل بهرهبرداری هستند. آسان تر از آن چیزی است که فکر می کنید؛ فقط این دو دستور را اجرا کنید:
sudo apt update
sudo apt upgrade
آسان است، درست است؟ ما اکنون مطمئن شده ایم که از آخرین نسخه ها استفاده می کنیم.
دسترسی امن به SSH
هنگامی که شخصی سرور شما را هدف قرار می دهد، اولین چیزی که احتمالاً امتحان می کند دسترسی به آن از طریق SSH است. آنها اغلب این کار را با ربات ها و چندین روش انجام می دهند. بنابراین ایمن کردن دسترسی SSH بسیار مهم است.
فایل پیکربندی را ویرایش کنید:
sudo nano /etc/ssh/sshd_config
- دسترسی روت را غیرفعال کنید
خط “PermitRootLogin” را پیدا کنید و آن را به “no” تغییر دهید.
- غیرفعال کردن ورود رمز عبور
اگر همانطور که در بالا پیشنهاد شد یک کلید SSH اضافه کردید، می توانید ورود رمز عبور را غیرفعال کنید.
- “PasswordAuthentication” را پیدا کنید و آن را روی “no” تنظیم کنید.
- “PubkeyAuthentication” را پیدا کنید و آن را روی “بله” تنظیم کنید.
- پورت پیش فرض SSH را تغییر دهید
فقط با تغییر آن، میتوانیم بیشتر حملات رباتهای خودکار را حذف کنیم، زیرا بیشتر آنها رباتهای ساختگی هستند و سعی میکنند از طریق پورت 22 به SSH دسترسی پیدا کنند.
خط “#Port 22” را پیدا کنید و آن را به چیزی مانند “Port 2222” تغییر دهید (یا 2222 را به هر چیزی که می خواهید تغییر دهید).
تغییرات را ذخیره کنید و بررسی کنید که آیا پورت با موفقیت تغییر کرده است:
sudo systemctl restart ssh.service
sudo systemctl status ssh
مطمئن شوید که روی آن نوشته شده است Server listening on :: port 2222.
اگر پورت 2222 گفته شده است، می توانید خروجی را برای پایان دادن به اتصال به سرور اجرا کنید و بررسی کنید که آیا اتصال به پورت جدید کار می کند یا خیر:
ssh -p 2222 holu@<203.0.113.1>
اگر می توانید به پورتی که تنظیم کرده اید وصل شوید، می توانید آموزش را ادامه دهید.
یک فایروال را پیکربندی کنید
ما از “ufw” برای مدیریت قوانین فایروال استفاده خواهیم کرد. این به گونه ای طراحی شده است که استفاده از آن آسان باشد و از یک رابط خط فرمان استفاده می کند. احتمالاً Ufw قبلاً روی سیستم شما نصب شده است، اما می توانید برای اطمینان از نصب بودن این دستور را اجرا کنید:
sudo apt install ufw
در مرحله بعد، ما تمام ترافیک شبکه ورودی را رد خواهیم کرد، مگر اینکه به طور خاص توسط قوانین دیگر مجاز باشد. این برای ایمن سازی سرور شما تنها با اجازه دادن به ترافیکی که به صراحت اجازه می دهید، اساسی است. شما باید این دستور را اجرا کنید:
sudo ufw default deny incoming
سپس، ما به تمام ترافیک شبکه خروجی اجازه می دهیم. این معمولاً ایمن است و به سرور شما اجازه میدهد بدون محدودیت با سرورها یا سرویسهای دیگر ارتباط برقرار کند. این دستور را اجرا کنید:
sudo ufw default allow outgoing
اکنون باید به پورت SSH خود اجازه دهیم تا از طریق SSH به سرور ما وارد شود. فقط مطمئن شوید که اگر چیز دیگری را مشخص کرده اید، 2222 را به پورت SSH خود تغییر دهید و این دستور را اجرا کنید:
sudo ufw allow 2222/tcp
در نهایت، باید قوانین فایروال خود را فعال کنیم:
sudo ufw enable
Fail2Ban
پورت SSH خود را تغییر دادیم و فایروال خود را راه اندازی کردیم. اما اگر یک ربات پورت ما را پیدا کند و همچنان سعی کند از طریق SSH به سرور ما دسترسی پیدا کند، چه اتفاقی می افتد؟ این یک حمله بی رحمانه خواهد بود و ما می توانیم با Fail2Ban از سرور خود محافظت کنیم. این نرم افزار آی پی هایی را که نشانه ها یا تلاش های مخرب را نشان می دهند ممنوع می کند. برای نصب و فعال کردن Fail2Ban باید این سه دستور را اجرا کنید:
sudo apt install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
همچنین میتوانید تنظیمات Fail2Ban را با ویرایش فایلهای پیکربندی در پوشه /etc/fail2ban/ سفارشی کنید. برای اطلاعات دقیق تر و بهترین شیوه ها، می توانید مستندات Fail2Ban را بررسی کنید.
عالی! شما قدم بزرگی برداشته اید و در حال حاضر سرور محافظت شده تری دارید. در حال حاضر، شما فقط نیاز به انجام تعمیر و نگهداری منظم از زمان به زمان. آنچه را که باید انجام دهید در بخش بعدی توضیح خواهیم داد.
مرحله 2 – تعمیر و نگهداری منظم
- به روز رسانی سیستم
ابتدا باید بررسی کنیم که آیا به روز رسانی هایی برای سیستم ما وجود دارد یا خیر. این دستور را اجرا کنید:
sudo apt update && sudo apt upgrade -y
- گزارش های مانیتور
برای شناسایی فعالیتهای غیرعادی، باید بهطور منظم گزارشهای سیستم خود را بررسی کنید. Logwatch می تواند به شما در خودکارسازی این فرآیند کمک کند. با این دستور می توانید logwatch را نصب کنید:
sudo apt install logwatch
میتوانید اطلاعات دقیقتر، نحوه تنظیم گزارشهای روزانه را بررسی کنید و ببینید که گزارشهای آن چگونه است از این راهنما.
- استفاده از دیسک را بررسی کنید
فقط برای اینکه مطمئن شوید فضای کافی برای راه اندازی سرور خود دارید، فضای باقیمانده دیسک خود را با این دستور بررسی کنید:
df -h
- از داده های خود نسخه پشتیبان تهیه کنید
شما همیشه باید چندین نسخه پشتیبان داشته باشید تا مطمئن شوید در صورت حذف کامل یا غیرقابل دسترسی سرور شما می توانید از بلایای طبیعی بازیابی کنید. خوشبختانه، Hetzner یک راه حل پشتیبان خودکار برای سرورهای ابری دارد و می توانید آن را در اسناد رسمی بررسی کنید. اگر می خواهید نسخه پشتیبان خود را تنظیم کنید، می توانید از ابزارهایی مانند “rsync” یا “Duplicity” استفاده کنید.
- حساب های کاربری را حسابرسی کنید
فراموش نکنید که به طور منظم حساب های کاربری را در سرور بررسی کنید. اطمینان حاصل کنید که فقط کاربران مجاز به سرور شما دسترسی دارند. هر حسابی که دیگر مورد نیاز نیست را حذف کنید. با اجرای این دستور می توانید حساب های کاربری را بررسی کنید:
sudo nano /etc/passwd
- Rootkits و Malware را بررسی کنید
برای اسکن سریع روی سرور خود، می توانید از ابزارهایی مانند “rkhunter” و “chkrootkit” استفاده کنید. این ابزارها به شما کمک میکنند تا روتکیتها، درهای پشتی و اکسپلویتهای محلی احتمالی را بررسی کنید و مطمئن شوید که همه چیز درست است. این دستورات را اجرا کنید تا مطمئن شوید rkhunter نصب شده است و چک کنید:
sudo apt install rkhunter
sudo rkhunter --check
- نظارت بر عملکرد سیستم
در نهایت، میتوانید به سرعت عملکرد سیستم را بررسی کنید تا مطمئن شوید که در حین اجرای نرمافزار، گلوگاه منابع وجود ندارد. ابزارهایی مانند «htop»، «top» یا «atop» وجود دارد. اما شما فقط می توانید این دستور را اجرا کنید:
htop
مرحله 3 – ابزارهای امنیتی بیشتر
- از سیستم های تشخیص نفوذ استفاده کنید
می توانید از ابزارهایی مانند “AIDE” (محیط تشخیص نفوذ پیشرفته) برای نظارت بر تغییرات سیستم خود استفاده کنید. این یک پایگاه داده برای فایل ها و پوشه های شما ایجاد می کند و سیستم شما را با آن پایگاه داده مقایسه می کند تا از یکپارچگی فایل اطمینان حاصل کند. می توانید جزئیات بیشتر را از مخزن آن بررسی کنید. برای استفاده اولیه، می توانید آن را با این دستور نصب کنید:
sudo apt install aide
با این دستورات پایگاه داده را شروع و تولید کنید:
sudo aideinit
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
و با استفاده از این دستور سیستم خود را با پایگاه داده مقایسه کنید:
sudo aide --config /etc/aide/aide.conf --check
- فعال کردن احراز هویت دو مرحله ای (2FA)
همچنین می توانید 2FA (تأیید هویت دو مرحله ای) را برای ورود به سرور خود از طریق SSH تنظیم کنید. این یک لایه حفاظتی اضافی اضافه می کند و خطر دسترسی غیرمجاز را کاهش می دهد. با این دستور می توانید آن را نصب کنید:
sudo apt install libpam-google-authenticator
و برای راه اندازی این دستور را اجرا کنید:
google-authenticator
- برنامه های کاربردی وب ایمن
اگر برنامه های وب را روی سرور خود اجرا می کنید، مطمئن شوید که بهترین شیوه های آنها را دنبال می کنید و مرتباً آنها را به روز می کنید. به عنوان مثال، اگر وردپرس را اجرا می کنید، باید همیشه از آخرین نسخه وردپرس استفاده کنید و همچنین تمام افزونه ها و تم ها را به روز نگه دارید. علاوه بر این، شما باید یک افزونه امنیتی مناسب وردپرس را نصب کنید. این کار خطر دسترسی غیرمجاز به سرور و برنامه های شما را کاهش می دهد.
مرحله 4 – طرح واکنش به حادثه
این طرح می تواند در سازمان های بزرگ بسیار دقیق باشد. اما ما آن را برای سرورهای سرگرمی کوچک ساده و قابل اجرا نگه می داریم. به همین منظور یک طرح 3 مرحله ای برای شما آماده کرده ام.
- آماده سازی
برای این بخش، باید یک فایل متنی کوچک یا یادداشتی در برنامه یادداشت های خود در مورد اطلاعات سرور خود ایجاد کنید. اطلاعاتی مانند معماری سرور، نرم افزاری که در حال اجراست، جایی که پشتیبانگیریها و گزارشهای شما ذخیره میشوند، و پیکربندیهای شما را شامل شود. این یادداشت را در جایی امن نگه دارید. می توانید این مثال را به عنوان نقطه شروع بررسی کنید:
اطلاعات سرور
Info | Desc |
---|---|
Server Name | MyServer01 |
IP Address | 192.168.1.100 |
Operating System | Ubuntu 24.04 LTS |
CPU | 4 vCPUs |
RAM | 8 GB |
Storage | 100 GB SSD |
SSH Port | 2222 |
- نرم افزار و خدمات: Nginx 1.18.0، PostgreSQL 13، Django 3.1
- پشتیبان گیری: دوگانگی، روزانه، /mnt/پشتیبان گیری و ذخیره سازی از راه دور در AWS S3، نگهداری 30 روزه
- پیکربندی Nginx: /etc/nginx/nginx.conf
- پیکربندی PostgreSQL: /etc/postgresql/13/main/postgresql.conf
- پیکربندی جنگو: /home/myuser/myapp/settings.py
- پیکربندی UFW: /etc/ufw/ufw.conf
- شناسایی
در این قسمت باید بررسی کنید که مشکل از سرور شما چیست. آیا مشکل یا رخنه مربوط به وب اپلیکیشن شما، خود سرور یا یکی از پایگاه های داده داخل سرور شماست؟ اگر مطمئن نیستید، همیشه فرض کنید همه چیز در خطر است. بنابراین باید دوباره شروع به بررسی همه چیز کنید، از سرور شروع کنید.
- بهبود
سیستم های آسیب دیده را در این قسمت بازیابی کنید. اگر نمی توانید به سرور خود دسترسی پیدا کنید، باید از یک نسخه پشتیبان سرور بازیابی کنید. اگر یکی از برنامه های وب خراب است، ممکن است فقط نیاز به بازیابی نسخه پشتیبان آن داشته باشید. اطمینان حاصل کنید که همه چیز بازیابی شده، آزمایش شده است، همانطور که انتظار می رود کار می کند، و یک اسکن امنیتی انجام داده اید.
نتیجه
ایمن سازی سرور شما به ترکیبی از بهترین شیوه ها و نگهداری منظم نیاز دارد. با دنبال کردن مراحل ذکر شده در این پست، می توانید امنیت سرور خود را به میزان قابل توجهی افزایش دهید و از داده های ارزشمند خود محافظت کنید. به یاد داشته باشید، امنیت یک فرآیند مداوم است، بنابراین فراموش نکنید که به طور منظم سرورهای خود را بررسی کنید.