یکی از مفید ترین الحاقات ، حالتی است که به طور ساده می تواند اطلاعات ردیابی برای یک بسته را تشخیص دهد. ردیابی تماس یکی از ، اطلاعاتی در مورد یک تماس را نگه می دارد. مثل مبدا ، مقصد و درگاه آن. این کار یک ابزار مؤثر برای تعیین بسته هایی است که متعلق به یک تماس برقرار شده یا مرتبط می باشد. ابتدا باید با -m state ماژول حالت را مشخص کنید. سپس قادرید از سوییچ -state استفاده نمایید. در اینجا می توانید هر کدام از حالات زیر را مشخص کنید : 

حالت

توضیح

NEW

یک بسته که یک تماس جدید ایجاد می کند.

ESTABLISHED

یک بسته که به تماس موجود متعلق است.

RELATED

یک بسته که مربوط به ( و نه بخشی از ) یک تماس موجود است. مثل یک خطای ICMP با یک بسته که یک تماس داده ای FTP را برقرار می کند.

INVALID

یک بسته که به دلایلی نمی تواند شناسایی شود.

RELATED+REPLY

یک بسته که مربوط به یک تماس برقرار شده است اما به طور مستقیم بخشی از آن نیست.

 

اگر یک فایروال طراحی می کنید تا شبکه محلی خود را از هر تلاش برای نفوذ به آن از طریق یک شبکه خارجی محفوظ دارید، ممکن است بخواهید بسته های دریافتی را محدود کنید. مسدود کردن تمام بسته ها غیر منطقی است زیرا کاربران متصل به سرویس دهنده های خارجی ( مثل اینترنت ) ، باید اطلاعات را از آنها دریافت کنند. به جای آن می توانید دسترسی یک نوع خاصی از بسته که برای برقراری ارتباط استفاده می شود را مسدود کنید. عقیده بر این است که یک مهاجم باید یک تماس را از خارج برقرار سازد. عناوین این نوع بسته ها ، دارای بیت SYN روشن و بیت های FIN و ACK خالی می باشند. حالت NEW ماژول state با چنین بسته های SYN مطابقت می کند. با مشخص کردن یک هدف DROP برای چنین بسته هایی ، دسترسی تمام بسته هایی که بخشی از یک تلاش برای برقراری تماس با سیستم شما هستند را مسدود می نمایید. هر کسی از خارج سعی کند به سیستم شما وصل شود ، نمی تواند این کار را انجام دهد ، کاربران روی سیستم محلی شما که تماسهای برقرار با میزبان های خارجی دارند ، باز هم نمی توانند این کار را انجام دهد. کاربران روی سیستم محلی شما که تماسهای برقرار با میزبانهای خارجی دارند ، باز هم می توانند با آنها ارتباط برقرار نمایند. مثال زیر ، هر بسته ای که سعی به ایجاد یک تماس جدید روی رابط eth0 می نماید را رد می کند، اگر چه آنها روی هر رابط دیگری پذیرفته می شوند : 

iptables -A INPUT -m state --state NEW -i eth0 -j DROP 

 

می توانید از عملگر ! روی دستگاه eth0 که با یک هدف ACCEPT ترکیب شده است ، برای ایجاد یک قانون استفاده کنید که تمام بسته های جدید به جز آنهایی که روی دستگاه eth0 هستند را قبول می کند. اگر دستگاه eth0 تنها دستگاهی است که به اینترنت متصل است ، این کار عملا دسترسی خارجی را مسدود می نماید. در همان حال ، اگر عمل ورود برای دیگر دستگاه هایی چون میزبان محلی شما ، آزاد هستند تا تماس برقرار سازند. این نوع قانون INPUT شرطی ، برای استفاده می شود تا دسترسی کلی را به جز چند استثناء اجازه دهد. معمولا فرض می شودکه یک قانون دیگر مثل یک خط مشی دیگر ، بسته های باقیمانده را رد می کند. 

iptables -A INPUT -m state --state NEW ! -i eth0 -j ACCEPT

 

مثال بعد تمامی بسته هایی که بخشی از یک تماس برقرار می باشند یا مربوط به یک تماس روی رابط eth0 می باشند را قبول می کند : 

iptables -A INPUT -m state --state ESTABLISHES,RELATED -j ACCEPT 

 

 

