Аудит служби Windows Firewall

Налаштування служби брандмауера завжди була нетривіальною завданням, але в початкових версіях брандмауера Windows Firewall (що вийшли до появи Windows Vista) процес налаштування став трохи простіше. Ідея така: мережевий екран блокує весь вхідний трафік, крім запитів, внесених до списку винятків. Список винятків (фільтр) визначає ті елементи мережевого трафіку, які не потрібно блокувати: додаток або порт, трафік для яких повинен пропускати мережевий фільтр. При додаванні запису в список виключень брандмауера дозволяє весь трафік для цього додатка або порту. Оптимальним варіантом довгострокового використання мережевого екрану є блокування всього трафіку з мінімальною кількістю винятків. Для кожного виключення необхідно задіяти настройки з максимально жорсткими обмеженнями доступу.

У даній статті не розглядається брандмауер Windows Vista, що володіє можливостями, недоступними мережевого екрану системи Windows XP Service Pack 2 (SP2). Інформацію про особливості системи Vista можна знайти в статті Джефа Фелінга «Брандмауер Windows Vista» , Опублікованій в Windows IT Pro / RE № 8 за 2006 р

Багато організацій використовують політику Group Policy для застосування певних настройок, в тому числі налаштувань брандмауера. Однак в деяких випадках використання політики Group Policy може не підходити для оточення, а також можливий варіант, коли доведеться дозволити користувачам самостійно управляти настройками мережевого екрану. Для більшості користувачів настройка мережевого екрану цілком зрозуміла - вона не вимагає особливих роздумів. Через деякий час, однак, можуть виникнути помилки в налаштуваннях, що порушують роботу мережевого екрану і ставлять під удар безпеку системи. Через можливість появи помилок в конфігурації необхідно регулярно проводити аудит налаштувань брандмауера систем. Можна легко автоматизувати створення звітів аудиту за допомогою короткого сценарію, який буде опитувати будь-яку кількість систем в мережі. Після огляду найбільш поширених помилок в налаштуваннях я розповім про найбільш вдалих варіантах використання списку виключень і представлю сценарій, наведений у лістингу, за допомогою якого можна проводити аудит брандмауерів.

Найбільш поширені помилки

Помилки в налаштуванні брандмауера можуть мати серйозні наслідки і піддають системи істотного ризику. Наприклад, помилки в налаштуванні для мобільного комп'ютера можуть призвести до появи шкідливого програмного забезпечення в корпоративній мережі, незважаючи на всі захисні механізми шлюзу. Таким чином, вкрай важливо вміти розпізнавати і виправляти найпоширеніші помилки в налаштуванні мережевого екрану.

Перша і найбільш часто зустрічається помилка полягає в тому, що хтось заради «певної мети» або «ненароком» вимикає брандмауер і забуває потім його включити. Такі помилки трапляються набагато частіше, ніж хотілося б. Я часто стикався з ситуаціями, в яких будь-хто:

  • відключає брандмауер для проведення тестування - і не включає його знову;

  • відключає брандмауер заради сьогочасної мети (замість того, щоб створити виняток) - і не включає його назад;

  • відключає брандмауер у властивостях одного мережевого адаптера, припускаючи, що відключає мережевий екран тільки для даного адаптера (але через неуважність відключаючи інші брандмауери системи) - і не включає його назад.

