آموزش iptables فایروال لینوکس + دستورات کاربردی و تنظیمات : فایروال ها نقش مهمی در تامین امنیت سیستم ها و شبکه های لینوکسی ایفا می­کنند. آنها با کنترل و مدیریت ترافیک شبکه های ورودی و خروجی بر اساس مجموعه ای از قوانین مانند یک محافظ امنیتی بین شبکه داخلی و خارجی عمل می­کنند. مجموعه ای از قوانین فایروال تنها اجازه می دهد تا اتصالات و درخواست های مجاز از فایروال عبور کرده و آنهایی که تعریف نشده اند یا غیرمجاز تعریف شده اند مسدود می­ شوند . ده ها فایروال متن باز در دسترس مدیران شبکه­ ها و سیستم­ های لینوکسی قرار دارد که از آن جمله می توان به Iptables , IpCop Shorewall , UFW , Vuurmuur , pfSense , IPFire , SmoothWall , Endian و CSF اشاره کرد که در این مجال به بررسیiptables می ­پردازیم.

 Iptables  چیست؟

Iptables  یا Netfilter محبوب ترین و پر استفاده ترین فایروال لینوکسی مبتنی بر خط فرمان است. iptables  خط اول دفاعی سرورهای لینوکس است و بسیاری از مدیران سرورها از آن برای کانفیگ و ایجاد تنظیمات در سرورهای لینوکس استفاده می­کنند. iptables بسته ها را درون پشته شبکه در داخل هسته لینوکس فیلتر می­کند. iptables  معمولا header  هر بسته را بررسی می کند و به محتوای بسته اهمیتی نمی دهد بنابراین از سرعت بسیار زیادی برخوردار است و معمولا تاثیر چندانی در کاهش سرعت پاسخگویی سیستم ندارد، iptables همچنین قادر است یک رشته را درون بسته ها جستجو کند، البته این کار تاحدودی باعث کاهش سرعت سیستم خواهد شد.

iptables  امکانات زیادی در اختیار یک مدیر سرور می دهد ، بوسیله iptables می­توان پکت ها را بر اساس پروتکل مورد استفاده در ارتباط ، شماره ip  گیرنده و فرستنده ، شماره پورت مورد در ارتباط ، مک آدرس و آدرس فیزیکی سیستم ها ، دامنه ای از آدرس های ip ، زمان برقراری ارتباط ، بخش های مختلفی از بسته ها و تنظیمات IPSec ، طول بسته ها ، انتخاب تصادفی بسته ها ، انتخاب n امین بسته ، کاربر یا گروه ارسال کننده بسته ، پردازش ارسال کننده بسته ، بخش های TOS  و TTL  هدر ip   و تعداد ارتباطات در یک بازه زمانی را کنترل و فیلتر کرد.

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

قوانین iptable بسته به نوع کاربرد در جداول filter table ،  nat tableوmangling table و در زنجیر(chain)هایی از دستورات دسته بندی می شوند. وظیفه filter table سیاست گذاری و دادن مجوز برای ورود و خروج بسته های TCP/IP به سیستم است. این جدول شامل سه زنجیر INPUT برای ترافیک ورودی به سیستم ، OUTPUT برای ترافیک خروجی از سیستم و FORWARD برای ترافیک فوروارد شده از سیستم است.

آموزش iptables فایروال لینوکس

آموزش iptables فایروال لینوکس

وظیفه nat table سیاست گذاری و دادن مجوز عملیات routing است و قوانین مربوط به تغییر آدرس IP و یا پورت در جدول   nat قرار می گیرند.  این جدول شامل سه زنجیر PREROUTING برای شبکه مقصد در ترافیک ورودی به سیستم ، POSTROUTING  برای شبکه مبدا ترافیک خروجی از سیستم و OUTPUT است.

از جدول mangle  می توان برای مارک دار کردن بسته ها و عملیات بررسی بسته ها قبل از ورود به جداول بالاتر استفاده کرد . کلیه اعمال پیشرفته مربوط به دستکاری فیلدهای header در بسته های ارسالی در شبکه توسط قوانین موجود در این جدول صورت می گیرد.

سوئیچ ها و دستورات iptable

  • A- برای افزودن دستور به انتهای یک زنجیره از جدول قوانین استفاده می شود.

  • I- برای افزودن به مکان خاصی از زنجیره جدول قوانین استفاده می شود.

  • D- برای حذف دستور از مکان خاصی از زنجیره جدول قوانین استفاده می شود.

  • R- برای جایگزین کردن دستور جاری یا یک دستور در مکان خاصی از زنجیره جدول قوانین استفاده می شود.

  • p- برای مشخص کردن نوع پروتکل مورد استفاده قرار می­گیرد.

  • t- برای مشخص کردن جدول مورد استفاده قرار می­گیرد.

  • s- یا source– برای مشخص کردن شماره ip  مبدا مورد استفاده قرار می­گیرد.

  • d- یا destination– برای مشخص کردن شماره ip  مقصد مورد استفاده قرار می­گیرد.

  • i- یا in-interface– برای مشخص کردن کارت شبکه ورودی مورد استفاده قرار می­گیرد.

  • o- یا out-interface– برای مشخص کردن کارت شبکه خروجی مورد استفاده قرار می­گیرد.

  • sport– برای مشخص کردن شماره پورت مبدا مورد استفاده قرار می­گیرد.

  • dport– برای مشحص کردن شماره پورت مقصد مورد استفاده قرار می­گیرد.

  • L- برای لیست کردن قوانین موجود در یک زنجیر مورد استفاده قرار می­گیرد.

  • N- برای ایجاد زنجیر جدید مورد استفاده قرار می­گیرد.

  • X- برای حذف یک زنجیر مورد استفاده قرار می­گیرد.

  • F- برای پاک کردن قوانین مورد استفاده قرار می­گیرد.

  • j- مشخص کردن نحوه برخورد با بسته مورد استفاده قرار می­گیرد. این سویچ به معنی jump  بوده و به موارد DROP ، LOG ، ACCEPT  و REJECT اشاره می کند. در اینجا تفاوتی که بین DROP و REJECT وجود دارد و آ ن این است که در DROP برای فرستنده پیامی مبنی بر حذف بسته  ارسال نمی­کند ولی در REJECT به فرستنده یک بسته عدم پذیرش ترافیک ارسال خواهد شد.

  • iptables-save > /etc/iptables.rules برای پشتیبان گیری تنظیمات مورد استفاده قرار می­گیرد.

  • post-down iptables-save > /etc/iptables.rules برای پشتیبان گیری تنظیمات قبل از هر خاموش شدن سیستم مورد استفاده قرار می­گیرد.

  • iptables-restore < /etc/iptables.rules برای بازیابی تنظیمات مورد استفاده قرار می­گیرد.

  • m- برای مشخص کردن ماژول مورد استفاده قرار می گیرد.

  • m mac –mac-source- برای مشخص کردن مک آدرس مبدا مورد استفاده قرار می گیرد.