فایروال ها اغلب ، پیامهای پروتکل کنترل پیام اینترنت ( ICMP ) خاص را مسدود می کنند. ICMP پیامها را تغییر مسیر می دهد و به طور منفرد می توانند وظایف مسیر یابی شما را کنترل نمایند. هر چند نیاز دارید تا بعضی از پیامهای ICMP فعال کنید. مثل پیامهای مورد نیاز برای ping ، traceroute و به طور خاص عملیات غیر قابل دسترسی مقصد در بیشتر حالات نیاز دارید. تا مطمئن شوید که بسته های غیر قابل دسترسی مقصد، مجاز هستند. در غیر اینصورت پرس جو های نام دامنه ممکن است با مشکل روبرو شود. بعضی از رایجترین انواع بسته های ICMP در جدول 6 لیست شده اند. می توانید با عمل --icmp-type یک نوع بسته ICMP از بسته را فعال کنید که یک عدد یا یک نام را که بیان کننده پیام است، به عنوان آرگومانش می گیرد. مثالهای زیر ، استفاده از پیامهای echo-reply ، echo-request و destination-unreachable را فعال می کند که دارای شماره های 0 ، 8 و 3 می باشند. 

 

iptables  -A INPUT -j ACCEPT -p icmp -i eth0 --icmp -type echo-reply -d 10.0.0.1 
iptables  -A INPUT -j ACCEPT -p icmp -i eth0 --icmp -type echo-request -d 10.0.0.1 
iptables  -A INPUT -j ACCEPT -P icmp -i eth0 --icmp -type destination- unreachable -d 10.0.0.1 

جدول 6 : بسته های رایج ICMP 

 

شماره

نام

مورد نیاز توسط

0

echo-reply

Ping

3

Destination-unreachable

هر ترافیک TCP/UDP

5

Redirect

reouting ، اگر دیمون مسیریابی در حال اجرا نباشد

8

echo-request

ping

11

time-exceeded

traceroute

 لیست قانون آنها شبیه این می باشد : 

ACCEPT icmp --0.0.0.0/0 10.0.0.1 icmp  type  0

ACCEPT icmp --0.0.0.0/0 10.0.0.1 icmp  type  8

ACCEPT icmp --0.0.0.0/0 10.0.0.1 icmp  type  3

عملیات ping ، باید بیشتر کنترل شود تا از رفتار امنیتی ping-of-death جلوگیری شود. این کار را به چند روش می توانید  انجام دهید. یک روش، مسدود کردن تمام قطعه های ping است. بسته های ping به طور غیر عادی خیلی کوچک هستند با مسدود کردن هر بسته ICMP که یک قطعه است، می توانید حملات ping-of-death را مسدود نمایید. از سوئیچ -f برای نشان دادن قطعه ها استفاده کنید. 

iptables -A INPUT -p icmp -j DROP -f 

روش دیگر ، محدود کردن تعداد تطابقهای دریافتی برای بسته های ping می باشد. از ماژول limit برای کنترل تعداد تطابقها روی عمل ICMP ping استفاده می کنید. -rn limit را برا استفاده ماژول limit و -limit را برای مشخص کردن تعداد تطابقهای مجاز به کار برید. 1/s ، یک تطابق در هر ثانیه اجازه می دهد. 

iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT 

 

با iptables ، زنجیرهای FORWARD و INPUT به طور مجزا ارزیابی می شوند. هیچ یک در دیگری تغذیه نمی گردد. این بدین معناست که اگر بخواهید به طور کامل ، انتقال آدرسهای خاصی از سیستم خود را مسدود کنید ، باید هر دو قانون FORWARD و INPUT را برای آنها اضافه نمایید. 

iptables –A INPUT -j DROP -i eth0 -s 192.168.0.45 
iptables –A FORWARD -j DROP -i eth0 -s 192.168.0.45 

 

یک روش رایج برای قوانین تکراری FORWARD و INPUT ایجاد یک زنجیر کاربردی است که هر دو زنجیر FORWARD و INPUT در آن تغذیه می شوند. یک زنجیر کاربری را با سوئیچ -N تعریف می کنید. مثال بعد ، قالب اصلی این روش را نشان می دهد . یک زنجیر با نام incoming ایجاد می شود ( می تواند هرنامی که می خواهید باشد ). قوانینی را که برای زنجیر های FORWARD و INPUT خود تعریف می کردید اکنون برای زنجیر incoming تعریف می کنید. سپس زنجیر های FORWARD و INPUT ، زنجیر incoming را به عنوان یک هدف استفاده می نمایند و به طور مستقیم به آن پرش می کنند و از قوانین آن برای پردازش هر بسته ای در یافت می‌نمایند ، استفاده می کنند. 

