آموزش چک کردن پورت های باز در لینوکس - وان سرور آکـادمی
آموزش چک کردن پورت های باز در لینوکس
آموزش چک کردن پورت های باز در لینوکس

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

زمان تقریبی مطالعه: 4 دقیقه

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

این مقاله روش های متعددی را برای یافتن پورت هایی که در سیستم لینوکس باز است توضیح می دهد.

پورت باز چیست؟

شما می توانید پورت های سیستم خود را با جستجو از شبکه با دستورات مانند ss ، netstat یا lsof پیدا کنید. هر پورت می تواند با استفاده از فایروال باز یا بسته شود (فیلتر شده).

به طور کلی، یک پورت باز ، یک پورت شبکه است که بسته های دریافتی را از مکان های راه دور می پذیرد.

برای مثال، اگر شما یک وب سرور را که در پورت های 80 و 443 است و آن پورت ها در فایروال باز هستند، هرکسی (به جز IPS های مسدود شده) می تواند با استفاده از مرورگر خود به وب سایت های میزبانی شده در وب سرور دسترسی پیدا کند. در این مورد، هر دو 80 و 443 پورت باز هستند.

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

برای خرید سرور مجازی کلیک کنید

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

Nmap یک ابزار قدرتمند اسکن شبکه است که می تواند میزبان و شبکه های بزرگ را اسکن کند. این عمدتا برای ممیزی های امنیتی و آزمایش نفوذ استفاده می شود.

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

دستور زیر از کنسول صادر شده تعیین می کند که کدام پورت ها برای اتصال به شبکه از طریق TCP هستند:

 sudo nmap -sT -p- 10.10.8.8 

-sT به nmap می گوید که پورت TCP را اسکن کند و -p- برای تمام پورت های 65535 اسکن کند. اگر -p- استفاده نشود nmap تنها 1000 پورت را اسکن می کند.

خروجی:

Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-09 23:10 CEST
Nmap scan report for 10.10.8.8
Host is up (0.0012s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http
MAC Address: 08:00:27:05:49:23 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds

خروجی بالا نشان می دهد که تنها پورت های 22 ، 80 و 8069 در سیستم هدف باز می باشند.

برای اسکن پورت های UDP از -uT به جای -sT استفاده میشود:

 sudo nmap -uT -p- 10.10.8.8 

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

Netcat (یا nc ) یک ابزار خط فرمانی است که می تواند داده ها را از طریق اتصالات شبکه، با استفاده از پروتکل های TCP یا UDP، خواندن و نوشتن انجام دهد.

با netcat شما می توانید یک پورت یا دامنه پورت را اسکن کنید.

برای مثال برای اسکن کردن پورت های باز TCP در یک دستگاه از راه دور با آدرس IP 10.10.8.8 در محدوده 20-80 شما می توانید از دستور زیر استفاده کنید:

 nc -z -v 10.10.8.8 20-80 

گزینه -z به nc می گوید فقط برای پورت های باز، بدون ارسال هر گونه داده و -v برای اطلاعات بیشتر متنی، اسکن می کند.

خروجی چیزی شبیه به این خواهد بود:

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused
nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused
Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
...
Connection to 10.10.8.8 80 port [tcp/http] succeeded!

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

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
Connection to 10.10.8.8 80 port [tcp/http] succeeded!

برای اسکن برای پورت های UDP گزینه -u را به دستور nc :

 nc -z -v -u 10.10.8.8 20-80 2>&1 | grep succeeded 

بررسی پورت های باز با استفاده از Bash Pseudo Device

راه دیگری برای بررسی اینکه آیا یک پورت خاص باز یا بسته است با استفاده از Bash Pseudo Device /dev/tcp/.. یا /dev/udp/.. است.

هنگام اجرای فرمان در pseudo-device /dev/$PROTOCOL/$HOST/$IP ، Bash یک اتصال TCP یا UDP را به میزبان مشخص شده در پورت مشخص شده باز می کند.

عبارت if..else زیر بررسی خواهد کرد که آیا پورت 443 در kernel.org باز است:

if timeout 5 bash -c '</dev/tcp/kernel.org/443 &>/dev/null'
then
  echo "Port is open"
else
  echo "Port is closed"
fi

خروجی

Port is open

چگونه کد بالا کار می کند؟

زمان وقفه پیش فرض هنگام اتصال به یک پورت با استفاده از یک pseudo device بزرگ است بنابراین ما از دستور timeout برای خاتمه دادن دستور test پس از 5 ثانیه استفاده می کنیم. اگر اتصال به پورت 443 kernel.org برقرار شود، دستور test درست خواهد شد.

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

 for PORT in { 20 ..80 } ; do timeout 1 bash -c "</dev/tcp/10.10.8.8/ $PORT  &>/dev/null" && echo "port $PORT  is open" done 

خروجی چیزی شبیه به این خواهد بود:

 port 22 is open port 80 is open 

نتیجه

ما به شما چندین ابزار را پیشنهاد دادیم که می توانید آنها را برای اسکن کردن پورت های باز استفاده کنید. به عنوان مثال، می توانید از ابزار و روش های دیگری برای بررسی پورت های باز استفاده کنید، مثلا می توانید از ماژول socket Python، curl ، telnet یا wget استفاده کنید.

اولین نفری باشید که از آموزشها و تخفیفهای ویژه با خبر میشوید 😉
با عضویت در خبرنامه از 80 درصد تخفیف بهره مند شوید

5/5 - (1 امتیاز)