مشاهده پورت‌های باز در لینوکس

زمان مطالعه: 6 دقیقه

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

در این مقاله می‌خواهیم به بررسی متدها و دستورات مختلفی که برای مشاهده پورت‌های باز در لینوکس استفاده می‌شود، بپردازیم.  ابتدا با اصول کلی پورت‌ها در شبکه آشنا می‌شویم و سپس به نحوه استفاده از دستورات اساسی برای مشاهده پورت‌های باز در لینوکس می‌پردازیم. ( خرید هاست لینوکس ایران )

پورتهای اینترنت
پورتهای اینترنت

پورت چیست

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

ویژگی‌های کلیدی پورت

شماره‌گذاری:

پورت­‌ها از اعداد صحیح بین 0 تا 65535 شماره­‌گذاری می‌­شوند. بعضی از این پورت­‌ها که از عدد 0 تا 1023 هستند، به عنوان پورت رزرو (Well-known Ports) شناخته می­‌شوند. پورت­‌های بین 1024 تا 49151 پورت­‌های ثبت شده هستند (registered ports) و پورت­‌های بین 49152 تا 65535 پورت­‌های داینامیک هستند (dynamic ports).

  • پورت‌های رزرو (Well-known Ports)مجموعه‌ای از پورت‌ها هستند که به صورت استاندارد و با شماره‌های ثابت برای خدمات مشخصی اختصاص یافته‌اند. این پورت‌ها معمولا از عدد 0 تا 1023 شماره‌گذاری می‌شوند. استفاده از پورت‌های رزرو برای تسهیل شناسایی خدمات مختلف در شبکه صورت می‌گیرد.
  • پورت‌های ثبت شده (registered ports)مجموعه‌ای از پورت‌ها هستند که به صورت استاندارد برای برنامه‌ها و خدمات مختلف در شبکه مورد استفاده قرار می‌گیرند. این پورت‌ها معمولا بین اعداد 1024 تا 49151 شماره‌گذاری می‌شوند و برای مدیریت منابع شبکه توسط سازمان‌ها مورد استفاده قرار می‌گیرند.
  • پورت‌های داینامیک (dynamic ports)پورت‌های داینامیک یا پورت‌های پیش‌فرض، پورت‌هایی هستند که به صورت داینامیک توسط سیستم‌عامل یا برنامه‌ها برای برقرای اتصالات انتخاب می‌شوند. این پورت‌ها برخلاف پورت‌های رزرو که شماره‌گذاری ثابتی دارند، به صورت پویا و اتفاقی برای ارتباطات مختلف استفاده می‌شوند. محدوده پورت‌های داینامیک بین 49152 تا 65535 است. برنامه‌های کلاینت معمولا از این پورت‌ها برای برقراری ارتباط با سرورها استفاده می‌کنند. زمانی که یک برنامه یا سرویس جدید شروع به فعالیت می‌کند و نیاز به ارتباط شبکه دارد، معمولا یک پورت داینامیک از محدوده پورت‌ها به صورت تصادفی به آن برنامه اختصاص داده می‌شود. این پردازش برای پیشگیری از تداخل در استفاده از پورت‌ها توسط برنامه‌های دیگر است.

پروتکل­‌های مختلف:

هر پروتکل در شبکه مانند TCP یا UDP برای ارتباطات مختلف از پورت‌ها استفاده می‌کند. این پورت‌ها به انواع ارتباطات مختلف، مانند ارسال ایمیل، مرور وب، ارتباط با دیتابیس و ... اختصاص دارند. برای مثال، پورت 80 برای پروتکل http و پورت 443 برای پروتکل https استفاده می‌شوند. برای اطلاعات بیشتر مقاله انواع پروتکل های اینترنت را می‌توانید مطالعه کنید.

مشاهده پورتهای باز
مشاهده پورتهای باز

ارتباطات دو سویه:

ارتباطات در دو سمت (درخواست و پاسخ) از طریق پورت­‌ها امکان­پذیر است. یک پورت ممکن است برای ارسال درخواست و دیگری برای دریافت پاسخ استفاده شود.

