فایروال چیست؟
به طور کلی فایروالها سختافزار یا نرمافزارهایی هستند که ترافیک ورودی و خروجی به یک شبکه یا یک دستگاه را کنترل میکنند. برای هر فایروال، میتوان مجموعهای از قواعد تعریف کرد که براساس آنها از ورود ترافیک خاصی به شبکه یا دستگاه جلوگیری شود و با ایجاد یک مرز برای شبکهی داخلی، بتوان آن را از شبکهی غیرقابل اعتماد جدا کرد. پیشرفتهای زیادی در طراحی و عملکرد فایروالها از اولین نسل آنها تا امروز انجام شده است. درواقع فایروالهای هر نسل نسبت به نسل قبلی خود، بررسیهای بیشتری روی هر بسته انجام میدهند و در نتیجه توانایی بیشتری در تشخیص ترافیک مخرب دارند.
انواع فایروالها
اولین نسل فایروالها تنها قادر بودند سادهترین وظیفهای که از آنها انتظار میرفت، یعنی packet filtering را انجام بدهند. فایروالهای نسل اول با بررسی آدرس IP، پورت مبدا و مقصد و پروتکل مورد استفاده و مقایسهی آنها با قواعدی که از قبل برای فایروال تعریف شده بود، تشخیص میدادند که آیا دسترسی این مبدا به مقصد مورد انتظار مجاز است یا نه. اگر ترافیک مجاز بود، اجازهی عبور آن و ارسال به مقصد موردنظر را میدادند. وگرنه، یا بدون اطلاع به مبدا، جلوی ورود ترافیک را میگرفتند و بسته را drop میکردند یا همزمان با drop کردن بسته، یک پیام ICMP هم برای اطلاعرسانی به مبدا ارسال میکردند. اگرچه هنوز هم این نقش، جز اصلیترین و پایهایترین وظایف یک فایروال محسوب میشود و برای تمام فایروالها ضروری است، اما عملکرد فایروالها تنها به این مورد محدود نمیشود.
نسل بعدی فایروالها افزونبر ویژگی قبلی، میتوانستند اطلاعاتی دربارهی connection بین مبدا و مقصد، براساس شمارهی پورت مورد استفاده، نگهداری کنند. برای نمونه، میتوانستند با بررسی اطلاعات مربوط به TCP handshake، تشخیص بدهند که آیا بستهای که در جریان یک TCP connection ارسال میشود، واقعن مربوط به همان connection است یا نه. این فایروالها stateful filters نامیده میشدند و تفاوت اصلی آنها با نسل قبلی خود، توانایی تشخیص connectionهای لایهی ۴ بود. با توجه به شیوهی عملکرد، این فایروالها منابع بیشتری را برای تشخیص ترافیک نامطمین مصرف میکردند.
فایروالهای نسل سوم که به application firewall یا proxy firewallها معروف هستند، میتوانند پروتکلهای لایهی ۷ یا لایهی application را تشخیص بدهند. برای نمونه فرض کنید یک بسته، بدون آن که مربوط به پروتکل HTTPS باشد، بخواهد با استفاده از پورت ۴۴۳ که مربوط به این پروتکل است به یک مقصد دسترسی پیدا کند. بنابراین، فایروال با دانستن شکل بستههای پروتکل HTTPS، تشخیص میدهد که این بسته به این پروتکل مربوط نیست و آن را drop میکند. این فایروالها با ایجاد یک connection با مبدا بستهها، ابتدا ترافیک دریافتی را بررسی میکنند و سپس، اگر ترافیک مجاز بود، آن را از یک connection جداگانه به مقصد ارسال میکردند. بهاینترتیب، این دستگاهها برای امنیت بیشتر از ارتباط مستقیم مبدا و مقصد جلوگیری میکنند. ایجاد connectionهای جداگانه اگرچه سبب امنیت بیشتر میشود، اما منابع پردازشی بیشتری مصرف میکند و در نتیجه این فایروالها سرعت کمتری در پردازش دارند.
فایروالهای next-generation، فایروالهایی هستند که تمام ویژگی فایروالهای قبلی را دارند و علاوهبر آنها ترافیکهای مخرب بیشتری را میتوانند تشخیص بدهند. عملکرد فایروالهای قبلی، گاهی اوقات بر پایهی تصمیمگیری با توجه به header پیامهای ارسال شده بود، در حالیکه فایروالهای جدید میتوانند تا حدودی محتوای ترافیکهای رمزنگاری شده را هم تشخیص بدهند و همچنین با بررسی الگوی ترافیک ورودی، بعضی از حملهها را تشخیص بدهند و از آنها جلوگیری کنند.
همانطور که گفته شد، فایروالها شبکهی داخلی را از شبکهی ناامن خارجی جدا میکنند و مانند مرزی بین این دو شبکه هستند. در بسیاری از شبکهها، چه به دلیل کمبود IP و چه برای پنهان ماندن هویت برخی از hostها، به جای public IP از private IP استفاده میشود. بهاینترتیب، برای آنکه بتوان hostهایی با private IP را نیز به شبکهی اینترنت متصل نگه داشت، نیاز به استفاده از NAT (network address translation) است. استفاده از NAT به این معنی است که تعدادی از hostها public IP مشابه خواهند داشت و برای آنکه ترافیک هر host مشخص شود، از پورتهای جداگانه روی hostای که NAT را انجام میدهد استفاده میکنند (برای نمونه اگر بستهای به آدرس ۱.۲.۳.۴ و پورت 2000 ارسال میشود، مربوط به host با آدرس ۱۹۲.۱۶۸.۲.۲ است). بسیاری از فایروالها با داشتن public IP و نگهداری رکوردهای مربوط به private IP و پورتها، میتوانند NAT را برای یک شبکه پیادهسازی کنند.