یک دیواره آتش نمیتواند شبکه و منابع آن را از خرابکاران داخلی محافظتکند: دیواره آتش ممکن است بتواند از اینکه اطلاعات مفید سازمان از طریق خط ارتباطی شبکه به بیرون انتقال یابند جلوگیری کند اما هنگامی که این اطلاعات از خط ارتباطی عبور نمیکنند نمیتواند هیچکاری انجام دهد. کاربری ممکن است با استفاده از یک دیسک، Floppy، CD و یا تعدادی ورقه که آنها را در کیفش قرار میدهد اطلاعات حساس سازمان را به بیرون انتقال دهد. در مقابله با این نوع کاربران (که ممکن است اطلاعات داخل را عمداً و یا سهواً از روی غفلت افشا کنند)، دیوارههای آتش ناتوان هستند و هیچکاری از دستشان ساخته نیست.
برخی از افراد داخلی سطوح دسترسی بالایی را در شبکه دارا هستند و مجازند به منابع مختلف در شبکه دسترسی داشته باشند، این افراد قادر خواهند بود سخت افزارها را خراب کنند، نرم افزارها و برنامههای مختلف را دچار مشکلکنند، به طور ماهرانهای برنامهها را تغییردهند، سطوح دسترسیها را دستکاری کنند و.... واقعیت این است که دیوارههای آتش در مقابله با این مشکلات کاری نمیتوانند انجام دهند.
یک دیواره آتش نمیتواند از بروز تمام مشکلات امنیتی جلوگیریکند: دیواره آتش برای مقابله با خطرات شناخته شده طراحی شده است. مدیران شبکه با شناختی که از حملات و خطرات مختلف دارند و با تصویب تعدادی قوانین و اجرای آنها توسط دیواره آتش سعی میکنند از بروز آنها جلوگیری کنند، اما واقعیت این است که روز به روز حملات و مشکلات امنیتی جدیدی به وجود میآیند و دیواره آتش نمیتواند به طور خودکار با این خطرات مقابله کند. دیواره آتش نیز مانند تجهیزات دیگر توسط مدیر سیستم پیکربندی میشود و پیرو دستوراتی است که مدیر میدهد. یک پیکربندی خوب تا حدودی قادر خواهد بود از خطرات جدید نیز جلوگیریکند. در این پیکربندی هیچ ترافیکی عبور داده نمیشود غیر از ترافیک مربوط به تعداد بسیار اندکی سرویس مطمئن.
خرابکاران به طور مرتب راههای جدیدی برای نفوذ و خرابکاری پیدا میکنند. آنها یا از سرویسهای مطمئن شناخته شده سوء استفاده میکنند ویا مشکلاتی که تا کنون برای کسی رخ نداده (و بنابراین هیچ کس راجع به آنها چیزی نمیداند و به همین دلیل در هیچ دیواره آتشی در نظر گرفته نشده) را به کار میبندند. یک دیواره آتش را نمیتوان یک بار پیکربندی کرد و انتظار داشت برای همیشه شبکه را از هر خطری مورد محافظت قرار دهد.
یک دیواره آتش معمولاً نمیتواند از ورود ویروسها جلوگیری کند: اغلب دیوارههای آتش بخشهای مربوط به آدرس مبدأ و آدرس مقصد و شماره پورت مبدأ ومقصد شبکههای ورودی را مورد بازرسی قرار میدهند و به جزئیات داده توجهی ندارند. پیادهسازی بخش تشخیص ویروس و بررسی کامل داده بستهها در دیوارههای آتش زیاد عملی وکارا نیست. انواع بسیار زیادی از ویروسها وجود دارند و روشهای زیادی برای آنکه ویروس خودش را در داخل داده مخفیکند وجود دارد. تشخیص ویروس (Virus Detection) در یک بسته تصادفی از دادهای که از دیواره آتش عبور میکند بسیار مشکل است. برای تشخیص ویروس در بستهها نیازمندیهای زیر وجود دارد:
- تشخیص این مطلب که بخش داده بسته بخشی از یک برنامه است.
- مشخص کردن اینکه یک برنامه مجاز چگونه است و چه ویژگیهایی دارد.
- تشخیص این که تفاوتی بین این برنامه و مدل برنامههای بدون مشکل و مجاز وجود دارد و بنابراین برنامه یک ویروس است.
اغلب دیوارههای آتش ماشینهایی از انواع مختلف و با فرمتهای اجرایی مختلف را مورد محافظت قرار میدهند.
یک برنامه ممکن است یک برنامه کامپایل شده قابل اجرا و یا یک script باشد. علاوه بر این، بسیاری از برنامهها قبل از اینکه انتقال یابند به شکل یک Package در میآیند و به خوبی فشرده سازی میشوند. این مسایل باعث میشود پیچیدگی مسأله تشخیص ویروسها بالاتر رود و پیادهسازی آن مشکل باشد. با این همه باز هم نمیتوان تمامی منابع دیگر انتقال ویروسها را کنترل کرد. بسیاری از برنامهها ممکن است از طریق مودمهای اشخاصی که به اینترنت متصلند و از دیواره آتش رد نمی شوند download شوند و یا با یک floppy از محل سکونت به شبکه داخلی سازمان انتقال یابند و ... روش عملی تر مقابله با ویروسها استفاد از نرم افزارهای host-base virus protection است. آموزش کاربران و آگاه کردن آنها از خطرات ویروسها نیز می تواند مؤثر باشد.