بررسی پورتهای باز در لینوکس
اگر مدیر شبکه لینوکس هستید، برای شما بسیار مهم است که در مورد پورتها و نحوه مدیریت سرویسها در شبکه با کار کردن با آنها اطلاعاتی داشته باشید. حتی کاربران عادی لینوکس ممکن است نیاز به اجرای این وظایف داشته باشند. تصور کنید میخواهید از راه دور به یک پورت دسترسی داشته باشید. اگر نمیدانید باز است یا نه، چگونه این کار را انجام میدهید؟ در این مطلب، در مورد لیست کردن پورتهای لینوکس و تمام راههای ممکن برای بررسی پورتهای باز در لینوکس صحبت خواهیم کرد.
شاید قبلا در مورد پورتها شنیده باشید. وقتی صحبت از شبکهها و اتصالات به میان میآید، کلمه پورت همراه با یک عدد برای توضیح نحوه تبادل دادهها توسط بخشهای مختلف یک شبکه استفاده میشود. اما پورت دقیقا چیست؟
شبکهای از کامپیوترها را تصور کنید که به طور فعال با یکدیگر در ارتباط هستند. این ارتباطات تمام اتصالات شبکه را تشکیل میدهند. در هر طرف یک اتصال واحد، چیزی به نام سوکت (socket) وجود دارد. یک سوکت دو بخش دارد: یک آدرس IP و یک شماره پورت. پورت فضای تعیین شدهای است که مقصد ترافیک اینترنت است. هر پورت را میتوان با پروتکلهای انتقال مختلف مانند UDP، TCP، SCTP و DCCP استفاده کرد. شمارهای که به یک پورت اختصاص داده میشود فقط یک عدد تصادفی نیست بلکه درباره موارد استفاده پورت چیزهای زیادی میگوید. این عدد میتواند بین 0 تا 65535 باشد.
- پورتهایی از 0 تا 1023: به نام پورتهای سیستم (system ports ) یا well-known ports است.
- پورتهای بین 1024 تا 49151: پورت های ثبت شده (registered ports)
- و پورتهایی از 49152 تا 65535: پورتهای داینامیک (dynamic ports)
در این مطلب ما روی پورتهای شناخته شده (well-known ports) تمرکز خواهیم کرد زیرا آنها کاربرد عمومیتری دارند. در ادامه جدولی از مهمترین پورتهای شناخته شده با اطلاعات تکمیلی در مورد پروتکلهای ترنسپورت آنها آورده شده است.
پورتهای داینامیک نیز در ارتباطات روزانه شبکه مهم هستند. یک کلاینت از این پورتها برای اتصال به سرور استفاده میکند. پورت دریافت سرور میتواند شناخته شده یا ثبت شده باشد. به عنوان مثال، هنگامی که شما برای یک عکس جستجو میکنید، مرورگر شما اتصال را با استفاده از یک پورت داینامیک باز میکند و به پورت 80 در وب سرور میرسد.
پردازش دادهها با استفاده از پروتکل UDP یا TCP. از آنجایی که ممکن است یک فرآیند از هر دو پروتکل استفاده کند، فرآیندها می توانند شماره پورتهای مختلفی را برای هر پروتکل مستقر کنند. هر پورت معین را میتوان تنها توسط یک فرآیند در هر زمان معین استفاده کرد. بنابراین، هنگامی که یک پورت توسط یک فرآیند اشغال میشود، تا زمانی که اولین فرآیند به پایان برسد نمیتواند توسط یک پورت دیگر استفاده شود.
چرا باید با پورتها کار کنیم؟
اکنون که اصول اولیه پورتها را میدانید، ممکن است بخواهید بدانید که هدف از کار کردن با آنها چیست. آیا فقط امنیت است؟ کار کردن با پورتها چندین هدف مهم را در مدیریت شبکه و همچنین توسعه برنامه انجام میدهد:
- امنیت شبکه
کار کردن با پورتها به مدیران شبکه اجازه میدهد تا اقدامات امنیتی را برای محافظت از سیستم خود اجرا کنند. آنها میتوانند دسترسی به پورتهای خاص را ببندند یا محدود کنند تا دسترسی غیرمجاز را متوقف کنند یا تهدیدات احتمالی را کاهش دهند. کار با پورت به مدیران این فرصت را میدهد تا قوانین فایروال را تعریف و لیستهای کنترل دسترسی را پیکربندی و انتقال پورت (port forwarding) را برای افزایش امنیت کلی شبکه خود تنظیم کنند.
- توسعه برنامه
توسعه دهندگان ممکن است نیاز به کار با پورتها در هنگام ایجاد برنامههای تحت شبکه داشته باشند. به عنوان مثال، هنگامی که آنها یک اپلیکیشن client-server را توسعه میدهند، برنامه سرور به یک پورت خاص برای اتصالات ورودی از برنامههای کلاینت گوش میدهد. تغییر پورتها به توسعه دهندگان این امکان را میدهد که کانالهای ارتباطی ایجاد ، پروتکلها را پیاده سازی و از تبادل اطلاعات مناسب بینکلاینت و سرور اطمینان حاصل کنند.
خرید وی پی اس در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
روشهای بررسی پورتهای باز در لینوکس
استفاده از ابزارهای خط فرمان برای بررسی پور تهای باز در لینوکس
رایج ترین روش برای بررسی پورتهای باز در لینوکس، استفاده از ابزارهای خط فرمان است. ابزارهای مختلفی برای این منظور در دسترس هستند، از جمله netstat، nmap و ss که در ادامه آنها را بررسی خواهیم کرد:
استفاده از netstat برای بررسی پورت باز
این ابزار اتصالات فعال شبکه، پورتهای فعال (listening ports) و آمارهای مختلف شبکه را نمایش میدهد. برای پرسیدن پورتهای باز لینوکس، میتوانید از گزینه -l برای لیست پورتهای فعال (listening ports) یا -a برای نمایش همه سوکتها، از جمله اتصالات برقرار شده استفاده کنید. خروجی اطلاعاتی در مورد شماره پورت، پروتکل، آدرس لوکال، آدرس خارجی و وضعیت اتصال ارائه میدهد. بنابراین، netstat یک دستور عالی برای بررسی پورتهای استفاده شده لینوکس است. اما قبل از استفاده از آن، باید بسته netstat را نصب کنید. برای نصب بسته netstat از خط زیر استفاده کنید:
apt install netstat
از دستور netstat -l برای بررسی میزان استفاده از پورت لینوکس استفاده کنید:
در بخش اول این اسکرین شات، می توانید شش ستون را مشاهده کنید. در ادامه چیزی است که هر ستون به ما میگوید:
- Proto: این ستون پروتکلی را نشان میدهد که برای اتصال استفاده میشود، مانند TCP (برای TCP/IP) یا UDP (برای UDP/IP).
- Recv-Q: اندازه صف دریافت، که نشان دهنده مقدار دادهای است که در انتظار دریافت توسط برنامه لوکال از شبکه است.
- Send-Q: اندازه صف ارسال، که نشان دهنده مقدار دادهای است که در انتظار ارسال از برنامه لوکال به شبکه است.
- آدرس لوکال: این ستون آدرس IP و شماره پورت دستگاه لوکال که کانکشن به آن متصل است را نشان میدهد. در مثال ما، هر دو آدرس IPv4 و IPv6 را شامل میشود.
- آدرس خارجی: آدرس IP و شماره پورت دستگاه راه دور یا نقطه پایانی که دستگاه ما در حال برقراری ارتباط فعال با آن است.
- State: وضعیت اتصال که وضعیت فعلی آن را نشان میدهد. دو حالت مهم LISTEN و ESTABLISHED هستند. مورد اول نشان میدهد که پورت به طور فعال به اتصالات ورودی گوش میدهد. مورد دوم نشان میدهد که یک اتصال فعال برقرار شده است.
تجزیه و تحلیل خروجی netstat و درک معنای هر ستون به شما بینش بیشتری در مورد اتصالات شبکه فعلی و وضعیت پورتهای باز در سیستم لینوکس میدهد.
استفاده از nmap برای بررسی پورتهای باز در لینوکس
nmap یک ابزار قدرتمند پورت اسکن است که امکان میدهد طیف وسیعی از آدرسهای IP یا هاستهای خاص را برای پورتهای باز اسکن کنید. با تعیین IP یا میزبان مورد نظر و گزینههای اسکن مورد نظر، مانند -p برای تعیین پورتها یا -F برای اسکن سریعتر، میتوانید اطلاعات دقیقی در مورد پورتهای باز و سرویسهای در حال اجرا بر روی آنها جمعآوری کنید. برای نصب بستههای nmap میتوانید از کد زیر استفاده کنید:
apt install nmap
این خط کد میتواند منبع خوبی برای دریافت خلاصهای از گزینههای nmap باشد:
nmap -h
شما به سادگی میتوانید از nmap با آدرس IP یا نام میزبان سیستمی که میخواهید اسکن کنید استفاده نمائید. از این خط کد استفاده کنید این کار را انجام دهید:
nmap [IP address]
همچنین میتوانید از دستور nmap برای دریافت اطلاعات در مورد یک پورت خاص استفاده کنید و بررسی نمائید که آیا یک پورت لینوکس باز است یا خیر. به عنوان مثال، این خط کد پورتهای 80 و 443 را اسکن میکند:
nmap -p 80,443 [IP address]
استفاده از ss برای بررسی پورتهای باز در لینوکس
دستور ss مخفف socket statistics است. ss بسیار شبیه به netstat است. فقط گزینههای فیلترینگ و نمایش پیشرفتهتری را ارائه میدهد. میتوانید از آن برای نمایش پورتهای باز لینوکس، listening sockets و established connections استفاده کنید. با استفاده از فلگهای مختلف، مانند -l برای listening sockets یا -n برای نمایش شماره پورت به جای نام سرویس، میتوانید اطلاعات خاصی در مورد پورتهای باز به دست آورید.
به عنوان مثال، میتوانید تمام پورتهای باز را فیلتر کنید و فقط اتصالات TCP ایجاد شده را ببینید:
ss -t -a
با استفاده از این دستور میتوانید اطلاعات یکسانی را برای همه اتصالات UDP ایجاد شده به دست آورید:
ss -u -p
و حتی اگر میخواهید ببینید آیا اتصال TCP در یک پورت خاص وجود دارد یا خیر، میتوانید از دستور ss استفاده کنید. به عنوان مثال، کد زیر اتصالات TCP ایجاد شده به پورت 80 را بررسی میکند:
ss -t -a 'sport = :80'
ابزارهای گرافیکی
علاوه بر استفاده از خط فرمان، کاربران لینوکس روشهای جایگزینی برای بررسی پورتهای باز دارند، بهویژه هنگام کار در محیط دسکتاپ. به عنوان مثال، در محیط دسکتاپ گنوم، می توان از ابزارهای طراحی شده برای مانیتور بر فعالیتهای سیستم استفاده کرد. یک مثال قابل توجه برنامه GNOME System Monitor است. این ابزار بینشهایی را در مورد فرآیندهای در حال اجرا در سیستم لینوکس شما ارائه میدهد، از جمله جزئیات در مورد پورتهایی که این فرآیندها استفاده میکنندکه میتواند راهی برای بررسی پورتهای باز در لینوکس باشد. علاوه بر این، برای یک رویکرد گرافیکیتر، برنامههایی مانند Zenmap در دسترس هستند. Zenmap نه تنها برای بررسی پورتهای باز در لینوکس عالی است، بلکه مجموعهای از ابزارهای اسکن شبکه را نیز ارائه میدهد که آن را به ابزاری جامع برای کاربرانی که رابطهای گرافیکی را ترجیح میدهند تبدیل میکند.
اگرچه استفاده از ابزارهای گرافیکی سادهتر است و خروجی بصری بیشتری ارائه میدهد، ابزار خط فرمان بسیار انعطاف پذیرتر است و گزینههای بیشتری دارد. بنابراین، بسته به نوع اسکن شبکه، وظیفه ای که دارید یا تخصص فنی خود، میتوانید ابزاری را انتخاب کنید که متناسب با نیاز شما باشد. آنچه در اینجا مهم است این است که به طور مرتب پورتهای باز در لینوکس را بررسی کنید تا مطمئن شوید هیچ تهدید امنیتی پشت در وجود ندارد.
خلاصه
در پایان، این واقعیت که شما به طور مرتب پورتهای باز در لینوکس را بررسی میکنید، یک جنبه مهم مدیریت و امنیت شبکه است. درک وضعیت پورتهای باز به شما امکان میدهد از عملکرد مناسب سرویسها اطمینان حاصل کنید، آسیب پذیریهای احتمالی را شناسایی و یک محیط شبکه ایمن را حفظ نمائید. در این مطلب ، روشهای مختلفی را برای بررسی پورتهای باز با استفاده از ابزارهای خط فرمان مانند netstat، nmap و ss بررسی کردیم.