فایروال حالتمند
در رشتهٔ کامپیوتر، یک فایروال حالتمند (هر فایروالی که برنامهٔ بررسی حالتمند بسته (SPI) یا بررسی حالتمند را اجرا می‌کند) فایروالی می‌باشد که وضعیت اتصالات روی شبکه را نگه
می‌دارد (شبیه ارتباطات UDP و جریان‌های TCP). فایروال طوری برنامه‌ریزی شده تا بسته‌های مشروع مربوط به اتصالات مختلف تمیز داده شوند. تنها بسته‌های مربوط به اتصالات فعال شناخته شده، توسط فایروال مجوز می‌گیرند و دیگر بسته‌ها رد می‌شوند.

تاریخچه
-------

قبل از ورود فایروال حالتمند، فایروال غیرحالتمند، فایروالی که در انزوا با هر فریم شبکه (بسته) رفتار می‌کند، متعارف بود. مثل فیلتر بسته که در لایه شبکه کار می‌کند و کارایی مؤثرتری دارد زیرا تنها به سرآیند یک بسته نگاه می‌کند. غیر حالتمند بودن یکی از اشکالات فیلترهای محض بسته می‌باشد. آن‌ها هیچ سابقه‌ای از بسته‌های قبلی نگه نمی‌دارند که باعث آسیب‌پذیر بودن آن‌ها در مقابل حمله‌های جاعلانه می‌شود. یک چنین فایروالی گاهی نمی‌تواند تعیین کند که آیا بستهٔ دریافتی مربوط به اتصال حاضر می‌باشد یا اینکه سعی در برقراری اتصال جدید دارد یا بسته‌ای ولگرد است. فایروال‌های مدرن اتصال آگاه به سرپرست شبکه امکان کنترل دقیق تر ترافیک شبکه را می‌دهد.  

مثال قدیمی از عملکرد شبکه در پروتکل انتقال فایل ممکن است که با فایروال‌های غیرحالتمند شکست بخورد. با این طراحی، این پروتکل‌ها برای درست کار کردن نیاز به توانایی برقراری اتصال به پورت‌های دلخواه بالا دارند. از آنجا که فایروال غیرحالتمند راهی برای شناخت بسته‌های عازم به شبکهٔ امن (برای مثال، به پورت ۴۹۷۰ میزبان مقصد) که بخشی از یک نشست FTP مشروع است، راندارد، این بسته را دور می‌ریزد. فایروال‌های حالتمند این مشکلات را با نگهداری جدولی از اتصالات باز و دایر و مرتبط کردن هوشمندانهٔ درخواست‌های اتصال جدید به اتصال مشروع موجود، حل می‌کنند.  

اختراع فایروال‌های حالتمند معمولاً به Nir Zuk و تیم او در Check Point در اواسط دههٔ ۱۹۹۰ نسبت داده شده‌است.  

تلاش‌های اولیه برای تولید فایروال در لایهٔ کاربرد، بالاترین لایه از مدل هفت لایهٔ OSI شروع شد. این متد به حد بالا و گزافی از قدرت محاسباتی نیاز دارد و به ندرت در پیاده‌سازی‌های مدرن استفاده می‌شود.

توصیف
-----

یک فایروال حالتمند قادر به نگهداری ویژگی‌های ضروری هر اتصال، از برقراری تا اختتام در حافظه
می‌باشد. این ویژگی‌ها، که معروف به وضعیت اتصال می‌باشند، شامل جزئیاتی مانند آدرس IP و پورت درگیر در اتصال و شماره ترتیب بسته‌هایی که در حال پیمایش اتصال هستند، می‌باشد.  

بررسی‌هایی که نیاز به پردازش زیاد CPU دارند، در زمان راه اندازی اتصال انجام می‌شود. پس از این همهٔ بسته‌ها (برای این نشست) به علت سادگی و سرعت تعیین کردن تعلق بسته به نشست موجود یا از پیش برقرار شده، به سرعت پردازش می‌شوند. به محض اینکه این نشست اختتام یافت، مدخل آن از جدول وضعیت دور انداخته می‌شود.  

فایروال حالتمند براساس دست دهی سه طرفه کار می‌کند که گاهی اوقات زمانی‌که پروتکل استفاده شده TCP باشد با "SYN ,SYN-ACK ,ACK" (استفاده از بیت‌های همزمانی و تأیید را نشان می‌دهد) موجود در پروتکل TCP، توصیف می‌شود و زمانی‌که پروتکل UDP باشد، فایروال حالتمند وابسته به چیزی مرتبط با TCPنیست.  

زمانیکه یک مشتری اتصالی را برقرار می‌کند، بسته‌ای را ارسال می‌کند که بیتِ SYN (ی که در سرآیند بسته قرار گرفته‌است) آن یک شده‌است. همهٔ بسته‌های با بیت SYN یک شده برای فایروال به عنوان اتصال جدید در نظر گرفته می‌شوند. اگر سرویس مورد درخواست مشتری روی سرور قابل دسترس باشد، سرویس به بستهٔ SYN با بسته‌ای که بیت SYN و ACK آن یک شده باشد، پاسخ می‌دهد.  

سپس مشتری با بسته‌ای که تنها بیت ACK آن یک شده‌است، جواب می‌دهد و اتصال وارد وضعیت STABLISHED می‌شود. همچنین یک فایروال همهٔ بسته‌های خروجی را از خود عبور می‌دهد اما تنها اجازهٔ ورود بسته‌هایی را می‌دهد که بخشی از اتصال برقرار هستند، این گونه تضمین می‌کنند که هکرها نمی‌توانند اتصالاتی که از داخل شبکه درخواست نشده‌اند را با ماشین مورد حفاظت برقرار کنند.  