امنیت:

کنترل دسترسی به پورت­‌ها از طریق فایروال­‌ها و تنظیمات امنیتی از اهمیت بسزایی برخوردار است. با بستن یا محدود کردن پورت­‌ها می‌­توان دسترسی غیرمجاز را متوقف و حملات احتمالی به سیستم را کاهش داد.

پورت­‌ها ابزارهای کلیدی در شبکه هستند و به تدابیر امنیتی دقیقی نیاز دارند تا از اطلاعات، حین انتقال در شبکه، محافظت کنند. در ادامه شما را با انواع دستورات، برای مشاهده پورت‌های باز در لینوکس آشنا خواهیم کرد.

انواع روش­‌ها برای مشاهده پورت‌های باز در لینوکس

برای مشاهده پورت‌های باز در لینوکس می­‌توان از چندین روش مختلف استفاده کرد. این روش­‌ها عبارتند از:

  • Netstat
  • ss (socket statistics)
  • lsof (list open files)
  • nmap
  • netcat
  • grep

در ادامه به بررسی 4 روش اصلی­ از روش‌های گفته شده در بالا، برای مشاهده پورت‌های باز در لینوکس می­‌پردازیم.

توجه داشته باشید که برای اجرای همه دستورات گفته شده در این مطلب، باید دسترسی روت (root) داشته باشید و قبل از هر دستور نیاز به نوشتن sudo است تا بتوانید به اطلاعات پورت­‌ها دسترسی پیدا کنید.

مقالات بیشتر، اطلاعات بیشتر:

2 روش برای باز و بسته کردن پورت در ویندوز

مشاهده پورت­‌های باز در لینوکس با دستور netstat

Netstat یک ابزار مفید در سیستم‌­های لینوکس و دیگر سیستم­‌عامل‌هاست که اطلاعات مربوط به اتصالات شبکه، پورت­‌ها و اطلاعات مربوط به روتینگ را نمایش می­‌دهد. این ابزار اطلاعات مهمی درباره وضعیت شبکه سیستم، در اختیار شما قرار می‌­دهد.

به منظور مشاهده پورت‌های باز در لینوکس با استفاده از netstat می‌­توانید از دستورات زیر استفاده کنید:

				
					netstat -tulpn
				
			

دستور با تمام اتصالات را با جزئیات نمایش می­‌دهد. با استفاده از آپشن­‌هایی که این دستور دارد می­‌توانید خروجی مورد نظر خود را مشاهده کنید:

  • a (all)- نمایش تمام اتصالات فعال حتی اتصالات در حال شنود (LISTEN)
  • t (TCP)- نمایش اطلاعات مربوط به پروتکل TCP
  • u (UPD)- نمایش اطلاعات مربوط به پروتکل UDP
  • l (LISTENING)- نمایش پورت‌های در حال شنود (LISTEN)
  • p (program)- نمایش برنامه‌ها و PID مربوط به هر اتصال
  • n (numeric)- نمایش اطلاعات به صورت عددی برای آدرس‌ها و پورت‌ها
  • r (route)- نمایش جدول مسیریابی

با استفاده از دستور زیر می­‌توانید پورت­‌هایی که در حال گوش دادن هستند را مشاهده کنید:

				
					netstat -tulpn | grep LISTEN
				
			

نمایش اطلاعات یک پورت خاص:

				
					netstat -tulpn | grep :<port_number>
				
			

<port_number> باید با شماره پورت مورد نظر جایگزین شود.

نمایش اطلاعات مربوط به یک پورت خاص:

				
					netstat -an | grep :<port_number>
				
			

<port_number> باید با شماره پورت مورد نظر جایگزین شود.

نمایش اطلاعات پورت، با استفاده از سرویس در حال استفاده از آن:

				
					netstat -tulpn | grep <program_name>
				
			

به جای <program_name> باید نام برنامه‌­ای که از پورت مورد نظر استفاده می‌کند را بنویسید.

