تغییر و اضافه کردن قوانین
قوانین زنجیر را با استفاده از دستورات iptables ، اضافه و اصلاح می کنید. یک دستور iptables ، شامل لغت کلیدی iptables است که با یک آرگومان دنبال می شود و دستور مورد اجرا را مشخص می نماید. به عنوان مثال، iptables -A دستوری برای اضافه کردن یک قانون جدید است ، در حالی که iptables -D ، دستوری برای خذف یک قانون می باشد ، دستورات iptables در جدول 4 لیست شده اند. دستور زیر به سادگی زنجیر ها را به همراه قوانین فعلی آنها که برای سیستم شما تعریف شده اند لیست می کند. خروجی ، مقادیر پیش فرض ایجاد شده توسط دستورات iptables را نشان می دهد.
iptables -L -n
Chain iput (policy ACCEPT);
Chain forward (policy ACCEPT);
Chain output (policy ACCEPT);
جدول 4 : دستورات iptables
زنجیر |
عملکرد |
-A chain |
یک قانون را به یک زنجیر می افزاید. |
-D chain [rulenum] |
قانون مورد تطابق را از یک زنجیر حذف می کند. قانون rulenum ( 1-اولی ) را از chain حذف می نماید. |
-I chain [rulenum] |
قوانین مربوط به بسته های انتقالی |
-R chain rulenum |
قوانین مربوط به تغییر مسیر یا اصلاح بسته های دریافتی ( تنها جدول NAT ) |
RETURN |
قوانین مربوط به تغییر مسیر یا اصلاح بسته های ارسالی ( تنها جدول NAT ) |
-L [chain] |
قوانین موجود در chain یا تمام رنجیر ها را لیست می کند. |
-E [chain] |
یک زنجیر را تغییر نام می دهد. |
-F [chain] |
تمام قوانین موجود در chain یا تمام زنجیر ها را حذف ( خالی ) می کند. |
-R chain |
یک قانون را جایگزین می کند. قانونها از 1 شماره گذاری می گردند. |
-Z [chain] |
شمارنده ها را در chain یا تمام زنجیر ها صفر می کند. |
-N chain |
یک زنجیر توسط کاربر تعریف شده جدید ایجاد می کند. |
-X chain |
یک زنجیر تعریف شده توسط کاربر را حذف می کند. |
-P chain target |
خط مشی روی chain را به target تغییر می دهد. |
برای اضافه کردن یک قانون جدید به یک زنجیر ، از -A استفاده می کنید. از -D برای حذف آن و -R برای جایگزین نمودن آن استفاده نمایید. در زیر دستور ، زنجیری را لیست کنید که قوانین به آن اعمال می شود. مثلا زنجیر INPUT ، OUTPUT یا FORWARD ویا یک زنجیر تعریف شده توسط کاربر. سپس ، سوئیچ های مختلفی لیست می کنید که عملیاتی که می خواهید انجام شود را مشخص می کند ( اکثر آنها همانند آنچه برای ipchains استفاده می شود است ، بجز چند استثناء ). سوئیچ -s آدرس مبدأ الحاقی به بسته ، -d آدرس مقصد و -j هدف را مشخص می کند. هدف ACCEPT به یک بسته اجازه می دهد تا عبور کند. سوئیچ -i اکنون دستگاه ورودی را نشان می دهد و فقط می تواند با زنجیر های INPUT و FORWARD استفاده شود. سوئیچ -o دستگاه خروجی را بیان می کند و تنها برای زنجیر های OUTPUT و FORWARD به کار می رود. جدول 5 ، چند سوئیچ اصلی را لیست کرده است.
جدول 5 : سوئیچ های iptables
سوئیچ |
عملکرد |
-p [!] proto |
یک پروتکل مثل TCP ، UDP ، ICMP یا ALL را مشخص می کند. |
-s [!] address[imask] [!] [port[:port]] |
آدرس مبدأ برای تطابق. با آرگومان port می توانید درگاه را مشخص کنید. |
--sport [!] [porto:port] |
مشخصه درگاه مبدأ. می توانید محدوده ای از درگاه ها را با استفاده از دو نقطه مشخص کنید (port:port). |
-d [!] address[imask] [!] [port[:port]] |
آدرس مقصد برای تطابق. با آرگومان port می توانید در گاه را مشخص کنید.
|
--dport [!] [port[:port]] |
مشخصة درگاه مقصد. |
-icmp-type [!] typename |
نوع ICMP را مشخص می کند. |
-l [!] name[+] |
یک رابط شبکه ای ورودی با استفاده از نامش مشخص می کند ( مثلا eth0 ). علامت + ، مثل یک کاراکتز عمومی عمل می کند. علامت + چسبیده به انتهای نام ، تمام رابطها با آن پیشوند را مورد اشاره قرار می دهد ( eth+ به تمام رابط ها اشاره می کند ) تنها می تواند با زنجیر INPUT استفاده می شود. |
-i target [port] |
هدف یک قانون را مشخص می کند ( [port] را برای هدف REDIRECT مشخص کنید). |
--to-source <ipaddr> [-<ipaddr>] [:port-port] |
با هدف SNAT استفاده می شود ، بسته ها را با آدرس IP جدید مبدأ ، مجددأ می نویسد. |
--to-destination <ipaddr> [-<ipaddr>] [:port-port] |
با هدف dNAT استفاده می شود ، بسته ها را با آدرس IP جدید مقصد ، مجددأ می نویسد. |
-n |
خروجی عددی آدرس ها و درگاهها که با -L استفاده می شود. |
-o [!] name[+] |
یک رابط شبکه ای خروجی ، با استفاده از نامش مشخص می کند ( مثلا eth0 ) تنها می تواند با زنجیر های FORWARD و OUTPUT استفاده شود. |
-t table |
یک جدول برای استفاده ( مثل -t nat برای جدول NAT ) مشخص می کند. |
-v |
حالت مفصل ، جزئیات قانون را نشان می دهد ، با -L استفاده می شود. |
-x |
اعداد را گسترش می دهد (مقادیر دقیق را نمایش می دهد)، با -L استفاده می شود. |
[!] -f |
دومین تطابق را در قطعه های آخر یک بستة قطعه قطعه شده ، مورد تطابق قرار می دهد. |
[!] -v |
نگارش بسته را چاپ می کند. |
! |
یک سوئیچ یا آدرس را منفی می کند. |
-m |
یک ماژول جهت استفاده را مشخص می کند. مثلا state. |
--state |
سوئیچ هایی مثل NEW ، INVALID ، RELATED و ESTABLISHED را برای ماژول state مشخص می کند. برای تعیین وضیعت بسته استفاده می شود. NEW ، بسته های SYN را مورد اشاره قرار می دهد ( تماسهای جدید ). |
--syn |
بسته های SYN ، تماس های جدید. |
--tcp-flags |
پرچمهای TCP : PS, URG, RST, FIN, ACK, SYN و ALL را برای تمام پرچمها. |
--limit |
سوئیچی برای ماژول limit ( -m limit ). برای کنترل نرخ تطابقها استفاده می شود. تعداد مشخصی در هر ثانیه ، عمل تطابق را انجام می دهد. |
-limit-burst |
سوئیچی برای ماژول limit ( -m limit )، حداکثر ترتیب را مشخص می کند قبل از اینکه حد به پایان برسد. برای کنترل حملات denial-of-service استفاده می شود. |