iptables -N incoming 

 

iptables -A incoming -j DROP -i eth0 -s 192.168.0.45
iptables -A incoming -j ACCEPT -i lo

 

iptables -A FORWARD -j oncoming 
iptables -A INPUT  -j incoming 

 

 دو هدف داخلی ، یعنی DROP و ACCEPT وجود دارد. دیگر هدفها می توانند زنجیر های تعریف شده توسط کاربر یا الحاقات اضافه شده مثل REJECT باشند. دو هدف خاص برای مدیریت زنجیر ها استفاده می شود. RETURN و QUEUE. RETURN انتهای یک زنجیر را نشان می دهد و به جایی بر می گردد که زنجیر از آنجا شروع شده است. QUEUE برای ارسال بسته به فضای کاربر استفاده می شود. 

iptables -A INPUT -s www.myjunk.com -j DROP

 

می توانید یک قانون را با علامت ! معکوس کنید. به عنوان مثال ، برای قبول کردن تمام بسته های دریافتی بجز آنهایی که از یک آدرس خاص می آیند ، یک علامت ! قبل از سوئیچ -s و آن آدرس قرار دهید. مثال زیر ، تمام بسته ها به جز بسته های آدرس IP شماره 192.168.0.45 را قبول می کند : 

iptables -A INPUT -j ACCEPT ! -s 192.168.0.55 

 

می توانید یک آدرس خاص را با استفاده از یک نام دامنه یا شماره IP آن مشخص کنید. برای محدوده ای از آدرسها می توانید از شماره IP شبکة آنها و پوشش IP شبکه ، استفاده نمایید. پوشش IP می تواند یک شماره IP یا به طور ساده تعدادی بیت باشد که پوشش را تشکیل می دهد. به عنوان مثال ، تمام آدرس ها در شبکه 192.168.0 می توانند توسط 192.168.0.0/255.255.255.0 یا 192.168.0.0/24 نمایش داده شوند. برای مشخص کردن هر آدرسی می توانید از 0.0.0.0/0.0.0.0 یا به سادگی از 0/0 استفاده کنید. به طور پیش فرض، قوانین آدرسها را مورد اشاره قرار می دهند ، اگر هیچ مشخصه -s یا -d وجود نداشته باشد. مثال زیر ، پیامهایی که از هر میزبانی در شبکه 192.168.0.0 در آن می آید ( مبدأ ) و به هر جایی می رود ( مقصد ) را قبول می کند ( سوئیچ -d نمی آید یا می تواند به صورت -d 0/0 نوشته شود) : 

iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT 

 

قوانین iptables معمولا برای یک رابط شبکه ای خاص ، مثل رابط اترنت که برای اتصال به اینترنت استفاده می شود، اعمال می گردد. برای یک سیستم تکی متصل به اینترنت، دو رابط دارید ، یکی که تماس اینترنت شماست و یک رابط میزبان محلی ( lo ) برای تماس های داخلی بین کاربران موجود در سیستم شما. رابط شبکه ای اینترنت ، با استفاده از نام دستگاه رابط مورد اشاره قرار می گیرد. به عنوان مثال ، یک کارت اترنت با نام دستگاه /dev/eth0 ، با نام eth0 مورد اشاره قرار می گیرد ، یک مودم که از پروتکل های ppp با نام دستگاه /dev/ppp0 استفاده می کند ، دارای نام ppp0 خواهد بود. در قوانین iptables ، از سوئیچ -i برای نشان دادن دستگاه ورودی استفاده می نمایید. -i تنها می تواند با زنجیر های INPUT و FORWARD استفاده شود سوئیچ -o دستگاه خروجی را نشان می دهد و تنها باید با زنجیرهای OUTPUT و FORWARD به کار رود. قوانین سپس می توانند به بسته هایی که به دستگاه های شبکه ای خاص می رسند و آن را ترک می کنند ، اعمال شود. در مثالهای زیر ، قانون اول ، دستگاه اترنت eth0 و قانون دوم ، میزبان محلی را مورد اشاره قرار می دهد : 

