در حوزه امنیت شبکه و مدیریت سرورها، شناخت و مشاهده پورتهای باز در لینوکس امری بسیار حیاتی است. پورتها به عنوان درگاههای ارتباطی در شبکههای کامپیوتری عمل میکنند و وظایف مختلفی را به عهده دارند. برای جلوگیری از دسترسی غیرمجاز به سیستمها و افزایش امنیت شبکه باید از وضعیت پورتها با خبر باشیم.
در این مقاله میخواهیم به بررسی متدها و دستورات مختلفی که برای مشاهده پورتهای باز در لینوکس استفاده میشود، بپردازیم. ابتدا با اصول کلی پورتها در شبکه آشنا میشویم و سپس به نحوه استفاده از دستورات اساسی برای مشاهده پورتهای باز در لینوکس میپردازیم. ( خرید هاست لینوکس ایران )
پورت چیست
در شبکههای کامپیوتری، "پورت" به یک شماره منحصر به فرد اشاره دارد که برنامهها یا خدمات مختلف در یک سیستم کامپیوتری، برای برقراری ارتباطات از آن استفاده میکنند، یعنی درخواستها و اطلاعات را با گوش دادن به پورتها در شبکه انتقال میهند. پورتها یک نقطه ورود یا خروج برای ارتباطات در شبکهها هستند و در انتقال اطلاعات میان دستگاهها نقشی اساسی دارند.
ویژگیهای کلیدی پورت
شمارهگذاری:
پورتها از اعداد صحیح بین 0 تا 65535 شمارهگذاری میشوند. بعضی از این پورتها که از عدد 0 تا 1023 هستند، به عنوان پورت رزرو (Well-known Ports) شناخته میشوند. پورتهای بین 1024 تا 49151 پورتهای ثبت شده هستند (registered ports) و پورتهای بین 49152 تا 65535 پورتهای داینامیک هستند (dynamic ports).
- پورتهای رزرو (Well-known Ports)مجموعهای از پورتها هستند که به صورت استاندارد و با شمارههای ثابت برای خدمات مشخصی اختصاص یافتهاند. این پورتها معمولا از عدد 0 تا 1023 شمارهگذاری میشوند. استفاده از پورتهای رزرو برای تسهیل شناسایی خدمات مختلف در شبکه صورت میگیرد.
- پورتهای ثبت شده (registered ports)مجموعهای از پورتها هستند که به صورت استاندارد برای برنامهها و خدمات مختلف در شبکه مورد استفاده قرار میگیرند. این پورتها معمولا بین اعداد 1024 تا 49151 شمارهگذاری میشوند و برای مدیریت منابع شبکه توسط سازمانها مورد استفاده قرار میگیرند.
- پورتهای داینامیک (dynamic ports)پورتهای داینامیک یا پورتهای پیشفرض، پورتهایی هستند که به صورت داینامیک توسط سیستمعامل یا برنامهها برای برقرای اتصالات انتخاب میشوند. این پورتها برخلاف پورتهای رزرو که شمارهگذاری ثابتی دارند، به صورت پویا و اتفاقی برای ارتباطات مختلف استفاده میشوند. محدوده پورتهای داینامیک بین 49152 تا 65535 است. برنامههای کلاینت معمولا از این پورتها برای برقراری ارتباط با سرورها استفاده میکنند. زمانی که یک برنامه یا سرویس جدید شروع به فعالیت میکند و نیاز به ارتباط شبکه دارد، معمولا یک پورت داینامیک از محدوده پورتها به صورت تصادفی به آن برنامه اختصاص داده میشود. این پردازش برای پیشگیری از تداخل در استفاده از پورتها توسط برنامههای دیگر است.
پروتکلهای مختلف:
هر پروتکل در شبکه مانند TCP یا UDP برای ارتباطات مختلف از پورتها استفاده میکند. این پورتها به انواع ارتباطات مختلف، مانند ارسال ایمیل، مرور وب، ارتباط با دیتابیس و ... اختصاص دارند. برای مثال، پورت 80 برای پروتکل http و پورت 443 برای پروتکل https استفاده میشوند. برای اطلاعات بیشتر مقاله انواع پروتکل های اینترنت را میتوانید مطالعه کنید.
ارتباطات دو سویه:
ارتباطات در دو سمت (درخواست و پاسخ) از طریق پورتها امکانپذیر است. یک پورت ممکن است برای ارسال درخواست و دیگری برای دریافت پاسخ استفاده شود.
امنیت:
کنترل دسترسی به پورتها از طریق فایروالها و تنظیمات امنیتی از اهمیت بسزایی برخوردار است. با بستن یا محدود کردن پورتها میتوان دسترسی غیرمجاز را متوقف و حملات احتمالی به سیستم را کاهش داد.
پورتها ابزارهای کلیدی در شبکه هستند و به تدابیر امنیتی دقیقی نیاز دارند تا از اطلاعات، حین انتقال در شبکه، محافظت کنند. در ادامه شما را با انواع دستورات، برای مشاهده پورتهای باز در لینوکس آشنا خواهیم کرد.
انواع روشها برای مشاهده پورتهای باز در لینوکس
برای مشاهده پورتهای باز در لینوکس میتوان از چندین روش مختلف استفاده کرد. این روشها عبارتند از:
- Netstat
- ss (socket statistics)
- lsof (list open files)
- nmap
- netcat
- grep
در ادامه به بررسی 4 روش اصلی از روشهای گفته شده در بالا، برای مشاهده پورتهای باز در لینوکس میپردازیم.
توجه داشته باشید که برای اجرای همه دستورات گفته شده در این مطلب، باید دسترسی روت (root) داشته باشید و قبل از هر دستور نیاز به نوشتن sudo است تا بتوانید به اطلاعات پورتها دسترسی پیدا کنید.
مقالات بیشتر، اطلاعات بیشتر:
مشاهده پورتهای باز در لینوکس با دستور netstat
Netstat یک ابزار مفید در سیستمهای لینوکس و دیگر سیستمعاملهاست که اطلاعات مربوط به اتصالات شبکه، پورتها و اطلاعات مربوط به روتینگ را نمایش میدهد. این ابزار اطلاعات مهمی درباره وضعیت شبکه سیستم، در اختیار شما قرار میدهد.
به منظور مشاهده پورتهای باز در لینوکس با استفاده از netstat میتوانید از دستورات زیر استفاده کنید:
netstat -tulpn
دستور با تمام اتصالات را با جزئیات نمایش میدهد. با استفاده از آپشنهایی که این دستور دارد میتوانید خروجی مورد نظر خود را مشاهده کنید:
- a (all)- نمایش تمام اتصالات فعال حتی اتصالات در حال شنود (LISTEN)
- t (TCP)- نمایش اطلاعات مربوط به پروتکل TCP
- u (UPD)- نمایش اطلاعات مربوط به پروتکل UDP
- l (LISTENING)- نمایش پورتهای در حال شنود (LISTEN)
- p (program)- نمایش برنامهها و PID مربوط به هر اتصال
- n (numeric)- نمایش اطلاعات به صورت عددی برای آدرسها و پورتها
- r (route)- نمایش جدول مسیریابی
با استفاده از دستور زیر میتوانید پورتهایی که در حال گوش دادن هستند را مشاهده کنید:
netstat -tulpn | grep LISTEN
نمایش اطلاعات یک پورت خاص:
netstat -tulpn | grep :
<port_number> باید با شماره پورت مورد نظر جایگزین شود.
نمایش اطلاعات مربوط به یک پورت خاص:
netstat -an | grep :
<port_number> باید با شماره پورت مورد نظر جایگزین شود.
نمایش اطلاعات پورت، با استفاده از سرویس در حال استفاده از آن:
netstat -tulpn | grep
به جای <program_name> باید نام برنامهای که از پورت مورد نظر استفاده میکند را بنویسید.
نمایش اطلاعات یک پروتکل در حال گوش دادن:
Netstat -tulpn | grep LISTEN | grep
<protocol> باید با udp یا tcp جایگزین شود.
با استفاده از grep میتوانید اطلاعاتی که میخواهید در نتایج جستجو به شما نمایش داده شود را فیلتر کنید.
دستورات بالا همه پروسهها، پورتها و اتصالات باز در سیستم را به شما نمایش میدهد، که با استفاده از آنها میتوانید وضعیت پورتهای باز در لینوکس را بررسی کنید.
به عنوان مثال، دستور زیر به شما نشان میدهد که پورت 443 که پورت پیشفرض https است، باز است یا نه.
netstat -tulpn | grep LISTEN | grep :80
مشاهده پورتهای باز در لینوکس با دستور ss
دستور ss ابزاری در لینوکس است که با استفاده از آن میتوان اطلاعات مربوط به اتصالات شبکه، پورتها و سوکتها را مشاهده کرد. دستور ss با استفاده از پارامترهای مختلفی که دارد، میتواند پورتهای باز در لینوکس را به شما نمایش دهد. در زیر توضیحات کامل برای مشاهده پورتهای باز در لینوکس با دستور ss آورده شده است.
ss [options][ FILTER ]
پارامترهای مهم در دستور ss:
- a (all)- نمایش تمام اتصالات فعال حتی اتصالاتی که در حال شنود (LISTEN) نیستند
- t (TCP)- نمایش اطلاعات مربوط به اتصالات TCP
- u (UPD)- نمایش اطلاعات مربوط به اتصالات UDP
- l (LISTENING)- نمایش پورتهای در حال شنود (LISTEN)
- n (numeric)- نمایش آدرسها و پورتها به صورت عددی
فیلترها در دستور ss :
- sport = PORTفیلتر بر اساس پورت مبدا
- dport = PORT فیلتر بر اساس پورت مقصد
- stat = STATE فیلتر بر اساس وضعیت اتصال (مثل ESTAB برای اتصالات برقرار)
- src = ADDRESS فیلتر بر اساس آدرس مبدا
- dst = ADDRESS فیلتر بر اساس آدرس مقصد
دستور زیر همه اتصالات TCP در حال گوش دادن را نشان میدهد.
ss -t -l
نمایش همه اتصالات UDP :
ss -u –a
نمایش اتصالات TCP با وضعیت ESTABLISHED :
ss -t state established
نمایش اتصالات TCP بر اساس شماره پورت مبدا :
ss -t sport = :80
در دستور بالا شماره پورت را 80 در نظر گرفته ایم.
نمایش اطلاعات پورت در حال شنود :
ss -t -l -p -n | grep :22
در دستور بالا شماره پورت، 22 در نظر گرفته شده.
مشاهده پورتهای باز در لینوکس با استفاده از دستور nmap
nmap یک ابزار محبوب و قدرتمند در لینوکس است که از آن برای اسکن شبکهها، تست نفوذ و بررسیهای امنیتی و تشخیص سرویسهای در حال اجرا روی سرورهاست. از nmap میتوانید برای مشاهده پورتهای باز در لینوکس استفاده کنید. در صورت نبودن nmap در سیستم، ابتدا آن را نصب کنید و پس از آن میتوانید با استفاده از دستورات زیر پورتهای باز در لینوکس را مشاهده کنید.
اسکن تمام پورتهای باز TCP:
sudo nmap -sT -p- localhost
دستور بالا تمام پورتهای TCP که در لوکال هاست باز است را اسکن میکند. گزینه sT- باعث میشود تا nmap یک اتصال TCP برقرار میکند و سپس به صورت فعال به سرور متصل میشود تا اطلاعاتی را در مورد پورتها و سرویسهایی که بر روی آنها اجرا میشوند، دریافت کند. گزینه -p- تمام پورتها (از 1 تا 65535) را اسکن میکند.
اسکن تمام پورتهای باز UDP:
sudo nmap -sU -p- localhost
nmap با استفاده از گزینه -sU یک اتصال UDP ایجاد میکند و به سرور متصل میشود و تمام پورتهای UDP که در لوکال هاست باز هستند را اسکن میکند.
با استفاده از دستور زیر میتوانید پورتهای باز هر دو پروتکل را مشاهده کنید:
sudo nmap -n -PN -sT -sU -p- localhost
گزینه n- باعث میشود که nmap برای نمایش نامها و دامنهها از انتقال داده به سرور DNS خودداری کند. PN- باعث میشود که nmap از ارسال پینگ خودداری کند.
بدون دیدگاه