راهنمای کامل باز کردن پورت در لینوکس و انجام تنظیمات فایروال!

باز کردن پورت در لینوکس

آنچه در مقاله می‌خوانید

پورت یک اندپوینت (Endpoint) ارتباطی است. در یک سیستم‌عامل، پورت برای فرایندهای خاص یا خدمات شبکه به روی بسته‌های داده باز یا بسته می‌شود.

به طور معمول، پورت‌ها یک سرویس شبکه خاص را که به ‌آن‌ها اختصاص داده شده است شناسایی می‌کنند. این موضوع را می‌توان با پیکربندی دستی سرویس برای استفاده از یک پورت دیگر تغییر داد، اما به طور کلی در بسیاری از مواقع از حالت پیش‌فرض استفاده می‌شود.

1024 پورت اول (شماره پورت‌های 0 تا 1023) به عنوان شماره پورت مشهور نامیده می‌شود و برای متداول‌ترین سرویس‌ها رزرو شده است. این سرویس‌ها عبارتند از SSH (پورت شماره 22)، HTTP (پورت شماره 80) و HTTPS (پورت شماره 443).

به شماره پورت‌های بعد از 1024 پورت‌های زودگذر (Ephemeral) گفته می‌شود.

پورت‌های 1024 تا 49151 پورت‌های ثبت‌شده/کاربر نامیده می‌شوند.

پورت‌های 49152 تا 65535 پورت‌های پویا/خصوصی نامیده می‌شوند.

در این آموزش نحوه باز کردن پورت در لینوکس را به شما آموزش می‌دهیم.

پیش‌نیازها

برای دنبال کردن مراحل این آموزش، به موارد زیر نیاز دارید:

  • آشنایی با استفاده از ترمینال
  • لیست همه پورت‌های باز

قبل از باز کردن پورت در لینوکس، باید لیست تمام پورت‌های باز را بررسی کنید و یک پورت زودگذر را برای باز کردن انتخاب کنید که در آن لیست وجود ندارد.

برای فهرست کردن تمام پورت‌های باز، از جمله TCP و UDP که رایج‌ترین پروتکل‌ها برای انتقال بسته در لایه شبکه هستند از دستور netstat استفاده کنید.

netstat -lntu

با اجرای این دستور، خروجی زیر پرینت می‌شود:

all listening sockets (-l)

the port number (-n)

TCP ports (-t)

UDP ports (-u)

 

Output

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address  State

tcp        0      0 127.0.0.1:5432   0.0.0.0:*     LISTEN

tcp     0   0 127.0.0.1:27017  0.0.0.0:*     LISTEN

tcp     0   0 127.0.0.1:6379   0.0.0.0:*     LISTEN

tcp     0   0 127.0.0.53:53 0.0.0.0:*     LISTEN

tcp     0   0 0.0.0.0:22    0.0.0.0:*     LISTEN

tcp6    0   0 ::1:5432      :::*          LISTEN

tcp6    0   0 ::1:6379      :::*          LISTEN

tcp6    0   0 :::22         :::*          LISTEN

udp     0   0 127.0.0.53:53 0.0.0.0:*     LISTEN

 

 

توجه: اگر توزیع شما از دستور netstat پشتیبانی نمی‌کند، می‌توانید از دستور ss برای مشاهده پورت‌های باز در لینوکس استفاده کنید.

بررسی کنید که با استفاده از دستور ss برای فهرست کردن سوکت‌های Listening با پورت باز، خروجی‌های ثابتی دریافت می‌کنید:

ss -lntu

 

اجرای این دستور خروجی زیر را نمایش می‌دهد:

Output

Netid  State   Recv-Q  Send-Q Local Address:Port   Peer Address:Port

udp UNCONN  0       0     127.0.0.53%lo:53      0.0.0.0:*

tcp LISTEN  0       128       127.0.0.1:5432    0.0.0.0:*

tcp LISTEN  0       128       127.0.0.1:27017   0.0.0.0:*

tcp LISTEN  0       128       127.0.0.1:6379    0.0.0.0:*

tcp LISTEN  0       128   127.0.0.53%lo:53      0.0.0.0:*

tcp LISTEN  0       128         0.0.0.0:22      0.0.0.0:*

tcp LISTEN  0       128           [::1]:5432    0.0.0.0:*

tcp LISTEN  0       128           [::1]:6379    0.0.0.0:*

tcp LISTEN  0       128            [::]:22      0.0.0.0:*

این خروجی کم‌وبیش مشابه همان چیزی است که در خروجی دستور netstat دیدیم.

باز کردن پورت در لینوکس برای اجازه دادن به اتصالات TCP

اکنون، یک پورت بسته را باز کنید و کاری کنید که برای اتصالات TCP در حالت Listen قرار بگیرد.

برای اهدافی که در این آموزش دنبال می‌کنیم، پورت 4000 را باز خواهید کرد. اما اگر آن پورت در سیستم شما باز نیست، در صورت تمایل یک پورت بسته دیگر را انتخاب کنید. فقط مطمئن شوید که شماره آن بزرگ‌تر از 1023 باشد.

مطمئن شوید که پورت 4000 توسط دستور netstat مورد استفاده قرار نگرفته باشد:

netstat -na | grep :4000

یا با دستور ss:

ss -na | grep :4000

خروجی باید خالی بماند، بنابراین بررسی کنید که در حال حاضر از پورت انتخابی استفاده نمی‌شود. اکنون می‌توانید قوانین پورت را به صورت دستی به فایروال سیستم iptables اضافه کنید.

کاربران اوبونتو و سیستم‌های مبتنی بر ufw

از ufw (کلاینت خط فرمان برای Uncomplicated Firewall) استفاده کنید.

