آموزش انتقال Rule های IPtables به سرور جدید

چگونه Rule های فایروال iptables را به سرور دیگری منتقل کنیم؟ زمانی که تصمیم می گیرید از یک سرور به سرور دیگری مهاجرت کنید ، مطلوب است قوانینی که روی فایروال IPTable در نظر گرفته اید به عنوان بخشی از این پروسه در نظر بگیرید. این آموزش به شما نشان خواهد داد که چگونه Rule های Active خود را از یک سرور به سرور دیگر انتقال دهید.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

پیش نیازها

این آموزش دو سرور نیاز دارد.ما یک سرور نیاز داریم که روی آن یک سری قوانین IPTable فعال شده است و ما آن را سرور منبع (به اختصار سرور A) می نامیم. و در طرف دیگر سرور مقصد که ما می خواهیم با انتقال سیاست ها به آن مهاجرت کنیم واقع شده است (که به اختصار سرور B) می نامیم. به عنوان یک نکته این را هم بدانید که شما روی هر دو سرور نیاز به دسترسی Root دارید.

نمایش قوانین موجود روی IPTable

پیش از اینکه قوانین روی IPTable را مهاجرت دهیم ، بریم ببینیم چه مجموعه هایی روی آن اعمال شده است. شما می تونید اون رو روی سرور A با دستور زیر انحام بدید:

sudo iptables -S

خروجی نمونه:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 15.15.15.51/32 -j DROP

به عنوان مثال قوانین بالا قوانینی است که می بایستی روی سرور جدید مهاجرت داده شود

صادر کردن(EXPORT) قوانین IPTable

فرمان iptables-save قوانین جاری IPTable را به خروجی استاندارد لینوکس یعنی stdout ارسال می کند(چاپ کردن روی صفحه نمایش).این راحتزین راهی است که ما قوانین را به یک فایل خروجی بگیریم یا اصطلاحا صادر کنیم. با تغییر مسیر دادن stdout به یک فایل. بروی سرور A ، با استفاده از دستور iptables-save یکی از قوانینی که میخواهیم مهاجرت دهیم روی فایلی که آن را "iptables-export" نامیدیم قرار می دهیم ، مطابق این نمونه :

    cd ~
    sudo iptables-save > iptables-export

این دستور علاوه بر اینکه فایل "iptables-export" را روی دایرکتوری HOME شما ایجاد می کند، این فایل می تواند در سرورهای مختلف به عنوان فایل قوانین IPTable استفاده شود.

نمایش محتوای فایل (اختیاری)

بریم یک نگاه سریع به درون فایل ایجاد شده بندازیم ، با دستور cat فایل را روی ترمینال چاپ می کنیم.

cat iptables-export

یک خروجی مثل این میده:

# Generated by iptables-save v1.4.21 on Tue Sep  1 17:32:29 2015
*filter
:INPUT ACCEPT [135:10578]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [8364:1557108]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 15.15.15.51/32 -j DROP
COMMIT
# Completed on Tue Sep  1 17:32:29 2015

همونطور که می بینید این فایل حاوی قوانین فعال IPTable است حالا آماده مهاجرت به سرور B هستیم.

کپی کردن قوانین روی سرور مقصد

ما نیاز داریم فایل قوانین را روی سرور مقصد کپی کنیم. منظورم همون سرور B هستش. ساده ترین راه اینه که از دستور scp برای کپی کردن اطلاعات روی سرور مقصد استفاده کنیم. ما در اینجا می خواهیم نشون بدیم که چه جوری یک فایل رو روی شبکه و در سرور B در پوشه /tmp میشه کپی کرد.بروی سرور A شما دستور scp رو اجرا می کنید. فقط از آدرس وارد شده مطمئن باشید ، این بخشش چک کردن آدرسا با خودتون ، من با مثال پیش میرم مانند نمونه زیر:

scp iptables-export user@server_b_ip_address:/tmp

جای serverbip_address آدرس IP سرور B رو وارد کنید. روی سرور مقصد صحت کپی رو بررسی نمایید. همین

وارد کردن قوانین

از کل کار فقط این مونده این قوانین رو از پوشه گفته شده وارد IPTable کنیم ، روی هر دو تا پلت فرم Ubuntu و CentOS توضیح میدم و بحث رو جمع می کنم ، اول توسط دستور زیر قوانین رو وارد IPTable می کنیم و بعد آنها رو ذخیره می کنیم:

sudo iptables-restore < /tmp/iptables-export

ذخیره قوانین

Ubuntu

ساده ترین راه راه اندازی قوانین روی سرور ابونتو اینه که شما از بسته iptables-persistent استفاده کنید که مزیت خاص خودش رو داره که مهمترینش اینه که قوانین رو به IPTable اضافه می کنه بدون اینکه نیاز باشه اون رو Reboot کنید. این بسته رو با apt-get به شکل زیر نصب کنید:

sudo apt-get install iptables-persistent

در طول نصب از شما پرسیده می شود که می خواهید قوانین فعلی را حفظ کنید که 100 در 100 جوابتون بلی (yes) باشه که بد بخت نشید(اگه سرور اجراییه). حالا برای اینکه قوانین خودتونو بروز کنید و تغییرات رو هم ذخیره کنید از دستور زیر استفاده کنید:

sudo invoke-rc.d iptables-persistent save

و تمام

CentOS 6 و نسخه های قبل ترش

در نسخه های مختلف این سیستم عامل حتی 7 از FirewallD به طور پیش فرض استفاده می کنه ، شما می تنید برای ذخیره سازی و راه اندازی مجدد IPTable از دستور زیر استفاده کنید:

sudo service iptables save

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


محسن نیک نژاد
محسن نیک نژاد

متخصص و علاقمند حوزه امنیت نرم افزار عاشق لینوکس و ابزارهای متن باز

نظرات