جدول محتوایی
شناسایی و اسکن پورت های باز یک سرور با nmap
برای پیدا کردن پورتهای باز یک سرور، میتوانید از ابزارها و روشهای مختلفی استفاده کنید که هر کدام برای محیطها و اهداف خاصی مناسب هستند. این فرآیند معمولاً برای بررسی امنیت سرور، شناسایی سرویسهای در حال اجرا، یا عیبیابی شبکه انجام میشود. در ادامه، روشهای اصلی و مراحل گامبهگام برای شناسایی پورتهای باز توضیح داده شده است.
روشهای پیدا کردن پورتهای باز
استفاده از ابزارهای اسکن شبکه (مانند Nmap) : Nmap (Network Mapper) یکی از محبوبترین ابزارهای اسکن پورت است که اطلاعات دقیقی درباره پورتهای باز، سرویسهای در حال اجرا و حتی سیستمعامل سرور ارائه میدهد.
دستورات داخلی سیستمعامل: ابزارهایی مانند netstat، ss یا lsof در سیستمهای لینوکس/یونیکس و netstat در ویندوز برای بررسی پورتهای باز در سرور محلی مناسب هستند.
اسکن آنلاین: وبسایتها و ابزارهای آنلاین مانند Nmap Online یا YouGetSignal برای اسکن پورتهای سرور از راه دور
بررسی فایروال و تنظیمات سرور: بررسی تنظیمات فایروال (مانند iptables در لینوکس یا Windows Firewall) و لاگهای سرور
مراحل پیدا کردن پورتهای باز
1 – استفاده از Nmap
Nmap ابزار قدرتمندی است که هم برای سرور محلی و هم سرورهای راه دور کار میکند. برای استفاده:
نصب Nmap :
در لینوکس (اوبونتو/دبیان) :
sudo apt update
sudo apt install nmap
در ویندوز: فایل نصبی را از سایت رسمی Nmap دانلود کنید.
در مک : از Homebrew استفاده کنید :
brew install nmap
اجرای اسکن :
برای اسکن پورتهای باز یک سرور (مثلاً با IP 192.168.1.1) :
nmap 192.168.1.1
این دستور پورتهای رایج (مانند 80، 443، 22) را اسکن میکند.
برای اسکن تمام پورتها (1-65535) :
nmap -p- 192.168.1.1
برای شناسایی سرویسها و نسخهها :
nmap -sV 192.168.1.1
برای اسکن سریعتر (فقط پورتهای رایج) :
nmap -F 192.168.1.1
خروجی نمونه :
Starting Nmap 7.94 ( https://nmap.org ) at 2025-05-29 11:50 +04
Nmap scan report for 192.168.1.1
Host is up (0.002s latency).
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
این خروجی نشان میدهد پورتهای 22 (SSH)، 80 (HTTP) و 443 (HTTPS) باز هستند.
-
نکته امنیتی : اگر سرور متعلق به شما نیست، برای اسکن باید اجازه کتبی داشته باشید، زیرا اسکن بدون مجوز ممکن است غیرقانونی باشد
2. استفاده از دستورات داخلی سیستمعامل
اگر به سرور دسترسی مستقیم (از طریق SSH یا کنسول) دارید :
در لینوکس :
دستور ss :
ss -tuln
این دستور پورتهای TCP و UDP باز را نشان میدهد. خروجی نمونه :
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
پورتهای 22 و 80 باز هستند.
دستور netstat (اگر نصب شده باشد) :
netstat -tuln
دستور lsof :
lsof -i -P -n | grep LISTEN
این دستور فرآیندهای مرتبط با پورتهای باز را نشان میدهد.
در ویندوز:
دستور netstat :
netstat -ano | findstr LISTENING
خروجی نمونه :
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 1234
TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 5678
پورتهای 80 و 443 باز هستند. ستون آخر (PID) فرآیند مرتبط را نشان میدهد.
3. استفاده از ابزارهای آنلاین
اگر دسترسی مستقیم به سرور ندارید :
وبسایتهایی مانند YouGetSignal (yougetsignal.com/tools/open-ports) یا Nmap Online را باز کنید.
آدرس IP یا دامنه سرور (مثلاً example.com) را وارد کنید.
پورتهای خاص (مانند 80، 443) یا محدودهای از پورتها را اسکن کنید.
محدودیت: این ابزارها معمولاً فقط پورتهای رایج را اسکن میکنند و ممکن است توسط فایروال مسدود شوند.
4 – بررسی فایروال و تنظیمات سرور
لینوکس (iptables یا ufw) :
برای بررسی قوانین فایروال :
sudo iptables -L -n -v
یا اگر از ufw استفاده میکنید :
sudo ufw status
این دستورات نشان میدهند کدام پورتها توسط فایروال باز هستند.
ویندوز:
در Windows Firewall، قوانین ورودی (Inbound Rules) را بررسی کنید تا پورتهای مجاز را ببینید:
netsh advfirewall firewall show rule name=all | findstr "LocalPort"
نکات مهم
امنیت: اسکن پورت روی سرورهایی که مالک آنها نیستید، بدون اجازه غیرقانونی است. همیشه مجوز بگیرید.
فایروال و IDS/IPS: برخی سرورها با فایروال یا سیستمهای تشخیص نفوذ (IDS) تنظیم شدهاند که ممکن است اسکن را مسدود یا محدود کنند. برای اسکن دقیقتر، از گزینههای پیشرفته Nmap مانند -sS (اسکن SYN) یا -T4 (اسکن سریع) استفاده کنید :
nmap -sS -T4 192.168.1.1
محدود کردن پورتها: فقط پورتهای ضروری (مانند 80 برای HTTP، 443 برای HTTPS، 22 برای SSH) را باز نگه دارید و بقیه را با فایروال ببندید.
بررسی نتایج: خروجی ابزارها (مانند Nmap یا ss) اطلاعاتی درباره پورت، سرویس (مثلاً Apache، SSH) و نسخه آن ارائه میدهد. این اطلاعات برای شناسایی آسیبپذیریها (مثلاً نسخه قدیمی یک سرویس) مفید است.
تهیه گزارش: نتایج اسکن را در فایلی ذخیره کنید (مثلاً با Nmap: nmap -oN scan_results.txt 192.168.1.1) و برای تحلیل بعدی نگه دارید.
نمونه کد برای اسکن با Nmap
برای اسکن پورتهای باز و ذخیره نتایج:
این کد تمام پورتها را اسکن کرده و نتایج را در فایل scan_results.txt ذخیره میکند.