Тонка настройка брандмауера Windows Firewall в Windows XP SP2

Дев'ять нових параметрів Group Policy і відповідні команди.

У статті, опублікованій в попередньому номері журналу, я вже розповідав про брандмауер Windows Firewall, компоненті пакета оновлень Windows XP Service Pack 2 (SP2), колишні версії якого були відомі як Internet Connection Firewall (ICF). У даній статті я більш детально зупинюся на цій програмі і покажу, як підготувати її для роботи в конкретній мережі. У моєму розпорядженні була тільки попередня версія SP2, в остаточну редакцію можуть бути внесені зміни.

Отже, розглянемо дев'ять нових параметрів Group Policy для Windows Firewall і відповідні команди. Параметри Windows Firewall зберігаються в папці Computer Configuration \ Administrative Templates \ Network \ Network Connections \ Internet Connection Firewall. У цій папці існує дві папки: Domain Profile і Mobile Profile. Параметри політики Domain Profile активізуються на комп'ютері з встановленим Windows Firewall, коли даний комп'ютер реєструється в домені; в іншому випадку вибираються параметри Mobile Profile. Обидві підпапки містять однаковий набір з дев'яти параметрів політики.

У попередній статті йшлося про першому параметрі, Operational Mode. Даний параметр забезпечує три режими: Disabled відключає брандмауер, Protected активізує брандмауер, а Shielded активізує брандмауер, але комп'ютер виявляється більш ізольованим від мережі, ніж в режимі Protected, який дозволяє відкрити певні порти. Щоб перевести комп'ютер в режим Disabled, Protected або Shielded, слід скористатися командою

netsh firewall ipv4 set opmode

з ключем disabled, enabled або shield. Позначення в командному рядку іноді відрізняються від назв відповідних параметрів Group Policy. Таким чином, щоб надійно захистити мережевий адаптер, слід ввести команду

netsh firewall ipv4 set opmode shield

Цю команду зручно використовувати в командному файлі. Можна створити для командного файлу ярлик на робочому столі, назвавши його Shield this System, щоб можна було двічі клацнути на ньому при будь-яких ознаках небезпеки для мережі. За допомогою команди

netsh firewall ipv4 show opmode

можна дізнатися режим брандмауера.

Зміна параметрів брандмауера

Властивості наступного параметра політики Windows Firewall - Allow User Preference / Group Policy Settings Merge не зовсім ясні. У документації Windows Firewall вказується, що за допомогою даного параметра локальні адміністратори можуть змінити режим брандмауера. Але що означає слово "змінити" - включити або вимкнути брандмауер або налаштувати його, відкриваючи й закриваючи порти? В даному випадку "змінити" має інше значення: за допомогою даної політики локальний адміністратор може відкрити або закрити порт, але не скасувати режим Disabled, Protected або Shielded, встановлений доменної політикою (передбачається, що доменна політика для Windows Firewall існує). Якщо в політиці заданий режим Disabled, то локальний адміністратор не може управляти роботою брандмауера.

Плутанина починається, якщо локальний адміністратор намагається скасувати параметри Windows Firewall, задані об'єктом Group Policy Object (GPO). У відповідь на команду

netsh firewall ipv4 set opmode disable

буде отримано результат OK, і наступна команда Netsh Firewall повідомить, що брандмауер відключений. Однак, заглянувши в властивості мережевого адаптера в папці Network Connections, можна побачити, що брандмауер активний. Кілька тестів показують, що інформація графічного інтерфейсу відповідає дійсності: переважають доменні параметри. Будемо сподіватися, що в остаточній версії ці недоліки будуть виправлені.

Однак не можна завжди покладатися на діалогові вікна. Якщо привласнити параметру Allow User Preference / Group Policy Settings Merge значення Disabled, то колір вікна стає сірим, а перемикачі для активізації і відключення Windows Firewall перестають діяти. Такий підхід розумний. Але спробуйте активізувати параметр, а потім повернутися до екрана настройки Windows Firewall. Кнопки для включення і виключення брандмауера доступні. Якщо клацнути на одній з них, а потім на OK, то не з'явиться повідомлення про помилку, а й змін також не відбудеться. Однак локальний адміністратор може відкривати і закривати порти за допомогою командного рядка або gpedit.msc. Для параметра політики Allow User Preference / Group Policy Settings Merge еквівалента командного рядка не існує.

Відкриваємо порти для програм

Наступний параметр політики - перший з семи параметрів, за допомогою яких можна відкрити або (в деяких випадках) закрити конкретний порт. Відкриваючи брандмауер для проходження певного типу трафіку (наприклад, Web-трафіку, даних аутентифікації Active Directory або завантаження електронної пошти), важко визначити, який порт необхідний для цього типу трафіку. Завдання спрощується завдяки параметру політики Define Allowable Programs. За замовчуванням Windows Firewall блокує непроханий вхідний трафік, але не виходить. Такий підхід прийнятний, якщо робоча станція функціонує як клієнт, який ініціює обмін даними (наприклад, запитуючи поштовий сервер про наявність повідомлень або Web-сервер - про інформацію). Але він не спрацьовує, якщо робоча станція надає служби іншим комп'ютерам мережі, наприклад, якщо на робочій станції розміщений поштовий сервер, тому що брандмауер блокує спроби клієнтів ініціювати діалог з серверної програмою. Він також непридатний для однорангових (peer-to-peer, P2P) з'єднань, таких як Instant Messaging (IM), в яких дві або кілька машин обмінюються даними, виконуючи обов'язки і клієнтів, і серверів одночасно. Таким чином, для запуску сервера або організації з'єднань P2P необхідно відкрити деякі порти.

