تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

نحوه استفاده از Nmap برای اسکن پورت‌های باز


۶ اردیبهشت ۱۴۰۴

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

در شبکه‌سازی TCP/IP و UDP، پورت‌ها نقاط پایانی برای ارتباطات منطقی هستند. یک آدرس IP ممکن ات خدمات مختلفی مانند سرور وب، سرور اپلیکیشن و سرور فایل را اجرا کند. برای اینکه هر یک از این خدمات با یکدیگر ارتباط برقرار کنند، هر کدام روی یک پورت خاص گوش می‌دهند و ارتباط برقرار می‌کنند. زمانی که شما به یک سرور متصل می‌شوید، به آدرس IP و یک پورت خاص متصل می‌شوید.

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

در ادامه خواهید خواند:

  • درک پورت‌ها
  • شناسایی پورت‌های رایج
  • بررسی پورت‌های باز
  • استفاده از Nmap
  • اسکن پورت‌ها با استفاده از Nmap
  • جمع بندی

درک پورت‌ها

مدل شبکه OSI لایه‌های مختلفی دارد. لایه انتقال(Transport Layer) لایه‌ای است که به طور اصلی با ارتباط بین سرویس‌ها و برنامه‌های مختلف درگیر است.

این لایه، لایه اصلی است که پورت ها با آن در ارتباط اند.

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

استفاده از Nmap برای اسکن پورت‌های باز
  • پورت: یک مکان شبکه‌ای قابل آدرس‌دهی که در داخل سیستم‌عامل پیاده‌سازی شده و به تفکیک ترافیک مربوط به برنامه‌ها یا سرویس‌های مختلف کمک می‌کند.
  • سوکت‌های اینترنتی: یک فایل توصیف‌گر که آدرس IP و شماره پورت مرتبط با آن را مشخص می‌کند، همچنین پروتکل انتقالی که برای پردازش داده‌ها استفاده خواهد شد را نیز مشخص می‌کند.
  • بایندینگ: فرآیندی است که زمانی رخ می‌دهد که یک برنامه یا سرویس از یک سوکت اینترنتی برای پردازش داده‌های ورودی و خروجی خود استفاده می‌کند.
  • گوش دادن: زمانی که یک سرویس روی یک پورت “گوش می‌دهد”، به این معناست که آن سرویس به ترکیب پورت/پروتکل/آدرس IP متصل است تا منتظر درخواست‌ها از طرف مشتریان سرویس باشد.

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

  • اسکن پورت: اسکن پورت به فرآیندی اطلاق می‌شود که در آن تلاش می‌شود به تعدادی پورت متوالی متصل شویم، به منظور به‌دست آوردن اطلاعاتی در مورد پورت‌های باز و سرویس‌ها و سیستم‌عاملی که پشت آن‌ها قرار دارند.
با سرور مجازی ابری لیارا، قدرت، سرعت و آزادی عمل را در مدیریت سرور تجربه کنید!
✅ منابع کاملاً اختصاصی✅ سرعت اتصال بالا و ترافیک نامحدود✅ دسترسی کامل روت✅ مقیاس‌پذیری آسان
خرید و راه‌اندازی سریع سرور مجازی ابری لیارا

شناسایی پورت‌های رایج

پورت ها با یک شماره از 1 تا 65535 مشخص می‌شوند.

بسیاری از پورت‌هایی که شماره آن‌ها کمتر از 1024 است، به سرویس‌هایی تعلق دارند که سیستم‌عامل‌های لینوکس و مشابه‌ آن‌ها، آن‌ها را به عنوان سرویس‌های حیاتی برای عملکرد شبکه ضروری در نظر می‌گیرند، بنابراین برای تخصیص سرویس‌ها به این پورت‎‌ها باید دسترسی روت داشته باشید.

پورت‌های بین 1024 و 4951 به عنوان پورت‌های ثبت‌شده شناخته می‌شوند. این به این معنی است که می‌توانند رزرو شوند (در معنای بسیار آزاد کلمه) برای سرویس‌های خاص با ارسال درخواست IANA این قوانین به صورت دقیق اجرا نمی‌شوند، اما می‌توانند سرنخی از سرویس‌های احتمالی در پورت خاصی که رد حال اجرا هستند، ارائه دهند.

