بررسی پورت‌های باز روی سرور

Calendar

انتشار:

1404/08/09
Update Calendar

به روز رسانی:

1404/08/09

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

مرحله اول: اتصال به سرور از طریق SSH

بعد از ورود به سرور از طریق SSH، ترمینال شما آماده اجرای دستورات بررسی پورت‌ها است. از این مرحله به بعد، تمام دستورها باید در محیط ترمینال اجرا شوند.

مرحله دوم: بررسی پورت‌های فعال با دستور ss

در نسخه‌های جدید اوبونتو و بیشتر توزیع‌های لینوکس، ابزار ss به‌صورت پیش‌فرض نصب است و برای مشاهده‌ی اتصالات شبکه استفاده می‌شود. برای مشاهده‌ی پورت‌های باز، دستور زیر را وارد کنید:

sudo ss -tuln

در خروجی این دستور، پورت‌هایی که در حالت گوش دادن (LISTEN) هستند نمایش داده می‌شوند. ستون Local Address:Port پورت‌های فعال را نشان می‌دهد و ستون Netid مشخص می‌کند که ارتباط TCP است یا UDP. این روش ساده‌ترین راه برای دیدن پورت‌های باز در سیستم است.

خروجی دستور ss

مرحله سوم: مشاهده‌ی نام سرویس‌ها و پردازش‌ها

برای اینکه بدانید هر پورت متعلق به کدام سرویس یا برنامه است، می‌توانید دستور زیر را اجرا کنید:

sudo ss -tulpn

این دستور علاوه بر شماره پورت، نام سرویس و شناسه‌ی پردازش (PID) مربوط به آن را هم نمایش می‌دهد. به‌عنوان مثال ممکن است خروجی شامل sshd/743 برای پورت 22 یا nginx/1067 برای پورت 80 باشد. این اطلاعات کمک می‌کند برنامه‌هایی را که نباید فعال باشند، شناسایی کنید.

نمای خروجی شامل سرویس‌ها

مرحله چهارم: استفاده از netstat در توزیع‌های قدیمی‌تر

در بعضی از نسخه‌های قدیمی‌تر لینوکس مثل CentOS 7 یا Debian 9، دستور ss وجود ندارد. برای همین باید از ابزار netstat استفاده کنید. ابتدا آن را نصب کنید:

برای اوبونتو و دبیان از دستور زیر استفاده کنید:

sudo apt install net-tools -y

برای CentOS یا AlmaLinux از دستور زیر:

sudo yum install net-tools -y

و سپس پورت‌ها را با دستور زیر بررسی کنید:

sudo netstat -tulnp

این ابزار اطلاعات مشابهی با ss نمایش می‌دهد اما در قالبی قدیمی‌تر. اگر خروجی طولانی بود، می‌توانید از کلیدهای جهتی برای مرور آن استفاده کنید.

نمونه خروجی netstat

مرحله پنجم: فیلترکردن پورت خاص با grep

اگر فقط می‌خواهید وضعیت پورت خاصی را ببینید، می‌توانید از grep استفاده کنید. برای مثال اگر بخواهید بررسی کنید پورت 80 باز است یا نه، دستور زیر را اجرا کنید:

sudo ss -tuln | grep :80

در صورتی که نتیجه‌ای نمایش داده شود، یعنی پورت 80 باز و فعال است. اگر خروجی خالی باشد، پورت بسته است یا هیچ سرویسی روی آن گوش نمی‌دهد. این روش برای بررسی سریع پورت‌های خاص بسیار کاربردی است.

نمای فیلتر پورت خاص

مرحله ششم: بررسی پورت‌های باز از بیرون با nmap

گاهی لازم است بدانید از دید بیرونی (یعنی از سمت اینترنت) چه پورت‌هایی روی سرور باز هستند. در این حالت می‌توانید از ابزار nmap استفاده کنید. ابتدا آن را نصب کنید:

sudo apt install nmap -y

سپس آدرس IP سرور خود را اسکن کنید:

nmap -sT your-server-ip

در خروجی، فهرستی از پورت‌هایی که از بیرون شبکه در دسترس هستند نمایش داده می‌شود. این کار برای شناسایی حفره‌های امنیتی احتمالی بسیار مفید است، چون ممکن است برخی پورت‌ها در داخل سرور باز باشند اما از بیرون بسته شده باشند.

نتیجه اسکن nmap

مرحله هفتم: بستن پورت‌های غیرضروری با فایروال

پس از شناسایی پورت‌های غیرضروری، می‌توانید آن‌ها را ببندید تا امنیت سرور افزایش پیدا کند.
در اوبونتو از فایروال UFW استفاده می‌شود. برای مسدود کردن پورت 8080 کافیست دستورات زیر را اجرا کنید:

sudo ufw deny 8080
sudo ufw reload

در توزیع‌های CentOS یا AlmaLinux، فایروال پیش‌فرض firewalld است. برای بستن پورت 8080 در آن‌ها از دستور زیر استفاده کنید:

sudo firewall-cmd --permanent --remove-port=8080/tcp
sudo firewall-cmd --reload

بعد از اجرای این دستورات، پورت موردنظر بسته می‌شود و دیگر از بیرون در دسترس نخواهد بود.

نمای تنظیمات فایروال

مرحله هشتم: بررسی نهایی پس از تغییرات

برای اطمینان از بسته شدن پورت، دوباره دستور بررسی پورت را اجرا کنید. مثلاً برای پورت 8080 بنویسید:

sudo ss -tuln | grep :8080

اگر هیچ نتیجه‌ای نشان داده نشد، یعنی پورت با موفقیت بسته شده است. برای بررسی از دید بیرونی نیز می‌توانید مجدداً از nmap استفاده کنید تا مطمئن شوید تغییرات به‌درستی اعمال شده‌اند.


در پایان، پیشنهاد می‌شود به‌صورت دوره‌ای پورت‌های باز روی سرور خود را بررسی کنید تا تنها سرویس‌های ضروری (مثل SSH و HTTPS) فعال باشند. با این کار امنیت سرور شما افزایش یافته و احتمال نفوذ یا سوء‌استفاده به حداقل می‌رسد.

آیا توانستیم چالش شما را حل کنیم؟