Залежно від версії і налаштування служби система Windows не завжди попереджає про те, що брандмауер відключений. Звичайно, можна використовувати інші методи управління мережевим екраном (наприклад, задіяти об'єкт Group Policy, який забороняє відключення брандмауера), але за допомогою сценарію HNetCfg.FwMgr, наведеного в лістингу, можна легко перевірити всі свої мережеві екрани.

У служби Windows Firewall є два профілі: профіль домену, застосовуваний, коли користувачі входять в домен, і стандартний, діючий, коли користувачі відключаються від домену Windows (або взагалі не входять в нього). Наприклад, стандартний профіль використовується при з'єднанні мобільного комп'ютера з небезпечною мережею (наприклад, будинки, в готелі, в Internet-кафе). Потрібно мати на увазі, що, коли користувачі підключаються до домену Windows, система завжди задіє профіль домену, навіть якщо мережевий екран для домену не був спеціально налаштований через політику Group Policy.

Так як у мережевого екрану існує два профілі, код сценарію спочатку визначає, для якого профілю буде проводитися аудит. Якщо сценарій запускається без вказівки профілю, він проведе аудит профілю, завантаженого в даний момент. Код фрагмента A лістингу звертається до політики мережевого екрану, налаштовуючи об'єкт objPol на відповідний профіль. Далі сценарій визначає тип політики і виводить глобальні настройки брандмауера.

Крім загальних параметрів, можна включити або відключити мережевий екран для кожного окремого мережевого інтерфейсу, як показано на екрані 1. У діалоговому вікні служби Windows Firewall видно, що мережевий екран для інтерфейсу LAN3 відключений. Так як важливо знати настройки для кожного інтерфейсу, сценарій зчитує всі ці настройки ( см. код фрагмента B лістингу ).

код фрагмента B лістингу   )

Для забезпечення безпеки мережевого інтерфейсу мережевий екран повинен бути включений як для конкретного інтерфейсу, так і глобально. Якщо брандмауер відключений в одному з двох варіантів, він не буде фільтрувати трафік для цього інтерфейсу.

Налаштування виключень

Ще одна поширена помилка може виникнути під час налаштування виключень мережного екрана. Однак, перш ніж перейти до опису проблемних винятків, дозвольте зробити невеликий відступ. Списки винятків в принципі можуть створювати проблеми і повинні постійно перевірятися. Необхідно регулярно їх переглядати. Часто правила фільтрації виходять занадто м'якими через великої кількості винятків і широкої сфери застосування. Наприклад, неприпустимо широку область має виняток, що дозволяє весь трафік для зазначеного додатка, так як воно дозволяє будь-яке з'єднання з будь-яким портом, використовуваних даних додатком. Така ситуація небажана, адже деякі додатки відкривають безліч портів, включаючи ті, які ніколи не застосовуються, але ними можуть скористатися хакери.

Один з моїх клієнтів недавно виявив небажані з'єднання на своєму мобільному комп'ютері під час відрядження. Він тестував новий додаток для поштового сервера на мобільному комп'ютері і додав виняток для цієї програми, що дозволяє вхідні з'єднання. Однак при цьому він також дозволив з'єднання по всіх портах, використовуваним додатком, - всього 12 портів. Правильніше було б створити виняток, що дозволяє з'єднання тільки з певними портами TCP, необхідними для роботи.

Однак відкриття певного порту не завжди є кращим рішенням, ніж створення виключення для застосування. Перевага використання виключення для застосування полягає в тому, що мережевий екран дозволяє програмі приймати вхідний трафік тільки в той час, коли вона запущена. З іншого боку, виключення для порту продовжує приймати трафік на даний порт незалежно від активності програми. Рішення про те, які винятку використовувати, залежить в основному від того, які дії виконує програма, і від того, наскільки ви впевнені в цьому додатку.

Незалежно від обраного типу винятків, необхідно постійно переглядати їх. Після закінчення часу в списку будуть накопичуватися які не використовуються більше винятку. У вас можуть залишитися виключення для програм, які ви видалили з системи, або для однієї служби можуть існувати винятки як для порту, так і для додатка. Наведу найбільш вдалі варіанти налаштувань.

Найбільш вдалі варіанти використання списку виключень

При редагуванні виключення мережевого екрану у вас є можливість вказати, які IP-адреси можуть отримати доступ до програми або до порту. Ця можливість важлива, так як може виникнути ситуація, коли файл або принтер повинні бути доступні для інших комп'ютерів мережі, але недоступні з Internet. Вказавши IP-адреси, ви зможете надійніше закрити мережу від загроз із зовнішнього мережі, при цьому залишаючи відкритим повний доступ для членів локальної мережі.

