آنچه در این مقاله میخوانید
نحوه استفاده از Nmap برای اسکن پورتهای باز
۶ اردیبهشت ۱۴۰۴
شبکهسازی موضوعی وسیع و پیچیده برای بسیاری از مدیران سیستم تازهکار است. لایهها، پروتکلها و رابطهای مختلفی وجود دارد و بسیاری از ابزارها و نرمافزارهایی که باید برای درک آنها تسلط پیدا کرد.
در شبکهسازی TCP/IP و UDP، پورتها نقاط پایانی برای ارتباطات منطقی هستند. یک آدرس IP ممکن ات خدمات مختلفی مانند سرور وب، سرور اپلیکیشن و سرور فایل را اجرا کند. برای اینکه هر یک از این خدمات با یکدیگر ارتباط برقرار کنند، هر کدام روی یک پورت خاص گوش میدهند و ارتباط برقرار میکنند. زمانی که شما به یک سرور متصل میشوید، به آدرس IP و یک پورت خاص متصل میشوید.
در این مقاله، شما پورت را به صورت دقیقتر بررسی خواهید کرد. از برنامه netstat برای شناسایی پورتهای باز استفاده میکنید و سپس از برنامه nmap برای دریافت اطلاعات در مورد وضعیت پورتهای یک ماشین در یک شبکه استفاده خواهید کرد. پس از اتمام این کار، قادر خواهید بود پورتهای رایج را شناسایی کرده و سیستمهی خود را برای پورتهای باز اسکن کنید.
در ادامه خواهید خواند:
- درک پورتها
- شناسایی پورتهای رایج
- بررسی پورتهای باز
- استفاده از Nmap
- اسکن پورتها با استفاده از Nmap
- جمع بندی
درک پورتها
مدل شبکه OSI لایههای مختلفی دارد. لایه انتقال(Transport Layer) لایهای است که به طور اصلی با ارتباط بین سرویسها و برنامههای مختلف درگیر است.
این لایه، لایه اصلی است که پورت ها با آن در ارتباط اند.
برای درک پیکربندی پورتها، آشنایی با برخی اصطلاحات ضروری است. در اینجا برخی از اصطلاحاتی که به شما کمک خواهند کرد تا بحثهای بعدی را بهتر درک کنید آورده شده است.

- پورت: یک مکان شبکهای قابل آدرسدهی که در داخل سیستمعامل پیادهسازی شده و به تفکیک ترافیک مربوط به برنامهها یا سرویسهای مختلف کمک میکند.
- سوکتهای اینترنتی: یک فایل توصیفگر که آدرس 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
دستورات ترکیبی بسیار بیشتری وجود دارد که میتوانید استفاده کنید، اما این موارد نقطهی شروع خوبی برای کشف آسیب پذیریهای شبکهای شما خواهند بود.
بیشتر بخوانید: سرور مجازی چیست؟

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