قصد باز کردن یک پورت TCP یا UDP در سیستم عامل لینوکس خود را دارید؟ 👨💻 در راهنما قدم به قدم باز کردن پورت در لینوکس (اکثر توزیع ها) از کلاسیک وب شما را با روش های مختلف باز کردن پورت در توزیع های مختلف لینوکس آشنا می کنیم.
نمایش
نحوه باز کردن پورت در لینوکس
How To Open a Port on Linux
شماره پورت یک مفهوم مجازی در شبکه های کامپیوتری است که یک شناسه شبکه برای یک سرویس یا برنامه ارائه می دهد . این عدد یک عدد صحیح ۱۶ بیتی از ۰ تا ۶۵۵۳۵ است که با آدرس IP ترکیب می شود و یک سوکت ارتباطی شبکه ایجاد می کند. اما آیا باید به سیستم لینوکس خود اجازه اتصالات ورودی یا خروجی بدهید یا نه؟ اگر از نرم افزارهای فایروال مانند Iptables، Uncomplicated Firewall (UFW) یا Firewalld استفاده می کنید می توانید به راحتی پورت ها را از خط فرمان باز کنید. برای فایروال هایی مانند ConfigServer Firewall (CSF) و Advanced Policy Firewall (ADP)، افزودن دستورات فایروال به پورت های باز به سادگی ویرایش فایل پیکربندی فایروال شماست.
قبل تغییر پورت در لینوکس جالب است بدانید شما به راحتی می توانید پورت های TCP و UDP را در هر فایروال مبتنی بر لینوکسی باز کنید. و اینکه Iptables روی اکثر توزیعهای لینوکس از پیش نصب شده است و پیکربندی آن بسیار آسان است. در نهایت اگر از فایروال استفاده میکنید، افزودن –permanent flag به firewall-cmd commands تضمین میکند که با توقف و راهاندازی مجدد فایروال، تغییرات شما لغو نخواهد شد. در ادامه به طور کامل نحوه باز کردن پورت در لینوکس را مورد بررسی قرار می دهیم.
مشاهده پورت های باز در لینوکس
قبل از باز کردن پورت در یک سیستم، بررسی کنید که آیا پورت مورد نیاز شما از قبل باز است یا خیر. ساده ترین راه برای انجام نمایش پورت های باز در لینوکس این است که خروجی دستور netstat را با دستور grep همراه کنید. در ترمینال خود تایپ کنید:
netstat -na | grep :[port-number]
سینتکس بالا لیستی از پورت های باز netstat که با فیلتر بعد از grep مطابق باشد به ما ارائه می کند. به عنوان مثال، برای بررسی اینکه آیا پورت ۸۰۸۰ در سیستم موجود است یا خیر، تایپ کنید:
netstat -na | grep :8080
اگر پورت بسته باشد، دستور هیچ خروجی برنمیگرداند.
همچنین، از دستور زیر netstat برای نمایش لیستی از پورت های listening استفاده کنید:
netstat -lntu
در این سینتکس چهار آپشن را مشاهده می کنید:
l پورت های listening را به ما نشان می دهد.
n مقدار عددی پورت ها را به نشان می دهد.
t و u هم به TCP و UDP اشاره دارند.
۱- باز کردن پورت در لینوکس با Iptables
برای باز کردن پورت در لینوکس مراحل زیر را دنبال کنید:
وارد سرور لینوکس خود شوید و یا پنجره ترمینال را باز کنید. اکثر توزیعهای لینوکس، از جمله اوبونتو، دبیان، CentOS ، فدورا و رد هت، دارای IPtable هایی هستند که قبلاً نصب شدهاند. با استفاده از دستورات ساده می توانید پورت ها را در Iptables باز کنید.
برای اطمینان از فعال بودن فایروال خود دستور service iptables status را اجرا کنید . اگر فایروال اجرا نشد، آن را با استفاده از آن دستور service iptables start استارت کنید.
برای لیست کردن دستورات فعلی فایروال از فرمان sudo iptables -L استفاده کنید
دستورات به چند شاخه تقسیم می شوند:
- زنجیره INPUT: برای اتصالات ورودی به سیستم میزبان استفاده میشود.
- زنجیره FORWARD: برای مسیریابی استفاده میشود.
- زنجیرهOUTPUT: برای داده های خروجی از سیستم میزبان استفاده می شود استفاده میشود.
هر شاخه یک خط مشی دارد که تعیین می کند چه اتفاقی برای بسته های ارسالی (پکت ها) می افتد. هنگامی که یک پورت را باز می کنید، باید زنجیره را مشخص کنید. به عنوان مثال، برای باز کردن اتصالات SSH دریافتی ، باید از زنجیره INPUT استفاده کنید.
از فرمان sudo iptables -I INPUT -p tcp -m tcp –dport 22 -j ACCEPT برای باز کردن پورت استفاده کنید. در این مثال، ما اتصالات ورودی را با پورت ۲۲ باز می کنیم، می توانید به جای پورت ۲۲ پورتی که می خواهید را جایگزین کنید.
اگر در حال باز کردن درگاه خروجی هستید، به جای INPUT از OUTPUT استفاده کنید.
در صورتی که می خواهید بک پورت UDP باز کنید، udp را به جای tcp جایگذاری کنید.
برای باز کردن پورت با یک آدرس IP یا زیر شبکه (subnet) خاص، از sudo iptables -I INPUT -s xxx.xxx.xxx.xxx -p tcp -m tcp –dport 22 -j ACCEPT استفاده کنید.
برای ذخیره تغییرات خود از sudo service iptables save استفاده کنید
اگر کار نکرد، یکی از این دستورات را امتحان کنید:
sudo /sbin/iptables-save برای اوبونتو و دبیان.
/sbin/service iptables save برای CentOS، Red Hat و Fedora.
برای بستن پورت، از iptables -I INPUT -p tcp –-dport 22 -j REJECT استفاده کنید و پورتی که میخواهید ببندید را جایگزین ۲۲ کنید و اگر در حال حاضر در سرور SSH هستید، هرگز پورت ۲۲ را نبندید!
۲- روش آسان باز کردن پورت در لینوکس
برای باز کردن پورت لینوکس مراحل زیر را دنبال کنید:
وارد سرور اوبونتو خود شوید. UFW روی تمام سیستم های اوبونتو از قبل نصب شده است. اگر وارد رابط کاربری گرافیکی (GUI) شده اید، ابتدا یک پنجره ترمینال باز کنید.
تایپ کنید: sudo ufw status verbose سپس Enter را فشار دهید. اگر UFW از قبل در حال اجرا باشد، یک پیام وضعیت (status) و همچنین لیستی از فرمان های فایروال (از جمله پورت های باز شده) که از قبل وجود دارد را مشاهده خواهید کرد. اگر پیامی دیدید که میگوید Status: inactive، باید فایروال را فعال کنید:
تایپ کنید: sudo ufw enable سپس Enter را فشار دهید تا فایروال راه اندازی شود.
برای روشن کردن گزارش فایروال (firewall logging)، از دستور sudo ufw logging on استفاده کنید.
از دستور sudo ufw allow [port number] برای باز کردن پورت استفاده کنید
به عنوان مثال، اگر می خواهید پورت SSH (22) را باز کنید، باید تایپ کنید: kbd و Enter را فشار دهید تا پورت باز شود. نیازی به راه اندازی مجدد فایروال نیست، زیرا تغییر بلافاصله اعمال می شود.
اگر درگاهی که باز میکنید برای سرویسی باشد که در /etc/services فهرست شده است، میتوانید به جای شماره پورت، نام سرویس را تایپ کنید. به عنوان مثال: sudo ufw allow ssh.
برای باز کردن یک محدوده خاص از پورت ها، از سینتکس sudo ufw allow 6000:6007/tcp استفاده کنید و ۶۰۰۰:۶۰۰۷ را با محدوده مورد نظر جایگزین کنید. اگر محدوده پورتهای UDP است، tcp را با udp جایگزین کنید.
برای تعیین یک آدرس IP که می تواند به پورت دسترسی داشته باشد، از این سینتکس استفاده کنید: sudo ufw allow from 10.0.0.1 to any port 22 و ۱۰.۰.۰.۱ را با آدرس IP مورد نظر جایگزین کنید. و ۲۲ را با پورتی که می خواهید باز کنید جایگزین کنید.
برای بستن پورت در لینوکس ، از sudo ufw deny 22 استفاده کنید
درگاهی که می خواهید ببندید را جایگزین ۲۲ کنید.
فرمان های فایروالی که ضروری نیست را حذف کنید
هر پورتی که به طور خاص باز نشده باشد به طور پیش فرض مسدود می شود. اگر پورتی را باز کردید و تصمیم گرفتید آن را ببندید، از این مراحل استفاده کنید:
تایپ کنید: sudo ufw status numbered و Enter را فشار دهید . این فرمان لیستی از تمام دستورات فایروال را نشان می دهد که هر کدام با یک عدد شروع می شود که جایگاه آن را در لیست نشان میدهد.
شماره را در ابتدای دستوری که می خواهید حذف کنید، مشخص کنید. برای مثال، فرض کنید میخواهید دستوری که پورت ۲۲ را باز میکند را حذف کنید (اگر در حال حاضر از SSH برای دسترسی به سرور استفاده میکنید، این کار را انجام ندهید)، و این دستور در خط ۲ فهرست شده است.
در این صورت تایپ میکنیم: sudo ufw delete 2 و Enter را فشار میدهیم تا فرمان خط ۲ حذف شود.
۳- روش آسان باز کردن پورت در لینوکس با Firewalld
برای باز کردن پورت با استفاده از این روش، مراحل زیر را دنبال کنید:
وارد سرور خود شوید. اگر از Firewalld در سیستم CentOS، Red Hat Enterprise، SUSE یا Fedora خود استفاده می کنید، می توانید به راحتی پورت ها را از خط فرمان باز کنید. Firewalld فایروال پیش فرض برای همه این توزیع ها است.
برای مشاهده همه پورت های باز firewall-cmd –list-ports را اجرا کنید.
همچنین، میتوانید کل پیکربندی فایروال را مشاهده کنید و با اجرا کردن، همه پورتها و سرویسهای مجاز و ممنوعه را با استفاده از دستور sudo firewall-cmd –list-all مشاهده کنید. (در این حالت از منطقه عمومی (PUBLIC) استفاده می شود.)
از دستور firewall-cmd برای باز کردن پورت استفاده کنید
در این مثال، نحوه باز کردن پورت SSH (22) یا همان پورت فوروارد در لینوکس برای دسترسی از راه دور را به شما نشان خواهیم داد:
دستور firewall-cmd –zone=public –add-port=22/tcp فوراً پورت ۲۲ را باز می کند، اما پورت را به صورت دائمی تغییر نمی دهد.
برای دائمی کردن تغییر، –permanent flag را به دستور اضافه کنید: firewall-cmd –zone=public –permanent –add-port=22/tcp
برای باز کردن پورت UDP عبارت، tcp را با udp جایگزین کنید.
و برای باز کردن پورت با نام سرویس (service name)، از firewall-cmd –zone=public –permanent استفاده کنید.
یک پورت برای یک آدرس IP خاص باز کنید
اگر فقط میخواهید اتصالات به یک IP یا از یک IP را مجاز کنید، باید یک منطقه فایروال جدید (new firewall zone) برای آن آدرس ایجاد کنید. برای ایجاد یک منطقه جدید، از دستور firewall-cmd –new-zone=MYZONENAME –permanent استفاده کنید.
سپس دستور firewall-cmd –reload را برای بازخوانی تنظیمات خود اجرا کنید.
برای مشاهده مناطق خود firewall-cmd –get-zones- را اجرا کنید. اکنون منطقه جدید خود را در این لیست خواهید دید.
برای پیوند آدرس IP به منطقه، از دستور firewall-cmd –zone=MYZONENAME –add-source=10.0.0.1 –permanent استفاده کنید. آدرس IP را با آدرس مناسب جایگزین کنید.
سپس، با استفاده از نام منطقه به جای “public:” پورت را به آن منطقه باز کنید: firewall-cmd –zone=MYZONENAME –permanent –add-port=22/tcp
یک پورت را ببندید.
اگر نیاز به بستن یک پورت دارید، می توانید این کار را با استفاده از فلاگ های مختلف با دستور firewall-cmd انجام دهید. در این مثال، ما پورت ۲۲ را برای همیشه به روی عموم میبندیم: firewall-cmd –zone=public –remove-port=22/tcp –permanent.
۴- باز کردن پورت در لینوکس با ConfigServer Firewall
برای استفاده از این روش مراحل زیر را دنبال کنید:
وارد سرور خود شوید. اگر بهعنوان کاربر روت (root) وارد نشدهاید، میتوانید از su استفاده کنید. برای تنظیم پیکربندی خود، حتما روت کنید یا دستورات را با پیشگفتار sudo وارد کنید تا به ارور permission denied مواجه نشوید.
فایل پیکربندی CSF یکی از فایل های لینوکس شما است. به دایرکتوری که حاوی فایل پیکربندی CSF است بروید. این فایل csf.conf نام دارد و به طور پیش فرض در مسیر /etc/csf/csf.conf ذخیره می شود. برای انجام این کار، تایپ کنید: cd /etc/csf سپس Enter را فشار دهید.
فایل csf.conf را در یک ویرایشگر متن باز کنید . می توانید از هر ویرایشگر متنی مانند vim یا nano استفاده کنید. برای باز کردن csf.conf در vim، تایپ کنید: vim csf.config سپس Enter را فشار دهید.
یک پورت ورودی به لیست TCP_IN اضافه کنید
پس از باز کردن فایل، بخش های TCP_IN و TCP_OUT را مشاهده خواهید کرد. بخش TCP_IN پورت های باز TCP ورودی را در حالی که با کاما از هم جدا شده اند فهرست می کند. پورت ها به ترتیب عددی هستند تا کارها را آسان کنند، اما الزامی نیست که پورت ها را به ترتیب استفاده کنید. می توانید پورت ها را به انتهای رشته اضافه کنید، فقط آنها را با کاما جدا کنید.
به عنوان مثال، فرض کنید می خواهید پورت ۹۹۹ را باز کنید و پورت های باز فعلی عبارتند از ۲۰, ۲۱, ۲۲, ۲۵, ۵۳, ۸۰, ۱۱۰, ۱۴۳, ۴۴۳, ۴۶۵, ۵۸۷, ۹۹۳, ۹۹۵.
پس از افزودن پورت ۹۹۹ به لیست، به این شکل خواهد بود: ۲۰, ۲۱, ۲۲, ۲۵, ۵۳, ۸۰, ۱۱۰, ۱۴۳, ۴۴۳, ۴۶۵, ۵۸۷, ۹۹۳, ۹۹۵, ۹۹۹
برای وارد شدن به حالت درج/تایپ (insertion/typing) در vim کلید i را روی صفحه کلید فشار دهید.
TCP خروجی را در لیست TCP_OUT مجاز کنید. مشابه همان کاری که با پورت ورودی انجام دادید، را تکرار کنید. هر پورت TCP خروجی را که می خواهید باز کنید و به لیست TCP_OUT اضافه کنید.
تغییرات خود را ذخیره کرده و از فایل خارج شوید. برای ذخیره و خروج از فایل مراحل زیر را دنبال کنید:
کلید Esc را فشار دهید.
تایپ کنید :wq!
Enter را فشار دهید.
تایپ کنید: service csf restart سپس Enter را فشار دهید. این کار فایروال را مجددا راه اندازی می کند و پورت های جدید را باز می کند.برای غیر فعال کردن پورت، فایل را دوباره باز کنید، پورت را حذف کنید، فایل را ذخیره کنید و سپس فایروال را دوباره راه اندازی کنید.
۵- باز کردن پورت در لینوکس با Advanced Policy Firewall
برای باز کردن پورت در لینوکس با Advanced Policy Firewall مراحل زیر را دنبال کنید:
وارد سرور لینوکس خود شوید. اگر از APF در سیستم لینوکس خود استفاده می کنید، میتوانید در فایل پیکربندی APF تغییراتی در پیکربندی فایروال خود ایجاد کنید.
به دایرکتوری که حاوی فایل پیکربندی APF شما است بروید. فایلی که به دنبال آن هستید conf.apf نام دارد و به طور پیش فرض در مسیر /etc/apf قرار دارد. برای ورود به آن دایرکتوری تایپ کنید: cd /etc/apf
فایل /etc/apf/conf.apf را در یک ویرایشگر متن باز کنید. می توانید از هر ویرایشگر متنی مانند vim یا nano استفاده کنید.برای باز کردن conf.apf در vim، باید تایپ کنید: sudo vim /etc/apf/conf.apf سپس Enter را فشار دهید.
پورت های ورودی را به لیست IG_TCP_CPORTS اضافه کنید
پس از باز کردن فایل، بخش های IG_TCP_CPORTS و EG_TCP_CPORTS را مشاهده خواهید کرد. بخش IG_TCP_CPORTS بخش پورت های ورودی باز را که با کاما از هم جدا شده اند فهرست می کند. پورتها به ترتیب عددی فهرست شدهاند تا کار را آسانتر کنند، اما لازم نیست که به آن پایبند باشید. می توانید پورت ها را به انتهای رشته اضافه کنید، فقط آنها را با کاما جدا کنید.
به عنوان مثال، فرض کنید می خواهید پورت ۹۹۹ را باز کنید و پورت های باز فعلی ۲۰, ۲۱, ۲۲, ۲۵, ۵۳, ۸۰, ۱۱۰, ۱۴۳, ۴۴۳, ۴۶۵, ۵۸۷, ۹۹۳, ۹۹۵ هستند.
پس از افزودن پورت ۹۹۹ به لیست IG_TCP_CPORTS، لیست به این شکل خواهد بود: ۲۰, ۲۱, ۲۲, ۲۵, ۵۳, ۸۰, ۱۱۰, ۱۴۳, ۴۴۳, ۴۶۵, ۵۸۷, ۹۹۳, ۹۹۵, ۹۹۹
برای وارد شدن به حالت درج/تایپ (insertion/typing) در vim کلید i را روی صفحه کلید فشار دهید.
پورت های خروجی را در لیست EG_TCP_CPORTS مجاز کنید. مشابه همان کاری که با پورت ورودی انجام دادید، را تکرار کنید. هر پورت TCP خروجی را که می خواهید باز کنید و به لیست EG_TCP_CPORTS اضافه کنید.
تغییرات خود را ذخیره کرده و از فایل خارج شوید. برای ذخیره و خروج از فایل مراحل زیر را دنبال کنید:
کلید Esc را فشار دهید.
تایپ کنید :wq!
Enter را فشار دهید.
تایپ کنید service apf -r سپس Enter را فشار دهید. این کار فایروال APF را مجددا راه اندازی می کند و پورت های جدید را باز می کند. برای غیر فعال کردن پورت، فایل را دوباره باز کنید، پورت را حذف کنید، فایل را ذخیره کنید و سپس فایروال را دوباره راه اندازی کنید.
آخرین قدم ( تست پورت های باز )
پس از استفاده از هر یک از روش های بالا برای باز کردن پورت در لینوکس، از موفقیت آمیز بودن فرآیند اطمینان حاصل کنید. روش های زیر روش های ساده ای برای اسکن پورت در لینوکس هستند.
پورت های listening را با دستور زیر مشاهده کنید:
netstat -lntu
خروجی بالا پورت ۸۰۸۰ را که قبلا باز کرده بودیم نشان می دهد.
همچنین سوکت های باز را با دستور ss فهرست کنید :
ss -lntu
پورت را با تعیین شماره آن در دستور nmap تست کنید.
nmap localhost -p 8080
همچنین می توانید پورت را با نرم افزار Netcat Utility تست کنید.
ابزار Netcat دارای دستور nc است که می توانید از آن برای تست یک پورت باز استفاده کنید. برای انجام این کار مراحل زیر را دنبال کنید:
از دستوری مانند echo همراه با Netcat استفاده کنید و پورت مورد نظر را برای شنیده شدن مشخص کنید. مثال زیر پیامی را برای تست پورت ۸۰۸۰ ارسال می کند:
echo “Testing port 8080” | nc -l -p 8080
دستور را در حال اجرا بگذارید و پنجره ترمینال دیگری را باز کنید.
در آن پنجره ترمینال، از دستوری مانند telnet برای جستجو در سوکت محلی (local socket) استفاده کنید.
telnet localhost 8080
اگر پورت باز باشد، خروجی فرمان telnet حاوی پیامی است که با استفاده از nc در مرحله قبلی آن را تست کردیم.
سوالات متداول
چه نکات امنیتی را در باز کردن پورت رعایت کنیم؟
اگر پورتی را مشاهده کردید که از آن استفاده نمیکنید، آن را ببندید! شما نمی خواهید دری را برای متجاوزان باز بگذارید!
در صورتی که شروع به اضافه کردن پورت های باز تصادفی کنید که از مد افتاده اند، هک خواهید شد! فقط در صورت لزوم پورت ها را باز کنید.
پورت ها دقیقا چه کاری انجام میدهند؟
پورت ها مانند در های ورودی و خروجی سیستم شما به دنیای اینترنت یا به صورت دقیق تر شبکه هستند. تعداد زیادی در برای ارتباط سیستم شما با دنیای اینترنت وجود دارد که می توانید هر از آن ها را بسته یا باز کنید.
پورت ها چه تفاوتی با یکدیگر دارند؟
پورت ها در دستگاه های متصل به شبکه از یک سیستم استاندارد استفاده می کنند. پورت 0 تا 1023 که مجموعا 1024 پورت اول هستند، پورت های شناخته شده نامیده میشوند. این درگاه های ورود و خروج برای سرویس های متداول رزرو شده اند. مثلا پورت 80 برای سرویس HTTP یا پورت 22 برای سرویس SSH رزرو شده است.
اما بخش دوم پورت ها یعنی از پورت شماره 1024 تا پورت شماره 49151 پورت های ثبت شده نامیده می شوند، که برای بازی های آنلاین، سرورهای وب خصوصی و غیره مورد استفاده قرار میگیرند.
بخش سوم نیز پورت های شماره 49152 تا آخرین پورت یعنی 65535 هستند که به آن ها پورت های خصوصی یا پویا می گویند.
جمع بندی
در این مطلب دستورالعمل هایی در مورد باز کردن و آزمایش یک پورت در لینوکس ارائه کردیم. باز کردن یک پورت به دلایل مختلف می تواند مفید باشد، مانند اجازه دادن به ترافیک ورودی برای دسترسی به یک سرویس یا برنامه خاص در سیستم شما. همان طور که گفتیم پیش از هر چیز باید لیستی از پورت هایی که از قبل باز هستند داشته باشید. سپس می توانید با استفاده از iptables، Firewalld، UFW پورت های مورد نظر خود را باز کنید. پس از باز کردن پورت کافی است از مطمئن شوید که این کار را به درستی انجام داده اید.
نظرات و پیشنهادات شما؟
در این مطلب از کلاسیک وب دستورات پورت در لینوکس را مورد بررسی قرار دادیم. امیدوارم این مطلب بر اطلاعات شما در این زمینه افزوده باشد. از دیدگاه ها و تجربه های شما در این زمینه استقبال می کنیم.
آخرین دیدگاه ها
تا کنون دیدگاهی ثبت نشده است.