حالات بسته : ردیابی تماس
یکی از مفید ترین الحاقات ، حالتی است که به طور ساده می تواند اطلاعات ردیابی برای یک بسته را تشخیص دهد. ردیابی تماس یکی از ، اطلاعاتی در مورد یک تماس را نگه می دارد. مثل مبدا ، مقصد و درگاه آن. این کار یک ابزار مؤثر برای تعیین بسته هایی است که متعلق به یک تماس برقرار شده یا مرتبط می باشد. ابتدا باید با -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