بطور مثال دستور زیر پورت ۲۲  را باز می کند:

 
۱
iptables A OUTPUT o eth0 p tcp sport 22 m state state ESTABLISHED j ACCEPT

مهم ترین و پرکاربردترین دستورات و تنظیمات iptables

  • پاک کردن تمام تنظیمات جاری

 
۱
iptables F

ایجاد تنظیمات عمومی و مسدود کردن همه دسترسی ها

 
۱
۲
۳
۴
iptables P INPUT DROP
 
iptables P FORWARD DROP
iptables P OUTPUT DROP

  • مسدود کردن یک ip خاص

 
۱
iptables A INPUT s xxx.xxx.xxx.xxx j DROP

  • باز کردن پورت SSH برای تمامی ارتباطات ورودی

 
۱
۲
iptables A INPUT i eth0 p tcp dport 22 m state state NEW,ESTABLISHED j ACCEPT
iptables A OUTPUT o eth0 p tcp sport 22 m state state ESTABLISHED j ACCEPT

  • باز کردن پورت ssh برای یک ip  یا رنج ip خاص

 
۱
۲
۳
iptables A INPUT i eth0 p tcp s xxx.xxx.xxx.xxx/24 dport 22 m state state NEW,ESTABLISHED j ACCEPT
iptables A INPUT i eth0 p tcp s xxx.xxx.xxx.xxx dport 22 m state state NEW,ESTABLISHED j ACCEPT
iptables A OUTPUT o eth0 p tcp sport 22 m state state ESTABLISHED j ACCEPT

  • باز کردن پورت http

 
۱
۲
iptables A INPUT i eth0 p tcp dport 80 m state state NEW,ESTABLISHED j ACCEPT
iptables A OUTPUT o eth0 p tcp sport 80 m state state ESTABLISHED j ACCEPT

  • باز کردن پورت https

 
۱
۲
iptables A INPUT i eth0 p tcp dport 443 m state state NEW,ESTABLISHED j ACCEPT
iptables A OUTPUT o eth0 p tcp sport 443 m state state ESTABLISHED j ACCEPT

  • باز کردن چند پورت بصورت یکجا

 
۱
۲
iptables A INPUT i eth0 p tcp m multiport dports 22,80,443 m state state NEW,ESTABLISHED j ACCEPT
iptables A OUTPUT o eth0 p tcp m multiport sports 22,80,443 m state state ESTABLISHED j ACCEPT

  • باز کردن پورت برای ارتباط خروجی ssh

 
۱
۲
iptables A OUTPUT o eth0 p tcp dport 22 m state state NEW,ESTABLISHED j ACCEPT
iptables A INPUT i eth0 p tcp sport 22 m state state ESTABLISHED j ACCEPT

  • باز کردن پورت خروجی ssh تنها برای یک شبکه خاص

 
۱
۲
iptables A OUTPUT o eth0 p tcp d 192.168.101.0/24 dport 22 m state state NEW,ESTABLISHED j ACCEPT
iptables A INPUT i eth0 p tcp sport 22 m state state ESTABLISHED j ACCEPT

  • باز کردن پورت https برای ارتباطات خروجی

 
۱
۲
iptables A OUTPUT o eth0 p tcp dport 443 m state state NEW,ESTABLISHED j ACCEPT
iptables A INPUT i eth0 p tcp sport 443 m state state ESTABLISHED j ACCEPT

  • ایجاد امکانping از داخل به خارج

 
۱
۲
iptables A OUTPUT p icmp icmptype echorequest j ACCEPT
iptables A INPUT p icmp icmptype echoreply j ACCEPT

  • ایجاد امکانping از خارج به داخل

 
۱
۲
iptables A INPUT p icmp icmptype echorequest j ACCEPT
iptables A OUTPUT p icmp icmptype echoreply j ACCEPT

  • ایجاد امکان دسترسی loopback

 
۱
۲
iptables A INPUT i lo j ACCEPT
iptables A OUTPUT o lo j ACCEPT
  • ایجاد امکان دسترسی به شبکه خارجیeth1 از شبکه داخلی eth0

 
۱
iptables A FORWARD i eth0 o eth1 j ACCEPT

  • باز کردن دسترسی خروجی پورت dns

 
۱
۲
iptables A OUTPUT p udp o eth0 dport 53 j ACCEPT
iptables A INPUT p udp i eth0 sport 53 j ACCEPT

  • ذخیره تغییرات iptables

 
۱
service iptables save

آموزش iptables فایروال لینوکس + دستورات کاربردی و تنظیمات

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *