Утиліта Netsh поповнює командний рядок фундаментальної силою IPsec
Знайомство з IPsec
Беручи до уваги, що в силу своєї складності IPsec може виходити за рамки тих завдань, які більшість адміністраторів виконують щодня, почнемо з основних функцій. Як випливає з назви, IPsec служить для забезпечення додаткового захисту на порівняно низькому рівні протоколу IP. За допомогою IPsec можна не тільки змінювати налаштування протоколу IP, щоб передавати блоки інформації з однієї системи в іншу (типова функція IP), а й здійснювати передачу пакетів тільки в тому випадку, якщо відправник і одержувач зашифрують ці пакети; також можна заборонити передачу пакетів. Значна перевага IPsec полягає в тому, що ми знову говоримо про IP, а не про протоколах більш високого рівня. З IPsec можна захистити комунікації в мережі Internet так само легко, як убезпечити електронну пошту або транзакції сервера Microsoft SQL Server, тому що ці програми виконуються на верхніх рівнях IP.
Треба сказати, що IPsec - середовище, робота в якій вимагає знання спеціальних понять. Компетентність в IPsec передбачає розуміння таких термінів, як політика, правила, список фільтрів, фільтр, дія фільтра і аутентифікація.
Політика і правила. Адміністратор захищає всі або деякі IP-з'єднання в даній системі (або безлічі систем) шляхом створення так званої політики IPsec. Політика - це контейнер для одного або декількох правил, і нічого більше, тому вона набагато ефективніше, ніж опис параметра, таке як Protect my SQL Server System або Block port 80. Наприклад, на сервері SQL Server політика може складатися з двох правил, таких як : Allow encrypted communications only on port TCP 1433 with local subnet ( «Дозволити зашифровані комунікації тільки через порт TCP1433 з локальної підмережею») і Block any communications to TCP 1433 from anywhere else ( «Заблокувати будь-які вхідні з'єднання TCP на порт 1433 з інших місць» ). TCP - це мережевий інтерфейс для сервера SQL Server за замовчуванням. Кожне правило складається з двох обов'язкових частин і однієї факультативної. До обов'язкових компонентів відносяться список фільтрів і дію фільтра, до додаткових - аутентифікація.
Дія фільтра. Коли фільтр визначено, з'являється етап дії фільтра. Дія фільтра IPsec може дозволяти з'єднання і пропускати пакети (лінія поведінки за замовчуванням, що відбувається зараз в більшості мереж), блокувати з'єднання (просто відкидати пакети IP), шифрувати або підписувати потік інформації. Наприклад, друге правило в нашій політиці, Block any incoming communications to port 1433 ( «Блокувати будь-які вхідні з'єднання на порт 1433»), встановлює дію фільтра з функцією блокування.
Аутентифікація. Якщо дія фільтра не блокує і не дозволяє, а шифрує або ставить цифровий підпис, то необхідний третій компонент правила: шифрування або алгоритм цифрового підпису та засіб для обміну криптографічними кодами для такого шифрування і підпису - іншими словами, механізм аутентифікації. Стандарт IPsec дозволяє двом сторонам аутентифицироваться, якщо вони знають загальний пароль, обмінюються сертифікатами або ж є членами одного і того ж лісу Active Directory - варіант, який в IPsec реалізується Kerberos.
Приклад блокування порту
Просте завдання, яку можна виконати за допомогою IPsec, - заблокувати окремий порт TCP або UDP. Хоча блокування портів і не виглядає особливо корисним, я застосовував IPsec таким чином, щоб використовувати простий пакетний файл для створення брандмауера в даному випадку, навіть після дебюту брандмауера Windows Firewall. На відміну від брандмауера Windows Firewall, IPsec може блокувати вихідні пакети.
Припустимо, з'ясувалося, що деякі співробітники потай користуються Web-серверами сумнівного змісту. Слід припинити таку діяльність шляхом створення набору команд, що не допускають відправку та отримання будь-якого пакета через порт 80. Для цього створимо політику, яка містить одне правило. Якщо пакет направляється в певну систему по протоколу TCP на порт 80 або ж знаходиться на шляху з порту 80 цієї системи, протоколу IPsec необхідно заблокувати даний пакет.
створення політики
Почнемо процес зі створення політики IPsec, яку можна назвати Block Web serving. Синтаксис команди Netsh досить простий:
Всі наші команди, які стосуються IPsec, слід починати з Netsh Ipsec Static. Потім з'являться варіанти Add, Delete, Set або Show, супроводжувані одним з п'яти ключів: policy, rule, filterlist, filter або filteraction. Обов'язкові для більшості з цих п'яти параметри - name = і description =. Якщо все-таки залишилися неясності з приводу синтаксису - звичайна проблема з Netsh, досить просто набрати команду без параметрів, наприклад
Розробка фільтру
Параметр filterlist = name визначає в IPsec, в якій зі списків фільтрів помістити фільтр. Але коли ж був створений цей список фільтрів? У Netsh є команда для створення списку фільтрів, але в нашому прикладі, коли компонент Add Filter зауважує, що новий фільтр є частиною неіснуючого списку фільтрів, команда приступає до створення цього списку фільтрів. Слова any і me є вбудованими ключовими словами зі значеннями, що не вимагають пояснення. Значення параметра dstport також зрозуміло (номер порту призначення), а параметр srcport = 0 означає any source port (будь-який порт джерела).
Параметр mirrored = yes підтверджує наш намір, щоб цей фільтр став правилом, що діє як для пакетів, що надходять в порт 80 даної системи, так і, навпаки, що виходять з порту 80. Можна було б створити два окремих фільтра в списку фільтрів, але багато фільтри IPsec просто вимагають собі пару так само, як наведена вище пара, яку можна назвати «дзеркальної».
Завдання дії фільтра
Тепер розробимо дію фільтра. Все, що необхідно зробити, - це визначити дію, яке заблокує інформацію, як показано нижче:
Ця команда створює дію фільтра з ім'ям blockit, і зрозуміло, що суть його в блокуванні інформації.
компонування політики
Тепер у нас є політика, список фільтрів і дію фільтра, залишилося зв'язати список фільтрів і дію фільтра в одне правило, як в наступній команді:
Це довга команда, але вона досить зрозуміла. Нагадаю, що правило складається, принаймні, з двох частин - списку фільтрів і дії фільтра - і є компонентом політики. Параметри команди дають правилом ім'я (Block 80), список фільтрів для використання (80 in or out), дія для здійснення (blockit) і опис. Отже, політика скомпонована.
Реалізація політики
Тепер залишається нашу політику реалізувати. Для цього можна використовувати команду
Далі, перейшовши на іншу систему, слід запустити Microsoft Internet Explorer (IE) і спробувати відкрити на своєму Web-сервері домашню сторінку. Internet Explorer кілька разів спробує здійснити операцію і в кінцевому рахунку відмовиться. Спробуйте знову, поверніться в Wеb-сервер і наберіть
і ви побачите домашню сторінку.
Дальше більше
Приклад з IPsec, наведений у статті, - це найпростіше, що можна спробувати, однак більш складні операції не набагато більш трудомісткі і здатні вирішувати дуже важливі завдання. Блокування і дозвіл трафіку - два найпростіших, але не єдиних способу використання стандарту IPsec. За допомогою IPsec можна також підписувати або шифрувати трафік, і ці процедури вимагають набагато більше знань. Тому зараз нам належить модифікувати завдання, розглянуту вище: створимо правило IPsec, що дозволяє Web-серверу пропускати трафік через TCP на порт 80, але тільки в тому випадку, якщо він зашифрований потрійним DES (3DES) і підписаний за допомогою алгоритму Secure Hash Algoritm-1 (SHA-1).
Створення політики. Так само як і раніше, ми створимо політику IPsec, яка використовується на Web-сервері або в групі Web-серверів. Ця політика буде складатися з одного-єдиного правила, в якому повинен бути список фільтрів і дію фільтра (як і метод аутентифікації, але про це пізніше). Дія фільтра активує правило, якщо інформація надходить в певну систему через TCP на порт 80 або якщо інформація йде з цієї системи в будь-якому напрямку через TCP-порт 80. Щоб активувати список фільтрів, дія, яка виконує дане правило, - запросити шифрування 3DEC і підпис SHA-1.
Всі команди, які стосуються стандарту IPsec, починаються з Netsh IPsec Static. Ключ Add Policy створює політику, і команда переходить до іменування і опису політики.
Створення фільтра і списку фільтрів. Фільтр, який ми хочемо розробити, буде давати IP-команду активувати певне правило, якщо інформація надходить або йде через TCP-порт 80, тому такий фільтр нагадує той, що був створений вище:
Завдання дії фільтра. Замість дії фільтра, описаного в минулий раз і полягав у блокуванні передачі інформації при відповідно умови фільтра, тепер ця дія буде являти собою шифрування і підпис передачі в тому випадку, якщо умова фільтра задоволено. Ця запис виглядає наступним чином:
Ключ Add Filtration додає дію фільтра, і команда переходить до найменування і опису цієї дії. Слід звернути увагу на включення параметра action = negotiate замість action = block або action = permit. Цей параметр використовується як при цифрового підпису, так і при шифруванні і підписи. Але що тут вийде?
На це питання відповідає наступний параметр qmsecmethods = »ESP [3DES, SHA1]. Даний параметр має безліч можливих варіантів, але, по суті, ви визначаєте режим ESP [] або AH [] і задаєте обраний алгоритм шифрування або алгоритм хеш-функцій всередині квадратних дужок. Наприклад, «AH [SHA1] буде використовувати хеш-функцію SHA1 для цифрового підпису трафіку. Режим ESP вимагає імена двох криптографічних алгоритмів - для шифрування і хешування, тому що він і шифрує, і підписує трафік. Таким чином, режим «ESP [3DES, SHA1]» шифрує за допомогою потрійного алгоритму DES і підписує з хеш-функцією SHA1.
Останні три параметри відносяться до трьох прапорців в графічному інтерфейсі користувача при налаштуванні фільтру IPsec. Перший прапорець - Accept unsecured communication, but always respond using Ipsec ( «Прийняти незахищене з'єднання, але завжди відповідати з використанням Ipsec»). Припустимо, є комп'ютер з встановленою системою Windows XP з існуючим базовим правилом Ipsec. Цей комп'ютер посилає шифровані відповіді, коли надходить запит, але ніколи не ініціює шифрування. Якщо дана система XP намагається отримати вміст захищеного Web-сервера, цей Web-сервер прийме запит HTTP, але відповість за допомогою зашифрованого IPsec.
На даному етапі клієнт або не зрозуміє IPsec і просто припинить з'єднання або зуміє зрозуміти і приступить до передачі за допомогою IPsec. Вибір цього прапорця - не обов'язково помилка, і якщо потрібно обладнати системи клієнта тільки вбудованої політикою IPsec в режимі Client (Respond Only), доведеться вибрати саме її, але особисто мені вона не подобається.
Багато з Web-додатків поміщають деталі аутентифікації в вихідний запит HTTP, але дуже неприємно усвідомлювати, що навіть перша передача пакета на захищений Web-сервер може йти відкритим текстом.
Параметр inpass = no прибирає цей прапорець і виключає можливість проникнення відкритого тексту в попередні з'єднання.
Встановити прапорець Allow unsecured communications with non-IPsec-aware computers ( «Дозволити незахищені комунікації з комп'ютерами, що не підтримують стандарт Ipsec») - вкрай невдала ідея. По суті, вона вимагає від клієнтів зашифрованих комунікацій, але в разі, якщо вони не в змозі виконати ці вимоги, незахищені комунікації в будь-якому випадку дозволяються. Важливо пам'ятати, однак, що зловмисникам не знадобляться всі паролі, досить і одного. Параметр soft = no прибирає цей прапорець.
Нарешті, параметр qmpfs = yes визначає, як саме стандарт IPsec змінює свої коди шифрування / підпису. Щоб розладнати плани зловмисників, IPsec регулярно змінює криптографічні коди. Можна налаштовувати IPsec на зміну кодів так часто, як це необхідно.
Нові коди математично пов'язані з попередніми; отже, якщо якийсь код скомпрометований, зловмисник може обчислити наступні.
Що таке правило?
Щоб створити правило, слід об'єднати список фільтрів, дія фільтра і третю складову, яка не була потрібна нам минулого разу: аутентифікацію. Стандарт IPsec підтримує такі підходи: загальний пароль (неприйнятний варіант, можливий хіба що в тестових ситуаціях), вбудовану інфраструктуру Kerberos, яка приєднує кожну систему до лісу Active Directory (AD) або здійснює обмін сертифікатом X.509. Стандарт Windows IPsec використовує Kerberos за замовчуванням, і це показано далі в прикладі. Команда Netsh для створення правила виглядає наступним чином:
Ключ Add Rule присутній, оскільки ми додаємо правило. Далі команда називає правило і політику, яка містить це правило. Не можна використовувати правила в більш ніж однієї політиці. Потім команда вказує список фільтрів і дію фільтра. Параметр Kerberos = yes визначає аутентифікацію Kerberos, і команда закінчується описом. Тепер необхідно лише здійснити політику, як ми робили минулого разу, або реалізувати її за допомогою графічного інтерфейсу користувача.
Поділіться матеріалом з колегами і друзями
Потужна і гнучка технологія, не схожа ні на одну з мов сценаріїв Windows PowerShell (колишня назва - Monad) - один з інструментів управління Windows Server, випущених Microsoft з моменту появи VBScript. PowerShell
Приклад з реального життя Поки Microsoft зайнята просуванням Windows PowerShell, наступного покоління мови написання сценаріїв для Windows, системні і мережеві адміністратори та ІT-менеджери більшою мірою зосереджені на виконанні поточних
Останні прогалини в можливостях адміністрування Windows Процес написання сценаріїв в Windows довгий час був предметом глузувань з боку адміністраторів UNIX. Головна причина полягала в тому, що в Windows відсутня безліч функцій, які могли б.
Вдосконалюйте свої сценарії Сценарії для командного рядка - це файли з простим текстом, які інтерпретуються командним процесором як набори команд, що підлягають послідовному виконанню. Історія сценаріїв для командного рядка почалася на зорі