Тонка настройка Windows Firewall в Windows XP SP2 h2>
Дев'ять нових параметрів Group Policy і відповідні
команди h2>
В
статті, опублікованій в попередньому номері журналу, я вже розповідав про
брандмауер Windows Firewall, компонент пакету оновлень Windows XP Service
Pack 2 (SP2), колишні версії якого були відомі як Internet Connection
Firewall (ICF). У даній статті я детальніше зупинюся на цій програмі
і покажу, як підготувати її для роботи в конкретній мережі. У моєму розпорядженні
була тільки попередня версія SP2, в остаточну редакцію можуть бути
внесені зміни. p>
Отже,
розглянемо дев'ять нових параметрів 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. Обидві підпапки містять однаковий набір з дев'яти параметрів
політики. p>
В
попередній статті йшлося про перший параметр, Operational Mode. Даний
параметр забезпечує три режими: Disabled відключає брандмауер, Protected
активізує брандмауер, а Shielded активізує брандмауер, але комп'ютер
виявляється більш ізольованим від мережі, ніж в режимі Protected, який
дозволяє відкрити певні порти. Щоб перевести комп'ютер у режим
Disabled, Protected або Shielded, варто скористатися командою p>
netsh firewall ipv4 set opmode p>
з ключем disabled, enabled або shield. Позначення в командному рядку
іноді відрізняються від назв відповідних параметрів Group Policy. Таким
чином, щоб надійно захистити мережевий адаптер, слід ввести команду p>
netsh
firewall ipv4 set opmode shield p>
Цю
команду зручно використовувати в командному файлі. Можна створити для командного
файлу ярлик на робочому столі, назвавши його Shield this System, щоб можна було
двічі клацнути на ньому за будь-яких ознак небезпеки для мережі. За допомогою
команди p>
netsh
firewall ipv4 show opmode p>
можна
дізнатися режим брандмауера. p>
Зміна
параметрів брандмауера p>
Властивості
наступного параметра політики Windows Firewall - Allow User Preference/Group
Policy Settings Merge не зовсім ясні. У документації Windows Firewall
вказується, що за допомогою даного параметра локальні адміністратори можуть
змінити режим брандмауера. Але що означає слово "змінити" --
включити або вимкнути брандмауер або налаштувати його, відкриваючи й закриваючи
порти? У даному випадку "змінити" має друге значення: за допомогою
даної політики локальний адміністратор може відкрити або закрити порт, але не
відмінити режим Disabled, Protected або Shielded, встановлений доменної
політикою (передбачається, що доменна політика для Windows Firewall
існує). Якщо в політиці заданий режим Disabled, то локальний адміністратор
не може управляти роботою брандмауера. p>
Плутанина
починається, якщо локальний адміністратор намагається відмінити параметри Windows
Firewall, задані об'єктом Group Policy Object (GPO). У відповідь на команду p>
netsh
firewall ipv4 set opmode disable p>
буде
отриманий результат OK, і наступна команда Netsh Firewall повідомить, що
брандмауер відключений. Проте, заглянувши у властивості мережевого адаптера в папці
Network Connections, можна побачити, що брандмауер активний. Кілька тестів
показують, що інформація графічного інтерфейсу відповідає
дійсності: переважають доменні параметри. Будемо сподіватися, що в
остаточної версії ці недоліки будуть виправлені. p>
Однак
не можна завжди покладатися на діалогові вікна. Якщо привласнити параметру Allow
User Preference/Group Policy Settings Merge значення Disabled, то колір вікна
стає сірим, а перемикачі для активізації і відключення Windows Firewall
перестають діяти. Такий підхід розумний. Але спробуйте активізувати
параметр, а потім повернутися до екрану настройки Windows Firewall. Кнопки для
включення і виключення брандмауера доступні. Якщо клацнути на одній з них, а
потім на OK, то на екрані не з'явиться повідомлення про помилку, а й змін також
не відбудеться. Проте локальний адміністратор може відкривати і закривати порти
за допомогою командного рядка або gpedit.msc. Для параметра політики Allow User
Preference/Group Policy Settings Merge еквівалента командного рядка не
існує. p>
Відкриваємо
порти для програм p>
Наступний
параметр політики - перший з семи параметрів, за допомогою яких можна відкрити
або (у деяких випадках) закрити конкретний порт. Відкриваючи брандмауер для
проходження певного типу трафіку (наприклад, Web-трафіку, даних
аутентифікації Active Directory або завантаження електронної пошти), важко
визначити, який порт необхідний для цього типу трафіку. Завдання спрощується
завдяки параметру політики Define Allowable Programs. За замовчуванням Windows
Firewall блокує непроханий вхідний трафік, але не вихідний. Такий підхід
прийнятний, якщо робоча станція функціонує як клієнт, який ініціює обмін
даними (наприклад, запрошуючи поштовий сервер про наявність повідомлень або
Web-сервер - про інформацію). Але він не спрацьовує, якщо робоча станція
надає служби іншим комп'ютерам мережі, наприклад, якщо на робочій станції
розміщений поштовий сервер, тому що брандмауер блокує спроби клієнтів
ініціювати діалог з серверної програмою. Він також непридатний для
однорангових (peer-to-peer, P2P) з'єднань, таких як Instant Messaging (IM),
в яких дві або декілька машин обмінюються даними, виконуючи обов'язки і
клієнтів, і серверів одночасно. Таким чином, для запуску сервера або
організації з'єднань P2P необхідно відкрити деякі порти. p>
Але
які саме порти слід відкрити? Для відповіді на це питання досить
вказати конкретну програму в параметрі Define Allowable Programs, і Windows
Firewall відкриває порти, необхідні даній програмі. Користувач вказує
в параметрі політики місцезнаходження програми, визначає її стан
(активне або блокувати; наприклад, можна скласти політику блокування
портів для конкретної програми, якщо ця програма була "троянським
конем ", що проникли в мережу) і відкриває відповідні порти для всього
Internet або тільки для локальної підмережі. P>
Припустимо,
що на комп'ютері працює серверна програма C: myprogsserverprog.exe.
Невідомо, які порти вона відкриває, але необхідно, щоб ці порти були
відкриті тільки для комп'ютерів тієї підмережі, в якій розташований сервер. Потрібно
активізувати параметр Define Allowable Programs, потім клацнути на кнопці
Show, щоб на екрані з'явилося діалогове вікно для введення інформації про поштову
сервер. У цьому діалоговому вікні я ввів рядок p>
C: myprogsserverprog.exe: LocalSubnet:
enabled: E-mail server p>
яка
визначає чотири компоненти, кожен з яких відокремлений від решти
двокрапкою. Перший компонент - повний шлях до програми. Можна використовувати
змінні середовища, такі як% ProgramFiles%. Наступний компонент, LocalSubnet,
вказує на необхідність вжити трафік, що входить в порти цього сервера
тільки з систем тієї ж підмережі. Третій компонент, enabled, дозволяє
проходження трафіку. І четвертий компонент, E-mail server, являє собою
просто позначку, яку Windows Firewall може використовувати при складанні
звітів. Число програм не обмежене. P>
Відкриття
конкретних портів p>
З
допомогою інших параметрів відкриваються різні порти. Не зовсім ясно,
чи слід активізувати перший з них, 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 поширювався від зараженого комп'ютера, який
хтось приносив на підприємство. Тому перед активізацією даного параметра
необхідно ретельно все обміркувати. p>
Як
і RPC, параметри File and Print Sharing, Remote Assistance Support і Universal
Plug and Play можна відмінити або активізувати, а дію активних параметрів
обмежити локальної підмережею. Всі ці параметри, окрім Remote Assistance
Support, можна активізувати з командного рядка за допомогою команди p>
netsh
firewall ipv4 set service p>
за
якої слід type = і ім'я служби (наприклад, FILEANDPRINT, RPCANDDCOM або UPNP)
або scope = з подальшими ключами all (для всіх IP-адрес) і subnet (для
локальної підмережі). Наприклад, щоб дозволити спільну роботу з файлами і
принтерами тільки в локальній підмережі, слід ввести команду p>
netsh firewall ipv4 set service
type = fileandprintscope = subnet p>
Будь-яку
команду можна доповнити ключами profile = і interface =, тому, якщо файл-або
принт-службу потрібно відкрити для провідне Ethernet-з'єднання тільки в
випадках, коли система підключена до домена, потрібно ввести команду p>
netsh firewall ipv4 set service
type = fileandprint scope = subnet interface = "local area connection"
profile = corporate p>
Group
Policy працює з профілями Domain і Mobile, а інструменти командного рядка - з
корпоративними і іншими профілями. p>
Залишається
два параметри політики. Allow ICMP Settings впливає на підсистему ICMP
(Internet Control Message Protocol - протокол управління повідомлення Internet). У
суті, для адміністратора важливий лише один компонент ICMP: Ping. За замовчуванням
в системах з брандмауером блокуються всі запити ICMP, і тому сигнали
луна-тестування ігноруються. У Allow ICMP Settings Properties перераховано дев'ять
типів запитів ICMP, дозволених брандмауером Windows Firewall. Для
тестування потрібно активізувати тільки запит Allow Inbound Echo Request.
Цей параметр не дозволяє обмежити ICMP-трафик локальною підмережею. P>
ICMP
відкривається з командного рядка: p>
netsh
firewall ipv4 set icmpsetting p>
з
подальшим ключем type = і числом (3, 4, 5, 8, 10, 11, 12, 13 або 17) або словом
all. Номер вказує один з дев'яти параметрів ICMP і нам потрібний номер 8 --
вхідний запит (incoming echo request). Щоб машина відповідала на сигнали
тестування, необхідно ввести команду p>
netsh
firewall ipv4 set icmpsetting type = 8 p>
Команду
можна уточнити за допомогою ключів profile = і interface =. p>
Як
відкрити порт для служби, яка в даній статті не розглядалася? Для цього
можна скористатися дев'ятим параметром політики, Define Custom Open Ports.
Потім слід вказати номер порту Windows Firewall, тип порту (TCP або UDP),
область дії (всі IP-адреси або тільки локальна підмережа) і дія
(активізувати або блокувати). При бажанні порту можна привласнити
описову назву. Наприклад, для поштового сервера можна відкрити всьому світу порт
TCP 25: p>
25: TCP: *: enabled: SMTP p>
де
25 - номер порту, TCP - протокол, зірочка (*) відкриває порт всьому світу (не
тільки підмережі), ключ enabled відкриває, а не закриває порт, і SMTP --
описова фраза. У командному рядку потрібно ввести p>
netsh
firewall ipv4 add portopening p>
з
подальшими ключами protocol = (варіанти - tcp, udp або all), port = (з номером),
name = (з ім'ям), mode = (enable або disable) і scope = (all або subnet). Для
активізації поштового сервера слід ввести команду p>
netsh
firewall ipv4 add portopening protocol = tcp port = 25name = SMTP mode = enable
scope = all p>
Якщо
режим не вказаний, то мається на увазі enable (активізований), а якщо не вказано
діапазон scope - мається на увазі subnet (підмережа). p>
Щоб
закрити порт, досить ввести команду p>
netsh
firewall ipv4 delete portopening p>
вказавши
протокол і номер порту, що ідентифікують закриває порт. Наприклад, порт
поштового сервера закривається командою p>
netsh
firewall ipv4 delete portopening protocol = tcp port = 25 p>
В
процесі експериментів можуть виникнути непорозуміння - порт був закритий, але
чомусь залишається відкритим. Щоб уникнути непорозумінь, слід з'ясувати
різницю між поведінкою брандмауерів, керованих параметром Group Policy і з
допомогою командного рядка. Команди, що подаються з командного рядка, зазвичай
вступають в силу негайно. Зміни в Group Policy починають діяти
через деякий час. Щоб зміни Group Policy для Windows Firewall
вступали в дію відразу ж, слід застосувати команду gpupdate. p>
Необхідно
дочекатися, поки обробка команди завершиться, потім перейти до функції Services
в оснащенні Manage Computer і перезапустити службу Internet Connection Firewall
(в остаточній версії ім'я служби може бути змінене). p>
Додаткові
можливості командного рядка p>
Ми
розглянули можливості параметрів Group Policy для Windows Firewall, але
функції командного рядка ширші. Слід пам'ятати, що Windows Firewall має два
профілю: Domain і Mobile. Припустимо, нам потрібно з'ясувати, який профіль
використовується в даний момент. Наступна команда показує активний профіль --
Domain Profile (corporate) або Mobile Profile (other): p>
netsh
firewall ipv4 show currentprofile p>
Команда
Set Logging дозволяє більше дізнатися про роботу брандмауера. Вона має чотири
факультативних параметри: Filelocation = показує брандмауер, куди записати
ASCII-файл журналу, а maxfilesize = задає максимальний розмір файлу. Розмір
файлу вказується в кілобайтах, і максимальне допустиме значення - 32767.
Параметри droppedpackets = і connections = приймають значення enable або disable і
вказують брандмауер, чи слід реєструвати блоковані і успішні
з'єднання. Наприклад, щоб записувати як успішні, так і блоковані
з'єднання у файлі C: firelog.txt розміром максимум 8 Мбайт, потрібно ввести
команду p>
netsh firewall ipv4 set
loggingfilelocation = "C: firelog.txt" maxfilesize = 8192 droppedpackets =
enable connections = enable p>
Журнал
може бути великим, але якщо потрібно виявити зломщика, регулярно
які спробують атак, корисно мати повний журнал, в якому відображені
всі з'єднання і відмови TCP і UDP. Задати поточний режим реєстрації можна з
допомогою команди p>
netsh
firewall ipv4 show logging p>
Наступна
команда видає вичерпний список параметрів брандмауера: p>
netsh
firewall ipv4 show config p>
Замінивши
в даній команді ключ config ключем state, можна отримати докладні відомості про
діях, виконуваних брандмауером. Щоб отримати більш компактний звіт,
який містить лише інформацію про відкриті портах, слід замінити config на
icmpsetting або portopening. p>
Для
роботи з Windows Firewall потрібно освоїти багато нових понять. Однак якщо в
системі персонального брандмауера немає, то Windows Firewall допоможе захистити
машину, доведеться витратити лише незначний час на створення GPO, щоб
відкривати потрібні порти. Винагородою для адміністратора буде свідомість того,
що система за брандмауером стане куди менш уразливою. p>
Список літератури h2>
Для
підготовки даної роботи були використані матеріали з сайту http://www.nodevice.ru/
p>