پورت‌های بین 49152 و 65535 نمی‌توانند ثبت شوند و برای استفاده خصوصی پیشنهاد شده‌اند.

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

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

  • 20: داده‌های FTP
  • 21: پورت کنترل FTP
  • 22: SSH
  • 23: Telnet (ناامن، برای بیشتر استفاده‌ها توصیه نمی‌شود)
  • 25: SMTP
  • 43: پروتکل WHOIS
  • 53: سرویس‌های DNS
  • 67: پورت سرور DHCP
  • 68: پورت کلاینت DHCP
  • 80: HTTP – ترافیک وب بدون رمزگذاری
  • 110: پورت ایمیل POP3
  • 113: سرویس‌های احراز هویت Ident در شبکه‌های IRC
  • 143: پورت ایمیل IMAP
  • 161: SNMP
  • 194: IRC
  • 389: پورت LDAP
  • 443: HTTPS – ترافیک وب امن
  • 587: SMTP – پورت ارسال پیام
  • 631: پورت دایمون چاپ CUPS
  • 666: DOOM – این بازی قدیمی واقعاً پورت خاص خود را دارد.

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

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

برای مشاهده فهرست از پورت‌های رایج، می‌توانید فایل /etc/services را بررسی کنید.

less /etc/services

این دستور فهرستی از پورت‌های رایج و سرویس‌های مرتبط با آن‌ها را به شما نمایش می‌دهد.

Output
. . .
tcpmux          1/tcp                           # TCP port service multiplexer
echo            7/tcp
echo            7/udp
discard         9/tcp           sink null
discard         9/udp           sink null
systat          11/tcp          users
daytime         13/tcp
daytime         13/udp
netstat         15/tcp
qotd            17/tcp          quote
msp             18/tcp                          # message send protocol
. . .

بسته به سیستم‌ شما، این دستور ممکن است چندین صفحه را نمایش دهد. برای دیدن صفحه بعدی، کلید SPACE را فشار دهید یا برای بازگشت به دستور، کلید Q را فشار دهید.

بیشتر بخوانید: FTP چیست؟ کاربرد ها، مزایا و معایب پروتکل FTP

همچنین بخوانید: پروتکل SMTP چیست؟ نقش SMTP در ارسال ایمیل ها

همینطور بخوانید: SSH چیست؟ + نحوه استفاده از SSH برای اتصال به سرور مجازی (VPS)

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

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

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

sudo netstat -plunt

خروجی این دستور چیزی شبیه به نمونه زیر خواهد بود.

Output
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      785/sshd        
tcp6       0      0 :::22                   :::*                    LISTEN      785/sshd 

این خروجی نشان می‌دهد که کدام پورت‌ها و سوکت‌ها در حال گوش‌دادن به سرویس‌های مشخصی اختصاص داده شده‌اند و هر دو پروتکل TCP و UDP را نمایش می‎‌دهد.

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

استفاده از Nmap

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

در میان ابزارهای موجود برای این کار، nmap یکی از معروف‌ترین و قدرتمندترین ابزاها است.

برای نصب nmap روی یک سیستم Ubuntu یا Debian، می‌توانید دستورات زیر را انجام دهید.

sudo apt-get update
sudo apt-get install nmap

یکی از مزایای نصب این نرم‌افزار، بهبود فایل port mapping است. این فایل اطلاعات گسترده‌تری درباره‌ی ارتباط بین پورت‌ها و سرویس‌ها ارائه می‌دهد. برای مشاهده‌ی این فایل، دستور زیر را اجرا کنید.

less /usr/share/nmap/nmap-services

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

Output
. . .
tcpmux  1/tcp   0.001995        # TCP Port Service Multiplexer [rfc-1078]
tcpmux  1/udp   0.001236        # TCP Port Service Multiplexer
compressnet     2/tcp   0.000013        # Management Utility
compressnet     2/udp   0.001845        # Management Utility
compressnet     3/tcp   0.001242        # Compression Process
compressnet     3/udp   0.001532        # Compression Process
unknown 4/tcp   0.000477
rje     5/udp   0.000593        # Remote Job Entry
unknown 6/tcp   0.000502
echo    7/tcp   0.004855
echo    7/udp   0.024679
echo    7/sctp  0.000000
. . .

این فایل شامل تقریباً ۲۰ هزار خط اطلاعات است و علاوه بر نام سرویس و پروتکل مربوطه، ستون سومی نیز دارد که میزان فراوانی مشاهده‌ی هر پورت را در اسکن‌های اینترنتی نمایش می‌دهد.