Але які саме порти слід відкрити? Для відповіді на це питання досить вказати конкретну програму в параметрі Define Allowable Programs, і Windows Firewall відкриває порти, необхідні даній програмі. Користувач вказує в параметрі політики місцезнаходження програми, визначає її стан (активне або блоковане; наприклад, можна скласти політику блокування портів для конкретної програми, якщо ця програма була "троянським конем", що проникли в мережу) і відкриває відповідні порти для всього Internet або тільки для локальної підмережі.

Припустимо, що на комп'ютері встановлена ​​серверна програма C: \ myprogs \ serverprog.exe. Невідомо, які порти вона відкриває, але необхідно, щоб ці порти були відкриті тільки для комп'ютерів тієї підмережі, в якій розташований сервер. Потрібно активізувати параметр Define Allowable Programs, потім клацніть на кнопці Show, щоб на екрані з'явилося діалогове вікно для введення інформації про поштовому сервері. У цьому діалоговому вікні я ввів рядок

C: \ myprogs \ serverprog.exe: LocalSubnet: enabled: E-mail server

яка визначає чотири компоненти, кожен з яких відділений від інших двокрапкою. Перший компонент - повний шлях до програми. Можна використовувати змінні середовища, такі як% ProgramFiles%. Наступний компонент, LocalSubnet, вказує на необхідність прийняти трафік, що входить в порти цього сервера тільки з систем тієї ж підмережі. Третій компонент, enabled, дозволяє проходження трафіку. І четвертий компонент, E-mail server, являє собою просто мітку, яку Windows Firewall може використовувати при складанні звітів. Число програм не обмежена.

Відкриття конкретних портів

За допомогою інших параметрів відкриваються різні порти. Не зовсім ясно, чи слід активізувати перший з них, Allow Dynamically Assigned Ports for RPC and DCOM. Взагалі я вважаю за краще інструменти на основі Windows Management Instrumentation (WMI), такі як WMI VBScripts і оснащення Manage Computer консолі Microsoft Management Console (MMC), але для WMI необхідні виклики віддалених процедур (Remote Procedure Calls, RPC). Оснащення Manage Computer можна використовувати для дистанційного керування системою без WMI, тому, щоб керувати віддаленими системами за допомогою Manage Computer при активному Windows Firewall, необхідно активізувати цей параметр. Небезпека відкривання портів для RPC полягає в тому, що за останні два роки в RPC було виявлено кілька серйозних помилок, одна з яких призвела до пам'ятної атаці MSBlaster. Тому активізація брандмауера при відкритих портах для RPC - суперечливе рішення; з таким же успіхом можна замкнути на замок всі двері в будинку, заради зручності (свого і грабіжників) залишивши відкритим парадний вхід. Як і попередній, цей параметр дозволяє відкрити порти для всіх IP-адрес або тільки для локальної підмережі, але такий варіант теж не дуже вдалий. У багатьох випадках вірус MSBlaster поширювався від зараженого комп'ютера, який хтось приносив на підприємство. Тому, перш ніж розпочати даного параметра необхідно ретельно все обдумати.

Як і RPC, параметри File and Print Sharing, Remote Assistance Support і Universal Plug and Play можна скасувати або активізувати, а дія активних параметрів обмежити локальної під сіткою. Всі ці параметри, крім Remote Assistance Support, можна активізувати з командного рядка за допомогою команди

netsh firewall ipv4 set service

за якої слід type = і ім'я служби (наприклад, FILEANDPRINT, RPCANDDCOM або UPNP) або scope = з подальшими ключами all (для всіх IP-адрес) і subnet (для локальної підмережі). Наприклад, щоб дозволити спільну роботу з файлами і принтерами тільки в локальній підмережі, слід ввести команду

netsh firewall ipv4 set service type = fileandprint scope = subnet

Будь-яку команду можна доповнити ключами profile = і interface =, тому, якщо файл-або принт-службу потрібно відкрити для проводового Ethernet-з'єднання тільки у випадках, коли система підключена до домену, потрібно ввести команду

netsh firewall ipv4 set service type = fileandprint scope = subnet interface = "local area connection" profile = corporate

Group Policy працює з профілями Domain і Mobile, а інструменти командного рядка - з корпоративними та іншими профілями.