Область застосування мережевого екрану грає важливу роль в ефективності списку винятків, і слід використовувати найбільш обмежує з можливих налаштувань. Нижче описані можливі області застосування мережевого екрану (див. Екран 2):

Екран 2):

  • будь-який комп'ютер - дозволяє трафік від усіх IP-адрес;

  • тільки моя мережа (підмережа) - дозволяє трафік від безпосередньо доступної мережі;

  • призначений для користувача список - дозволяє вказати список IP-адрес, для яких буде дозволений доступ.

Вибір першого варіанту, який дозволяє з'єднання від будь-якої системи, очевидно є небезпечним, якщо тільки ви не адмініструєте громадський сервер або не хочете, щоб до порту міг підключитися будь-який абонент. Другий варіант на перший погляд може здатися безпечним, адже він дозволяє підключення лише з локальної мережі. Однак, навіть якщо ви довіряєте всій своїй підмережі, вибір даної схеми може привести до проблем - особливо якщо в мережу включені мобільні комп'ютери. Проблема в тому, що користувачі мобільних комп'ютерів часто підключаються до небезпечних мереж (наприклад, в готелях, через точки доступу до бездротових мереж). У таких випадках служба Windows Firewall може пропускати шкідливий трафік в мережу, так як підключення з підмережі дозволені. Важливо пам'ятати, що ви не завжди уявляєте собі точний розмір мережі, в яку входять мобільні комп'ютери. Кращим рішенням є використання третього варіанту, списку для вказівки точного безлічі IP-адрес і мереж, яким ви хочете дозволити доступ. Код сценарію з фрагмента C лістингу показує, як можна додати в список все виключення мережевого екрану для служб, додатків і портів, разом з властивостями кожного виключення. Код фрагмента C покаже всі винятки в системі. На екрані 3 наведено приклад екрану виведення. Після ретельного вивчення списку варто видалити всі непотрібні виключення. Потрібно мати на увазі, що при виведенні винятків для додатків сценарій також повинен переконатися в існуванні відповідного файлу. Якщо файл відсутній (наприклад, файл iTunes), сценарій відзначає це в звіті.

Створення винятків для інтерфейсу

Крім глобальних винятків, можна створити списки винятків для певного інтерфейсу. Винятки для інтерфейсів часто називають призначенням портів, так як вони дозволяють вирішувати зовнішні з'єднання до порту і направляти ці сполуки на будь-який інший порт даної системи і навіть на порт іншого комп'ютера. Через те, що формати з'єднань до кожного інтерфейсу сильно розрізняються, для відображення фільтрів винятків для інтерфейсів необхідно створити окремий код. Так як в фільтрах інтерфейсів реалізовані можливості технології Internet Connection Sharing (ICS), необхідно використовувати об'єкт HnetCfg.HNetShare (див. Фрагмент D лістингу). У цьому випадку через те, що в системі існує безліч вбудованих винятків для інтерфейсів, відображаються тільки виключення, активні для даної сполуки. Також слід мати на увазі, що ці винятки не мають налаштувань області застосування - по можливості потрібно використовувати глобальні налаштування.

Як можна помітити, помилки в налаштуванні служби Windows Firewall можуть з часом накопичуватися і знижувати захищеність системи. Тому важливо регулярно проводити аудит налаштувань брандмауера. Ви здивуєтеся, побачивши, який безлад може бути в списку виключень. На жаль, обмеження інтерфейсу СОМ для служби Windows Firewall, використовуваного в сценарії, показаному в лістингу, не дозволяють запускати сценарій для віддалених систем. Однак не так складно розмістити сценарій на кожному окремому сервері і запускати його при включенні або авторизації користувача. Для своїх автономних серверів я налаштував запуск сценарію з частотою раз в тиждень, при цьому звіти приходять мені по електронній пошті. Трохи змінивши сценарій, всі бажаючі можуть впровадити його в своїй організації.

Марк Барнетт ( [email protected] ) - незалежний консультант з безпеки і автор, який спеціалізується на проблемах безпеки Windows. Володар сертифікату IIS MVP