• rightid. Значение данной опции идентифицирует "правую" часть VPN-соединения.
• leftrsasigkey. Открытый RSA-ключ из файла /etc/ipsec.secrets на "левой" стороне VPN-соединения.
• rightrsasigkey. Открытый RSA-ключ из файла /etc/ipsec.secrets на "правой" стороне VPN-соединения.
• auto. Эта опция совместно с опциями plutoload и plutostart определяет, какие соединения должны загружаться и устанавливаться при запуске FreeS/WAN. Если установлены значения plutoload=%search и auto=add, соединения, соответствующие конфигурации, загружаются, а если заданы значения plutostart= %search и auto=start, соединения устанавливаются.
Рис. 26.6. Для определения конфигурации FreeS/WAN надо указать адреса, которые используются при формировании VPN
Не имеет значения, какую из систем вы назовете "левой", а какую "правой". Соединению следует присвоить имя, которое идентифицировало бы обе его стороны. Например, если одна из сетей расположена в Бостоне, а другая в Цинциннати, вы можете использовать имя boscinci, а затем называть систему, находящуюся в Бостоне, "левой", а систему, расположенную в Цинциннати, "правой". Одна и та же конфигурация используется на обеих сторонах соединения; FreeS/WAN выясняет, на какой стороне он находится, анализируя существующие сетевые соединения.
Соединение между двумя маршрутизаторами FreeS/WAN устанавливается следующим образом: на одной стороне программа ipsec запускается в режиме демона, а на другой стороне та же программа используется для инициализации соединения. Если настройка выполнена корректно, то соединение должно устанавливаться автоматически, как только программа ipsec начнет выполняться на обеих сторонах. Не имеет значения, какая из систем использует программу в режиме демона; в отличие от PPTP, FreeS/WAN не различает клиентскую и серверную системы.
Для того чтобы запустить программу ipsec в режиме демона, надо выполнить команду
# ipsec setup start
После выполнения этой команды система, в зависимости от значений опций plutoload, plutostart и auto, загружает соединение, ожидает установления соединения или инициирует соединение. Если при настройке системы вы указали на обеих сторонах соединения опцию auto=add, можете запустить сервер на одной стороне и ожидать запроса на установление соединения, переданного другой системой. Чтобы запрос был передан, надо выполнить команду
# ipsec auto --up имя
При вызове программы ipsec задается имя соединения, например boscinci. В результате выполнения данной команды система предпримет попытку установить соединение. Для того чтобы проверить, успешной ли была эта попытка, надо использовать команду ipsec look. Если в составе ответа будет содержаться таблица маршрутизации VPN, это означает, что соединение было установлено корректно. Вы также можете использовать для проверки обычные программы сетевого обмена, например ping, traceroute или telnet, однако, если удаленная сеть доступна из Internet, эти инструменты не могут подтвердить тот факт, что связь осуществляется именно через VPN.
После окончания настройки сети можно изменить конфигурацию в файле /etc/ipsec.conf. Конфигурацию можно скорректировать таким образом, что соединение будет автоматически устанавливаться при выполнении команды ipsec setup start. Для запуска сервера FreeS/WAN используется сценарий SysV или локальный сценарий запуска.
Вопросы защиты при использовании VPN
Система VPN призвана повысить безопасность при обмене по сети. Однако она же может открыть злоумышленнику доступ к сетевым ресурсам. Взаимодействие компьютеров и сетей посредством VPN условно показано на рис. 26.1, 26.2 и 26.6. Однако из этих рисунков неочевиден тот факт, что многие из соединений по сути представляют собой два соединения. В качестве примера рассмотрим VPN на базе PPTP, в которой сеть использует VPN-маршрутизатор для взаимодействия с компьютерами под управлением Windows. Реально компьютер Windows имеет два интерфейса: один предназначен для обмена средствами VPN, другой представляет собой обычное Internet-соединение. Логическая структура такой системы представлена на рис. 26.7.
Рис. 26.7. Несмотря на то что VPN-соединение обеспечивает защиту передаваемых данных, взаимодействующие системы поддерживают обычные Internet-соединения, которые могут быть использованы для организации атаки
Обычно клиенты VPN считаются клиентами, пользующимися доверием, и при работе с ними не принимают меры предосторожности, как при обмене с обычными Internet-узлами (по сути, мерами предосторожности являются сами VPN-соединения). В результате, если в защите клиентов Windows имеются недостатки, они могут использоваться для организации атаки. Несмотря на то что сеть защищена брандмауэром, VPN-клиенты рассматриваются как локальные компьютеры, поэтому данные, передаваемые ими, не обрабатываются брандмауэром. Если на компьютере, выполняющем роль VPN-клиента, появился вирус, не исключено, что он сможет найти путь на узлы локальной сети, несмотря на наличие брандмауэра.
Повысить уровень безопасности при использовании VPN можно следующими способами.
• Обеспечить защиту на обеих сторонах VPN. Если обе стороны VPN-соединения одинаково хорошо защищены, то в безопасности будет и вся виртуальная сеть. Такой подход эффективен, когда VPN-соединение устанавливается между локальными сетями: VPN-маршрутизаторы и брандмауэры обеспечивают достаточный уровень защиты. Если же VPN-соединение устанавливается с отдельными компьютерами, реализовать этот способ сложнее, поскольку удаленных VPN-узлов может быть много, кроме того, системный администратор не имеет возможности контролировать их работу. Если пользователь решит установить на своем домашнем компьютере программу, неидеальную с точки зрения безопасности, помешать ему невозможно.
• Контроль обмена с VPN-клиентами. Определив правила брандмауэра, ограничивающие доступ к сетевым ресурсам для удаленных VPN-клиентов, вы тем самым исключите их из числа узлов, пользующихся доверием. На первый взгляд кажется, что при таком подходе теряются все преимущества VPN, но вы можете задать для VPN-клиентов лишь часть тех ограничений, которые устанавливаются для обычных Internet-узлов. Если пользователь VPN не работает со средствами X Window, вы можете блокировать для его компьютера X-протоколы, в то время как при работе в локальной сети применение этих протоколов разрешено. Этим вы сократите возможности организации атаки с использованием VPN-узла.
Хорошие результаты дает сочетание этих подходов. Вы можете потребовать от сотрудников, использующих PPTP-клиенты, установить на своих компьютерах брандмауэры и одновременно ограничить их доступ, предоставив им возможность обращаться только к отдельным узлам сети и использовать лишь определенные протоколы. Для создания правил, ограничивающих доступ, можно использовать программу iptables, которая рассматривалась в главе 25. Если вы имеете возможность контролировать обе стороны VPN-соединения, вы сможете больше внимания уделить реализации первого подхода и принять одинаковые меры безопасности для обеих систем.
Система VPN позволяет расширить локальную сеть за счет взаимодействия с внешними компьютерами. С ее помощью можно предоставить некоторым удаленным пользователям и даже целым сетям возможность обращаться к ресурсам локальной сети, недоступным для обычных Internet-узлов. Этот инструмент может оказаться очень полезным для организации обмена данными с пользователями, работающими с портативными компьютерами, и для объединения различных локальных сетей в одну виртуальную сеть. Функционирование VPN обеспечивается с помощью программных продуктов, часть которых ориентирована на работу в системе Linux. Наиболее часто для организации VPN используется протокол PPTP, реализованный в программах PoPToP и PPTP-Linux, а также протокол FreeS/WAN. PPTP в основном применяется для подключения к сети отдельных VPN-клиентов, a FreeS/WAN — для объединения нескольких сетей. Принимая решение об использовании VPN, необходимо рассмотреть вопросы защиты, в особенности учесть тот факт, что VPN-клиенты могут стать источниками опасности для ресурсов локальной сети.