هاست لینوکس پرسرعت سی پنل

مهاجرت از FirewallD به Iptables در لینوکس CentOS 7

با قسمت ۸۹ ام در خدمت شماییم. سیستم عامل CentOS نسخۀ ۷ مثل بیشتر لینوکس های دیگر از چهارچوب netfilter موجود در هستۀ لینوکس برای دسترسی به بسته های در جریان در شبکه استفاده می کند تا آنها را صافی کند. به عبارتی دیگر پایۀ اصلی دیوار آتش CentOS 7 همان netfilter است. اگر با قسمت های قبلی آموزش های کانفیگ سرور لینوکس ما همراه بوده باشید، آموزش های کاملی راجع به دیوار آتش لینوکس خدمت شما ارائه کردیم. می دانید که در نسخه های قبلی CentOS فایروالی که ما با آن کار می کردیم، iptables بود. اما در نسخۀ جدید به FirewallD تغییر کرده است. اما در این قسمت می خواهیم ببینیم چطور از FirewallD به iptables مهاجرت کنیم. حالا چرا ما باید این مهاجرت را انجام دهیم؟ ممکن است شما با دستورات iptables بیشتر کار کرده باشید و با آنها راحت تر باشید. یا زمان لازم برای یادگیری کار کردن با دستورات FirewallD را ندارید. در این صورت شاید بهترین کار این باشد که FirewallD را حذف کنید و مجدد سرویس های iptables را فعال کنید.

مهاجرت از FirewallD به Iptables در لینوکس CentOS 7

مهاجرت از FirewallD به Iptables در لینوکس CentOS 7

به دلیل اینکه هر دوی سرویس های FirewallD و iptables تقریباً کار یکسانی را انجام می دهند، به طور همزمان نمی توانند روی سرور نصب و اجرا شوند. شما باید از بین آنها تنها یکی را انتخاب کنید. به صورت پیش فرض، پس از نصب CentOS 7 فایروال FirewallD در دسترس است. البته باید حتماً پیکربندی های اولیه روی آن انجام گیرد که در آموزش های بعدی حتماً به این مورد هم اشاره خواهم کرد. اما برای اینکه به iptables مهاجرت کنیم، باید FirewallD را غیر فعال کنیم. باید دقت داشت که با اینکه سرویس های iptables در CentOS 7 موجود نیست، اما دستورات آن هنوز وجود دارند و FirewallD هم بر اساس همان دستورات iptables کار خود را انجام می دهد. به عنوان یک پیشنهاد، اگر تازه کار هستید، پیشنهاد ما استفاده از همان FirewallD است. چرا که دستورات بسیار ساده تری نسبت به iptables دارد.

ذخیره کردن قواعد (Rules) فعلی فایروال

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

sudo iptables -S | tee ~/firewalld_iptables_rules

دستور بالا قواعد را درون سندی با نام firewalld_iptables_rules در پوشۀ خانگی کاربر ریشه ذخیره می کند. همین کار را هم برای ip6tables انجام دهید:

sudo ip6tables -S | tee ~/firewalld_ip6tables_rules

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

grep 'ACCEPT\|DROP\|QUEUE\|RETURN\|REJECT\|LOG' ~/firewalld_iptables_rules

دریافت و نصب سرویس های Iptables

در این مرحله باید سرویس های iptables یا iptables services را نصب کنیم. نام دقیق بسته ای که باید نصب کنید iptables-service است. پس دستور زیر را بزنید.

yum -y install iptables-services

پس از انجام این کار، الان سرویس های iptables را روی سرور خود دارید. علاوه بر آن پرونده های iptables و ip6tables م در مسیر /etc/sysconfig حتماً ساخته شدند که تا قبل از این وجود نداشتند.

درون ریزی قواعد دیوار آتش Iptables

حتماً به یاد دارید که ما در اولین مرحله اقدام به خروجی گرفته از قواعد جاریِ دیوار آتش FirewallD کرده بودیم. الان می خواهید آنها را وارد iptables کنیم. به جهت انجام این کار باید پرونده های زیر را ویرایش کنید.

/etc/sysconfig/iptables
/etc/sysconfig/ip6tables