iptables  -A INPUT  -j DROP -i  eth0 -s 192.168.0.45
iptables  -A INPUT -j ACCEPT -i lo 

 

 

iptables طراحی شده تا بسط پذیر باشد و تعدادی سوئیچ با شرط انتخابی وجود دارد که می تواند به همراه iptables باشد. به عنوان مثال ، الحاق TCP شامل سوئیچ --syn است که بسته های SYN را بررسی می کند. الحاق ICMP ، سوئیچ --icmp-type را برای مشخص کردن بسته های ICMP ( آن طور که در عملیات ping استفاده می شد ) فراهم می نماید. الحاق limit شامل سوئیچ --limit است که با آن می توانید حداکثر تعداد بسته ها را مورد تطابق در طول زمان مشخص ( مثلا یک ثانیه ) را محدود کنید.

 

 در مثال زیر، کاربر یک قانون به زنجیر INPUT اضافه می کند تا تمام بسته هایی که از آدرس 192.168.0.55 ناشی می شود را قبول کند. هر بسته دریافتی ( INPUT ) که آدرس مبدأ آن ( -s ) مطابق با 192.168.0.55 است، قبول می شود و انتقال می یابد    ( -j ACCEPT ). 

iptables -A INPUT -s 192.168.0.55 -j ACCEPT 

 

 

قوانین زنجیر را با استفاده از دستورات 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 استفاده می شود.

 

 

کرنل از سه زنجیر فایروال استفاده می کند : INPUT ، OUTPUT و FORWARD . وقتی که یک بسته از طریق یک رابط دریافت می شود ، زنجیر INPUT برای تعیین اینکه چه کاری انجام شود ، استفاده می گردد. سپس کرنل از اطلاعات مسیریابی برای تصمیم به اینکه آن را کجا بفرستد ، استفاده می کند. اگر کرنل ، بسته را به میزبان دیگری بفرستد، زنجیر FORWARD بررسی می گردد. قبل از اینکه بسته حقیقتاً ارسال شود ، زنجیر OUTPUT نیز بررسی می گردد. به علاوه ، دو زنجیر جدول NAT ، یعنی POSTROUTING و PREROUTING پیاده سازی می شوند تا ماسک و اصلاحات آدرس بسته بندی را پیاده سازی کنند. زنجیر های داخلی Netfilter در جدول 3 لیست شده اند. 

زنجیر
عملکرد
INPUT
قوانین مربوط به بسته های دریافتی 
OUTPUT
قوانین مربوط به بسته های ارسالی 
PREROUTING
قوانین مربوط به بسته های انتقالی 
POSTROUTING
قوانین مربوط به تغییر مسیر یا اصلاح بسته های دریافتی (
  تنها جدول NAT ) 
RETURN
قوانین مربوط به تغییر مسیر یا اصلاح
  بسته های ارسالی ( تنها جدول NAT ) 

یک هدف ( Target ) خودش می تواند زنجیر دیگری از قوانین یا حتی زنجیری از قوانین تعریف شده توسط کاربر باشد. یک بسته می تواند قبل از رسیدن به یک هدف ، از طریق چند زنجیر انتقال یابد. در مورد زنجیر های تعریف شده توسط کاربر ، هدف پیش فرض ، معمولاً قانون بعدی در زنجیر می باشد که از آنجا فراخوانی شده است. این کار یک فراخوانی رویه با تابع را باعث می شود.  مثل جریان کنترل موجود در زبان برنامه نویسی. وقتی که یک قانون ، یک زنجیر تعریف شده توسط کاربر را به عنوان هدفش داشته باشد ، هنگامی که فعال شود ، آن زنجیر تعریف شده توسط کاربر اجرا می گردد. اگر با هیچ قانونی مطابقت نکند ، اجرا به قانون بعدی در زنجیر منشأ بر می گردد. 

 

نکته : سوئیچ ها و هدفهای خاص می توانند توسط بسته های کرنل موجود در سایت Netfilter اضافه شوند. به عنوان مثال ، بسته SAME ، آدرس یکسان برای تمام تماسها بر می گرداند. یک سوئیچ patch-o-matic برای فایل ساخت Netfilter ، کد اصلی کرنل شما را بسته بندی می کند و پشتیبانی از هدفها و سوئیچ های جدید را اضافه می نماید. سپس می توانید کرنل خود را مجدداً بسازید و نصب نمایید. 

 