برای جلوگیری از پرشدن جدول وضعیت، اگر برای دورهٔ معینی ترافیکی از آن اتصال عبور نکند، زمان نشست‌ها به پایان خواهد رسید. اتصالات تاریخ گذشته از جدول وضعیت دور ریخته می‌شوند. به همین علت تعدادی از برنامه‌های کاربردی پیام‌های Keep alive را در زمان‌های معینی ارسال می‌کنند تا فایروال اتصال را در فواصل زمانی ای که کاربر فعالی وجود ندارد، قطع نکند، گرچه بعضی از فایروال‌ها طوری سازماندهی شده‌اند که می‌توانند این پیام‌ها را به برنامه‌های کاربردی ارسال کنند.  

تعدادی از فایروال‌های حالتمند قادر به ردیابی جریان‌ها در پروتکل‌های غیراتصال گرا هستند. تکنیک UDP hole punching مرتبط با UDP می‌باشد. در این‌ها معمولاً بعد از اولین بسته‌ای که توسط فایروال دیده شود، نشست‌ها فوراً به وضعیت STABLISHED می‌رسند. نشست‌ها در پروتکل‌های غیراتصال گرا تنها با به پایان رسیدن زمان نشست‌ها، به پایان خواهد رسید.  

با نگهداری مسیر وضعیت اتصال، فایروال‌های حالتمند با بازرسی بسته‌ها، بازده و کارایی افزوده فراهم می‌کنند. به این دلیل است که فایروال به جای بررسی هر بسته در برابرمجموعهٔ قوانینش (که بسیار گسترده می‌باشد)، تنها احتیاج به بررسی جدول وضعیت دارد. همچنین، از آنجا که در فایروال‌های حالتمند، در برابر ترافیک ورودی ابتدا بررسی جدول وضعیت به جای پرش به مجموعه قوانین فایروال، انجام می‌شود، مفهوم بازرسی عمیق بسته غیرمرتبط با فایروال‌های حالتمند می‌باشد. در این مورد اگر جدول وضعیت با تغییرات مطابقت پیدا کرده باشد، آنگاه دیگر نیازی به بازرسی عمیق بسته نیست.  

بازرسی عمیق بسته با استفاده از ASIC- دستگاه‌های شتاب داده شده‌ای که به‌طور خاص برای اداره کردن تراکنش‌های لایه کاربرد مهندسی شده، حاصل شده‌است.

فیلترهای سطح کاربرد
-------------------

هرچند، فیلترینگ بسته به تنهایی نمی‌تواند فراهم‌کنندهٔ مقدار کافی از محافظت باشد. به منظور سد کردن مؤثر راه ترافیک شبکهٔ نظیر به نظیر فایروالی نیاز است که فیلترینگ کاربرد انجام دهد تا بتواند در ادامهٔ بازرسی حالتمند بسته انجام شود. بازرسی حالتمند بسته می‌تواند نوع پروتکلی که از روی آن اطلاعات به هر پورت ارسال شده را تعیین کند، اما فیلترهای سطح کاربرد به چیزی که پروتکل برای آن استفاده شده نگاه می‌کنند. برای مثال یک فیلتر سطح کاربرد ممکن است قادر به تشخیص تفاوت بین ترافیک HTTPای که برای دستیابی به صفحات وب استفاده می‌شود و ترافیک HTTPای که برای به اشتراک‌گذاری فایل استفاده می‌شود، باشد، درحالیکه یک فایروالی که تنها فیلترینگ بسته را اجرا
می‌کند، با انواع مختلف ترافیک HTTP به‌طور یکسان برخورد می‌کند.  
فایروال‌های سطح کاربرد از چند لحاظ با فیلترینگ حالتمند بسته و دروازه‌های سطح مدار فرق دارد. فایروال‌های سطح کاربرد از چندین پروکسی کاربرد بر روی یک فایروال منفرد حمایت می‌کند. پروکسی‌ها بین مشتری و سرور قرار می‌گیرند و داده را بین این دو نقطهٔ انتهایی ردو بدل می‌کند.
دادهٔ مشکوک دور انداخته می‌شود و سرور و مشتری هرگز به‌طور مستقیم با هم ارتباط برقرار نمی‌کنند. ازآنجاکه پروکسی‌های سطح کاربرد آگاه هستند، می‌توانند پروتکل‌های پیچیده مانند H.323 (که برای فرستادن صدا در اینترنت و کنفرانس ویدئویی استفاده می‌شود) را ساده‌تر اداره کنند. فایروال‌های کاربرد می تونند برای مشتری و سرور ناپیدا باشند بطوری‌که نیاز به هیچ پیکربندی ای بر روی آن‌ها نیست، یا می‌توانند نمایان باشند بطوری‌که آدرس مشتری و سرور را به‌طور مستقیم در اختیار سرور پروکسی می‌گذارد.

آسیب‌پذیری
----------

در کدگشاهای پروتکل‌های انفرادی آسیب‌پذیری وجود دارد، آن‌ها به مهاجم اجازه می‌دهند که فایروال‌ها را تحت کنترل خود دربیاورند. این نگرانی، نیاز به بروزآوری نرم‌افزار فایروال را برجسته می‌کند.  

فایروال‌های حالتمند همچنین احتمال فریب خورن میزبان‌های انفرادی در درخواست خارجی اتصال را بالا می‌برند. این احتمال را می‌توان با بازرسی نرم‌افزار به‌طور کامل از بین برد. بعضی از فایروال‌ها با این روش یعنی با نگاه ساده به یک صفحهٔ وب شکست خوردند.

منابع
-----

* مشارکت‌کنندگان ویکی‌پدیا. «Stateful firewall». در *دانشنامهٔ ویکی‌پدیای انگلیسی*، بازبینی‌شده در ۸ ژوئیه ۲۰۱۲.