اینکه چطور این پرونده ها را ویرایش کنید، بستگی به این دارد که پردازش های system-config-firewall برای تنظیم این اسناد روی سیستم شما نصب شده است یا خیر. اگر نصب شده باشد، نباید آنها را دستی ویرایش کنید. در غیر این صورت می توانید. برای اینکه از جریان امکان ویرایش دو سند بالا مطلع شوید، دستور زیر را بزنید تا دو خط اول سند iptables نمایش داده شود.

head -2 /etc/sysconfig/iptables

اگر خروجی دستور بالا خطوط زیر بود، به این معنا است که می توانید دستی این اسناد را ویرایش نمایید.

# sample configuration for iptables service
# you can edit this manually or use system-config-firewall

با دستور nano اسناد iptables و ip6tables را باز کنید و خطوطی که درون سند خروجی گرفته شده از مرحلۀ اول داشتید را وارد آن کنید.

nano /etc/sysconfig/iptables
nano /etc/sysconfig/ip6tables

پس از آن برای اینکه بررسی کنید که ببینید همه چیز به درستی کار می کند، از دستورات زیر برای برگردانی دستورات به iptables استفاده کنید.

sh -c 'iptables-restore -t < /etc/sysconfig/iptables'
sh -c 'ip6tables-restore -t < /etc/sysconfig/ip6tables'

اما اگر خروجی دستور head موجود در بالا، خط پایین بود، نمی توانید دو تا سند iptables و ip6tables را به صورت دستی ویرایش کنید. در این حالت باید از دستور system-config-firewall استفاده نمایید. این یک بستۀ نرم افزاری برای مدیریت گرافیکی قواعد دیوار آتش است که حتماً از قبل روی سرور شما نصب شده که پیشنهاد می دهد دو تا سند قواعد iptables را دستی ویرایش نکنید. چون مجدداً توسط system-config-firewall بازنویسی خواهند شد.

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.

از اینجا به بعد کار به دانش کار با iptables بر می گردد که در آموزش های قبلی و بعدی به آنها اشاره کردیم.

متوقف کردن سرویس FirewallD و شروع سرویس Iptables

حالا که نصب iptables را انجام دادید و قواعد آن را هم درون ریزی کردیم، زمان آن رسیده است که FirewallD را خاموش (stop) کنیم.

systemctl stop firewalld && systemctl start iptables; systemctl start ip6tables

دستور بالا همزمان تمام کارهای گفته شده را انجام می دهد. یعنی در اصل خط بالا از ۳ قسمت دستور تشکیل شده است که با && از همدیگر جدا شده است.

برای اینکه مطمئن شوید که Firewalld در حال اجرا نیست، دستور زیر را بزنید.

firewall-cmd –state

نتیجۀ آن باید عبارت not running باشد.

در ضمن الان شما باید قواعدی که درون iptables درون ریزی کردید و تنظیمات آن را انجام دادید را با دستورات زیر شاهد باشید.

iptables -S
ip6tables -S

در حال حاضر باید سرویس‌های iptables و ip6tables فعال بوده و firewalld خاموش باشند. هر چند که اگر سرور را راه اندازی مجدد (Restart) کنید، مجدداً FirewallD فعال می گردد. الان زمان خوبی است که همۀ شرایط و دسترسی به سرویس های مختلف سرور مثل http، dns و … را بررسی کنید که اگر همه چیز خوب پیش می‌رفت، به سراغ مرحلۀ بعدی برویم.

غیرفعال کردن FirewallD و فعال کردن Iptables در زمان راه اندازی سرور

حالا دستور زیر را برای غیرفعال کردن FirewallD بزنید. این کار باعث می شود تا در زمان راه اندازی مجدد سیستم این سرویس روشن نگردد.

systemctl disable firewalld

همچنین برای اینکه جلوی روشن شدن دستیِ FirewallD را هم بگیریم، آن را ماسک می کنیم.

systemctl mask firewalld

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

systemctl enable iptables
systemctl enable ip6tables

الان کار مهاجرت از FirewallD به Iptables در لینوکس CentOS 7 به اتمام رسید. اگر با مراحل بالا به صورت کامل پیش رفته باشید، بدون هیچ مشکلی از الان به بعد می توانید با دستورات و ساختار iptables برای پیکربندی دیوارآتش سرور کار کنید. در قسمت بعدی به سراغ آموزش های فایروال FirewallD خواهیم رفت.

دیدگاه تان را ارسال کنید.

لطفاً از درج نظرات خارج از موضوع این صفحه خودداری کنید!