با بررسی منظم پورت های باز با این دستورات لینوکس، شبکه خود را از درون به بیرون بشناسید.
پورت های شبکه باز ساده ترین نقاط ورود به شبکه شما هستند. گاهی اوقات، ممکن است سرویسهای ناخواستهای در پورتهایی اجرا شوند که به صورت خارجی از اینترنت قابل مشاهده هستند. در صورتی که این سرویسها آسیبپذیر باشند، شبکه شما در معرض تهدید دائمی حمله قرار میگیرد، زیرا هر روز کل اینترنت برای یافتن سرویسهای آسیبپذیر در پورتهای باز اسکن میشود.
بیاموزید که چگونه می توانید پورت های باز را در سیستم های لینوکس خود اسکن و مشاهده کنید تا بتوانید از شبکه خود در برابر تهدیدات دفاع کنید.
پورت های شبکه چیست؟
پورت های شبکه نقاط دسترسی منطقی سیستم شما هستند که می توانند به عنوان کانالی برای میزبانی چندین سرویس استفاده شوند. یک پورت با یک عدد صحیح 16 بیتی نشان داده می شود، بنابراین، بالاترین عدد پورت 65535 است.
شما می توانید به پورت هایی مانند پنجره ها و درهای یک خانه فکر کنید – اساساً همه نقاط ورودی مختلف به یک خانه یا یک کامپیوتر. پورت ها سه نوع هستند: پورت های سیستم (1-1023)، پورت های ثبت شده (1024-49151)، و پورت های زودگذر یا پویا (49152-65535).
وقتی برنامهای را راهاندازی میکنید که نیاز به اتصال به اینترنت دارد، از پورتهای پویا برای انتقال و دریافت دادهها از طریق شبکه استفاده میکند. با این حال، هنگامی که یک وب سرور یا یک سرور SSH را راه اندازی می کنید، معمولاً به پورت های سیستم یا پورت های ثبت شده متصل می شود.
برای سرورهای وب سرویس دهنده HTTP، پورت سیستم پیش فرض 80 و برای SSH 22 است. این مقررات مانند محدوده پورت ها توسط Internet Assigned Numbers Authority (IANA) ایجاد شده است. می توانید از طریق RFC در مورد پورت ها بروید تا لیست کاملی از همه پورت ها و عملکرد آنها را دریافت کنید.
مهم است که رایج ترین پورت های آسیب پذیر را بشناسید تا بتوانید از بسته بودن یا محافظت آنها اطمینان حاصل کنید.
1. Open Ports With netstat را بررسی کنید
netstat یک ابزار محبوب است که می توانید از آن برای مشاهده آمار شبکه سیستم لینوکس خود استفاده کنید. این بخشی از بسته net-tools است.
بسته net-tools اکنون به دلیل عدم نگهداری مناسب توسط توسعه دهنده مستهلک شده است. همچنین این دلیلی است که ممکن است هنگام اجرای دستور محبوب ifconfig در لینوکس با خطای “ifconfig: command not found” مواجه شوید.
بنابراین در سیستم های مدرن، ممکن است مجبور شوید ابتدا بسته net-tools را نصب کنید و سپس بتوانید دستور netstat را اجرا کنید. در اینجا نحوه بررسی پورت های باز با netstat آورده شده است:
netstat -tuln
توضیح دستور:
- -t پورت های TCP را نشان می دهد.
- -u پورت های UDP را نشان می دهد.
- -l پورت های گوش دادن را نشان می دهد. اگر میخواهید همه پورتها را بدون در نظر گرفتن وضعیت آنها ببینید، آن را با علامت جایگزین کنید.
- -n مقدار عددی پورت ها را به جای حل شدن به نام سرویس ها نشان می دهد. به عنوان مثال، پورت 22 را به جای SSH نشان دهید، یعنی سرویسی که روی پورت اجرا می شود.
2. Open Ports With ss را بررسی کنید
ss معادل مدرن ابزار netstat است. این را در تمام توزیعهای مدرن لینوکس از پیش نصب شده خواهید یافت. نحو بررسی پورت های باز با ss مشابه netstat است.
در اینجا نحوه بررسی پورت های باز با ss آمده است:
ss -tuln
توضیح دستور:
- -t پورت های TCP را نشان می دهد.
- -u پورت های UDP را نشان می دهد.
- -l پورت های گوش دادن را نشان می دهد. اگر میخواهید همه پورتها را بدون در نظر گرفتن وضعیت آنها ببینید، آن را با علامت جایگزین کنید.
- -n مقدار عددی پورت ها را به جای حل شدن به نام سرویس ها نشان می دهد. به عنوان مثال، به جای FTP، یعنی سرویسی که روی پورت اجرا می شود، پورت 21 را نشان دهید.
3. Open Ports With Nmap را بررسی کنید
Nmap یکی از محبوب ترین ابزارها در امنیت سایبری و شبکه است. وقتی صحبت از تست نفوذ امنیت شبکه به میان می آید، این یک نام اصلی است. مورد استفاده اصلی آن اسکن پورت است، بنابراین نه تنها اطلاعاتی در مورد پورت های باز شده در سیستم خود دریافت خواهید کرد، بلکه در صورت آسیب پذیر بودن و سوء استفاده از آنها نیز اطلاعاتی دریافت خواهید کرد.
علاوه بر این، اگر میخواهید پورتهای باز را در یک سیستم راه دور با نصب IDS/IPS و فایروالها بررسی کنید، نگران نباشید زیرا Nmap میتواند فایروالها و IDS/IPS را با سوئیچهای مناسب دور بزند.
این راهنمای جامع در Nmap را برای مبتدیان بررسی کنید تا ویژگیهای متنوع Nmap و نحوه استفاده از آنها را بررسی کنند. اگرچه میتوانید، اما توصیه نمیشود که فایروالها را امتحان کنید و دور بزنید زیرا کاملاً قابل اعتماد نیست، بنابراین بهتر است SSH را به سرور راه دور بزنید و سپس Nmap را به صورت محلی روی آن اجرا کنید.
در اینجا دستور بررسی پورت های باز با Nmap آمده است:
nmap -sTU -sV <ip-address> -T 5 --min-rate 9000 --min-parallelism 9000 --initial-rtt-timeout 50ms --max-rtt-timeout 3000ms --max-retries 50 -Pn --disable-arp-ping -n --script vuln,exploit,auth -v -oX <filename>
توضیح دستور:
- -sTU نوع اسکن را روی TCP Connect و اسکن UDP تنظیم می کند.
- -T 5 الگوی زمانبندی را برای اسکنهای سریع روی تهاجمی تنظیم میکند (در سیستمهای محافظت نشده توصیه نمیشود زیرا ممکن است منجر به حمله DoS شود).
- -sV اسکن سرویس را روشن می کند.
- -min-rate 9000 به Nmap می گوید که 9000 بسته در ثانیه ارسال کند.
- –initial-rtt-timeout 50ms به Nmap میگوید که ابتدا 50 میلیثانیه برای پاسخ به هر بسته SYN که ارسال میکند صبر کند.
- –max-rtt-timeout 3000ms به Nmap می گوید که حداکثر 3000ms برای پاسخ منتظر بماند.
- –min-parallelism 9000 حداقل تعداد اجراهای همزمان اسکریپت را روی 9000 تنظیم می کند.
- –max-retries 50 به Nmap می گوید که برای اتصال به پورت 50 بار دوباره تلاش کند.
- -Pn کاوش پینگ را غیرفعال می کند.
- –disable-arp-ping کاوش ARP را غیرفعال می کند.
- -n وضوح DNS را غیرفعال می کند.
- –script vuln,exploit,auth سه اسکریپت را برای آزمایش انواع مختلف آسیب پذیری در پورت های کشف شده اجرا می کند.
- -v یک خروجی پرمخاطب برمی گرداند.
- -oX نتایج را در یک فایل XML ذخیره می کند.
- -6 پارامتر اختیاری برای اسکن آدرس های IPv6.
4. Open Ports With lsof را بررسی کنید
دستور lsof در لینوکس برای فهرست کردن فایل های باز استفاده می شود. با این حال، اگر چند سوئیچ به آن اضافه کنید، میتوانید اتصالات و پورتهای اینترنت باز را در دستگاه محلی خود مشاهده کنید. در اینجا نحوه بررسی پورت های باز با lsof آورده شده است:
lsof -i -n
توضیح دستور:
- -i تمام فایل های شبکه و اینترنت را فهرست می کند.
- -n نام میزبان را حل نمی کند.
5. Open Ports With netcat را بررسی کنید
netcat یک ابزار خط فرمان است که به شما امکان خواندن و نوشتن از و به اتصالات TCP/UDP را می دهد. توجه داشته باشید که این تنها یکی از ویژگی های netcat است. می توانید با استفاده از دستور man netcat صفحه کتابچه راهنمای آن را بررسی کنید تا تمام ویژگی های آن و نحوه استفاده از آنها را بررسی کنید.
در اینجا نحوه استفاده از netcat برای اسکن پورت های باز آورده شده است:
nc -zv <ip-address> <start_port-end_port> | grep -v "refused"
توضیح دستور:
- -z netcat را روی حالت اسکنر قرار می دهد.
- -v یک خروجی پرمخاطب برمی گرداند.
- grep -v “refused” خطوط خروجی را بدون کلمه “refused” برمی گرداند. این برای جلوگیری از مسدود شدن ترمینال با پیام های “اتصال رد شده” است، زمانی که netcat هیچ خروجی از یک پورت دریافت نمی کند.
- 2>&1: این یک سوئیچ اختیاری است که ممکن است لازم باشد هنگام اجرای netcat در حالت کلامی، آن را روشن کنید تا grep کار کند. netcat خروجی را به stderr برمی گرداند (که با 2 مشخص می شود). بنابراین برای grep خروجی، باید stderr را به stdout (که با 1 مشخص می شود) هدایت کنید و سپس آن را به grep وارد کنید.
هر چه شبکه خود را عمیق تر بشناسید بهتر می توانید از آن دفاع کنید
دانستن اینکه کدام پورت ها باز هستند و چه سرویس هایی روی سیستم شما در حال اجرا هستند، گامی عالی برای دفاع از آن در برابر حملات احتمالی خارجی است. این به شما امکان می دهد خدمات غیرضروری را جستجو و خاموش کنید، سرویس های قدیمی را بیابید، و همچنین تشخیص دهید که آیا فایل های مخربی مانند درب پشتی پوسته متصل یا معکوس در حال اجرا بر روی سیستم شما وجود دارد یا خیر.
اگر در مورد امنیت شبکه جدی هستید، باید نصب و راهاندازی یک راهحل IDS را برای نظارت بر تمام فعالیتهای شبکه خود و اجرای قوانین برای جلوگیری از اتصالات ناخواسته در نظر بگیرید.