نمایش اطلاعات یک پروتکل در حال گوش دادن:

				
					Netstat -tulpn | grep LISTEN | grep <protocol>
				
			

<protocol> باید با udp یا tcp جایگزین شود.

با استفاده از grep می­توانید اطلاعاتی که می­‌خواهید در نتایج جستجو به شما نمایش داده شود را فیلتر کنید.

دستورات بالا همه پروسه­‌ها، پورت­‌ها و اتصالات باز در سیستم را به شما نمایش می­‌دهد، که با استفاده از آن­ها می­‌توانید وضعیت پورت­‌های باز در لینوکس را بررسی کنید.

به عنوان مثال، دستور زیر به شما نشان می­‌دهد که پورت 443 که پورت پیش­‌فرض https است، باز است یا نه.

				
					netstat -tulpn |  grep LISTEN | grep :80
				
			

مشاهده پورت­‌های باز در لینوکس با دستور ss

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

				
					ss [options][ FILTER ]
				
			

پارامترهای مهم در دستور ss:

  • a (all)- نمایش تمام اتصالات فعال حتی اتصالاتی که در حال شنود (LISTEN) نیستند
  • t (TCP)- نمایش اطلاعات مربوط به اتصالات TCP
  • u (UPD)- نمایش اطلاعات مربوط به اتصالات UDP
  • l (LISTENING)- نمایش پورت‌های در حال شنود (LISTEN)
  • n (numeric)- نمایش آدرس‌ها و پورت‌ها به صورت عددی

فیلترها در دستور ss :

  • sport = PORTفیلتر بر اساس پورت مبدا
  • dport = PORT فیلتر بر اساس پورت مقصد
  • stat = STATE فیلتر بر اساس وضعیت اتصال (مثل ESTAB برای اتصالات برقرار)
  • src = ADDRESS فیلتر بر اساس آدرس مبدا
  • dst = ADDRESS فیلتر بر اساس آدرس مقصد

دستور زیر همه اتصالات TCP در حال گوش دادن را نشان می­دهد.

				
					ss -t -l 
				
			

نمایش همه اتصالات UDP :

				
					ss -u –a
				
			

نمایش اتصالات TCP با وضعیت ESTABLISHED :

				
					ss -t state established
				
			

نمایش اتصالات TCP بر اساس شماره پورت مبدا :

				
					ss -t sport = :80
				
			

در دستور بالا شماره پورت را 80 در نظر گرفته ایم.

نمایش اطلاعات پورت در حال شنود :

				
					ss -t -l -p -n | grep :22
				
			

در دستور بالا شماره پورت، 22 در نظر گرفته شده.

مشاهده پورت‌های باز در لینوکس با استفاده از دستور nmap

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

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

				
					sudo nmap -sT -p- localhost
				
			

دستور بالا تمام پورت‌های TCP که در لوکال هاست باز است را اسکن می‌کند. گزینه sT- باعث می‌شود تا nmap یک اتصال TCP برقرار می‌کند و سپس به صورت فعال به سرور متصل می‌شود تا اطلاعاتی را در مورد پورت‌ها و سرویس‌هایی که بر روی آن‌ها اجرا می‌شوند، دریافت کند. گزینه -p- تمام پورت‌ها (از 1 تا 65535) را اسکن می‌کند.

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

				
					sudo nmap -sU -p- localhost
				
			

nmap با استفاده از گزینه -sU یک اتصال UDP ایجاد می‌کند و به سرور متصل می‌شود و تمام پورت‌های UDP که در لوکال هاست باز هستند را اسکن می‌کند.

با استفاده از دستور زیر می‌توانید پورت‌های باز هر دو پروتکل را مشاهده کنید:

				
					sudo nmap -n -PN -sT -sU -p- localhost
				
			

گزینه n- باعث می‌شود که nmap برای نمایش نام‌ها و دامنه‌ها از انتقال داده به سرور DNS خودداری کند. PN- باعث می‌شود که nmap از ارسال پینگ خودداری کند.

بدون دیدگاه

دیدگاهتان را بنویسید

هاستvpsسرور اختصاصی