Залишається два параметра політики. Allow ICMP Settings впливає на підсистему ICMP (Internet Control Message Protocol - протокол управління повідомлення Internet). По суті, для адміністратора важливий лише один компонент ICMP: Ping. За замовчуванням в системах з брандмауером блокуються всі запити ICMP, і тому сигнали луна-тестування ігноруються. У Allow ICMP Settings Properties перераховано дев'ять типів запитів ICMP, дозволених брандмауером Windows Firewall. Для тестування потрібно активізувати тільки запит Allow Inbound Echo Request. Даний параметр не дозволяє обмежити ICMP-трафік локальної під сіткою.

ICMP відкривається з командного рядка:

netsh firewall ipv4 set icmpsetting

з подальшим ключем type = і числом (3, 4, 5, 8, 10, 11, 12, 13 або 17) або словом all. Номер вказує один з дев'яти параметрів ICMP, і нам потрібен номер 8 - вхідний запит (incoming echo request). Щоб машина відповідала на сигнали тестування, необхідно ввести команду

netsh firewall ipv4 set icmpsetting type = 8

Команду можна уточнити за допомогою ключів profile = і interface =.

Як відкрити порт для служби, яка в даній статті не розглядалася? Для цього можна скористатися дев'ятим параметром політики, Define Custom Open Ports. Потім слід вказати номер порту Windows Firewall, тип порту (TCP або UDP), область дії (всі IP-адреси або тільки локальна підмережа) і дію (активізувати або блокувати). При бажанні порту можна привласнити описову назву. Наприклад, для поштового сервера можна відкрити всьому світу порт TCP 25:

25: TCP: *: enabled: SMTP

де 25 - номер порту, TCP - протокол, зірочка (*) відкриває порт всьому світу (не тільки підмережі), ключ enabled відкриває, а не закриває порт, і SMTP - описова фраза. У командному рядку потрібно ввести

netsh firewall ipv4 add portopening

з подальшими ключами protocol = (варіанти - tcp, udp або all), port = (з номером), name = (з ім'ям), mode = (enable або disable) і scope = (all або subnet). Для активізації поштового сервера слід ввести команду

netsh firewall ipv4 add portopening protocol = tcp port = 25 name = SMTP mode = enable scope = all

Якщо режим не вказано, то мається на увазі enable (активізований), а якщо не вказано діапазон scope - мається на увазі subnet (підмережа).

Щоб закрити порт, досить ввести команду

netsh firewall ipv4 delete portopening

вказавши протокол і номер порту, що ідентифікують закривається порт. Наприклад, порт поштового сервера закривається командою

netsh firewall ipv4 delete portopening protocol = tcp port = 25

В процесі експериментів можуть виникнути непорозуміння - порт був закритий, але чомусь залишається відкритим. Щоб уникнути непорозумінь, слід усвідомити різницю між поведінкою брандмауерів, керованих параметром Group Policy і за допомогою командного рядка. Команди, що подаються з командного рядка, зазвичай вступають в силу негайно. Зміни в Group Policy починають діяти через деякий час. Щоб зміни Group Policy для Windows Firewall вступали в дію відразу ж, слід застосувати команду gpupdate.

Необхідно дочекатися, поки обробка команди завершиться, потім перейти до функції Services в оснащенні Manage Computer і перезапустити службу Internet Connection Firewall (в остаточній версії ім'я служби може бути змінено).

Додаткові можливості командного рядка

Ми розглянули можливості параметрів Group Policy для Windows Firewall, але функції командного рядка ширше. Слід пам'ятати, що Windows Firewall має два профілі: Domain і Mobile. Припустимо, нам потрібно з'ясувати, який профіль використовується в даний момент. Наступна команда показує активний профіль - Domain Profile (corporate) або Mobile Profile (other):

netsh firewall ipv4 show currentprofile

Команда Set Logging дозволяє більше дізнатися про роботу брандмауера. Вона має чотири факультативних параметра: Filelocation = показує брандмауера, куди записати ASCII-файл журналу, а maxfilesize = задає максимальний розмір файлу. Розмір файлу вказується в кілобайтах, і максимальне допустиме значення - 32767. Параметри droppedpackets = і connections = приймають значення enable або disable і вказують брандмауера, слід реєструвати блоковані і успішні з'єднання. Наприклад, щоб записувати як успішні, так і блоковані з'єднання в файлі C: \ firelog.txt розміром максимум 8 Мбайт, потрібно ввести команду

netsh firewall ipv4 set logging filelocation = "C: \ firelog.txt" maxfilesize = 8192 droppedpackets = enable connections = enable

Журнал може бути більшим, але якщо потрібно виявити зломщика, регулярно що здійснює спроби атак, корисно мати повний журнал, в якому відображені всі з'єднання і відмови TCP і UDP. Задати поточний режим реєстрації можна за допомогою команди

netsh firewall ipv4 show logging

Наступна команда видає вичерпний список параметрів брандмауера:

netsh firewall ipv4 show config

Замінивши в даній команді ключ config ключем state, можна отримати докладні відомості про дії, які виконуються брандмауером. Щоб отримати більш компактний звіт, що містить тільки інформацію про відкриті портах, слід замінити config на icmpsetting або portopening.

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