مشاهده پورتهای باز در لینوکس یکی از مهمترین وظایف مدیران سیستم ها و شبکه ها است. پورتها، کانالهای ارتباطی بین دستگاهها در شبکه و خارج از شبکه هستند که برای انتقال دادهها و ارتباط بین سرویسها استفاده میشوند. در این مقاله یاد می گیریم که چگونه لیست تمام پورت های باز در لینوکس را مشاهده کنیم. پورت ها اساساً اعداد ۱۶ بیتی (۰ تا ۶۵۵۳۵) هستند. پورت ها را می توان به دروازه ورود/خروج نیز تشبیه کرد. برخی از این دروازه ها بسته و برخی باز هستند. ما قصد داریم دروازه های باز را مشاهده و در صورت نیاز، اقدامی از جمله بستن آنها انجام بدهیم.
دسته بندی پورت ها
پورت ها بر اساس محدوده شماره پورت ها به دسته های زیر تقسیم می شوند :
۰ تا ۱۰۲۳ : به این پورت ها “پورت های شناخته شده” می گویند. این پورت ها توسط سازمان iana اختصاص داده شده است و از این پورت ها در سرویس های مشهور و مهم استفاده می شود.
۱۰۲۴ تا ۴۹۱۵۱ : به این پورت ها “پورت های ثبت شده” می گویند. این پورت ها برای فرآیندهای کاربر معمولی یا برنامه هایی که توسط
کاربران عادی اجرا می شوند در دسترس هستند.
۴۹۱۵۲ تا ۶۵۵۳۵ : به این پورت ها “پورت های پویا” می گویند. این پورت ها محدوده پورت های خصوصی برای ارائه خدمات سفارشی توسط کاربران می باشند.
مشاهده پورت های باز در لینوکس
برای مشاهده تمام پورت های سیستم، چه باز و چه بسته می توانید از کامند زیر استفاده کنید. این کامند می تواند به شما کمک کند تا پورت های مهم را شناخته و آنها را باز نگه داشته و دیگر پورت ها را ببندید. لازم به ذکر است این لیست، یک لیست کامل از پورت های موجود می باشد و لیستی از پورت های باز یا بسته نمی باشد. این لیست از IANA دریافت و با آن آپدیت می شود.
cat /etc/services
برای اینکه چک کنید یک پورت به چه سرویسی مرتبط است و آیا استفاده می شود یا آزاد است، از کامند زیر استفاده کنید و به جای ۸۰/tcp پورت و پروتکل مدنظر خود را وارد کنید.
grep -w '80/tcp' /etc/services
برای مشاهده و بررسی پورت های باز در لینوکس، ۵ دستور مشهور وجود دارد که در زیر لیست شده اند.
- ss : برای نمایش پورت های باز TCP و UDP
- lsof : برای لیست کردن پورت های باز لینوکس
- netstat : برای نمایش لیست تمام پورت ها در لینوکس
- nmap : برای نمایش پورت های UDP و TCP
- netcat : برای بررسی پورت های باز لینوکس
کامند ss
دستور ss مخفف “Socket statistics” است و ابزاری است که اطلاعات دقیقی در مورد سوکت ها و اتصالات شبکه ارائه می دهد. معمولاً برای تشخیص و عیبیابی مشکلات شبکه، مانند شناسایی پورتهای باز، مشاهده اتصالات برقرار شده، و نظارت بر ترافیک شبکه استفاده میشود. وقتی هیچ پارامتری استفاده و پاس داده نمی شود، ss لیستی از سوکت های باز (مانند TCP/UNIX/UDP) را که اتصال برقرار کرده اند نمایش می دهد. این لیست صرفا پورت هایی که را گوش نمی دهند و منتظر درخواستی نیستند را نمایش می دهد. توضیح آن کمی سخت است و در اصطلاح فنی به آن پورت های non-listening می گویند.
ss
اگر میخواهید خروجی شما سازماندهی شود و اطلاعات مرتبطتر و مختصرتری ارائه کند، باید دستور ss را با پرچم -ltn اجرا کنید. در صورتی که می خواهید بدانید هر یک از پورت های باز متعلق به کدام فرایند و پردازش است، گزینه p را نیز به انتهای پرچم -ltn اضافه کنید.
ss -ltn
ss -ltnp
از دیگر آپشن هایی که می توانید به کامند ss پاس بدهید، می توان موارد زیر را نام برد.
- گزینه -l : نمایش پورت های listening
- گزینه -lt : نمایش پورت های TCP listening
- گزینه -tul : نمایش لیستی از پورت های listening TCP و UDP
- گزینه -n : مشاهد پورت های listening سرویسی مشخص
کامند lsof
کامند lsof که مخفف list open files میباشد برای مشاهده فایل های باز استفاده می شود. اما از آنجایی که در لینوکس، همه چیز فایل است میتوان اطلاعات مفید دیگری از جمله پورت های باز و در حال استفاده را نیز با این دستور دریافت کرد. برای مشاهده پورت های باز با استفاده از کامند lsof نیاز است پارامتر هایی را همانند زیر وارد کنید.
lsof -i -P -n
پارامتر -i می گوید فایل ها و سوکت های مرتبط با اینترنت را نمایش بده. پارامتر -P به کامند lsof می گوید بجای نام سرویس ها، پورت های مورد استفاده را نمایش بدهد. در نهایت آپشن -n به جای هاست نیم ها، آیپی ها را نمایش میدهد که در اینجا آپشن خوبی میباشد.
کامند netstat
Netstat ابزاری است که اطلاعاتی در مورد زیرسیستم شبکه لینوکس نمایش می دهد. ما از netstat برای لیست کردن تمام پورت های باز سیستم استفاده می کنیم. از دستور زیر برای لیست کردن تمام پورت های باز سیستم استفاده کنید. این دستور بخشی از پکیج net-tools است. اگر این پکیچ بصورت پیشفرض در سیستم لینوکسی شما نصب نبود، می توانید آن را با کامند زیر نصب کنید.
sudo apt install net-tools
دستور netstat پورت های باز را به صورت لیست وار نمایش می دهد. دستور netstat برای لیست کردن پورت های باز به شرح زیر است :
netstat -tulpn
برای مشاهده پورت های listening نیز از کامند زیر استفاده کنید.
netstat -tulpn | grep LISTEN
گزینه های دیگر برای اهداف مختلف را می توان با دستور netstat اجرا کرد، از جمله موارد زیر :
- -t : نمایش تمام پورت های TCP
- -u : نمایش تمام پورت های UDP
- -I : نمایش سوکت های listening سرور
- -P : نمایش PID و نام برنامه های سوکت ها
- -n : نمایش آیپی ها به جای هاست نیم
کامند nmap
Nmap یک برنامه اسکن و ممیزی امنیت شبکه منبع باز است. با استفاده از ابزار nmap می توانید در شبکه جستجو کرده و پورت های باز را در ماشین های لوکال و راه دور شناسایی کنید. برای استفاده از دستور nmap برای جستجوی پورت های باز در رایانه محلی، می توانید آدرس IP سیستم خود را به عنوان سیستم راه دور یا همان ریموت وارد کنید یا سیستم خود را به عنوان Localhost مشخص کنید. لازم به ذکر است nmap بصورت پیشفرض بر روی توزیع های لینوکسی نصب نیست و میبایستی ابتدا آن را بر روی سیستم خود نصب کنید. با کامند زیر می توانید در دبیان و اوبونتو nmap را نصب کنید.
sudo apt install nmap
برای مشاهده پورت های باز لینوکس خود، کامند زیر را وارد کنید. پارامتر sT برای اسکن پورتهای TCP و پارامتر sU برای اسکن پورتهای UDP و p جهت اسکن تمام پورتها (۰ – ۶۵۵۳۵) استفاده می شود. اگر پارامتر p وارد نشود، nmap صرفا ۱۰۰۰ پورت را چک میکند.
sudo nmap -sT -sU -p- localhost
کامند netcat
netcat یک ابزار خط فرمان است که به شما امکان خواندن/نوشتن از/به اتصالات TCP/UDP را می دهد. توجه داشته باشید که این تنها یکی از ویژگی های netcat است. می توانید با استفاده از دستور man netcat صفحه کتابچه راهنمای آن را بررسی کنید تا تمام ویژگی های آن و نحوه استفاده از آنها را بررسی کنید. برای اسکن تمام پورت ها و مشاهده پورت های باز از طریق netcat ، کامند زیر را وارد بفرمایید.
nc -z -v 127.0.0.1 1-65535
اعداد ۱-۶۵۵۳۵ رنج جست و جوی پورت ها می باشد. وقتی این عدد پاس داده شود، یعنی تمام پورت ها اسکن شود. اگر این عدد ۱-۱۰۰ باشد، netcat پورت های یک تا صد را اسکن خواهد کرد. اگر پورت خاصی را مد نظر دارید از کامند زیر استفاده کنید.
nc –z -v 127.0.0.1 1234
آپشن -z فقط پورت های listening را اسکن میکند، بدون اینکه داده ای برای آنها ارسال کند. آپشن -v نیز توضیحات بیشتری نمایش می دهد.
سخن آخر
پیدا کردن پورت های باز یکی از مهم ترین وظایف یک ادمین سیستم لینوکس است و از لحاظ امنیتی نقش بسیار مهمی دارد. ۵ دستوری که در این مقاله بررسی کردیم، به خوبی از عهده شناسایی پورت های باز برمی آیند و از هر کدام که خواستید می توانید استفاده کنید. مهم این است که با شناسایی درست و به موقع، پورت های باز بدون استفاده را ببندید و با قوانین درست فایروال، امنیت پورت های باز را مطابق با نیاز خود پیکربندی کنید. با خرید سرور مجازی لینوکس از زویپ سرور، مدیریت پورت ها و بستن پورت های اضافی بر عهده کارشناسان زویپ سرور خواهد بود.