مطالب پیشنهادی: Nmap چیست و چرا به آن در شبکه خود نیاز دارید؟

اسکن پورت‌ها با استفاده از Nmap

Nmap می‌تواند اطلاعات زیادی درباره‌ی یک میزبان فاش کند. همچنین ممکن است باعث شود مدیران سیستم میزبان تصور کنند که کسی قصد خرابکاری دارد. به همین دلیل، فقط روی سرورهایی که مالک آن هستید یا در شرایطی که به صاحبان سرور اطلاع داده‌اید، این ابزار را آزمایش کنید.

سازندگان nmap یک سرور آزمایشی به آدرس scanme.nmap.org فراهم کرده‌اند.

این سرور با سرورهای شخصی شما اهداف خوبی برای تمرین با nmap هستند.

در اینجا چند عملیات رایج که می‌توان با nmap انجام داد ارائه شده است. تمام این دستورات با دسترسی sudo اجرا شده است تا از بازگشت نتایج ناقص جلوگیری شود. برخی از دستورات ممکن است زمان زیادی برای اجرا نیاز داشته باشند.

اسکن سیستم عامل میزبان:

sudo nmap -O scanme.nmap.org

رد کردن بخش کشف شبکه و فرض آنلاین بودن میزبان:

این گزینه زمانی مفید است که در آزمایش‌های دیگر پیغام “Note Host seems down” دریافت کرده‌اید. این گزینه را به سایر گزینه‌ها اضافه کنید.

sudo nmap -PN scanme.nmap.org

اسکن بدون انجام جستجوی معکوس DNS روی IP مشخص شده:

این کار معمولا سرعت نتایج را افزایش می‌دهد.

sudo nmap -n scanme.nmap.org

اسکن یک پورت خاص به جای تمام پورت‌های رایج:

sudo nmap -p 80 scanme.nmap.org

اسکن برای اتصالات TCP با اجرای 3 مرحله‌ی دست‌دهی (way handshake-3):

sudo nmap -sT scanme.nmap.org

اسکن برای اتصالات UDP:

sudo nmap -sU scanme.nmap.org

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

sudo nmap -n -PN -sT -sU -p- scanme.nmap.org

یک اسکن TCP “SYN” از نحوه‌ی برقراری اتصال TCP سوءاستفاده می‌کند.

برای شروع یک اتصال TCP، درخواست‌کننده یک بسته‌ی “synchronize request” به سرور ارسال می‌کند. سپس سرور یک بسته‌ی “acknowledgment” به سرور ارسال می‌کند و اتصال برقرار می‌شود.

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

با این حال، با پذیرش فایروال‌های پیشرفته و پرچم‌گذاری درخواست‌های SYN ناقص در بسیاری از تنظیمات، این روش دیگر به عنوان یک روش مخفیانه شناخته نمی‌شود.

برای اجرای یک اسکن SYN، دستور زیر را اجرا کنید.

sudo nmap -sS scanme.nmap.org

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

می‌توانید از سوئیچ‌های -sF”، “-sX” یا “-sN استفاده کنید. همه این گزینه‌ها پاسخ مورد انتظار ما را تولید می‌کنند.

sudo nmap -PN -p 80 -sN scanme.nmap.org

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

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

sudo nmap -PN -p 80 -sV scanme.nmap.org

در نهایت، می‌توانید با nmap چندین ماشین را اسکن کنید.

برای مشخص کردن یک بازه IP با “-” یا “/24” جهت اسکن چند میزبان به صورت همزمان، از دستوری مانند دستور زیر استفاده کنید.

sudo nmap -PN xxx.xxx.xxx.xxx-yyy

یا برای اسکن یک بازه‌ی شبکه برای سرویس‌های موجود از دستور زیر استفاده کنید.

sudo nmap -sP xxx.xxx.xxx.xxx-yyy

دستورات ترکیبی بسیار بیشتری وجود دارد که می‌توانید استفاده کنید، اما این موارد نقطه‌ی شروع خوبی برای کشف آسیب پذیری‌های شبکه‌ای شما خواهند بود.

بیشتر بخوانید: سرور مجازی چیست؟

اسکن پورت‌ها با استفاده از Nmap

جمع بندی

درک و پیکربندی پورت‌ها و شناسایی مسیرهای احتمالی حمله به سرور، تنها یکی از مراحل تامین امنیت اطلاعات و VPS شما است، اما مهارت ضروری به شمار می‌رود.

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

به اشتراک بگذارید