وقتی قرار که امنیت یک شبکه رو برقرار کنید و بدونید هر لحظه چه اطلاعاتی توسط سیستمتون ارسال میشه یا ممکنه به مشکلی برای ارسال و دریافت اطلاعات بر بخورید، شما نیازمند این هستید که پورتهای شبکه رو بشناسید و از باز یا بسته بودن اونها خبردار بشید. امروز میخوام با روشهای مختلف چک کنم که چطور میتونید از باز یا بسته بودن پورتها آگاه بشید. خب بیاید اول ببینیم پورت چیه؟ پورت یک عدد ۱۶ بیتی از ۰ تا ۶۵۵۳۵ است که کمک میکنه ما بتونیم پردازش یا نرمافزارهایی که در سیستممون درحال انجام است را بهتر بشناسیم و دنبال کنیم. بیاید یکم ساده تر بگم وقتی کلمهی پورت رو میشنوید ۲ جنبه داره، یکی سخت افزاری و یکی نرمافزاری، خب مشخصه که شما پورت سخت افزاری رو بخوبی میشناسید و روزانه از اون استفاده میکنید مثل پورت usb اما اینجا ما باهاش کاری نداریم و میخوایم به پورت نرم افزاری بپردازیم، همونجور که بالا گفتم یه عدد ۱۶ بیتی است که از ۰ تا ۶۵۵۳۵ میتونه باشه که بعضی از این پورتها توسط سازمان IANA رزرو شدند و اگر بخوایم مدل ۷ لایهی OSI رو در نظر بگیریم، پورت در لایهی ۴ یا Trasport قرار میگیره، خب حالا شاید فکر کنید چه استفادهای داره، ببینید فرض کنید شما میخواید یه نامه به دوستتون بفرستید برای اینکه نامهی شما به دست اون برسه نیازمند این هستید که آدرس دقیق مقصد رو روی پاکت نامه بنویسید، باید کدپستی ساختمانی که طرف مقابل در اون قرار داره رو بنویسید و شماره واحدی که مخاطب خاصتون در اون ساکنه و همینطور اسم مخاطب خاصتون 🙂 خب در شبکه چند آدرس داریم یکی IP Address که در لایه ۳ یا Network قرار داره و معادل کدپستی ساختمانه یکی MAC Address که در لایه ۲ یا Data-link قرار داره و معادل شماره واحدیه که مخاطبتون در اون قرار داره و شماره Port که دقیقن مشخص کنندهی همون کسیه که باید نامه به دستش برسه، مبادا بجای اینکه نامه به خودش برسه بره به باباش برسه!! فکر کنم در همین حد توضیح کافی باشه و بریم سراغ بحث اصلی که شناسایی پورتهای باز سیستم است فقط قبلش یه نگاه کلی به رنج پورتها بندازیم.
وضعیت | بازه Port |
ثبت شده | ۱۰۲۳ – ۰ |
ثبت شده برای تولید کنندگان Application | ۴۹۱۵۱ – ۱۰۲۴ |
Dynamic / Private | ۴۹۱۵۲ به بعد |
خب اول با دستور زیر برنامهها و سرویسها همراه پورتی که استفاده میکنند رو مشاهده کنید:
1 |
cat /etc/services |
برای من همچین خروجی داره:

خب خیلی خیلی کوتاه بگم درمورد TCP و UDP ، خیلی خلاصش میشه که هر دو پروتکل ارسال اطلاعات هستند با این تفاوت که در TCP صحییح و کامل رسیدن اطلاعات مهمه در واقع Reliability یا قابلیت اطمینان بسیار مهمه اما در UDP صحت اطلاعات به اندازهی TCP مهم نیست بخاطر این سرعت بالاتری داره چون قضیهی هندشیکینگ و .. رو نداره، توصیه میکنم درموردشون اگر اطلاعات خوبی ندارید جستجو کنید و بخونید، به دلیل اینکه سطح اینترنت پر شده از این تعاریف من دیگه بهشون نمیپردازم. دیگه واقعن بریم سراغ ابزارهایی که کمکمون میکنند برای شناسایی پورتهای باز و بسته.
۱- Netstat
در آرچ لینوکس با نصب بستهی net-tools که در مخزن Core قرار داره میتونید از Netstat استفاده کنید.
1 |
netstat -atu |
با استفاده از دستور بالا میتونید پورتهای باز رو مشاهده کنید، فلگهایی که استفاده شده:
-a: تمام پورتها رو نشون میده
-t: اتصالات TCP رو نشون میده
-u: اتصالات UDP رو نشون میده
خروجی بصورت زیر میشه

همچنین میتونید از فلگ p هم استفاده کنید تا PID پروسس رو هم به شما نشون بد
برای اینکه فقط پورتهای UDP رو ببینید میتونید از دستور زیر استفاده کنید:
1 |
netstat -vaun |
همینطور برای TCP:
1 |
netstat -vatn |
۲- lsof
برای استفاده از این دستور کافیه بستهی lsof که در مخزن extera هست رو نصب کنید و درنهایت با دستور زیر پورتهای باز سیستم رو ببینید
1 |
lsof -i |
خروجی بصورت زیر میشه:

۳- Nmap
برای استفاده از این دستور باید بسته ی nmap رو که در مخزن extera است نصب کنید و درنهایت:
1 |
nmap -sT -O localhost |
یا برای UDP:
1 |
nmap -sU localhost |
خروجی بصورت زیر خواهد بود:
