Как оптимизировать сайт и блог под AI

Двадцать лет мы оптимизировали сайты под Google. Пора учиться объяснять их машинам, которые читают сайт вместо человека.

Поисковик показывал человеку десять синих ссылок — дальше человек думал сам. AI-агент так не делает: он читает страницу, понимает её и сразу отвечает пользователю или принимает решение — кого порекомендовать, к кому обратиться, что закупить. Если агент вас не понял — вы не «ниже в выдаче», вас просто нет в ответе.

Хорошая новость: новый сайт не нужен. Нужно навести порядок в нескольких слоях, и работают они только вместе.

Как оптимизировать сайт и блог под AI — инфографика

Три слоя: привратник, путеводитель, паспорт

Коротко суть:

  • robots.txt — решает, кого вообще пускать, и указывает ботам дорогу к llms.txt.
  • llms.txt — человекочитаемая выжимка в корне сайта: кто вы, услуги, контакты, главные страницы. Поисковик ползёт по всему сайту и догадывается. Агенту вы даёте готовую карту.
  • Микроразметка Schema.org / JSON-LD — машинный паспорт страницы: не «красивый текст про компанию», а структурно — организация, контакты, услуги и связи между ними. Без неё агент догадывается. С ней — знает.

Привратник впускает, путеводитель объясняет, паспорт подтверждает. Уберите любой слой — цепочка рвётся.

Честная оговорка: llms.txt — стандарт молодой, скорее emerging convention, чем утверждённая норма, и не все боты читают его одинаково. Но стоит он полчаса работы, а вреда не несёт — поэтому в моём чек-листе он есть.

1. База: делайте контент понятным

Никакой robots.txt не спасёт страницу, которую не понять ни человеку, ни машине.

  • Одна страница — одна главная тема.
  • Чёткий H1, логичные H2/H3, короткие абзацы.
  • Прямые ответы, определения, списки, FAQ.
  • Автор, дата публикации и дата обновления.
  • Источники, контакты, страница «О нас», редакционная политика.

2. Структура сайта

  • ЧПУ-URL, хлебные крошки, canonical, sitemap.xml.
  • Семантический HTML: <header>, <main>, <article>, <nav>, <footer>.
  • Связанные материалы и внутренняя перелинковка.
  • Не прячьте важный текст только в JavaScript.
  • Мобильная версия и скорость загрузки — обязательны.

3. robots.txt — правила обхода

Файл в корне сайта управляет доступом ботов к разделам и указывает путь к карте сайта:

User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xml

# Ссылка на описание для LLM
# https://example.com/llms.txt

Ссылка на llms.txt в комментарии — полезная практика, хотя пока не официальный универсальный стандарт.

4. llms.txt — краткая карта сайта для LLM

Файл в корне (/llms.txt) помогает кратко объяснить назначение сайта, важные разделы, документацию, контакты и ключевые материалы.

Пример:

# Example Site
Описание: Блог и база знаний по AI и SEO.
Разделы: /blog/, /docs/, /faq/
Ключевые материалы: /guide/ai-seo
Контакты: /contact/
Обновлено: 2026-06-02

Включите: краткое описание проекта, целевую аудиторию, основные разделы, ссылки на лучшие материалы, контакты, политику и дату последнего обновления.

5. Микроразметка / Schema.org

JSON-LD — предпочтительный формат. Рекомендуемые типы:

Тип страницы Schema.org
Блог Article, BlogPosting
FAQ FAQPage
Инструкции HowTo
Компания Organization
Автор Person
Навигация BreadcrumbList
Общие страницы WebPage

Минимальный шаблон для статьи:

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "...",
  "description": "...",
  "author": { "@type": "Person", "name": "..." },
  "datePublished": "YYYY-MM-DD",
  "dateModified": "YYYY-MM-DD",
  "mainEntityOfPage": "URL"
}

6. Что особенно любят AI-системы

  • Краткие summary-блоки в начале материала.
  • Термин → определение → пример.
  • Списки, таблицы, чек-листы.
  • Q&A и блоки «Коротко» / TL;DR.
  • Alt-текст у изображений и подписи к иллюстрациям.
  • Транскрипты для видео и аудио.

7. Управление AI-ботами

Проверяйте правила для конкретных user-agent. Решите, что индексировать, а что нет. Блокируйте приватные, тестовые и дублирующие разделы. Регулярно пересматривайте robots.txt — список ботов растёт.

Примеры user-agent для управления: GPTBot, Google-Extended, ClaudeBot, PerplexityBot, CCBot.

8. Чек-лист перед публикацией

  • [ ] Понятный title и H1
  • [ ] Summary и FAQ на месте
  • [ ] Автор и дата обновления указаны
  • [ ] Schema.org / JSON-LD внедрена
  • [ ] sitemap.xml обновлён
  • [ ] robots.txt настроен
  • [ ] llms.txt подготовлен
  • [ ] Внутренняя перелинковка есть

Итог

Сайт остаётся прежним для людей. Просто теперь его понимают и машины. В мире, где подрядчика всё чаще выбирает агент, а не человек, — это уже не «приятно иметь», а гигиена.

Формула: хороший контент + понятная структура + robots.txt + llms.txt + schema.org = сайт, который понимают и люди, и AI.

Подходит для блогов, корпоративных сайтов, документации, интернет-магазинов и баз знаний.


Материал ранее опубликован в LinkedIn.

Рубрика: Off-topic, Quick Tip | Метки: , , | Оставить комментарий

Как смартфоны «понимают», что Wi-Fi требует авторизации: разбор Captive Portal

Вступление

Вы когда-нибудь подключались к Wi-Fi в кафе или аэропорту, и телефон сам открывал браузер со страницей входа? Или наоборот — подключались, а интернета нет, но и страница не появляется?

За этим стоит технология Captive Portal. А ключевую роль в её обнаружении играют несколько специальных URL, которые «зашиты» в каждую операционную систему. В этой статье разберем, как они работают, какие именно адреса используют iPhone, Android и Windows, и почему HTTPS иногда всё ломает.

Как это работает: «приманка» для сети

Когда ваш телефон или ноутбук подключается к новой Wi-Fi, он не показывает вам страницу входа сразу. Сначала он делает незаметный фоновый запрос по одному из зарезервированных адресов (например, http://captive.apple.com/hotspot-detect.html).

  • Идеальный сценарий: Сервер возвращает код 204 No Content (или короткую строку вроде Success). Устройство думает: «Интернет есть, портала нет». Браузер не открывается.
  • Сценарий с порталом: Роутер перехватывает запрос и вместо кода 204 возвращает 302 Redirect (перенаправление) на страницу авторизации. Устройство понимает: «Ага, трафик перехвачен! Нужно открыть браузер и показать эту страницу пользователю».

📱 Секретные URL от производителей

Теперь — главное. Вот какие конкретно адреса «зашиты» в самые популярные устройства. Ваш список оказался абсолютно верным, я лишь добавлю контекст.

URLВладелецГде используетсяЧто ожидает устройство
http://captive.apple.com/hotspot-detect.htmlAppleiPhone, iPad, MacТекст Success (код 200)
http://connectivitycheck.gstatic.com/generate_204GoogleAndroid, ChromebookКод 204
http://www.google.com/generate_204GoogleWindows, старые версии Chrome, скриптыКод 204
http://cp.cloudflare.com/generate_204CloudflareАльтернативный URL, некоторые роутеры и приложенияКод 204
http://edge-http.microsoft.com/captiveportal/generate_204MicrosoftEdge BrowserКод 204

Почему именно HTTP, а не HTTPS? Это ключевой момент. Для проверки используется незашифрованный HTTP. Почему? Представьте: портал пытается подменить ответ для HTTPS-запроса. Это потребовало бы поддельного сертификата, и браузер выдал бы страшную ошибку безопасности, а не окно входа. Поэтому проверка всегда идет по HTTP, а окно портала открывается по любому протоколу.

🖥 А что насчет других систем?

Ваш список покрывает 90% мобильных устройств. Но есть и другие:

  • Microsoft Windows: http://www.msftconnecttest.com/connecttest.txt
  • Mozilla Firefox: http://detectportal.firefox.com/success.txt
  • Fedora / Linux: http://fedoraproject.org/static/hotspot.txt
  • Ubuntu / Linux: http://connectivity-check.ubuntu.com

🔧 Практическое применение (для администраторов)

Знание этих URL решает две реальные задачи:

  1. Диагностика проблем. Если вы подозреваете, что сеть перехватывает трафик там, где не должна, попробуйте в браузере открыть http://captive.apple.com/hotspot-detect.html. В нормальной сети вы увидите Success. Если видите что-то другое (или перебросило на другую страницу) — значит, портал активен.
  2. Настройка белых списков (whitelist). Если вы управляете корпоративным роутером или шлюзом с каптивным порталом, обязательно добавьте все эти домены в исключения (bypass). Устройства должны получать чистый ответ 204 без перехвата. Иначе они «зациклятся»: телефон будет думать, что портал не отпускает, и не даст пользователю нормальный доступ.

💡 Главный вывод

Эти маленькие URL — не просто технические детали. Это «язык», на котором ваше устройство договаривается с сетью: «Ты портал или нет?». Понимая этот механизм, вы сможете легче отлаживать проблемы с Wi-Fi, настраивать гостевые сети и даже «обманывать» систему в некоторых публичных сетях, подставляя свои заглушки.

А теперь проверьте себя: откройте в браузере по очереди каждый из этих адресов. Что вы видите? Если Success или пустую страницу — ваш интернет работает чисто.


P.S. Если у вас есть свой сервер, вы можете разместить файл generate_204 или hotspot-detect.html и использовать его в качестве пользовательского теста подключения. Главное правило — он должен отвечать быстро и без редиректов.

Рубрика: Off-topic | Метки: | Оставить комментарий

Конвертация PFX-сертификата в CRT и KEY

PFX (PKCS#12) удобен для переноса: сертификат и ключ в одном зашифрованном файле. На сервере чаще нужны отдельные .crt и .key. OpenSSL решает это за две команды.

Что понадобится

  • OpenSSL в PATH
  • PFX-файл с сертификатом и ключом
  • Пароль от PFX

Извлечь сертификат

openssl pkcs12 -in certificate2024.pfx -clcerts -nokeys -out example_com.crt

Флаг -clcerts берёт клиентский сертификат; -nokeys исключает ключ из вывода.

Извлечь приватный ключ

Два шага (если нужен отдельный расшифрованный ключ):

openssl pkcs12 -in certificate2024.pfx -nocerts -out server.key
openssl rsa -in server.key -out example_com.key

Один шаг (ключ сразу без шифрования на диске — только на доверенной машине):

openssl pkcs12 -in certificate2024.pfx -nodes -nocerts -out example_com.key

Результат

Файл Содержимое
example_com.crt Сертификат (PEM)
example_com.key Приватный ключ (PEM)

Импортируйте пару в веб-сервер или балансировщик. Храните .key с минимальными правами (chmod 600), не кладите в Git.

На практике

Если nginx ругается на «key values mismatch» — в PFX мог быть промежуточный CA, а не leaf. Добавьте -clcerts при извлечении cert или проверьте цепочку через openssl pkcs12 -in file.pfx -info -noout.

Рубрика: Quick Tip | Метки: , , , | Оставить комментарий

Конфигурирование Right To Use на оборудовании Cisco

Чтобы использовать Right To Use (RTU) лицензию на коммутаторах или маршрутизаторах Cisco, выполните следующие шаги:

Активируйте нужную лицензию:

Введите команду license right-to-use activate {ipbase | ipservices | lanbase} {all | evaluation all} [slot slot-number] [acceptEULA] для активации нужной вам лицензии. Например, чтобы активировать лицензию IP Services для всех слотов, введите license right-to-use activate ipservices all acceptEULA.

Перезагрузите устройство:

После активации лицензии перезагрузите устройство или линию карты с помощью команды reload [LINE | at | cancel | in | slot stack-member-number | standby-cpu]. Например, для перезагрузки второго слота введите reload slot 2.

После перезагрузки проверьте статус лицензий с помощью команды show license right-to-use summary. Это покажет, какие лицензии были активированы и их состояние.

Cisco Doc | LearnDuty

Рубрика: Cisco, Hardware, Quick Tip | Метки: , , | Оставить комментарий

Интеграция 3CX и Cisco Communication Manager

Задача

Организация двустороннего транка между Cisco CM и 3CX с прозрачной передачей номеров вызывающего и вызываемого посредством промежуточного шлюза (Cisco ISR с функционалом CME/UBE).

Агенда

10001 — Bridge number/id in 3CX

1xxx — Dial plan in Cisco UCM

2xxx — Dial plan 3CX system

10.0.1.2 — Voice router / gateway

10.0.2.2 — Cisco UCM

10.0.3.2 — 3CX

Проверено на Cisco ISR 2921, SW: «c2900-universalk9-mz.SPA.157-3.M8.bin«

Пример конфигурации

!
class-map match-any voip-med
 match protocol rtp
class-map match-any voip-sig
 match protocol sip
!
policy-map policy-voip
 class voip-med
  set dscp ef
 class voip-sig
  set dscp af41
!

!
interface FastEthernet0/0
 description VoIP Network
 ip address 10.0.1.2 255.255.255.0
 service-policy output policy-voip
!

!
voice service voip
 ip address trusted list
  ipv4 10.0.2.2 255.255.255.255
  ipv4 10.0.3.2 255.255.255.255
 srtp fallback
 allow-connections sip to sip
 supplementary-service h450.12
 no supplementary-service sip moved-temporarily
 supplementary-service media-renegotiate
 redirect ip2ip
 signaling forward none
 sip
  min-se 600 session-expires 600
  header-passing
  error-passthru
  registrar server
  asserted-id pai
  history-info
  midcall-signaling passthru
  privacy-policy passthru
  privacy-policy send-always
!
voice class codec 1
 codec preference 1 g722-64
 codec preference 2 g711alaw
 codec preference 3 g711ulaw
 codec preference 4 g729r8
!

!
voice class sip-profiles 1
 request INVITE sip-header From modify "sip:....@10.0.1.2" "sip:10001@10.0.1.2"
 request INVITE sip-header Contact modify "sip:....@10.0.1.2" "sip:10001@10.0.1.2"
!

!
dial-peer voice 1000 voip
 description = CUCM =
 destination-pattern ^1...
 rtp payload-type comfort-noise 13
 session protocol sipv2
 session target ipv4:10.0.2.2
 incoming called-number .T
 voice-class codec 1
 no voice-class sip early-offer forced
 voice-class sip options-keepalive
 voice-class sip pass-thru content sdp
 dtmf-relay rtp-nte
 ip qos dscp cs3 signaling
 no vad
!

!
dial-peer voice 2000 voip
 description = 3CX =
 destination-pattern ^2...
 rtp payload-type comfort-noise 13
 session protocol sipv2
 session target ipv4:10.0.3.2
 incoming called-number .T
 voice-class codec 1
 no voice-class sip asserted-id
 no voice-class sip early-offer forced
 voice-class sip profiles 1
 voice-class sip options-keepalive
 voice-class sip pass-thru content sdp
 dtmf-relay rtp-nte
 ip qos dscp cs3 signaling
 no vad
!

!
sip-ua
 credentials username 10001 password 123P realm 3CXPhoneSystem
 authentication username 10001 password 123P realm 3CXPhoneSystem
 timers connect 1000
 timers register 300
 registrar 1 ipv4:10.0.3.2 expires 3600
!
Параметры моста на 3CX

Note: GitHub Gist

Рубрика: 3CX, Cisco, Hardware, Software, Unified Communications | Метки: , , | Оставить комментарий

Сброс настроек телефонов Snom

Телефон «завис» после провижининга или нужно вернуть заводские настройки без веб-интерфейса — у Snom есть аппаратный Rescue Mode.

Модели: D3xx, D7xx, 7xx, MP.

Сброс через Rescue Mode

  1. Перезагрузите телефон: наберите **## или выключите/включите питание.
  2. Сразу после включения удерживайте #, пока не появится меню Rescue Mode.
  3. Выберите пункт:
  4. 1 — сброс настроек (factory reset)
  5. 2 — восстановление прошивки/конфига по сети

После сброса телефон снова запросит провижининг с вашей PBX (3CX, Asterisk и т.д.).

Если меню не появляется

  • Отпускайте клавиши только после появления экрана загрузки — на разных прошивках окно короткое.
  • Проверьте, что клавиатура не в режиме блокировки (на desk phones с паролем admin).

Ссылки

Рубрика: Quick Tip, Snom | Метки: , | Оставить комментарий

Как использовать прокси в CentOS / RHEL

Корпоративный прокси без единой точки настройки — каждый инструмент тянет пакеты сам. Ниже минимальный набор: переменные окружения для всех сессий и отдельные конфиги для dnf, curl и wget.

Формат URL прокси: всегда с протоколом, например http://proxy.example.com:3128/ или https://proxy.example.com:3128/.

Системные переменные (все пользователи)

Создайте /etc/profile.d/proxy.sh:

MY_PROXY_URL="http://proxy.example.com:3128/"

export HTTP_PROXY="$MY_PROXY_URL"
export HTTPS_PROXY="$MY_PROXY_URL"
export FTP_PROXY="$MY_PROXY_URL"
export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"
export ftp_proxy="$FTP_PROXY"
export NO_PROXY="localhost,127.0.0.1,.local"
export no_proxy="$NO_PROXY"

Примените в текущей сессии:

source /etc/profile.d/proxy.sh

dnf / yum

Добавьте в /etc/dnf/dnf.conf (или /etc/yum.conf на старых системах):

proxy=http://proxy.example.com:3128/

curl

Файл ~/.curlrc (или /etc/curlrc для всех):

proxy = http://proxy.example.com:3128/

wget

В /etc/wgetrc раскомментируйте или добавьте:

http_proxy = http://proxy.example.com:3128/
https_proxy = http://proxy.example.com:3128/
ftp_proxy = http://proxy.example.com:3128/

Проверка

Внешний IP должен совпадать с выходом прокси:

curl -s http://icanhazip.com
wget -qO- http://icanhazip.com

Если ответ — ваш прямой IP, прокси не подхватился: проверьте echo $HTTPS_PROXY и синтаксис URL.

Заметка

На RHEL 8+ с systemd некоторые сервисы игнорируют /etc/profile.d. Для unit-файлов задайте Environment=HTTP_PROXY=... в drop-in или используйте systemctl set-environment.

Рубрика: Linux, Quick Tip | Метки: | Оставить комментарий

Многофакторная авторизация Azure в среде Cisco и FortiGate

VPN с одним паролем в 2022-м уже не проходил аудит — а прямой «FortiGate → Azure MFA» без промежуточного RADIUS-сервера в экосистеме Microsoft не существует. Рабочая схема, которую я разворачивал не раз: FortiGate как NAS, Cisco ISE как policy/RADIUS proxy, два Microsoft NPS с Azure MFA Extension, AD для первого фактора, Azure MFA для второго. Ниже — пошаговый runbook без воды.

Архитектура

Схема взаимодействия Cisco ISE и Azure MFA

Цепочка запросов:

  1. VPN-клиент отправляет credentials на FortiGate.
  2. FortiGate шлёт RADIUS Access-Request на Cisco ISE.
  3. ISE проксирует запрос на Microsoft NPS (можно зарегистрировать два NPS для HA).
  4. NPS проверяет логин/пароль в Active Directory (первичная аутентификация).
  5. NPS через Azure MFA Extension инициирует второй фактор; Azure MFA общается с пользователем напрямую (Authenticator, SMS, звонок).
  6. При успехе Access-Accept идёт обратно: NPS → ISE → FortiGate → клиент получает туннель.

Два NPS лучше ставить в разные ДЦ — если один падает, RADIUS продолжает работать через второй. На ISE оба регистрируются как external RADIUS servers.

Общая логика Azure MFA: документация Microsoft.

Что понадобится

Компонент Минимум
Azure AD Лицензии с MFA (или Security Defaults / P1/P2)
Windows Server 2× NPS в разных ДЦ (можно VM)
Cisco ISE PSN с RADIUS; лицензия Advantage или выше
FortiGate SSL-VPN или IPsec VPN, RADIUS client
Сеть FortiGate → ISE → NPS: UDP/1812 (auth), при accounting — 1813

Шаг 1. Azure AD и MFA

  1. В Azure PortalAzure Active DirectorySecurityMFA — включите MFA для нужных пользователей (per-user или через Conditional Access).
  2. Убедитесь, что учётные записи VPN-пользователей синхронизированы (Azure AD Connect) или созданы в cloud-only AD.
  3. Зарегистрируйте методы MFA (Microsoft Authenticator предпочтительнее SMS).

Без зарегистрированного метода второй фактор зависнет — пользователь получит reject или timeout.

Шаг 2. Microsoft NPS + Azure MFA Extension

На каждом сервере NPS (повторить на втором):

2.1. Роль NPS

Install-WindowsFeature NPAS -IncludeManagementTools

2.2. Azure MFA NPS Extension

  1. Скачайте NPS Extension for Azure MFA с сайта Microsoft.
  2. Установите на сервер NPS.
  3. Запустите конфигурацию от имени администратора:
cd 'C:\Program Files\Microsoft\Azure MFA\Config'
.\AzureMfaNpsExtn.ps1

Скрипт запросит credentials Azure AD (Global Admin или Application Admin) и зарегистрирует extension.

2.3. RADIUS clients (FortiGate / ISE)

В NPSRADIUS Clients and ServersRADIUS Clients добавьте:

Client Secret Назначение
IP Cisco ISE (PSN) общий secret ISE проксирует запросы от FortiGate
IP FortiGate (опционально) тот же или отдельный если ISE не проксирует, а FortiGate бьёт напрямую

В типовой схеме клиентом NPS является ISE, не FortiGate.

2.4. Политики NPS

  1. Connection Request Policies — разрешить запросы от ISE (Calling Station ID / Client Friendly Name).
  2. Network Policies — аутентификация через Windows Authentication (AD), grant access.
  3. В Azure MFA Extension registry (HKLM\SOFTWARE\Microsoft\AzureMfa) проверьте BypassMFADUoT и REQUIRE_USER_MATCH — для VPN обычно REQUIRE_USER_MATCH=1.

Перезапустите службу Network Policy Server после установки extension.

Шаг 3. Cisco ISE

3.1. External RADIUS servers (NPS)

AdministrationNetwork ResourcesExternal RADIUS Servers:

Поле Значение
Name NPS-DC1, NPS-DC2
Host IP каждого NPS
Shared Secret тот же, что в NPS RADIUS Clients
Authentication Port 1812
Timeout 30–60 сек (MFA!)
Connection Attempts 2–3

Добавьте оба сервера в RADIUS Server Sequence для failover.

3.2. Network Device (FortiGate)

Work CentersNetwork AccessNetwork Devices:

  • Name: FGT-VPN
  • IP Address: management/source IP FortiGate для RADIUS
  • Shared Secret: secret для FortiGate ↔ ISE
  • Device Type: Fortinet:FortiGate

3.3. Policy Set

Создайте Policy Set для VPN/RADIUS:

  1. Conditions: Device IP Equals FGT-VPN (или RADIUS Service-Type).
  2. Authentication PolicyUse → External RADIUS Server Sequence (NPS).
  3. Authorization — профиль доступа (VLAN, dACL, или PermitAccess для VPN).

В Live LogsRADIUS включите мониторинг до первого успешного логина.

Шаг 4. FortiGate

4.1. RADIUS server

config user radius
    edit "ISE-RADIUS"
        set server "10.x.x.x"
        set secret ENC <encrypted>
        set auth-type pap
    next
end

auth-typepap или mschapv2 в зависимости от того, что принимает ISE/NPS. Для большинства VPN-клиентов MS-CHAPv2; если ISE настроен на PAP proxy — используйте PAP.

4.2. User group

config user group
    edit "VPN-RADIUS"
        set member "ISE-RADIUS"
    next
end

4.3. VPN portal / IPsec

VPNSSL-VPN Settings (или IPsec tunnel):

  • Authentication/Portal Mapping или Peer Options → группа VPN-RADIUS.
  • Убедитесь, что клиент запрашивает username/password (не certificate-only, если MFA на user credentials).

Шаг 5. Таймауты — критично для MFA

По умолчанию FortiGate ждёт ответ RADIUS 5 секунд. Push в Authenticator занимает 15–60 секунд — без правки таймаута VPN стабильно падает с timeout.

Параметр remoteauthtimeout на FortiGate

GUI: System → Settings → remoteauthtimeout60–90 (диапазон 1–300, default 5).

CLI:

config system global
    set remoteauthtimeout 90
end

Согласуйте таймауты на всех звеньях:

Узел Параметр Рекомендация
FortiGate remoteauthtimeout 60–90 сек
Cisco ISE External RADIUS timeout ≥ 60 сек
NPS не ниже FortiGate default часто достаточен
VPN-клиент idle timeout не обрывать до завершения MFA

Проверка

  1. FortiGate: diagnose debug application radiusd -1 + diagnose debug enable — видны Access-Request/Accept.
  2. ISE: Live Log — запрос от FGT, proxy к NPS, result Accept/Reject.
  3. NPS: Event Viewer → Custom ViewsServer RolesNetwork Policy and Access Services.
  4. Azure: Sign-in logs — MFA requirement satisfied.

Тестовый сценарий: пользователь с зарегистрированным Authenticator → VPN login → push → Accept → туннель up.

Типовые проблемы

Симптом Куда смотреть
Timeout через ~5 сек remoteauthtimeout на FortiGate
Access-Reject без MFA NPS policy, AD credentials, extension не running
MFA не приходит пользователь не enrolled; проверьте Azure MFA Extension logs
ISE видит запрос, NPS — нет shared secret, firewall UDP/1812, wrong NAS IP
Работает через один NPS, второй — нет RADIUS Server Sequence priority, secret на втором NPS

Итог

Схема не самая короткая, зато переиспользует ISE как единую точку policy для VPN и проводного доступа, а Azure MFA остаётся там, где ему место — на NPS Extension. Главный практический вывод: увеличьте RADIUS timeout на FortiGate до 90 секунд до первого теста, иначе будете отладку MFA проводить вслепую.

Рубрика: Azure, Cisco, Fortinet, Microsoft, Office 365, Security | Метки: , , , , , , , , , , | Оставить комментарий

Интеграция WebEx с Microsoft OneDrive и SharePoint Online

Этап первый — настройка на стороне управления сервисом (Control Hub)

Ключевой момент, так как инструкцию самостоятельно по нему найти не смог, но если функционал отключен, то и в интеграциях клиента он не появится 🙂

Настройки управления контентом Control Hub / Services / Messaging
Настройки управления контентом Services / Messaging / CM
Настройки управления контентом Services / Messaging / CM / Settings

Этап второй — настройка на стороне клиента (WebEx)

Пошаговая инструкция от вендора и ключевые точки (ниже):

Управление интеграциями в приложении WebEx
Выбор сервиса для интеграции с приложением WebEx
Как добавить файл из OneDrive / SharePoint Online

Рубрика: Cisco, Microsoft, Office 365, Unified Communications, WebEx | Метки: , , | Оставить комментарий

Cisco Identity Services Engine 3.0

Cisco ISE 3.0 Login Page

Вышел Cisco ISE 3.0, подробности о новинке здесь. Обновление согласно инструкции от производителя прошло гладко и без запинок. Политики (RADIUS, Tacacs+) и сетевые устройства перенеслись, pxGrid подписчики информацию получают (FortiManger и Cisco Stealthwatch). Смотрим, изучаем — подробности позже.

Рубрика: Cisco, Fortinet | Метки: , , , | Оставить комментарий