اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

ترفندها و دستورات iptables (فایروال لینوکس)

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    ترفندها و دستورات iptables (فایروال لینوکس)

    در این مقاله نحوه کارکرد فایروال در سیستم عامل لینوکس را بررسی خواهیم کرد، همچنین خواهیم فهمید که iptable در لینوکس چیست؟ فایروال تصمیم گیرنده سرنوشت packet های ورودی و خروجی به سیستم است. iptables در حقیقت یک rule براساس firewall است و به صورت پیش فرض روی اکثر سیستم عامل های لینوکس نصب شده میباشد و به صورت پیش فرض بدون هیچ rule در حال اجراست. iptable در کرنل 2.4 موجود بود و قبل از آن با نام های ipchains یا ipfwadm وجود داشت. iptables یک ابزار front-end میباشد که با کرنل صحبت کرده و تصمیم میگیرد که پکت ها را فیلتر کند.
    دستورات iptables در لینوکس


    این مطلب ممکن است شما را با دستورهای ابتدایی iptable آشنا کند همچنین با rule های عملی iptable که ممکن است شما به آنها نیاز داشته باشید.

    سرویس های متفاوتی برای پروتکل های متفاوت مورد استفاده قرار میگیرند، همانند :
    1. iptables applies to IPv4.
    2. ip6tables applies to IPv6.
    3. arptables applies to ARP.
    4. ebtables applies to Ethernet frames..



    فایل های اصلی iptable به قرار زیر میباشد :

    /etc/init.d/iptables : فایل اسکریپت init برای start ،stop ،restart و save کردن مجموعه قوانین (ruleset)

    /etc/sysconfig/iptables : مکانی برای ذخیره مجموعه قوانین

    /sbin/iptables : فایل binary


    در حال حاضر 3 جدول زیر موجود میباشند :
    • Filter
    • NAT
    • Mangle




    همچنین 4 تا chain کلی وجود دارند :

    INPUT :
    chain پیش فرض وارد شده به سیستم

    OUTPUT :
    chain پیش فرض خارج شده از سیستم

    FORWARD :
    chain پیش فرض برای پکت هایی که از طریق interface دیگر ارسال شده اند.

    RH-Firewall-1-INPUT :
    chain که به صورت custom توسط یوزر (user-defined custom chain) تعریف میشود.


    توجه : فایل های اصلی که در بالا مطرح شدند ممکن است در linux ubuntu کمی متفاوت باشند. نحوه start ،stop و restart کردن firewall در iptable به شرح زیر میباشد :
    کد:
    # /etc/init.d/iptables start
    # /etc/init.d/iptables stop
    # /etc/init.d/iptables restart

    برای start کردن iptables در هنگام بوت سیستم دستور زیر را اجرا میکنیم :
    کد:
    #chkconfig --level 345 iptables on

    برای ذخیره کردن مجموعه قوانین iptables از دستور زیر استفاده میشود. زمانی که سیستم reboot شد و سرویس iptables ریستارت شد rule های موجود reset یا اصطلاحا (Flush Out) میشوند. دستور زیر مجموعه قوانین iptables را به صورت پیش فرض در فایل /etc/sysconfig /iptables ذخیره میکند و قوانین اعمال گشته یا به عبارتی دیگر بعد از flush out در iptables قوانین restor میشوند :
    کد:
    #service iptables save

    برای بررسی وضعیت iptables/firewall از دستور زیر استفاده میکنیم. آپشن -L (ال بزرگ) در حقیقت مجموعه قوانین را لیست میکند. -v برای verbose و آپشن -n برای نمایش به فرمت numeric (عددی) مورد استفاده قرار میگیرد :
    کد:
    [root@mohammad ~]# iptables -L -n -v
    
    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination
        6   396 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
    
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination
        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
    
    Chain OUTPUT (policy ACCEPT 5 packets, 588 bytes)
     pkts bytes target     prot opt in     out     source               destination

    برای نمایش rule های iptables با شمارنده خط (line numbers) از دستور زیر استفاده میکنیم. با کمک عبارت --line-numbers شما میتوانید rule ها را اضافه و یا حذف کنید :
    کد:
    [root@mohammad ~]# iptables -n -L -v --line-numbers
    
    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
    num   pkts bytes target     prot opt in     out     source               destination
    1       51  4080 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
    3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
    4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
    5        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
    
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    num   pkts bytes target     prot opt in     out     source               destination
    1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
    
    Chain OUTPUT (policy ACCEPT 45 packets, 5384 bytes)
    num   pkts bytes target     prot opt in     out     source               destination

    برای پاک کردن قوانین iptables و یا اصطلاحا flush کردن از دستور زیر استفاده میکنیم. که این دستور تمامی قوانین را از iptables حذف میکند. دقت کنید قبل از اجرای این کامند حتما از مجموعه قوانین backup بگیرید :
    کد:
    [root@mohammad ~]# iptables -F

    برای حذف و یا افزودن قوانین ابتدا به قوانین موجود در chain ها را نگاهی می اندازیم. دستورات زیر به ترتیب مجموعه قوانین در chain های input و output را به همراه شمارنده rules (این که rule مورد نظر چندمین rule است) نمایش میدهند که به ما کمک میکند تا قوانین را اضافه و یا حذف کنید :
    کد:
    [root@mohammad ~]# iptables -L INPUT -n --line-numbers
    
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination
    1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
    3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
    4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
    5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

    کد:
    [root@mohammad ~]# iptables -L OUTPUT -n --line-numbers
    Chain OUTPUT (policy ACCEPT)
    num  target     prot opt source               destination
    به طور مثال اگر شما بخواهید rule شماره 5 را از chain input حذف کنید باید از دستور زیر استفاده نمایید :
    کد:
    [root@mohammad ~]# iptables -D INPUT 5

    برای وارد کردن یا افزودن rule به chain در input بین مجموعه قوانین 4 و 5 باید دستور زیر را اجرا نمایید :
    کد:
    [root@mohammad ~]# iptables -I INPUT 5 -s ipaddress -j DROP

    همچنین توصیه میشود مقالات زیر را مطالعه کنید :

    دستورات مفید Firewalld برای تنظیم و مدیریت فایروال در لینوکس

    تنظیمات FirewallD در لینوکس RHEL/CentOS 7 و Fedora 21

    نحوه اضافه کردن یک Service یا Port به FirewallD

    آموزش تنظیمات فایروال لینوکس (iptable)

    نحوه بستن/مسدود کردن ping در فایروال لینوکس

    نحوه ی نصب و راه اندازی فایروال CSF در RHEL/CentOs و Fedora

    آموزش نصب و کانفیگ pfsense 2.3.2 firewall/router


    در مقاله بالا تلاش کردیم تا استفاده اولیه و کاربردهای iptables را برای مبتدیان پوشش دهیم. شما ممکن از بعد از درک کامل TCP/IP و علم کافی از سایر تنظیمات خود بتوانید rule های پیچیده ای ایجاد کنید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-07-2021, 10:31 AM.

    #2
    لطفا دو دستور زیر را بزارید
    من یک تانل زدم با اینترفیس ppp0
    مشکلی که دارم فکر میکنم فایروال لینوکس نمیزاره داده از این اینرفیس به دسترسی وارد و خارج بشه
    ای پی لوکال اینترفیس 10.0.0.1 ای پی تانل اختصاص داده شده به لینوکس 10.0.0.254

    کامنت


      #3
      خب فایروال تون رو غیرفعال کنید ببینید مشکل برطرف میشه یا نه؟ اگر نشد که ربطی به iptable نداره

      من قلبی بزرگ با رویاهایی بزرگ دارم. دانسته هایمان را با هم به اشتراک بگذاریم.

      کامنت


        #4
        نوشته شده توسط worldnet مشاهده پست
        لطفا دو دستور زیر را بزارید
        من یک تانل زدم با اینترفیس ppp0
        مشکلی که دارم فکر میکنم فایروال لینوکس نمیزاره داده از این اینرفیس به دسترسی وارد و خارج بشه
        ای پی لوکال اینترفیس 10.0.0.1 ای پی تانل اختصاص داده شده به لینوکس 10.0.0.254
        این رول باید مشکلو حل کنه.
        کد:
        iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

        کامنت

        درباره انجمن منطقه لینوکسی ها

        انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

        شبکه های اجتماعی
        در حال انجام ...
        X