قوانین در زنجیر های مختلف ترکیب می شوند. کرنل از زنجیرها برای مدیریت بسته هایی که دریافت می کند و می فرستد ، استفاده می نماید. یک زنجیر ، به طور ساده یک فهرست از قوانین است. این قوانین ، مشخص می کنند که چه عملی برای بسته هایی که شامل عناوین خاص می باشند ، انجام گیرد. قوانین با یک ساختار if-then-else عمل می کنند. اگر بسته با قانون اول مطابقت نکرد ، سپس قانون بعدی بررسی می شود و همین طور الی آخر. اگر بسته با هیچکدام از قوانین مطابقت نداشت ، کرنل با خط مشی زنجیر مشورت می کند. معمولا در این مرحله بسته رو می شود. اگر بسته ، با یک قانون مطابقت نداشته باشد ، به هدفش انتقال می یابد که تعیین می کندبا بسته چه کاری انجام دهد. هدفهای استاندارد ، در جدول 2 لیست شده اند. اگر یک بسته ، با هیچکدام از این قوانین مطابقت نداشت ، به هدف پیش فرض زنجیر فرستاده می شود. 

جدول 2 : هدفهای iptables

هدف

عملکرد

ACCEPT

اجازه می دهد تا بسته از طریق فایروال عبور کند.

DROP

دسترسی توسط بسته را محدود می کند.

REJECT

دسترسی را مسدود می کند و به فرستنده اطلاع می دهد.

QUEUE

بسته را به فضای کاربر می فرستد.

RETURN

به انتهای زنجیر پرش می کند و به هدف پیش فرض اجازه می دهد تا آن را پردازش کند.

Netfilter ضرورتاً یک چهار چوب کاری برای مدیریت بسته است که می تواند بسته ها را برای پروتکل های خاص شبکه بررسی می کند  و به بخشهای کرنل که به آنها گوش می دهند ، اطلاع دهد. در چهار چوب کاری Netfilter ، سیستم انتخاب بسته است که توسط جداول IP پیاده سازی می شود. با جداول IP ، جدولهای مختلفی از قوانین می توانند بنا شوند تا بسته ها را طبق معیار های مختلف ، انتخاب کنند. Netfilter اکنون سه جدول را پشتیبانی می کند : filter ، nat و mangle. فیلتر کردن بسته با استفاده از یک جدول filter پیاده سازی می شود که قوانینی برای قبول یا رد بسته ها را نگه می دارد. عملیات ترجمه آدرس شبکه ، مثل IP ماسک ، با استفاده از جدول NAT پیاده سازی می شوند که قوانین ماسک IP را نگه می دارد. جدول mangle برای تغییرات خاص بسته استفاده می شود. تغییرات می توانند در بسته ها قبل از ارسال آنها ، هنگام دریافت آنها ، یا هنگام انتقال آنها اعمال شوند. این ساختار از این نظر قابل گسترش است که ماژول های جدید می توانند جداول خودشان را با قوانین مربوط به خود تعریف کنند و همچنین به طور وسیعی کارآیی را افزایش می دهد. به جای اینکه تمام بسته ، یک جدول را بررسی کند ، آنها فقط به یک جدول قوانینی که نیاز دارند دسترسی می یابند. 

 

قوانین جدول IP با استفاده از دستور iptables مدیریت می شوند. برای این دستور ، باید جدولی که می خواهید آن را مدیریت کنید ، مشخص نمایید. پیش فرض جدول filter می باشد که نیاز به مشخص کردن ندارد. می توانید با سوئیچ های –L و –t که در اینجا نشان داده شده است ، قوانینی را که اضافه کرده اید در هر زمان لیست بگیرید. سوئیچ –n می گوید که تنها از خروجی عددی برای آدرسهای IP و در گاه ها استفاده شود که باعث جلوگیری از یک جستجوی DNS برای نام میزبانها می گردد. به هر حال می توانید از سوئیچ –L استفاده نمایید تا برچسبهای درگاه و نامهای میزبان را ببینید : 

iptables –L –n

 

نکته : در دستورات iptables ، نام زنجیرها باید با حرف بزرگ وارد شود. همانند نام زنجیرهای INPUT ، OUTPUT و FORWARD . 

 

پربازدیدترین مطالب

"«قیمتی که در هنگام سفارش مشتري در پیش‌فاکتور منظور گرديده است، معتبر مي‌باشد»."