فرض کنید که میخواهید فهرستی از تمام پورتهای باز موجود در سرور ابری لینوکس تهیه کنید. چگونه میتوانید پورتهای باز موجود در لینوکس را با استفاده از CLI بررسی کنید؟ در ادامه راهکار موجود برای بررسی این پورتها را در سیستم عامل لینوکس بررسی خواهیم کرد. برای عیبیابی سرور و جلوگیری از مشکلات...
1398/11/175816 بازدید
فرض کنید که میخواهید فهرستی از تمام پورتهای باز موجود در سرور ابری لینوکس تهیه کنید. چگونه میتوانید پورتهای باز موجود در لینوکس را با استفاده از CLI بررسی کنید؟ در ادامه راهکار موجود برای بررسی این پورتها را در سیستم عامل لینوکس بررسی خواهیم کرد.
برای عیبیابی سرور و جلوگیری از مشکلات امنیتی حتماً نیاز به پیدا کردن پورتهای TCP و UDP باز خواهیم داشت. در این مطلب آموزشی، شما با فرامین مختلف موجود در لینوکس برای بررسی پورتها آشنا خواهید شد. در نتیجه، میتوانید امنیت و حفاظت سرور را ارتقا دهید.
پورتهای TCP و UDP
پورتها در واقع، عددی ۱۶ بیتی بین صفر تا ۶۵۵۳۵ هستند. به عنوان مثال، پورت TCP شماره ۲۲ ممکن است به یک سرور OpenSSH مرتبط باشد. بنابراین، پورت شماره ۲۲ راهی برای مشخص کردن فرآیند SSHD خواهد بود.
شماره پورتها
پورتهای شناختهشده بین ۰ تا ۱۰۲۳ هستند.
پورتهای ثبتشده آنهایی خواهند بود که عدد بین ۱۰۲۴ تا ۴۹۱۵۱ دارند.
پورتهای دینامیک و اختصاصی نیز عددی بین ۴۹۱۵۲ تا ۶۵۵۳۵ دارند.
یک پورت ثبتشده پورت شبکهای است که به تأیید نهاد مدیریت شمارههای ثبتشده اینترنتی یا IANA رسیده و در فایل /etc/services ذخیره شده است. برای مشاهده اعداد پورتها و سازماندهی سرویسها میتوانید از فرمان cat یا فرمانهای grep و egrep استفاده کنید:
نمایش فهرست برنامهها و پورتهای آنها که به وسیله IANA به ثبت رسیدهاند.
بررسی پورتهای باز در سیستمعامل لینوکس
روند کار برای بررسی و نمایش پورتهای باز در لینوکس به صورت زیر انجام میشود:
۱) باز کردن برنامه ترمینال لینوکس
۲) استفاده از فرمان ss برای نمایش تمام پورتهای باز TCP و UDP در لینوکس
۳) گزینه دیگر برای این منظور، استفاده از فرمان netstat برای ایجاد فهرستی از تمام پورتها خواهد بود.
۴) در همین حال و فارغ از فرمانهای ss و netstat، ممکن کسی بخواهد از فرمان lsof نیز استفاده کند. در این صورت نیز تمام فایلها و پورتهای باز در سیستم مبتنی بر لینوکس قابلمشاهده خواهند بود.
۵) نهایتاً اینکه، استفاده از فرمان nmap نیز گزینهای دیگر برای مشاهده و بررسی پورتهای TCP و UDP خواهد بود.
حالا تمام این فرمانها و مثالهای آنها را به صورت جزئی بررسی میکنیم.
کاربرد فرمان netstat برای ایجاد لیست پورتهای باز
برای این منظور، فرمان netstat زیر را تایپ کنید:
php
1sudo netstat -tulpn | grep LISTEN
نحوه بررسی پورتهای باز در لینوکس با استفاده از فرمان netstat
به عنوان مثال، پورت TCP شماره 631 توسط فرآیند cupsd باز شده و cupsd تنها در آدرس حلقه برگشتی یا 127.0.0.1 لیست میشود. به همین ترتیب، پورت TCP شماره ۲۲ توس فرآیند sshd باز شده و sshd بر روی تمام آدرسهای IP برای ارتباطهای ssh لیست میشود:
php
1Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name23tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 0 43385 1821/cupsd45tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 44064 1823/sshd
که گزینههای موجود در آن عبارتند از:
-t : تمام پورتهای تیسیپی
-u : تمام پورتهای یودیپی
-l : نمایش سوکتهای ثبتکننده سرور
-p : نمایش شناسه و عنوان برنامههای مربوط به هر کدام از سوکتها
-n : عدم بررسی عنوانها
| grep LISTEN : نمایش پورتهای بازی که توس فرمان گرپ فیلتر شدهاند
استفاده از فرمان ss برای فهرستبندی پورتهای باز
فرمان ss برای آمارگیری سوکتها به کار گرفته میشود. نمایش اطلاعات توسط این فرمان مشابه فرمان netstat صورت میگیرد. البته اطلاعات آماری و پورتهای TCP که توسط این فرمان نشان داده میشود، بیشتر از ابزارهای دیگر خواهد بود. برای این منظور، فرمت کار به صورت زیر است:
لیستگرفتن از پورتها و برنامهها با استفاده از فرمان lsof
در اینجا با استفاده از فرمان lsof پورتهای باز TCP و UDP را بررسی میکنیم:
php
1sudo lsof -i -P -n | grep LISTEN
فرمان lsof برای تهیه لیست پورتهای باز در لینوکس
که در آن داریم:
-i : بررسی پورتهای لیست شده
-P :جلوگیری از تبدیل اعداد پورتها به نام پورتها برای فایلهای شبکه. چنین کاری میتواند به سرعت اجرای فرمان کمک زیادی کند. همچین این گزینه در هنگامی که جستجوی عنوان پورت بهخوبی کار نکند، بسیار مفید خواهد بود.
-n : عدم استفاده از عنوان دیاناس
| grep LISTEN : نمایش پورتهای بازی که توس فرمان گرپ فیلتر شدهاند
فرمان nmap
علاوه بر فرمانهایی که در بالا به آنها اشاره شد، فرمان nmap نیز یک ابزار متنباز برای بررسی وضعیت و امنیت شبکه است. در اینجا از فرمان nmap برای جستجو و تهیه لیست از پورتهای باز در لینوکس استفاده میکنیم:
php
1$ sudo nmap -sT -O localhost23$ sudo nmap -sU -O 192.168.2.254 ##[ list open UDP ports ]##45$ sudo nmap -sT -O 127.0.0.1 ##[ list open TCP ports ]##67$ sudo nmap -sTU -O 192.168.2.24
نمونه خروجی:
php
1Starting Nmap 7.70 ( https://nmap.org ) at 2019-07-22 23:49 IST23Nmap scan report for localhost (127.0.0.1)45Host is up (0.00024s latency).67Other addresses for localhost (not scanned): ::189Not shown: 998 closed ports1011PORT STATE SERVICE121322/tcp open ssh1415631/tcp open ipp1617Device type: general purpose1819Running: Linux 2.6.X2021OS CPE: cpe:/o:linux:linux_kernel:2.6.322223OS details: Linux 2.6.322425Network Distance: 0 hops2627 2829OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .3031Nmap done: 1 IP address (1 host up) scanned in 2.31 seconds
جمعبندی
در مجموع باید گفت که پیدا کردن و بررسی پورتهای باز در لینوکس یکی از اساسیترین وظیفههای مدیریتی و امنیتی در سیستمهای لینوکس است. بر این اساس، بستن تمام پورتهای ناخواسته و تنظیم فایروالهایی مانند UFW یا FirewallD و یا مسدود کردن برخی از آنها موردنیاز خواهد بود. پس از خواندن این مطلب آموزشی احتمالاً درک مناسبی از نحوه بررسی پورتهای باز در لینوکس خواهید داشت.