باز کردن پورت ها در لینوکس و پورت نقطه پایانی در شبکه است. به آن مانند دری فکر کنید که به یک اتاق خاص یا دنیای بیرون منتهی می شود، اما روی رایانه شما. هر کاری که در اینترنت انجام می دهید از یک پورت یا یک سری پورت خاص استفاده می کند.
به عنوان مثال، فرض کنید می خواهید سرور Minecraft (آموزش ساخت سرور ماینکرفت) خود را اجرا کنید. برای انجام این کار، باید پورتی را باز کنید تا کاربران از طریق آن به آن متصل شوند. همین امر در مورد اجرای وب، ایمیل یا سرور FTP شما نیز صدق می کند.
پورت ها در تمام دستگاه های متصل به شبکه استاندارد شده اند. ۱۰۲۴ پورت اول (از ۰ تا ۱۰۲۳) به عنوان شماره پورتهای شناخته شده نامیده می شوند. آنها برای متداول ترین سرویس ها مانند HTTP و HTTP (به ترتیب درگاه ۸۰ و ۴۴۳) و SSH (پورت ۲۲) رزرو شده اند.
شماره پورتهای بالای ۱۰۲۴ به عنوان پورتهای زودگذر شناخته می شوند و معمولاً برای بازی های آنلاین، سرورهای وب خصوصی و غیره در دسترس شما هستند. پورتهای ۱۰۲۴ تا ۴۹۱۵۱ پورتهای ثبت شده یا کاربر نامیده می شوند، در حالی که پورتهای ۴۹۱۵۲ تا ۶۵۵۳۵ به عنوان پورتهای پویا یا خصوصی شناخته می شوند.
مشاهده لیست پورتهای باز در لینوکس
قبل از شروع تلاش برای باز کردن یک پورت در لینوکس، باید مطمئن شوید که از قبل در حال استفاده نیست. شما می توانید این کار را با استفاده از دستور netstat که در اکثر توزیع های لینوکس موجود است انجام دهید. اگر توزیع شما netstat ندارد، می توانید به جای آن از ss استفاده کنید.
netstat -lntu
ss -lntu
با این کار تمام سوکت ها (-l)، همراه با شماره پورت (-n) چاپ می شود. این شامل پورتهای TCP (-t) و همچنین UDP (-u) است. اگر سیستم شما netstat ندارد، فقط از ss با همان پارامترها استفاده کنید.
نحوه باز کردن پورت ها در لینوکس
در این مثال، فرض می کنیم که می خواهیم پورت ۴۰۰۰ را به اتصالات TCP باز کنیم. ابتدا باید مطمئن شویم که پورت قبلاً در حال استفاده نیست. ما این کار را از طریق netstat یا ss انجام می دهیم.
netstat -na | grep :4000
ss -na | grep :4000
با فرض خالی بودن خروجی، میتوانیم قوانین پورت مناسب را به فایروال سیستم اضافه کنیم. روشهای این کار با توجه به توزیع شما و اینکه آیا از فایروال جدیدتر ufw یا firewalld استفاده میکند، متفاوت خواهد بود. اوبونتو از ufw حمایت می کند، در حالی که CentOS معمولاً به جای آن از firewalld استفاده می کند. البته هنوز هم برخی از توزیع های لینوکس از فایروال قدیمی iptables استفاده می کنند.
برای کاربران اوبونتو و سایر سیستم های مبتنی بر فایروال ufw
اوبونتو و برخی توزیعهای دیگر به جای استفاده از فایروال قدیمیتر iptables از ufw استفاده میکنند. در این سیستم ها، دستور زیر پورت را باز می کند.
sudo ufw allow 4000
به چند مرحله بعد بروید و پورت تازه باز شده خود را تست کنید تا مطمئن شوید کار می کند.
نحوه باز کردن پورت ها در CentOS و سایر سیستم های مبتنی بر firewalld
اگر سیستم شما از firewalld استفاده می کند، بهترین کار این است که از دستور firewall-cmd برای به روز رسانی قوانین استفاده کنید.
sudo firewall-cmd --add-port=4000/tcp
این یک تغییر دائمی نخواهد بود، اما پس از آزمایش پورت، نحوه تداوم قوانین پس از راهاندازی مجدد را پوشش خواهیم داد.
برای سایر توزیع های لینوکس
اگر سیستم لینوکس شما ufw یا firewalld ندارد، باید از iptables استفاده کنید. اگر نصب نشده است، آن را با استفاده از مدیر پکیج انتخابی خود دریافت کنید. پس از نصب، این دستورات پورت ۴۰۰۰ را باز می کند:
sudo iptables -A INPUT -p tcp --dport 4000 -j ACCEPT sudo service iptables restart
اگر سیستم شما از systemctl استفاده می کند، دستور دوم را با:
sudo systemctl restart iptables
تست پورت های تازه باز شده برای اتصالات
در مرحله بعد، ما باید پورت را آزمایش کنیم تا مطمئن شویم که اتصالات را می پذیرد. ما این کار را با استفاده از netcat (nc) برای گوش دادن به پورت انجام می دهیم، سپس سعی می کنیم به آن telnet کنیم.
ابتدا یک پنجره ترمینال را باز کنید و این دستور را اجرا کنید:
sudo ls | nc -l -p 4000
آن را در حال اجرا (گوش دادن) بگذارید و یک پنجره ترمینال دوم را باز کنید. در آن پنجره، از telnet برای آزمایش اتصال استفاده خواهید کرد. اگر telnet نصب نشده است، این کار را با استفاده از مدیریت پکیج خود انجام دهید.
telnet [hostname/IP address] [port number]
آدرس IP سیستم خود را با [hostname/IP address] و شماره پورتی را که باز کردهاید جایگزین کنید.
telnet localhost 4000
شما باید خروجی زیر را ببینید که نشان دهنده اتصال باز با nc است.
همچنین می توانیم با استفاده از nmap نشان دهیم که پورت باز است. مجدداً، اگر دستور قبلاً نصب نشده است، از مدیر بسته خود برای نصب آن استفاده کنید.
nmap localhost -p 4000
توجه داشته باشید که nmap فقط پورتهای باز را لیست می کند که در حال گوش دادن به اتصال هستند. به همین دلیل است که ما از netcat برای آزمایش، برای استفاده از آن پورت استفاده می کنیم. در غیر این صورت، پورت به عنوان باز ثبت نمی شود.
نحوه باز کردن دائمی پورت در لینوکس
هنگامی که پورت باز خود را آزمایش کردید و مطمئن شدید که کار می کند، احتمالاً می خواهید تغییر را دائمی کنید. در غیر این صورت، تغییرات ممکن است پس از راه اندازی مجدد باقی نمانند. اگر کاربر اوبونتو هستید یا از فایروال ufw استفاده می کنید، لازم نیست نگران این موضوع باشید. قوانین ufw در راه اندازی مجدد ریست نمی شوند.
برای کاربران firewalld
ایجاد یک قانون پورت دائمی با firewalld آسان است. فقط فلگ —permanent را به دستور اولیه خود اضافه کنید. در قوانین فایروال سیستم لینوکس شما در هنگام راه اندازی گنجانده می شود.
sudo firewall-cmd --add-port=4000/tcp --permanent
برای کاربران iptables
فایروال iptables بسیار دردسرسازتر است (شاید دلیل خوبی برای ارتقاء به firewalld یا ufw باشد). برای باز کردن دائمی یک پورت در iptables، میتوانید پکیج iptables-persistent را برای کمک نصب کنید.
هنگامی که برای اولین بار iptables-persistent را روی یک سیستم مبتنی بر دبیان نصب می کنید، قوانین فعلی شما را در /etc/iptables/rules.v4 یا /etc/iptables/rules.v6 ذخیره می کند. برای اضافه کردن قوانین جدید، دستور زیر را باید اجرا کنید:
sudo iptables-save > /etc/iptables/rules.v4
یا :
sudo iptables-save > /etc/iptables/rules.v6
برای کسانی که از توزیع های لینوکس مبتنی بر RPM استفاده می کنند، کمی متفاوت است. این پکیج iptables-services نامیده می شود و فایل های ذخیره شده عبارتند از /etc/sysconfig/iptables و /etc/sysconfig/ip6tables.
در توزیع های مبتنی بر RPM، دستور متفاوتی نیز برای پورتهای IPv6 استفاده می شود. ذخیره قوانین شما با استفاده از یکی از این دو دستور انجام می شود:
sudo iptables-save > /etc/sysconfig/iptables sudo ip6tables-save > /etc/sysconfig/iptables
با گذشت زمان، نیازهای سرور شما ممکن است تغییر کند. همانطور که باید در جریان حساب های کاربری در دستگاه لینوکس خود باشید، باید پورتهای باز خود را نیز به طور مرتب بررسی کنید. هر پورت باز که دیگر مورد نیاز نیست را ببندید. در کنار تغییر منظم رمز عبور خود، این کار به شما کمک می کند از نفوذ سیستم و سوء استفاده های امنیتی جلوگیری کنید.