نماد سایت وبلاگ شتابان هاست

بررسی پورت هاي باز در لینوکس

بررسی پورت هاي باز در لینوکس

این که آیا در مورد مشکلات اتصال شبکه عیب یابی کرده اید یا یک firewall را پیکربندی کرده اید ، یکی از اولین مواردی که باید بررسی کنید این است که واقعاً چه پورت هایی روی سیستم شما باز شده است. این مقاله چندین رویکرد را توضیح می دهد تا دریابید که چه پورت هاي باز در سیستم لینوکس شما باز شده است. با ما در شتابان هاست همراه باشيد.

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

يك listening port ، پورت شبکه ای است که یک برنامه در آن گوش  می كند می توانید با پرس و جو کردن پشته شبکه با دستوراتی مانند ss ، netstat یا lsof لیستی از listening ports را روی سیستم خود بدست آورید. هر listening ports با استفاده از firewall می تواند باز یا بسته (فیلتر شده) باشد. به طور کلی ، پورت باز یک پورت شبکه است که بسته های ورودی را از مکان های دور می پذیرد.

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

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

2) پورت باز را با nmap بررسی کنید

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

دستور زیر که از کنسول صادر شده است ، تعیین می کند که کدام  port ها به دنبال اتصال TCP از شبکه هستند.

sudo nmap -sT -p- 10.10.8.8

 

-sT به nmap می گوید که پورت های TCP را اسکن کند و -p- را برای اسکن کردن تمام port های 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

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

برای اسکن کردن port های UDP به جای -sT از -sU استفاده کنید:

sudo nmap -sU -p- 10.10.8.8

3) پورت هاي باز را با netcat بررسی کنید

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

با netcat می توانید یک port واحد یا یک port را اسکن کنید.

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

nc -z -v 10.10.8.8 20-80

گزینه -z به nc می گوید که فقط برای port های باز اسکن شود ، بدون ارسال اطلاعات و ارسال -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

 

4) پورت هاي باز را با استفاده از دستگاه Bash Pseudo بررسی کنید

روش دیگر برای بررسی اینکه آیا پورت خاصی باز یا بسته است ،با استفاده از Bash shell ويك شبه دستگاه   /dev/tcp/.. يا /dev/udp/.. اجرا كنيد. هنگام اجرای یک دستور روی شبه دستگاه / dev / $ PROTOCOL / $ HOST / $ IP ، Bash یک اتصال TCP یا UDP را در پورت مشخص شده باز می کند.

در صورت بیان..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

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

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

برای بررسی دامنه از port range استفاده کنید:

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

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

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