دستوراتی که باید استفاده کنید مشابه زیر خواهد بود:

sudo ufw allow 4000

برای توزیع CentOS و سیستم‌های مبتنی بر firewalld

از firewall-cmd (کلاینت خط فرمان برای firewalld daemon) استفاده کنید.

دستورات شما مشابه زیر خواهد بود:

firewall-cmd --add-port=4000/tcp

برای سایر توزیع‌های لینوکس

از iptables برای تغییر قوانین فیلتر بسته IPv4 سیستم استفاده کنید.

iptables -A INPUT -p tcp --dport 4000 -j ACCEPT

ابتدا با دستور nc ابزار netcat را اجرا کنید؛ برای Listen کردن روی پورت 4000 از فلگ -l و -p استفاده کنید و همزمان خروجی را به هر کلاینتی که متصل است ارسال کنید:

ls | nc -l -p 4000

اکنون، پس از اینکه یک کلاینت اتصال TCP را در پورت 4000 باز کرد، خروجی ls را دریافت خواهید کرد. فعلا دیگر با این Session کاری ندارید.

Session ترمینال دیگری را در همان دستگاه باز کنید.

از آنجایی که یک پورت TCP را باز کردید، از telnet برای بررسی اتصال TCP استفاده کنید. اگر این دستور در توزیع شما وجود نداشت، با استفاده از ابزار پکیج منیجر خود آن را نصب کنید.

IP سرور و شماره پورت (در این مثال 4000) را وارد کرده و سپس این دستور را اجرا کنید:

telnet localhost 4000

این دستور سعی می کند یک اتصال TCP را در لوکال هاست در پورت 4000 باز کند.

خروجی مشابه زیر را دریافت خواهید کرد که نشان می‌دهد ارتباط با برنامه Listen کننده (nc) برقرار شده است:

Output

Trying ::1...

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

while.sh


خروجی ls (در این مثال while.sh) نیز برای کلاینت ارسال شده است که نشان‌دهنده موفقیت‌آمیز بودن اتصال TCP است.

از nmap برای بررسی باز بودن پورت (-p) استفاده کنید:

nmap localhost -p 4000

این دستور پورت باز را بررسی می‌کند:

Output

Starting Nmap 7.60 ( https://nmap.org ) at 2020-01-18 21:51 UTC

Nmap scan report for localhost (127.0.0.1)

Host is up (0.00010s latency).

Other addresses for localhost (not scanned): ::1

 

PORT STATE SERVICE

4000/tcp open  remoteanything




Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds

پورت باز شده است. در این مرحله فرایند باز کردن پورت در لینوکس با موفقیت به پایان رسیده است.

توجه: nmap فقط پورت‌های بازشده‌ای را فهرست می‌کند که برنامه‌ای در حال Listen کردن داشته باشد. اگر از هیچ برنامه Listen کننده‌ای مانند netcat استفاده نمی‌کنید، این دستور پورت 4000 را بسته نشان می‌دهد زیرا در حال حاضر هیچ برنامه‌ای در آن پورت Listen نمی‌کند.

به شیوه‌ای مشابه، telnet نیز کار نخواهد کرد، زیرا برای اتصال به برنامه‌ای که در حال Listen کردن باشد نیاز دارد. به همین دلیل است که nc ابزار مفیدی است. این ابزار چنین محیط‌هایی را در یک دستور ساده شبیه‌سازی می‌کند.

اما این شبیه‌سازی موقتی است، زیرا هربار که سیستم را ریستارت می‌کنید، تغییرات ریست می‌شوند.

قوانین پایدار

رویکرد ارائه‌شده در این مقاله فقط به طور موقت قوانین فایروال را تا زمانی که سیستم خاموش یا ریستارت شود، به‌روز می‌کند. بنابراین، مراحل بالا باید تکرار شود تا پس از ریستارت همان پورت دوباره باز شود.

برای فایروال ufw

قوانین ufw در هنگام ریستارت کردن سیستم ریست نمی‌شوند. این امر به دلیل این است که در فرایند بوت ادغام شده است و هسته قوانین فایروال را با استفاده از ufw با اعمال فایل‌های پیکربندی مناسب ذخیره‌ می‌کند.

برای firewalld

اگر می‌خواهید پورت را به پیکربندی دائمی فایروال اضافه کرده و بلافاصله تغییرات را اعمال کنید، می‌توانید از فلگ‌های permanent– و –reload استفاده کنید:

sudo firewall-cmd --permanent --add-port=4000/tcp

sudo firewall-cmd --reload

 

برای iptables

شما باید قوانین پیکربندی را ذخیره کنید و از دستور iptables-persistent استفاده کنید.

برای جزئیات بیش‌تر به نحوه راه‌اندازی فایروال با استفاده از iptables مراجعه کنید.

جمع‌بندی

در این مقاله با نحوه باز کردن پورت در لینوکس آشنا شدید و نحوه تنظیم آن برای اتصالات ورودی را یاد گرفتید. همچنین با نحوه استفاده از دستورات netstat، ss، telnet، nc و nmap آشنا شدید.

4/5 - (1 امتیاز)
دیدن نظرات
small

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

چهار × سه =

عضویت در خبرنامه مبین هاست
مطالب کدام دسته‌بندی‌ها برای شما جذاب‌تر است؟

آنچه در مقاله می‌خوانید

مقالات مرتبط
فریمورک Django
آموزش برنامه نویسی

همه چیز درباره فریمورک Django و نحوه استفاده از آن

فریم ورک Django یک ابزار متن‌باز بر پایه زبان برنامه‌نویسی پایتون است که از آن برای ساخت انواع وب‌سایت‌ها و پلتفرم‌های پیچیده استفاده می‌شود. این

خدمات مبین هاست