اگر اطلاعات زیادی از پورت های باز در Ubuntu ندارید با مطالعه این عنوان می توانید به صورت تخصصی از ماهیت، نحوه عملکرد و دستورات یافتن پورت های باز بدست آورید. برای شروع باید اطلاع داشته باشید که پورت های باز درگاهی هستند که برخی از برنامه ها در آن اجرا شده و اگر برنامه ای در حال اجرا باشد توسط برخی از پورت ها گوش داده می شود (Listen). به این صورت ما می توانیم با آن برنامه از طریق پورت ارتباط برقرار کنیم. اما اگر برنامه ای روی پورت اجرا شود و ما سعی کنیم برنامه دیگری را روی پورت اجرا کنیم هسته خطا می دهد، این مورد یکی از دلایلی است که ما قبل از اجرای برنامه ها، پورت های باز را بررسی کنیم. برای انجام این کار در سرور لینوکس خطوط دستوری مختلفی وجود دارد که ما به معرفی آنها خواهیم پرداخت.
فهرست مطالب
ماهیت پورت های باز در لینوکس چیست؟
برخی از نرم افزارهای لینوکس وظیفه گوش دادن به اتصالات ورودی را به عهده دارند، به این صورت که یک وب سرور هر زمان که شخصی وارد یک وب سایت می شود، به درخواست های کاربر رسیدگی می کند. به عنوان کاربری که مدیریت اصلی سیستم را به عهده دارد، شما باید بدانید کدام پورت های سیستم شما برای ورود باز است، در غیر این صورت امکان دارد اتصالات خارجی بدون کنترل شما وارد سیستم شده و پهنای باند و منابع شما را مصرف کنند و یا یک حفره امنیتی در سیستم به وجود آید.
4 دستور اصلی در پیدا کردن پورت های باز در Ubuntu
دستورات زیر با توجه به نحوه عملکرد آن ها از طریق کارشناسان مربوطه بررسی و پس از نتیجه گیری کامل معرفی شده است، اما شما می توانید در صورت بروز ایرادات احتمالی با کارشناسان آذرسیس از طریق کامنت در ارتباط باشید:
1- یافتن پورت های باز با استفاده از دستور nmap
Network Mapper یا همان nmap، یک ابزار متن باز و رایگان است که برای اسکن پورت های سیستم استفاده می شود، همچنین برای یافتن آسیب پذیری ها و کشف شبکه ها نیز می توان از این ابزار استفاده کرد، در این بخش از nmap برای دریافت لیست پورت های باز استفاده می کنیم. اما توجه داشته باشید که باید کش اوبونتو را قبل از نصب nmap پاک کنید:
ubuntu@ubuntu:~$ sudo apt-get update -y
حال می توانید nmap را با استفاده از دستور زیر در ترمینال نصب کنید:
ubuntu@ubuntu:~$ sudo apt-get install nmap -y
پس از نصب nmap، نصب را بررسی نسخه nmap بررسی کنید:
ubuntu@ubuntu:~$ nmap --version
ابزار nmap گزینه های زیادی برای ارائه دارد که با استفاده از دستور زیر می توانید تمام این گزینه ها را مشاهده کنید:
ubuntu@ubuntu:~$ man nmap
برای اسکن Localhost نیز می توانید دستور زیر را به کار بگیرید:
ubuntu@ubuntu:~$ sudo nmap localhost
همان طور که در بالا هم می بینید تمام پورت های باز در Localhost فهرست می شوند، همچنین شما می توانید از nmap برای اسکن میزبان های راه دور استفاده کنید.
ubuntu@ubuntu:~$ sudo nmap
از ابزار nmap برای اسکن طیف وسیعی از آدرس های IP نیز استفاده کنید:
ubuntu@ubuntu:~$ sudo nmap
در نظر بگیرید که گاهاً شما می توانید پورت ها را روی هاست های تصادفی اسکن کنید، این پورت ها به صورت تصادفی و در Subnet های مختلف قرار دارند. بهترین راه حل این است که یک فایل میزبان با تمام نام هاست بنویسید که با درج فاصله یا خطوط و تب از هم جدا می شوند، این فایل را می توان با nmap به صورت زیر استفاده کرد:
ubuntu@ubuntu:~$ sudo nmap -iL hosts.txt
از nmap برای اسکن یک پورت واحد در سیستم، با تعیین پورت و با استفاده از flag -p به همراه nmap استفاده کنید:
ubuntu@ubuntu:~$ sudo nmap -p 80 localhost
سپس محدوده پورت ها را با استفاده از nmap روی یک سیستم اسکن کنید:
ubuntu@ubuntu:~$ sudo nmap -p 80-85 localhost
با دستور موجود در این قسمت نیز می توانید تمام پورت های باز سیستم خود را اسکن کنید:
ubuntu@ubuntu:~$ sudo nmap -p- localhost
حال برای دریافت لیستی از پورت های باز رایج در سیستم می توانید از دستور nmap با flag -f استفاده کنید:
ubuntu@ubuntu:~$ sudo nmap -F localhost
به ترتیب پورت های TCP را می توان با استفاده از nmap روی سیستم اسکن کرده و با افزودن flag -t همراه دستور nmap به کار برد و پورت های UDP را با flag -u با دستور nmap استفاده کرد:
ubuntu@ubuntu:~$ sudo nmap -sT localhost
ubuntu@ubuntu:~$ sudo nmap -sU localhost
2- فهرست کردن پورت های باز با استفاده از دستور lsof
دستور lsof اختصاری برای عبارت “List Open Files” می باشد و برای بدست آوردن اطلاعات مربوط به فایل های باز استفاده شده توسط فرآیندهای مختلف در یونکس و لینوکس استفاده می شود. در اکثر توزیع های لینوکس این ابزار از پیش نصب شده است و ما می توانیم نصب lsof را فقط با بررسی نسخه آن تایید کنیم:
ubuntu@ubuntu:~$ lsof -v
اگر نسخه برای شما نشان داده نشد یعنی به طور پیش فرض نصب نشده و ما می توانیم آن را با استفاده از دستور زیر در ترمینال نصب کنیم:
ubuntu@ubuntu:~$ sudo apt-get update -y ubuntu@ubuntu:~$ sudo apt-get install lsof
می توانید از دستور lsof به همراه گزینه های دیگر استفاده کنید و لیست تمام گزینه های موجود را با استفاده از دستور زیر در ترمینال نمایش دهید:
ubuntu@ubuntu:~$ man lsof
در این قسمت از دستور lsof برای نمایش پورت های یک سیستم به روش های مختلف استفاده کنید:
ubuntu@ubuntu:~$ sudo lsof -i
همان طور که می بینید تصویر بالا تمام پورت های باز را به نمایش گذاشته است ولی کارکرد lsof به این مورد محدود نمی شود و می توانید از این دستور برای نمایش سوکت های باز نیز استفاده کنید:
ubuntu@ubuntu:~$ sudo lsof -n -P | grep LISTEN
می توانورت های فیلتر شده را براساس یک پروتکل با استفاده از lsof لیست کرده و سپس دستور زیر را اجرا کنید تا تمام اتصالات TCP فهرست شود:
ubuntu@ubuntu:~$ sudo lsof -i tcp
ubuntu@ubuntu:~$ sudo lsof -i udp
3- فهرست کردن پورت های باز با استفاده از ابزار Netstat
برنامه Netstat که به عنوان آمار شبکه نیز شناخته می شود، در واقع یک ابزار خط فرمان است که برای نمایش اطلاعات دقیق شبکه ها به کار گرفته می شود. در ضمن می تواند اتصالات TCP ورودی و خروجی ها، جدول های مسیریابی، رابط های شبکه و غیره را نمایش دهد ولی ما در این بخش به توانایی آن در لیست کردن پورت های باز در یک سیستم اشاره خواهیم کرد. در ابتدا باید این ابزار را در سیستم خود نصب کنید که برای این کار می توانید از دستور زیر استفاده کنید:
ubuntu@ubuntu:~$ sudo apt-get update -y ubuntu@ubuntu:~$ sudo apt-get install net-tools -y
پس از اجرای دستور بالا، فرآیند نصب را با بررسی نسخه Netstat در سیستم را بررسی کنید:
ubuntu@ubuntu:~$ netstat --version
اگر نسخه Net-tool نمایش داده شود نصب به درستی انجام شده، در غیر این صورت دستورات نصب را باید دوباره اجرا کنید، برای دریافت نمای کلی از تمام گزینه های موجود، به همراه دستور Netstat دستور زیر را اجرا کنید:
ubuntu@ubuntu:~$ man netstat
برای بدست آوردن تمام پورت های باز با ابزار Netstat در اوبونتو می توانید دستور زیر را اجرا کنید:
ubuntu@ubuntu:~$ sudo netstat -l
می توان از دستور Netstat برای فیلتر کردن عمل گوش دادن به پورت های TCP و UDP به وسیله درج یک Flag در دستور زیر استفاده کرد:
ubuntu@ubuntu:~$ sudo nmap 93.184.216.34
شما می توانید از ابزار nmap برای اسکن طیف وسیعی از آدرس های IP نیز استفاده کنید:
ubuntu@ubuntu:~$ sudo nmap 192.168.1.1-10
همچنین گاهاً شما می توانید پورت ها را روی هاست های تصادفی اسکن کنید، این پورت ها به صورت تصادفی و در Subnet های مختلفی قرار خواهند داشت. بهترین راه حل این است که یک فایل میزبان با تمام نام هاست بنویسید که با درج فاصله یا خطوط و تب از هم جدا می شوند، این فایل را می توان با nmap به صورت زیر استفاده کرد:
ubuntu@ubuntu:~$ sudo nmap -iL hosts.txt
از nmap برای اسکن یک پورت واحد در سیستم، با تعیین پورت و با استفاده از flag -p به همراه nmap استفاده کنید:
ubuntu@ubuntu:~$ sudo nmap -p 80 localhost
محدوده پورت ها را با nmap روی یک سیستم اسکن کنید:
ubuntu@ubuntu:~$ sudo nmap -p 80-85 localhost
با دستور موجود در این قسمت می توانید تمام پورت های سیستم را اسکن کنید:
ubuntu@ubuntu:~$ sudo nmap -p- localhost
حال برای دریافت لیستی از پورت های باز رایج در سیستم خود می توانید از دستور nmap با flag -f استفاده کنید:
ubuntu@ubuntu:~$ sudo nmap -F localhost
به ترتیب پورت های TCP را می توان با استفاده از nmap روی سیستم اسکن کرده و با افزودن flag -t همراه دستور nmap به کار برد و به طور مشابه، پورت های UDP را با flag -u با دستور nmap استفاده کرد:
ubuntu@ubuntu:~$ sudo nmap -sT localhost
ubuntu@ubuntu:~$ sudo nmap -sU localhost
4- فهرست کردن پورت های باز با استفاده از دستور SS
به طور معمول دستور SS برای نمایش اطلاعات مربوط به سوکت ها در سیستم لینوکس استفاده می شود، این ابزار نسبت به Netstat می تواند اطلاعات دقیق تری درباره سوکت ها ارائه بدهد. دستور SS در اکثر توزیع های لینوکس از پیش نصب شده است، بنابراین نیازی به نصب آن نیست , با افزودن man در دستور SS می توانید فهرستی از تمام گزینه ها را دریافت کرد:
ubuntu@ubuntu:~$ man ss
برای بدست آوردن لیستی از تمام اتصالات بدون در نظر گرفتن وضعیت آنها، می توانید از دستور SS بدون Flag استفاده کنید:
ubuntu@ubuntu:~$ sudo ss
سپس برای اینکه لیست تمام پورت ها (listening ports) را بدست آورید از دستور ss با flag -l استفاده کنید، این Flag فقط برای Listening Ports کاربرد دارد:
ubuntu@ubuntu:~$ sudo ss -l
برای لیست کردن تمام پورت های Listening TCP از دستور SS همراه با Flag -t و در کنار آن -l استفاده کنید:
ubuntu@ubuntu:~$ sudo ss -lt
به همان صورت می توانید از این دستور برای پورت های Listening UDP نیز استفاده کنید و Flag های -u و -l را نیز به همراه آن استفاده کنید:
ubuntu@ubuntu:~$ sudo ss -lu
شما می توانید دستور SS را برای به دست آوردن لیست تمام اتصالات با منبع یا پورت مقصد استفاده کنید، در مثال زیر تمام اتصالات با مقصد یا پورت مبدا 22 دریافت می شود و در نهایت اگر با استفاده از SSH به یک سیستم راه دور متصل شده باشید، لیستی از تمام اتصالات ورودی و خروجی را دریافت خواهید کرد:
ubuntu@ubuntu:~$ sudo ss -at ‘( dport = :22 or sport = :22 )’
نکته مهم! همان طور که میبینید سرورهای لینوکس غنی از ابزارهای مورد استفاده برای تشخیص شبکه ها می باشد، این سرورها امروزه طرفداران زیادی یافته اند. سایت آذرسیس در این راستا به ارائه سرور مجازی لینوکس پرداخته و شما کاربران عزیز می توانید با ارسال تیکت برای خرید و نصب از تمام خدمات و سرورهای ارائه شده در این سایت بهره مند شوید.
سخن آخر
اطلاع از پورت های باز در سیستم برای افرادی مانند مدیران سیستم، متخصصان امنیت و سایر افرادی که با فناوری اطلاعات سرو کار دارند بسیار مهم است. در این میان سیستم لینوکس ابزارهای زیادی را ارائه می دهد که می تواند برای فعالیت های متعدد در شبکه مفید باشد، در این مقاله ما به بررسی 4 دستور مهم یعنی ss ,lsof ,netstat و nmap برای یافتن پورت های باز شبکه در اوبونتو پرداختیم. با مطالعه این مقاله قادر خواهید بود تمام پورت های باز شنیداری سیستم خود را فهرست کنید، نظرات، انتقادات و پیشنهادات خود را برای ما ارسال کنید.