![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Большинство серверов подобных IMAP & POP, Samba, OpenLDAP, FTP, Apache и
других, которым необходима аутентификация пользователей перед разрешением
использования сервиса, по умолчанию передают имя пользователя и пароль в
простом текстовом виде. Альтернативные механизмы шифрования, подобные SSL,
гарантируют надежность и безопасность транзакций. С этой технологией данные
передаются через сеть в зашифрованном виде. Однажды установив OpenSSL на
своем сервере, Вы можете использовать его как стороннюю утилиту в других
приложениях для включения в них возможностей SSL. Из описания OpenSSL: Проект OpenSSL это совместная попытка разработать надежную, коммерчески
независимую, полнофункциональную и распространяемую с открытыми кодами
реализацию протоколов Secure Sockets Layer (SSL v2/v3) и Transport Layer
Security (TLS v1) с полной криптографией. Проект управляется добровольцами
всемирного сообщества, которые используют Интернет для общения, планирования
и разработки инструментария OpenSSL и связанной с ним документации. Основные преимущества использования технологий шифрования следующие: Патенты.
Несколько юридических проблем существует при использовании SSL-технологии.
Если Вы планируете использовать OpenSSL для коммерческих целей, то необходимо
получить у RSA лицензию на использование RSA-библиотек. Здесь приведено извлечение из файла README OpenSSL: Разные компании владеют патентами на разные алгоритмы в разных местах
мира. Вы сами отвечаете за то, чтобы использование любых алгоритмов для Вас
было юридически законно, проверяя имеются ли какие-либо патенты у Вас в
стране. Этот файл включает некоторые патенты о которых мы точно или по слухам
знаем. Это не точный список. RSA Data Security держит программный патент на алгоритмы RSA и RC5. Если
принадлежащий им код используется в США (и Японии?), Вы должны
контактировать с RSA Data Security об условиях лицензии. Их веб-сервер:
http://www.rsa.com. RC4 это торговая марка RSA Data Security, так что его использование
возможно только с разрешения RSA Data Security. Алгоритм IDEA патентован Ascom в Австрии, Франции, Германии, Италии,
Японии, Нидерландах, Испании, Швеции, Швейцарии, Соединенном Королевстве и
США. С ними нужно войти в контакт, если Вы используете этот алгоритм; их
веб-сервер: http://www.ascom.ch. Эти инструкции предполагают. Пакеты. Архивы. Хорошей идеей будет создать список файлов, установленных в Вашей системе
до инсталляции OpenSSL и после, в результате, с помощью утилиты diff, Вы
сможете узнать, какие файлы были установлены. Например, до инсталляции:
После инсталляции:
Для получения списка установленных файлов:
Раскройте архив: Перейдите в новый каталог Openssl и введите следующие команды
на Вашем терминале: Шаг 1.
Редактируйте файл c_rehash (vi +11 tools/c_rehash) и
измените следующую строку: Изменение этой строки будет создавать и инсталлировать OpenSSL в /usr. Шаг 2.
По умолчанию исходные файлы OpenSSL предполагают, что Perl расположен в
каталоге /usr/local/bin/perl. Мы должны модифицировать строку
#!/usr/local/bin/perl во всех скриптах, которые зависят от perl, на
месторасположение Perl в Red Hat Linux: /usr/bin. Шаг 3.
OpenSSL должен знать, где находится необходимые OpenSSL библиотеки.
Командой, приведенной ниже, мы устанавливаем переменную окружения PATH в
каталог по умолчанию, где мы разместили исходные файлы OpenSSL. Шаг 4.
Сейчас мы должны сконфигурировать OpenSSL под нашу систему: ЗАМЕЧАНИЕ. Опция -DSSL_FORBID_ENULL нужна, чтобы запретить нулевое
шифрование из соображений безопасности. Шаг 5.
Редактируйте файл Makefile.ssl (vi +50 Makefile.ssl) и
внесите следующие изменения: Редактируйте файл Makefile.ssl (vi +52 Makefile.ssl) и
добавьте/измените следующие строки: Редактируйте файл Makefile.ssl (vi +79 Makefile.ssl) и измените следующее
значение для процессора Pentium Pro: ЗАМЕЧАНИЕ. Три последние модификации, выполненные нами, устанавливают
оптимизационные флаги для компиляции OpenSSL на сервере. Последняя
модификация (PROCESSOR=), если у Вас Pentium, то измените на 586, Pentium
Pro/II/III на 686, a 80486 на 486. Шаг 6.
Редактируйте файл Makefile.ssl (vi +161 Makefile.ssl) и
измените следующую строку: Этот шаг нужен для определения каталога, куда будут проинсталлированы
страницы руководства (man pages) OpenSSL. В нашем случае это
каталог /usr/man. Шаг 7.
Сейчас мы должны скомпилировать и инсталлировать OpenSSL на сервере: Команда make -f создаст библиотеки OpenSSL (libcrypto.a и libssl.a) и
двоичный файл openssl. Библиотеки будут созданы в каталоге верхнего уровня, а
двоичный файл в каталоге apps. После успешного создания команда make test
будет тестировать библиотеки, а в заключение make install создаст
инсталляционный каталог и инсталлирует OpenSSL. Команда mv переместит все файлы из /etc/ssl/misc в каталог /usr/bin. Эти
файлы двоичные и должны располагаться в /usr/bin, так как там находятся все
исполняемые файлы Вашей системы. Также размещение их в этом каталоге поместит
их в поле действия переменной окружения PATH. Команда rm удалит каталоги /etc/ssl/misc и /etc/ssl/lib из Вашей системы,
так как они сейчас располагаются в другом месте. Также, мы удаляем файлы
CA.pl и CA.sh, представляющие из себя небольшие скрипты для создания Ваших
собственных CA-сертификатов. Эти скрипты, связанные с openssl ca-командами,
имеют несколько странные требования, и по умолчанию конфигурация OpenSSL не
позволяет Вам легко напрямую использовать openssl ca. Так что мы
создадим скрипт sign.sh позже, чтобы заменить их. ЗАМЕЧАНИЕ. Пакет bc-1.05a-4.i386.rpm или новее должен быть уже
проинсталлирован на Вашем Linux-сервере, или Вы получите сообщение об ошибке
во время тестирования библиотек OpenSSL. Команды rm будет удалять все файлы с исходными кодами, которые мы
использовали при компиляции и инсталляции OpenSSL. Также будет удален сжатый
архив OpenSSL из каталога /var/tmp. Все программное обеспечение, описанное в книге, имеет определенный каталог
и подкаталог в архиве floppy.tgz, включающем все конфигурационные файлы
для всех программ. Если Вы скачаете этот файл, то Вам не нужно будет вручную
воспроизводить файлы из книги, чтобы создать свои файлы конфигурации.
Скопируйте файл связанные с OpenSSL из архива, измените их под свои
требования и поместите в нужное место так, как это описано ниже. Файл с
конфигурациями Вы можете скачать с адреса
http://www.openna.com/books/floppy.tgz. Для запуска сервера OpenSSL следующие файлы должны быть созданы или
скопированы в нужный каталог: Копируйте файл openssl.cnf в каталог /etc/ssl. Это общий конфигурационный файл для программы OpenSSL, где Вы можете
настроить срок хранения Ваших ключей, имя организации, адрес и т. д. Эти
параметры Вы можете изменить в секциях [CA_default] и
[req_distinguished_name]. Редактируйте файл openssl.cnf (vi /etc/ssl/openssl.cnf): ЗАМЕЧАНИЕ. Файл openssl.cnf уже будет существовать в Вашей системе,
когда Вы скомпилируете и проинсталлируете программу OpenSSL, и может быть
найден в каталоге /etc/ssl. Вам не нужно менять все опции, установленные по
умолчанию в этом файле, обычно, достаточно внести изменения в секции
[CA_default] и [req_distinguished_name]. Команда openssl ca имеет некоторые странные требования и конфигурация
OpenSSL по умолчанию не позволяет легко использовать ее напрямую. Поэтому мы
будем создавать программу sign.sh, заменяющую собой openssl ca. Создайте
программный файл sign.sh (touch /usr/bin/sign.sh) и добавьте в
него следующие строки: Сейчас сделаем эту программу исполняемой и изменим права доступа
принятые по умолчанию: ЗАМЕЧАНИЕ. Вы можете найти прогамму sign.sh в дистрибутиве mod_ssl
в каталоге mod_ssl-version/pkg.contrib или в нашем архиве floppy.tgz. Также
заметим, что секция [CA_own] должна быть изменена в соответствии с Вашим
окружением и не забудьте изменить строку openssl verify -Cafile
/etc/ssl/certs/ca.crt $CERT. Команды, описанные ниже, мы будем часто использовать, но на самом деле их
много больше, и Вы должны изучить страницы руководства (man) и документацию,
чтобы получить более подробную информацию. Для примера, мы покажем Вам как создавать сертификат для Вашего
веб-сервера Apache и/или Ваш личный CA (Certifying Authority (подтверждение
полномочий)) для подписания Ваших Certificate Signing Request. ЗАМЕЧАНИЕ. Все команды, перечисленные ниже, выполняются в
каталоге /etc/ssl. 1.1. Создание приватного ключа RSA, защищенного парольной фразой, для
Вашего сервера Apache. Пожалуйста, создайте резервную копию файла server.key и
запомните парольную фразу. 1.2. Создание Certificate Signing Request (CSR) с серверным
приватным ключом RSA. ЗАМЕЧАНИЕ. Убедитесь, что Вы ввели FQDN (полностью определенное
доменное имя (Fully Qualified Domain Name)) сервера, когда OpenSSL спросил
Вас о CommonName (например, когда Вы создаете CSR для веб-сервера, который
будет позже доступен через https://www.mydomain.com, введите
www.mydomain.com). После создания Вашего Certificate Signing Request (CSR) у Вас
возникают два варианта: Первый, это послать этот сертификат в коммерческие структуры Certifying
Authority (CA), подобные Verisign или Thawte, для подписания. Вы обычно
отправляете CSR через веб-форму, оплачиваете подписание, ждете сертификата и
запоминаете его в файле server.crt. Результатом всех этих операций будет
настоящий сертификат, который может быть использован с Apache. Второй, Вы можете использовать Ваш собственный CA и затем самостоятельно
подписывать CSR этим CA. Это решение экономично, и позволяет организации
поддерживать собственный CA-сервер и создавать так много сертификатов, как
нужно для внутреннего использования без выплаты каких-нибудь
денег коммерческим CA. К сожалению, использование Ваших собственных CA для создания сертификатов
создает ряд проблем в электронной коммерции, потому что заказчики должны
иметь некоторое доверие к Вашей организации через использования признанных
коммерческих CA. Смотрите ниже информацию о том, как самостоятельно
подписать CSR собственным CA. 1.3. Создание Вашего приватного ключа RSA (CA). Сделайте резервную копию этого файла ca.key и запомните парольную фразу
(pass-phrase), которую Вы ввели. 1.4. Создание самоподписанного (CA) сертификата (структура x509) с
ключом RSA из CA. ЗАМЕЧАНИЕ. Команда req создает самоподписанный сертификат, когда
используется переключатель -x509. 1.5. Подписание запросов сертификата. (Мы создаем и используем наш
личный Certificate Authority (CA)). Приготовьте скрипт для подписания (он нужен потому, что команда openssl ca
имеет некоторые странные требования и по умолчанию конфигурация OpenSSL не
позволяет ее легко использовать напрямую). Скрипт с именем sign.sh находится
в нашем архиве flopy.tgz в каталоге openssl. Используйте этот
скрипт для подписания. Сейчас Вы можете использовать CA для подписания CSR сервера, чтобы создать
реальный сертификат для внутреннего использования в веб-сервере Apache
(предполагаем, что Вы уже имеете файл server.csr под рукой): Сейчас мы имеем два файла: server.key и server.crt. Они могут быть
использованы в конфигурационном файле httpd.conf веб-сервера
Apache следующим образом: Файл server.csr больше не нужен. ЗАМЕЧАНИЕ. Если Вы получили сообщение об ошибке во время подписания
сертификата, это потому, что Вы ввели неправильно FQDN (Fully Qualified
Domain Name) для сервера, когда OpenSSL запросил у Вас CommonName. CommonName
должен представлять из себя что-то подобное my.domain.com, а не domain.com.
Также, так как Вы создавали сертификат и CA-сертификат, важно, чтобы хотя бы
небольшая часть информации представленной в них отличалась, или Вы можете
столкнуться с проблемами во время подписания удостоверяющих запросов. Сделайте ваши ключи доступными для чтения и записи только для пользователя
root. Это важно потому, что никому не нужно работать с ними. Для этого
выполните следующие команды. OpenSSL может использоваться для: Защита клиент-серверных соединений при помощи SSL отличный выбор, но
иногда требуется безопасный канал, обеспечивающий полную конфиденциальность,
аутентификацию и целостность данных между двумя межсетевыми экранами через
Интернет. Для этого был создан IPSEC. IPSEC это Internet Protocol SECurity. Он использует сильную криптографию
для обоих сервисов: аутентификации и шифрования. Аутентификация гарантирует,
что пакеты идут от правильного отправителя и не будут изменены при пересылке.
Шифрование предотвращает неавторизованное чтение содержимого пакетов. IPSEC
может защищать любые протоколы, работающие поверх IP, и любые среды передачи,
используемые под IP. IPSEC может также предоставлять некоторые сервисы
безопасности в фоновом режиме с невидимым для пользователя влиянием. Более
того, он может защищать смешанные протоколы, запускаемые через комплексную
комбинацию сред передачи (например, IMAP/POP и т. д.) без внесения в них
изменений, так как шифрование идет на уровне IP. Сервис IPSEC позволяет создавать безопасные туннели через небезопасные
сети. Каждая передача через небезопасную сеть шифруется шлюзом IPSEC и
расшифровывается шлюзом на другом конце. В результате возникает виртуальная
приватная сеть (Virtual Private Network) или VPN. Эта сеть является частной
даже при том, что включает несколько машин,
объединенных небезопасным Интернет. Эти инструкции предполагают. Пакеты. Архивы. После инсталляции:
Для получения списка установленных файлов:
Раскройте архив: Инсталляция IPSEC FreeS/WAN Virtual Private Network требует некоторой
модификации в Вашем оригинальном ядре, так как FreeS/WAN должен быть включен
и зарегистрирован в ядре перед тем, как Вы его используете. Из этих
соображений первым шагом инсталляции FreeS/WAN будет переход в секцию "Ядро
Linux" этой книги и следование инструкциям о том, как инсталлировать ядро на
Вашей системе и вернуться назад к секции "Linux FreeS/WAN VPN" (эта секция)
после выполнения команд make dep; make clean, но перед
выполнением make bzImage. ПРЕДУПРЕЖДЕНИЕ: Очень рекомендуем, чтобы Вы не компилировали
что-нибудь в ядре с оптимизационными флагами, если Вы планируете
инсталлировать программное обеспечение FreeSWAN. Любые оптимизационные флаги,
добавленные в ядро Linux, будут создавать сообщения об ошибках в FreeSWAN
IPSEC. Все флаги, документированные в главе 5 "Конфигурирование и создание
безопасного и оптимизированного ядра" применимы без каких-либо проблем со
всем программным обеспечением, описанным в книге, за единственным исключением:
FreeSWAN IPSEC. Так что повторюсь еще раз, не используйте оптимизационные
опции и флаги в Вашем ядре Linux, когда компилируете или патчите его для
поддержки FreeSWAN. Вы должны модифицировать Makefile в каталоге с исходными кодами FreeS/WAN
и подкаталогах utils, klips/utils, Pluto и lib, чтобы определить пути для
инсталляции. Мы должны модифицировать эти файлы, чтобы расположение файлов
соответствовало структуре файловой системы Red Hat, и чтобы после инсталляции
они попадали под нашу переменную окружения PATH. Шаг 1.
Переместитесь в верхний уровень нового каталога с исходными кодами
FreeS/WAN и введите следующие команды на Вашем терминале. Редактируйте файл
Makefile (vi Makefile) и сделайте в нем следующие изменения: Шаг 2.
Редактируйте файл Makefile в подкаталоге utils (vi utils/Makefile) и
сделайте в нем следующие изменения:
Шаг 3.
Редактируйте файл Makefile в подкаталоге klips/utils
(vi klips/utils/Makefile) и сделайте в нем следующие изменения:
Шаг 4.
Редактируйте файл Makefile в подкаталоге pluto (vi pluto/Makefile) и
сделайте в нем следующие изменения: Шаг 5.
Редактируйте файл Makefile в подкаталоге lib (vi lib/Makefile) и сделайте
в нем следующие изменения: Шаг 6.
Редактируйте файл Makefile в подкаталоге libdes (vi libdes/Makefile и
сделайте в нем следующие изменения: Шаг 7.
Сейчас мы должны скомпилировать и проинсталлировать FreeSWAN на сервере:
Команда make insert создает символическую ссылку /usr/src/linux/net/ipsec
на подкаталог с исходными кодами KLIPS, патчит некоторые файлы ядра,
добавляет конфигурацию по умолчанию в конфигурационный файл ядра и в
заключение создает коммуникационный файл KLIPS, /dev/ipsec, если его еще нет.
Команда make programs создает библиотеки, Pluto и различные пользовательские
утилиты. make install будет инсталлировать демон Pluto и утилиты и делать их
запускаемыми при загрузке системы. Сейчас мы должны вернуться в каталог /usr/src/linux и выполнить следующие
команды для реконфигурирования ядра с поддержкой FreeS/WAN: Первое, что надо сделать, это включить поддержку FreeS/WAN в ядре. В
версии 2.2.14 ядра новая секция, связанная с frees/WAN VPN, называется IPSec
options (FreeS/WAN). Вам нужно ответить Y на следующие вопросы. ЗАМЕЧАНИЕ. Все настройки, которые Вы сделали в различных секциях
ядра, до первого запуска команд make config, make dep и make clean будут
сохранены. Поэтому необходимо настроить только раздел PSec options
(FreeS/WAN) так, как это описано выше. Некоторые параметры настройки сети включаются автоматически, даже если Вы
выключили их. Это связано с тем, что IPSEC нуждается в них. Какой бы ни была
программа конфигурирования ядра, Вы должны обратить внимание на некоторые
проблемы. В частности, проверьте чтобы не были отключены следующие опции из
секции "Сетевые опции": Компиляция и инсталляция нового ядра с поддержкой FreeS/WAN Сейчас мы включили поддержку FreeS/WAN VPN в ядре и мы можем
его откомпилировать и проинсталлировать. Возвращаемся в каталог /usr/src/linux и запускаем следующие команды: После окончания их работы, следуйте за инструкциями, приведенными в главе
5 "Конфигурирование и создание безопасного и оптимизированного ядра" для
нормальной инсталляции нового ядра. После того, как Вы проинсталлируете новый
образ ядра, system.map, модули (если нужно) и определите в файле lilo.conf
загрузку нового ядра, нужно редактировать и настроить конфигурационные файлы,
связанные с FreeS/WAN: ipsec.conf и ipsec.secrets,
перед перезагрузкой системы. Команды rm будет удалять все файлы с исходными кодами, которые мы
использовали при компиляции и инсталляции FreeS/WAN. Также будет удален
сжатый архив FreeS/WAN из каталога /var/tmp. Все программное обеспечение, описанное в книге, имеет определенный каталог
и подкаталог в архиве floppy.tgz, включающем все конфигурационные файлы
для всех программ. Если Вы скачаете этот файл, то Вам не нужно будет вручную
воспроизводить файлы из книги, чтобы создать свои файлы конфигурации.
Скопируйте файлы, связанные с FreeSWAN, из архива, измените их под свои
требования и поместите в нужное место так, как это описано ниже. Файл с
конфигурациями Вы можете скачать с адреса:
http://www.openna.com/books/floppy.tgz. Для запуска FreeSWAN следующие файлы должны быть созданы или
скопированы в нужный каталог: Копируйте файл ipsec.conf в каталог /etc. Вы можете взять эти файлы из нашего архива floppy.tgz. Конфигурационный файл FreeS/WAN /etc/ipsec.conf позволяет Вам настраивать
Вашу конфигурацию IPSEC, контролируя информацию и типы соединений. IPSEC
сейчас поддерживает два типа соединений: снабжаемые ключами вручную и
автоматически снабжаемые ключами. Соединения, снабжаемые ключами вручную,
используют ключи, хранящиеся в файле /etc/ipsec.conf. Этот тип соединений
менее безопасен, чем соединения автоматически снабжаемые ключами, которые
используют ключи автоматически создаваемые демоном согласования ключей Pluto.
Протокол согласования ключей, используемый по умолчанию и называемый IKE,
устанавливает подлинность других систем, используя совместный секрет,
хранящийся в файле /etc/ipsec.secrets. Мы будем использовать соединения
автоматически снабжаемые ключами, так как они более безопасные, чем
их ручной аналог. В нашем примерном конфигурационном файле приведенном ниже, мы настраиваем
проходящий через брандмауэр туннель, и принимаем, что сетевой брандмауэр
корректно работает на обоих концах туннеля. Мы выбрали эту конфигурацию, так
как она представляется нам наиболее универсальной, пригодной для большинства
пользователей. Также, она позволяет нам поиграться с большим числом опций
конфигурационного файла ipsec.conf. Существуют другие конфигурации, и Вы можете прочитать файлы
из подкаталога doc/examples для получения большей информации о них. leftsubnet = SubnetDeep (192.168.1.0/24), SubnetDeep это IP-адрес Вашей внутренней приватной сети за первым
шлюзом. eth1 подсоединен ко внутренней сети. Мы должны редактировать файл ipsec.conf (vi /etc/ipsec.conf) и изменить
значения, принятые по умолчанию на то, что нам нужно. Существует два типа
секций в этом файле (/etc/ipsec.conf): секция config, которая определяет
общую информацию для IPSEC, и секция conn, которая определяет параметры IPSEC
соединений. Он не содержит информации, связанной с безопасностью, если не
используется ручное снабжение ключами (напоминаю, ручное снабжение ключами не
рекомендуется из соображений безопасности). Секции первого типа, называемые config setup, являются единственным
разделом содержащим полные параметры установки для IPSEC, которые применяются
ко всем соединениям, и информацию, используемую при
запуске программного обеспечения. Второй тип, называемый conn, содержит технические требования сетевых
соединений осуществляемых при помощи IPSEC. Имя, данное этому разделу,
произвольно, оно просто используется для идентификации соединений с помощью
ipsec_auto(8) и ipsec_manual(8). interfaces="ipsec0=eth0" Обе строки определяют интерфейс eth0 как ipsec0. Кроме того, вторая также
устанавливает поддержку IPSEC через интерфейс PPP. Если установка по
умолчанию interfaces=%defaultroute не используется, тогда заданный интерфейс
будет только один: это шлюзовая машина, которая используется для обмена
информацией с другим IPSEC-шлюзом. klipsdebug=none plutodebug=none plutoload=%search plutostart=%search conn deep-mail left=208.164.186.1 leftsubnet=192.168.1.0/24 leftnexthop=205.151.222.250 right=208.164.186.2 rightsubnet=192.168.1.0/24 rightnexthop=205.151.222.251 keyingtries=0 auth=ah auto=start ЗАМЕЧАНИЕ. Несоответствие данных в этом конфигурационном файле
ipsec.conf будет заставлять FreeS/WAN фиксировать различные
сообщения об ошибках. В файле ipsec.secrets хранятся секреты, используемые демоном pluto для
установления подлинности передачи между шлюзами. Может быть настроено два
типа секретов: preshared-секреты и приватные ключи RSA. Вы должны проверить,
чтобы владельцем файла был root, и только он должен иметь
права доступа к файлу. Шаг 1,
Пример секрета поставляется в файле ipsec.secrets по умолчанию. Вы должны
изменить его на свой собственный. С автоматической поддержкой ключей Вы
можете разделять секрет до 256 бит, которые затем используются во время
обмена ключами, чтобы не происходили атаки man-in-the-middle. Для создания
общего секрета используйте команду: Сейчас будут созданы случайные ключи при помощи утилиты ranbits(8) в файле
с именем temp. Утилита ranbits может приостанавливаться на несколько секунд,
если не было доступно немедленно достаточно энтропии. ЗАМЕЧАНИЕ. Не забудьте удалить временный файл как только закончите
все манипуляции с ним. Шаг 2.
Сейчас наш общий секретный ключ, созданный в файле temp, мы должны
положить в файл /etc/ipsec.secrets. Когда Вы редактируете файл ipsec.secrets,
Вы должны видеть нечто подобное в Вашем текстовом редакторе. Каждая строка
содержит IP-адреса двух шлюзов и секрет: Редактируйте файл ipsec.secrets (vi /etc/ipsec.secrets) и измените
секретный ключ, принятый по умолчанию: где 208.164.186.1 и 208.164.186.2 задают IP-адреса двух шлюзов и
"0x9748cc31_2e99194f_d230589b_cd846b57_dc070b01_74b66f34_19c40a1a_804906ed"
(кавычки обязательно нужны) общий ключ, который мы создали командой
ipsec ranbits 256>temp в файле temp. Шаг 3.
Файлы ipsec.conf и ipsec.secrets должны быть скопированы на второй шлюз,
так, чтобы они были идентичны на обоих концах. Только одно исключение может
быть в секции с меткой config setup, где должен быть указан правильный
интерфейс. Файл ipsec.secrets должен иметь абсолютно одинаковые секреты
на обоих шлюзах. ЗАМЕЧАНИЕ. Файл /etc/ipsec.secrets должен иметь права доступа
rw------- (600) и его владельцем должен быть пользователь root. Файл
/etc/ipsec.conf инсталлируется с правами rw-r--r≈ (644) и его владельцем
также является суперпользователь root. Напомним, что сейчас FreeSWAN имеет два типа секретов: предварительно
разделенные секреты и приватные ключи RSA. Предварительно разделенные
секреты, которые настраиваются в наших файлах ipsec.conf и ipsec.secrets, мы
рассмотрели выше. Некоторые люди предпочитают использовать приватные ключи
RSA для аутентификации других хостов через демон Pluto. Если Вы находитесь в
этой ситуации, то надо будет сделать некоторые изменения в файлах ipsec.conf
и ipsec.secrets, как описано ниже: Вам нужно создать независимый RSA-ключ для каждого шлюза. Каждый из них
хранит этот ключ в своем файле ipsec.secrets, а публичный ключ перемещается в
параметры leftrsasigkey и rightrsasigkey секции conn файла ipsec.conf,
который одинаковый для обоих шлюзах. Шаг 1.
Создайте независимый ключ RSA для каждого из шлюзов. На первом шлюзе
(например, deep) используйте команду: На втором шлюзе (например, mail) используйте команду: Утилита rsasigkey создает пару RSA-ключей (публичный и приватный) из
1024-битной сигнатуры и помещает их в файл deep-keys (mail-keys для второй
команды на втором шлюзе). Приватный ключ может быть дословно вставлен в файл
ipsec.secrets, а публичный ключ в файл ipsec.conf. ЗАМЕЧАНИЕ. Утилита rsasigkey во время своей работы может
остановиться на несколько секунд, если ей не хватает энтропии. Вы можете
добавить ее, перемещая случайным образом мышь. Временные файлы RSA deep-keys и mail-keys должны быть удалены, как
только Вы закончите работать с ними. Шаг 2.
Изменим Ваш файл /etc/ipsec.conf для использования публичного ключа RSA
на каждом шлюзе. Редактируйте оригинальный файл ipsec.conf (vi
/etc/ipsec.conf) и добавьте в него следующие параметры, связанные с RSA, в
секцию conn на обоих шлюзах: authby=rsasig leftrsasigkey=<Public key of deep> rightrsasigkey=<Public key of mail> Мы можем найти публичный ключ для deep в файле deep-keys, а для mail в
mail-keys. Эти файлы мы получили на первом шаге. Их содержимое выглядит
следующим образом. Ключи RSA для шлюза deep (deep-keys): Ключи RSA для шлюза mail (mail-keys): Извлеките и скопируйте публичный RSA-ключ для deep и mail в Ваши файлы
ipsec.conf, как это показано ниже. Вы можете определить строки, связанные с
публичным ключом, как начинающиеся с закомментированной строки pubkey=. Не забудьте, что в нашем примере, параметр leftrsasigkey= содержит
публичный ключ для deep, а параметр rightrsasigkey= содержит публичный
ключ для mail. Шаг 3.
Модифицируйте файл /etc/ipsec.secrets для использования приватного ключа
RSA на каждом шлюзе. Редактируйте оригинальный файл ipsec.secrets (vi
/etc/ipsec.secrets) и добавьте в него приватный ключ RSA для подтверждения
подлинности обоих шлюзов. Файл ipsec.secrets для шлюза deep: Вы должны изменить оригинальный файл ipsec.secrets как это показано ниже
на обоих шлюзах. Важно заметить, что приватные ключи не совпадают на deep и
mail. Приватный ключ для deep берем из файла deep-keys, а приватный ключ для
mail из mail-keys: Файл ipsec.secrets для шлюза mail: Аутентификация с использованием RSA-сигнатур требует, чтобы каждый хост
имел собственный приватный ключ. Начальная часть ключа может содержать
признак, характеризующий тип ключа. RSA обозначает приватный ключ RSA и PSK
(который принят по умолчанию) обозначает PreShared ключ. Так как PSK
принимается по умолчанию, мы должны задать RSA, определяя использование
приватного ключа RSA в этом файле (ipsec.secrets). Только суперпользователь
root должен владеть файлом ipsec.secrets, и для всех остальных любой доступ к
нему должен быть заблокирован. Здесь приводятся некоторые вещи, которые Вы должны проверить для
корректной работы FreeS/WAN. Они важны, если Вы не хотите получить сообщения
об ошибке при запуске VPN. Шаг 1.
Вам нужно включить TCP/IP forwarding на обоих шлюзах. В Red Hat Linux это,
в зависимости от версии, делается так: Для Red Hat Linux 6.1 Редактируйте файл network (vi /etc/sysconfig/network)
и измените следующую строку: Вы должны перезапустить настройки сети, чтобы изменения вступили в силу:
Для Red Hat Linux 6.2 Редактируйте файл /etc/sysctl.conf и добавьте следующую строку: Вы должны перезапустить настройки сети, чтобы изменения вступили в силу:
Шаг 2.
Помните, что соединения с автоматическим снабжением ключами используют
ключи, автоматически созданные демоном согласования ключей Pluto. Этот демон
стартуя устанавливает соединение с демоном Pluto на другом конце туннеля. Из
этих соображений шлюз IPSEC должен иметь правила фильтра пакетов,
разрешающие следующие протоколы: Редактируйте скрипт firewall (vi /etc/rc.d/init.d/firewall) на обоих
шлюзах и добавьте следующие строки, чтобы разрешить IPSEC-пакетам
перемещаться между обоими концами туннеля: Здесь EXTERNAL_INTERFACE="eth0" задает Ваш внешний интерфейс к Интернет,
ANYWHERE="any/0" имеет значение 0.0.0.0/0. IPSECSG=208.164.186.2: разделенный
пробелами список удаленных VPN-шлюзов. FREESWANVI=ipsec0: разделенный
пробелами список виртуальных интерфейсов для FreeS/Wan. ЗАМЕЧАНИЕ. Смотрите главу 7, "Сетевой брандмауэр" для большей
информации. Не забудьте добавить эти правила на других шлюзах. Шаг 3.
Подсистема rp_filter (связанная с защитой от IP spoofing) должна быть
выключена на обоих шлюзах для корректной работы IPSEC. Это достигается
проверкой значения, содержащегося в файлах
/proc/sys/net/ipv4/conf/ipsec0/rp_filter и
/proc/sys/net/ipv4/conf/eth0/rp_filter. Оно должно быть равно 0: ЗАМЕЧАНИЕ. Подкаталог ipsec0 в нашем примере будет создан только
после перезагрузки системы. Так что проверить значение файла rp_filter в
каталоге ipsec0 можно будет только, когда система перезагрузится. Для установки значения 0 (off) в оба файла вручную используйте команды:
Также можно добавить эти строки в скрипт-файл firewall
(/etc/rc.d/init.d/firewall) на обоих шлюзах, чтобы значение 0 (off)
устанавливалось автоматически при каждой загрузке системы: ЗАМЕЧАНИЕ. В нашем примере мы предполагаем, что для установления
соединений используется интерфейс eth0. Конечно, если Вы используете eth1
надо просто заменить eth0 на eth1. Если Вы забудете сделать этот шаг, то получите на терминале следующие
сообщения об ошибках при запуске FreeSWAN IPSEC: Шаг 4.
Важно заметить, что любые правила маскарадинга для внутренней сети,
которая использует IPSEC, должны находится после правил, разрешающих трафик
связанный с IPSEC (шаги 2 и 3 выше), или машина будет маскарадить трафик
вместо пропускания его через IPSEC. Редактируйте скрипт firewall (vi /etc/rc.d/init.d/firewall) на обеих
шлюзовых машинах и добавьте следующие строки, позволяющие маскарадить пакеты,
направляемые на удаленный шлюз и обратно:
Здесь EXTERNAL_INTERFACE="eth0" задает Ваш внешний интерфейс в Интернет.
LOCALNET_1="192.168.1.0/24" определяет диапазон внутренних адресов,
который Вы используете. ЗАМЕЧАНИЕ. Смотрите главу 8 "Сетевой брандмауэр с поддержкой
маскарадинга и форвардингом" для большей информации. Сейчас Вы можете перезагрузить систему, и машины за шлюзом A должны без
проблем обмениваться информацией с машинами за шлюзом B. Перезагрузите оба шлюза для запуска FreeS/WAN. Просмотрите файл
/var/log/messages для выявления сообщений о возникших трудностях. Если все
хорошо, то Вы должны увидеть что-то подобное:
Изучите файл /var/log/secure для выявления возникших трудностей. Если все
хорошо, то Вы должны увидеть нечто подобное: На обоих шлюзах должны существовать следующие элементы в
каталоге /proc/net:
Интерфейсы IPSEC должны быть подключены поверх определенных
физических интерфейсов. Проверьте что: Сейчас выполните следующую команду для получения минимальной отладочной
информации и проверьте, что полученный результат выглядит примерно так:
Выполните команду ping 192.168.1.2 из 192.168.1.1. Если она работает,
тогда Вы все установили корректно. Если не работает, то проверьте, что с
машины 208.164.186.1 видна 208.164.186.2, что включен TCP-IP forwarding, и
что на брандмауэре нет правил, блокирующих пакеты, и правила маскарадинга
находятся после правил, связанных с трафиком IPSec. Последнее замечание об инсталляции FreeSWAN IPSEC, если Вы столкнулись с
проблемами с которыми не можете разобраться, то можете использовать следующую
команду для просмотра отладочной информации, связанной с системой
шифрования/аутентификации IPSEC, которую Вы можете послать в список рассылки
Linux-IPSEC (linux-ipsec@clinet.fi) с просьбой помочь Вам: Эта команда первично предоставляла возможность удаленной отладки,
единичная команда упаковывает и помечает всю информацию, которая могла бы
быть уместна для диагностирования проблем в IPSEC. Для получения большей информации Вы можете ознакомиться со страницами
руководства, перечисленными ниже: $ man ipsec (8) вызов утилит IPSEC
Глава 16. Серверное программное обеспечение (сетевой сервис шифрования)
Linux OPENSSL сервер
Краткий обзор
Когда сообщение зашифровано, входной открытый текст трансформируется по
алгоритму в зашифрованный текст, который скрывает смысл сообщения и может
быть отправлен через общедоступный механизм. В этот процесс вовлекается
секретный ключ, который используется при шифровании, а позже при
расшифровании данных. Без этого ключа зашифрованные
данные становятся бессмысленными.
Криптографическая контрольная сумма, называемая message authentication code
(MAC), может рассчитываться на произвольном определенном пользователем тексте
для защиты целостности данных. Результат (текст и MAC) отправляется
принимающей стороне, которая может проверить контрольный MAC, присоединенный
к сообщению, пересчитывая MAC для сообщения, используя соответствующий
секретный ключ и проверяя, что полученный MAC эквивалентен контрольному.
Персональная идентификация это другое применение криптографии, где
пользователь/отправитель знает ключ, который может служить для
установления его подлинности.
Цифровые подписи заверяют отправителя и получателя, что сообщение подлинное,
и что только владелец ключа мог создать цифровую подпись.
Unix-совместимые команды.
Путь к исходным кодам /var/tmp (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем root.
OpenSSL версии 0.9.5a.
Домашняя страница OpenSSL:
http://www.openssl.org,
Вы должны скачать: openssl-0.9.5a.tar.gz.
find /* > OpenSSL1
find /* > OpenSSL2
diff OpenSSL1 OpenSSL2 > OpenSSL-Installed
[root@deep /]# cp openssl-version.tar.gz /var/tmp
[root@deep /]# cd /var/tmp
[root@deep tmp]# tar xzpf openssl-version.tar.gz
Компиляция и оптимизация
DIR=/usr/local/ssl
Должна быть:
DIR=/usr
[root@deep openssl-0.9.5a]# perl util/perlpath.pl /usr/bin
(где находится Ваша программа perl).
[root@deep openssl-0.9.5a]# export LD_LIBRARY_PATH=`pwd`
CC="egcs"
./configure linux-elf -DSSL_FORBID_ENULL --prefix=/usr --openssldir=/etc/ssl
CC= gcc
Должна быть:
CC= egcs
CFLAG= -DTHREADS -D_REENTRANT -DSSL_FORBID_ENULL -DL_ENDIAN -DTERMIO -O9 \
-funroll-loops -ffast-math -malign-double -mcpu=pentiumpro \
-march=pentiumpro -fomit-frame-pointer -fno-exceptions -Wall \
-DSHA1_ASM -DMD5_ASM -DRMD160_ASM
PROCESSOR=686
MANDIR=$(OPENSSLDIR)/man
Должна быть:
MANDIR=/usr/man
[root@deep openssl-0.9.5a]# make -f Makefile
[root@deep openssl-0.9.5a]# make test
[root@deep openssl-0.9.5a]# make install
[root@deep openssl-0.9.5a]# mv /etc/ssl/misc/* /usr/bin
[root@deep openssl-0.9.5a]# rm -rf /etc/ssl/misc/
[root@deep openssl-0.9.5a]# rm -rf /etc/ssl/lib/
[root@deep openssl-0.9.5a]# rm -f /usr/bin/CA.pl
[root@deep openssl-0.9.5a]# rm -f /usr/bin/CA.sh
[root@deep openssl-0.9.5a]# install -m 644 libRSAglue.a /usr/lib/
[root@deep openssl-0.9.5a]# install -m 644 rsaref/rsaref.h \
/usr/include/openssl/
[root@deep openssl-0.9.5a]# strip /usr/bin/openssl
[root@deep openssl-0.9.5a]# mkdir -p /etc/ssl/crl
Очистка после работы
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf openssl-version/ openssl-version.tar.gz
Конфигурации
Копируйте файл sign.sh в каталог /usr/bin.
Вы можете взять эти файлы из нашего архива floppy.tgz.Конфигурация файла /etc/ssl/openssl.cnf
# Примерный конфигурационный файл OpenSSL.
# Это главным образом используется для создания удостоверяющих запросов.
#
RANDFILE = $ENV::HOME/.rnd
oid_file = $ENV::HOME/.oid
oid_section = new_oids
# Используйте этот конфигурационный файл с опцией "-extfile" из
# утилиты "openssl x509", имя секции содержит
# расширения X.509v3, чтобы использовать:
# extensions =
# Альтернативно, используйте конфигурационный файл который имеет только
# X.509v3-расширения в основной [= default] секции.
[ new_oids ]
# Мы можем добавить новый OIDs здесь для использования в 'ca' и 'req'.
# Добавьте простой OID, подобно этому:
# testoid1=1.2.3.4
# Или используйте подстановку конфигурационного файла наподобие этого:
# testoid2=${testoid1}.5.6
####################################################################
[ ca ]
default_ca = CA_default # Это ca-секция по умолчанию
####################################################################
[ CA_default ]
dir = /etc/ssl # где все хранится
certs = $dir/certs # где хранятся штатные сертификаты
crl_dir = $dir/crl # где хранятся штатные crl
database = $dir/ca.db.index # файл с базой данных индексов.
new_certs_dir = $dir/ca.db.certs # место по умолчанию для новых сертификатов.
certificate = $dir/certs/ca.crt # CA-сертификат
serial = $dir/ca.db.serial # текущий регистрационный номер
crl = $dir/crl.pem # текущий CRL
private_key = $dir/private/ca.key # приватный ключ
RANDFILE = $dir/ca.db.rand # приватный файл со случайным числом
x509_extensions = usr_cert # расширение, добавляемое к сертификату
# Расширение добавляемое к CRL. Замечание: Netscape communicator
# основывается на V2 CRL, так что по умолчанию это закомментировано,
# чтобы оставить V1 CRL.
# crl_extensions = crl_ext
default_days = 365 # сколько времени удостоверяет
default_crl_days = 30 # сколько времени до следующего CRL
default_md = md5 # какой использовать md.
Preserve = no # сохранять порядок пройденных DN
# Несколько различных путей для определения, как подобные запросы должны
# выглядеть для CA, список атрибутов должен быть такой же и плюс
# некоторые необязательные поля.
policy = policy_match
# Для CA политик
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
# Для 'чьих угодно' политик
# В этом пункте Вы должны перечислить все приемлемые типы объектов
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
####################################################################
[ req ]
default_bits = 1024
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca
# Расширение, добавляемое к самоподписанным сертификатам
[ req_distinguished_name ]
countryName = Country Name (2-х буквенный код)
countryName_default = CA
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (полное имя)
stateOrProvinceName_default = Quebec
localityName = Locality Name (например, город)
localityName_default = Montreal
0.organizationName = Organization Name (например, компания)
0.organizationName_default = Open Network Architecture
# мы можем сделать это, но обычно это не нужно :-)
#1.organizationName = Second Organization Name (например, компания)
#1.organizationName_default = World Wide Web Pty Ltd
organizationalUnitName = Organizational Unit Name (например, подразделение)
organizationalUnitName_default = Internet Department
commonName = Common Name (например, ВАШЕ имя)
commonName_default = www.openna.com
commonName_max = 64
emailAddress = Email Address
emailAddress_default = admin@openna.com
emailAddress_max = 40
# SET-ex3 = SET extension number 3
[ req_attributes ]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = An optional company name
[ usr_cert ]
# Эти расширения добавляются, когда 'ca' подписанный запрос.
# Это идет против рекомендаций PKIX, но некоторые CA делают это и
# некоторые программы запрашивают это, чтобы уклониться от
# интерпретирования сертификатов конечных пользователей как CA.
basicConstraints=CA:FALSE
# Здесь приведены некоторые примеры использования nsCertType. Если это
# пропущено, то сертификат может использоваться для каких-нибудь
# пропусков подписаний объектов.
# Это OK для сервера SSL.
# nsCertType = server
# Это используется для объекта, подписывающего сертификат.
# nsCertType = objsign
# Это обычно используется для нормальных клиентов
# nsCertType = client, email
# и для всего, включая объекты подписания:
# nsCertType = client, email, objsign
# Это типично в keyUsage для клиентских сертификатов.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# Это будет выводится в списковом окне комментариев Netscape.
nsComment = "OpenSSL Generated Certificate"
# PKIX рекомендации, безопасно если включены все сертификаты.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
# Это для subjectAltName и issuerAltname.
# Импортирование почтового адрес.
# subjectAltName=email:copy
# Copy subject details
# issuerAltName=issuer:copy
#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem
#nsBaseUrl
#nsRevocationUrl
#nsRenewalUrl
#nsCaPolicyUrl
#nsSslServerName
[ v3_ca]
# Расширение для типичного CA
# Рекомендация PKIX.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
# Это то, что рекомендует PKIX, но некоторые неправильные программы
# засоряют критическими расширениями
#basicConstraints = critical,CA:true
#Так мы делаем это вместо вышеприведенного.
basicConstraints = CA:true
# Ключевое использование: это типично для CA-сертификатов. Однако, так как
# это предотвратит использование для проверки самоподписанных
# сертификатов, лучше по умолчанию это не учитывать.
# keyUsage = cRLSign, keyCertSign
# Некоторые могли бы хотеть также
# nsCertType = sslCA, emailCA
# Включение почтового адреса в subject alt name: другая рекомендация PKIX
# subjectAltName=email:copy
# Копирование деталей запрашивающей стороны
# issuerAltName=issuer:copy
# RAW DER hex encoding of an extension: beware experts only!
# 1.2.3.5=RAW:02:03
# You can even override a supported extension:
# basicConstraints= critical, RAW:30:03:01:01:FF
[ crl_ext ]
# CRL extensions.
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
# issuerAltName=issuer:copy
authorityKeyIdentifier=keyid:always,issuer:always
Создание программы /usr/bin/sign.sh
#!/bin/sh
##
## sign.sh -- Sign a SSL Certificate Request (CSR)
## Copyright (c) 1998-1999 Ralf S. Engelschall, All Rights Reserved.
##
# argument line handling
CSR=$1
if [ $# -ne 1 ]; then
echo "Usage: sign.sign <whatever>.csr"; exit 1
fi
if [ ! -f $CSR ]; then
echo "CSR not found: $CSR"; exit 1
fi
case $CSR in
*.csr ) CERT="`echo $CSR | sed -e 's/\.csr/.crt/'`" ;;
* ) CERT="$CSR.crt" ;;
esac
# make sure environment exists
if [ ! -d ca.db.certs ]; then
mkdir ca.db.certs
fi
if [ ! -f ca.db.serial ]; then
echo '01' >ca.db.serial
fi
if [ ! -f ca.db.index ]; then
cp /dev/null ca.db.index
fi
# create an own SSLeay config
cat >ca.config <<EOT
[ ca ]
default_ca = CA_own
[ CA_own ]
dir = /etc/ssl
certs = /etc/ssl/certs
new_certs_dir = /etc/ssl/ca.db.certs
database = /etc/ssl/ca.db.index
serial = /etc/ssl/ca.db.serial
RANDFILE = /etc/ssl/ca.db.rand
certificate = /etc/ssl/certs/ca.crt
private_key = /etc/ssl/private/ca.key
default_days = 365
default_crl_days = 30
default_md = md5
preserve = no
policy = policy_anything
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
EOT
# sign the certificate
echo "CA signing: $CSR -> $CERT:"
openssl ca -config ca.config -out $CERT -infiles $CSR
echo "CA verifying: $CERT <-> CA cert"
openssl verify -CAfile /etc/ssl/certs/ca.crt $CERT
# cleanup after SSLeay
rm -f ca.config
rm -f ca.db.serial.old
rm -f ca.db.index.old
# die gracefully
exit 0
[root@deep /]# chmod 755 /usr/bin/sign.sh
Команды
[root@deep ssl]# openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus
......................+++++.....+++++
e is 65537 (0x10001)
Enter PEM pass phrase:
Verifying password - Enter PEM pass phrase:
[root@deep ssl]# openssl req -new -key server.key -out server.csr
Using configuration from /etc/ssl/openssl.cnf
Enter PEM pass phrase:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CA]:
State or Province Name (full name) [Quebec]:
Locality Name (eg, city) [Montreal]:
Organization Name (eg, company) [Open Network Architecture]:
Organizational Unit Name (eg, section) [Internet Department]:
Common Name (eg, YOUR name) [www.openna.com]:
Email Address [admin@openna.com]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:.
An optional company name []:.
[root@deep ssl]# openssl genrsa -des3 -out ca.key 1024
Generating RSA private key, 1024 bit long modulus
...........................+++++................................+++++
e is 65537 (0x10001)
Enter PEM pass phrase:
Verifying password - Enter PEM pass phrase:
[root@deep ssl]# openssl req -new -x509 -days 365 -key ca.key -out ca.crt
Using configuration from /etc/ssl/openssl.cnf
Enter PEM pass phrase:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CA]:
State or Province Name (full name) [Quebec]:
Locality Name (eg, city) [Montreal]:
Organization Name (eg, company) [Open Network Architecture]:
Organizational Unit Name (eg, section) [Internet Department]:CA Marketing
Common Name (eg, YOUR name) [www.openna.com]:
Email Address [admin@openna.com]:
[root@deep ssl]# mv server.key private/
[root@deep ssl]# mv ca.key private/
[root@deep ssl]# mv ca.crt certs/
[root@deep ssl]# /usr/bin/sign.sh server.csr
CA signing: server.csr -> server.crt:
Using configuration from ca.config
Enter PEM pass phrase:
Check that the request matches the signature
Signature ok
The Subjects Distinguished Name is as follows
countryName :PRINTABLE:'CA'
stateOrProvinceName :PRINTABLE:'Quebec'
localityName :PRINTABLE:'Montreal'
organizationName :PRINTABLE:'Open Network Architecture'
organizationalUnitName :PRINTABLE:'Internet Department'
commonName :PRINTABLE:'www.openna.com'
emailAddress :IA5STRING:'admin@openna.com'
Certificate is to be certified until Dec 1 14:59:29 2000 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
CA verifying: server.crt <-> CA cert
server.crt: OK
This signs the CSR and results in a server.crt file.
[root@deep ssl]# mv server.crt certs/
SSLCertificateFile /etc/ssl/certs/server.crt
(публичный ключ веб-сервера)
SSLCertificateKeyFile /etc/ssl/private/server.key
(приватный ключ веб-сервера)
[root@deep ssl]# rm -f server.csr
Организация защиты OpenSSL
[root@deep /]# chmod 600 /etc/ssl/certs/ca.crt
[root@deep /]# chmod 600 /etc/ssl/certs/server.crt
[root@deep /]# chmod 600 /etc/ssl/private/ca.key
[root@deep /]# chmod 600 /etc/ssl/private/server.key
Некоторые варианты использования OpenSSL
Инсталлированные файлы
> /etc/ssl
> /etc/ssl/crl
> /etc/ssl/certs
> /etc/ssl/private
> /etc/ssl/openssl.cnf
> /usr/bin/openssl
> /usr/bin/c_rehash
> /usr/bin/sign.sh
> /usr/man/man1/verify.1
> /usr/man/man1/version.1
> /usr/man/man1/x509.1
> /usr/man/man3/BN_CTX_new.3
> /usr/man/man3/BN_CTX_start.3
> /usr/man/man3/BN_add.3
> /usr/man/man3/BN_add_word.3
> /usr/man/man3/BN_bn2bin.3
> /usr/bin/c_hash
> /usr/bin/c_info
> /usr/bin/c_issuer
> /usr/bin/c_name
> /usr/bin/der_chop
> /usr/include/openssl
> /usr/include/openssl/e_os.h
> /usr/include/openssl/e_os2.h
> /usr/include/openssl/crypto.h
> /usr/include/openssl/tmdiff.h
> /usr/include/openssl/opensslv.h
> /usr/include/openssl/opensslconf.h
> /usr/include/openssl/ebcdic.h
> /usr/include/openssl/md2.h
> /usr/include/openssl/md5.h
> /usr/include/openssl/sha.h
> /usr/include/openssl/mdc2.h
> /usr/include/openssl/hmac.h
> /usr/include/openssl/ripemd.h
> /usr/include/openssl/des.h
> /usr/include/openssl/rc2.h
> /usr/include/openssl/rc4.h
> /usr/include/openssl/rc5.h
> /usr/include/openssl/idea.h
> /usr/include/openssl/blowfish.h
> /usr/include/openssl/cast.h
> /usr/include/openssl/bn.h
> /usr/include/openssl/rsa.h
> /usr/include/openssl/dsa.h
> /usr/include/openssl/dh.h
> /usr/include/openssl/buffer.h
> /usr/include/openssl/bio.h
> /usr/include/openssl/stack.h
> /usr/include/openssl/safestack.h
> /usr/include/openssl/lhash.h
> /usr/include/openssl/rand.h
> /usr/include/openssl/err.h
> /usr/include/openssl/objects.h
> /usr/include/openssl/evp.h
> /usr/include/openssl/asn1.h
> /usr/include/openssl/asn1_mac.h
> /usr/include/openssl/pem.h
> /usr/include/openssl/pem2.h
> /usr/include/openssl/x509.h
> /usr/include/openssl/x509_vfy.h
> /usr/include/openssl/x509v3.h
> /usr/include/openssl/conf.h
> /usr/include/openssl/txt_db.h
> /usr/include/openssl/pkcs7.h
> /usr/include/openssl/pkcs12.h
> /usr/include/openssl/comp.h
> /usr/include/openssl/ssl.h
> /usr/include/openssl/ssl2.h
> /usr/include/openssl/ssl3.h
> /usr/include/openssl/ssl23.h
> /usr/include/openssl/tls1.h
> /usr/include/openssl/rsaref.h
> /usr/lib/libcrypto.a
> /usr/lib/libssl.a
> /usr/lib/libRSAglue.a
> /usr/man/man1/CA.pl.1
> /usr/man/man1/asn1parse.1
> /usr/man/man3/BN_cmp.3
> /usr/man/man3/BN_copy.3
> /usr/man/man3/BN_generate_prime.3
> /usr/man/man3/BN_mod_inverse.3
> /usr/man/man3/BN_mod_mul_montgomery.3
> /usr/man/man3/BN_mod_mul_reciprocal.3
> /usr/man/man3/BN_new.3
> /usr/man/man3/BN_num_bytes.3
> /usr/man/man3/BN_rand.3
> /usr/man/man3/BN_set_bit.3
> /usr/man/man3/BN_zero.3
> /usr/man/man3/CRYPTO_set_ex_data.3
> /usr/man/man3/DH_generate_key.3
> /usr/man/man3/DH_generate_parameters.3
> /usr/man/man3/DH_get_ex_new_index.3
> /usr/man/man3/DH_new.3
> /usr/man/man3/DH_set_method.3
> /usr/man/man3/DH_size.3
> /usr/man/man3/DSA_SIG_new.3
> /usr/man/man3/DSA_do_sign.3
> /usr/man/man3/DSA_dup_DH.3
> /usr/man/man3/DSA_generate_key.3
> /usr/man/man3/DSA_generate_parameters.3
> /usr/man/man3/DSA_get_ex_new_index.3
> /usr/man/man3/DSA_new.3
> /usr/man/man3/DSA_set_method.3
> /usr/man/man3/DSA_sign.3
> /usr/man/man3/DSA_size.3
> /usr/man/man3/ERR_GET_LIB.3
> /usr/man/man3/ERR_clear_error.3
> /usr/man/man3/ERR_error_string.3
> /usr/man/man3/ERR_get_error.3
> /usr/man/man3/ERR_load_crypto_strings.3
> /usr/man/man3/ERR_load_strings.3
> /usr/man/man3/ERR_print_errors.3
> /usr/man/man3/ERR_put_error.3
> /usr/man/man3/ERR_remove_state.3
> /usr/man/man3/EVP_DigestInit.3
> /usr/man/man3/EVP_EncryptInit.3
> /usr/man/man3/OPENSSL_VERSION_NUMBER.3
> /usr/man/man3/OpenSSL_add_all_algorithms.3
> /usr/man/man3/RAND_add.3
> /usr/man/man3/RAND_bytes.3
> /usr/man/man3/RAND_cleanup.3
> /usr/man/man3/RAND_egd.3
> /usr/man/man3/RAND_load_file.3
> /usr/man/man3/RAND_set_rand_method.3
> /usr/man/man3/RSA_blinding_on.3
> /usr/man/man3/RSA_check_key.3
> /usr/man/man3/RSA_generate_key.3
> /usr/man/man3/RSA_get_ex_new_index.3
> /usr/man/man3/RSA_new.3
> /usr/man/man3/RSA_padding_add_PKCS1_type_1.3
> /usr/man/man3/RSA_print.3
> /usr/man/man3/RSA_private_encrypt.3
> /usr/man/man3/RSA_public_encrypt.3
> /usr/man/man3/RSA_set_method.3
> /usr/man/man3/RSA_sign.3
> /usr/man/man3/RSA_sign_ASN1_OCTET_STRING.3
> /usr/man/man3/RSA_size.3
> /usr/man/man3/blowfish.3
> /usr/man/man3/bn.3
> /usr/man/man1/ca.1
> /usr/man/man1/ciphers.1
> /usr/man/man1/crl.1
> /usr/man/man1/crl2pkcs7.1
> /usr/man/man1/dgst.1
> /usr/man/man1/dhparam.1
> /usr/man/man1/dsa.1
> /usr/man/man1/dsaparam.1
> /usr/man/man1/enc.1
> /usr/man/man1/gendsa.1
> /usr/man/man1/genrsa.1
> /usr/man/man1/nseq.1
> /usr/man/man1/openssl.1
> /usr/man/man1/pkcs12.1
> /usr/man/man1/pkcs7.1
> /usr/man/man1/pkcs8.1
> /usr/man/man1/req.1
> /usr/man/man1/rsa.1
> /usr/man/man1/s_client.1
> /usr/man/man1/s_server.1
> /usr/man/man1/sess_id.1
> /usr/man/man1/smime.1
> /usr/man/man1/speed.1
> /usr/man/man1/spkac.1
> /usr/man/man3/bn_internal.3
> /usr/man/man3/buffer.3
> /usr/man/man3/crypto.3
> /usr/man/man3/d2i_DHparams.3
> /usr/man/man3/d2i_RSAPublicKey.3
> /usr/man/man3/dh.3
> /usr/man/man3/dsa.3
> /usr/man/man3/err.3
> /usr/man/man3/hmac.3
> /usr/man/man3/lh_stats.3
> /usr/man/man3/lhash.3
> /usr/man/man3/md5.3
> /usr/man/man3/mdc2.3
> /usr/man/man3/rand.3
> /usr/man/man3/rc4.3
> /usr/man/man3/ripemd.3
> /usr/man/man3/rsa.3
> /usr/man/man3/sha.3
> /usr/man/man3/threads.3
> /usr/man/man3/SSL_get_error.3
> /usr/man/man3/ssl.3
> /usr/man/man5/config.5
> /usr/man/man7/des_modes.7
Linux FreeS/WAN VPN
Краткий обзор
Unix-совместимые команды.
Путь к исходным кодам /var/tmp (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем root.
Ядро версии не ниже 2.2.14.
FreeS/WAN VPN версии 1.3.
Домашняя страница ядра Linux:
http://www.kernelnotes.org,
Вы должны скачать: linux-2_2_14_tar.gz.
Домашняя страница FreeS/WAN VPN:
http://www.freeswan.org.
FTP-сервер FreeS/WAN VPN: 194.109.6.26,
Вы должны скачать: freeswan-1.3.tar.gz.
Хорошей идеей будет создать список файлов, установленных в Вашей системе до
инсталляции FreeS/WAN и после, в результате, с помощью утилиты diff, Вы
сможете узнать, какие файлы были установлены. Например, до инсталляции:
find /* > Freeswan1
find /* > Freeswan2
diff Freeswan1 Freeswan2 > Freeswan-Installed
[root@deep /]# cp freeswan-version.tar.gz /usr/src
[root@deep /]# cd /usr/src
[root@deep src]# tar xzpf freeswan-version.tar.gz
[root@deep src]# chown -R 0.0 /usr/src/freeswan-version
Предварительные требования
Компиляция и добавление FreeS/WAN в ядро
PUBDIR=/usr/local/sbin
Должен быть:
PUBDIR=/usr/sbin
PRIVDIR=/usr/local/lib/ipsec
Должен быть:
PRIVDIR=/usr/lib/ipsec
FINALPRIVDIR=/usr/local/lib/ipsec
Должен быть:
FINALPRIVDIR=/usr/lib/ipsec
MANTREE=/usr/local/man
Должен быть:
MANTREE=/usr/man
PUBDIR=/usr/local/sbin
Должен быть:
PUBDIR=/usr/sbin
PRIVDIR=/usr/local/lib/ipsec
Должен быть:
PRIVDIR=/usr/lib/ipsec
FINALPRIVDIR=/usr/local/lib/ipsec
Должен быть:
FINALPRIVDIR=/usr/lib/ipsec
MANTREE=/usr/local/man
Должен быть:
MANTREE=/usr/man
BINDIR=/usr/local/lib/ipsec
Должен быть:
BINDIR=/usr/lib/ipsec
MANTREE=/usr/local/man
Должен быть:
MANTREE=/usr/man
BINDIR=/usr/local/lib/ipsec
Должен быть:
BINDIR=/usr/lib/ipsec
MANTREE=/usr/local/man
Должен быть:
MANTREE=/usr/man
MANTREE=/usr/local/man
Должен быть:
MANTREE=/usr/man
LIBDIR=/usr/local/lib
Должен быть:
LIBDIR=/usr/lib
BINDIR=/usr/local/bin
Должен быть:
BINDIR=/usr/bin
INCDIR=/usr/local/include
Должен быть:
INCDIR=/usr/include
MANDIR=/usr/local/man
Должен быть:
MANDIR=/usr/man
[root@deep freeswan-1.3]# make insert
[root@deep freeswan-1.3]# make programs
[root@deep freeswan-1.3]# make install
Переконфигурирование и инсталляция ядра с поддержкой FreeS/WAN VPN
[root@deep freeswan-1.3]# cd /usr/src/linux
[root@deep linux]# make config
IPSec options (FreeS/WAN)
IP Security Protocol (FreeS/WAN IPSEC) (CONFIG_IPSEC) [Y/n/?]
IPSEC: IP-in-IP encapsulation (CONFIG_IPSEC_IPIP) [Y/n/?]
IPSEC: PF_KEYv2 kernel/user interface (CONFIG_IPSEC_PFKEYv2) [Y/n/?]
IPSEC: Enable ICMP PMTU messages (CONFIG_IPSEC_ICMP) [Y/n/?]
IPSEC: Authentication Header (CONFIG_IPSEC_AH) [Y/n/?]
HMAC-MD5 authentication algorithm (CONFIG_IPSEC_AUTH_HMAC_MD5) [Y/n/?]
HMAC-SHA1 authentication algorithm (CONFIG_IPSEC_AUTH_HMAC_SHA1) [Y/n/?]
IPSEC: Encapsulating Security Payload (CONFIG_IPSEC_ESP) [Y/n/?]
3DES encryption algorithm (CONFIG_IPSEC_ENC_3DES) [Y/n/?]
IPSEC Debugging Option (DEBUG_IPSEC) [Y/n/?]
Kernel/User netlink socket (CONFIG_NETLINK) [Y/n/?]
Netlink device emulation (CONFIG_NETLINK_DEV) [Y/n/?]
[root@deep linux]# make dep; make clean; make bzImage
Очистка после работы
[root@deep /]# cd /usr/src
[root@deep src]# rm -rf freeswan-version/ freeswan-version.tar.gz
Конфигурации
Копируйте файл ipsec.secrets в каталог /etc.Настройка файла /etc/ipsec.conf
SubnetDeep==Deep--Deepgate.................Mailgate--Mail==SubnetMail
Untrusted net
left = Deep (deep.openna.com),
leftnexthop = Deepgate (первый маршрутизатор в направлении или
маршрутизатор провайдера для deep.openna.com),
Internet = Untrusted net,
rightnexthop = Mailgate (первый маршрутизатор в направлении или
маршрутизатор провайдера для mail.openna.com),
right = Mail (mail.openna.com),
rightsubnet = SubnetMail (192.168.1.0/24).
SubnetDeep
\ 192.168.1.0/24 /
+--------------------+
|
Deep
\ 208.164.186.1 /
+--------------------+
|
Deepgate
\ 205.151.222.250 /
+--------------------+
|
I N T E R N E T
|
Mailgate
/ 205.151.222.251 \
+-------------------+
|
Mail
/ 208.164.186.2 \
+------------------+
|
SubnetMail
/ 192.168.1.0/24 \
+-------------------+
Deep это IP-адрес первого шлюза. eth0 подсоединен к Интернет.
Deepgate это IP-адрес первого маршрутизатора в направлении Вашего
второго шлюза (mail.openna.com) или маршрутизатора Вашего провайдера.
INTERNET небезопасная сеть.
Mailgate это IP-адрес второго маршрутизатора в направлении Вашего
первого шлюза (deep.openna.com) или маршрутизатора Вашего провайдера.
Mail это IP-адрес второго шлюза. eth0 подсоединен к Интернет.
SubnetMail это IP-адрес Вашей внутренней приватной сети за вторым
шлюзом. eth1 подсоединен ко внутренней сети.
# /etc/ipsec.conf конфигурационный файл FreeS/WAN IPSEC
# Более детальные и более разнообразные примеры конфигураций могут
# быть найдены в doc/examples.
# Общая конфигурация
config setup
interfaces="ipsec0=eth0"
klipsdebug=none
plutodebug=none
plutoload=%search
plutostart=%search
# образцы соединений
conn deep-mail
left=208.164.186.1
leftsubnet=192.168.1.0/24
leftnexthop=205.151.222.250
right=208.164.186.2
rightsubnet=192.168.1.0/24
rightnexthop=205.151.222.251
keyingtries=0
auth=ah
auto=start
Эта опция определяет, какие соответствующие виртуальные и физические
интерфейсы используются для IPSEC. Установка по умолчанию,
interfaces=%defaultroute, будет определять Ваше соединение с Интернет или с
корпоративной сетью. Также Вы можете именовать один или больше интерфейсов
для использования с FreeS/WAN. Например:
interfaces="ipsec0=eth0"
interfaces="ipsec0=eth0 ipsec1=ppp0"
Эта опция определяет отладочный вывод для KLIPS (ядро кода IPSEC). Значение
по умолчанию: none, означающее отсутствие вывода отладочной информации, all
обозначает вывод всей отладочной информации.
Это опция определяет вывод отладочной информации для демона согласования
ключей Pluto. Значения, принимаемые этой опцией, аналогичны klipsdebug.
Эта опция определяет, какие соединения (по именам) загружаются автоматически
в память, когда запускается Pluto. По умолчанию: none, значение %search
загружает все соединения с auto=add или auto=start.
Эта опция определяет, какие соединения (по именам) устанавливаются
автоматически, когда запускается Pluto. По умолчанию none, значение %search
устанавливает все соединения с auto=start.
Эта опция задает имя, выступающее идентификатором соединения, которое может
быть использовано IPSEC. Хорошим решением будет именовать соединения по их
конечным точкам для предотвращения ошибок. Например, связь между
deep.openna.com и mail.openna.com может быть названа "deep-mail", или связь
между офисами в Монреале и Париже "montreal-paris". Заметим, что имя
deep-mail или то, что Вы выбрали в качестве имени, должно совпадать на обоих
шлюзах. Другими словами, единственным изменением, которое Вы должны сделать в
файле /etc/ipsec.conf на втором шлюзе должно быть изменение строки
interfaces= на соответствующий интерфейс второго шлюза, использующего IPSEC
соединение, если, конечно, это отличается от первого шлюза. Например, если
интерфейс eth0 используется на обоих шлюзах для IPSEC, не нужно изменять
строку interfaces= на втором шлюзе. С другой стороны, если первый шлюз
использует eth0, а второй eth1, то Вы должны изменить строку interfaces= на
втором шлюзе на eth1.
Эта опция задает IP-адрес внешнего интерфейса шлюза, используемого для
общения с другим шлюзом.
Эта опция определяет IP-адрес приватной подсети, находящейся за шлюзом.
Эта опция определяет IP-адрес первого маршрутизатора в требуемом
направлении или маршрутизатора провайдера.
Это тоже, что и left=, но для правого пункта назначения.
Это тоже, что и leftsubnet=, но для правого пункта назначения.
Это тоже, что и leftnexthop=, но для правого пункта назначения.
Эта опция определяет, как много попыток (целое число) может быть сделано
при переговорах об используемых ключах. По умолчанию равно 0 (постоянный
повтор), что рекомендуется и оставить.
Эта опция определяет, должна ли аутентификация осуществляться независимо,
используя AH (Authentication Header), или включается как часть ESP
(Encapsulated Security Payload) сервиса. Это предпочтительно, когда
IP-заголовки незащищены для предотвращения атак типа man-in-the-middle.
Эта опция определяет, должна ли быть выполнена автоматически операция
запуска, когда запускается IPSEC.Настройка файла /etc/ipsec.secrets
[root@deep /]# ipsec ranbits 256 > temp
# Этот файл хранит общий секрет, который сейчас используется только для
# внутреннего механизма аутентификации Pluto. Смотрите страницу
# руководства ipsec_pluto(8). Каждый секрет (немного упрощенный) для одной
# пары договаривающихся хостов. Общий секрет это длинная и сложная для
# угадывания произвольная символьная строка
# Заметим, что все секреты должны быть заключены в кавычки, даже если они
# не имеют в своем составе пробелов.
10.0.0.1 11.0.0.1 "jxVS1kVUTTulkVRRTnTujSm444jRuU1mlkklku2nkW3nnVuV2
WjjRRnulmlkmU1Run5VSnnRT"
10.0.0.1 11.0.0.1
"jxVS1kVUTTulkVRRTnTujSm444jRuU1mlkklku2nkW3nnVuV2WjjRRnulmlkmU1Run5VSnnRT"
Должен быть:
208.164.186.1 208.164.186.2
"0x9748cc31_2e99194f_d230589b_cd846b57_dc070b01_74b66f34_19c40a1a_804906ed"
Настройка тайного секретного ключа RSA
[root@deep /]# cd /
[root@deep /]# ipsec rsasigkey --verbose 1024 > deep-keys
computing primes and modulus...
getting 64 random bytes from /dev/random
looking for a prime starting there
found it after 30 tries
getting 64 random bytes from /dev/random
looking for a prime starting there
found it after 230 tries
swapping primes so p is the larger
computing (p-1)*(q-1)...
computing d...
computing exp1, exp1, coeff...
output...
[root@mail /]# cd /
[root@mail /]# ipsec rsasigkey --verbose 1024 > mail-keys
computing primes and modulus...
getting 64 random bytes from /dev/random
looking for a prime starting there
found it after 30 tries
getting 64 random bytes from /dev/random
looking for a prime starting there
found it after 230 tries
swapping primes so p is the larger
computing (p-1)*(q-1)...
computing d...
computing exp1, exp1, coeff...
output...
# образец соединения
conn deep-mail
left=208.164.186.1
leftsubnet=192.168.1.0/24
leftnexthop=205.151.222.250
right=208.164.186.2
rightsubnet=192.168.1.0/24
rightnexthop=205.151.222.251
keyingtries=0
auth=ah
authby=rsasig
leftrsasigkey=<Public key of deep>
rightrsasigkey=<Public key of mail>
auto=start
Этот параметр определяет, как два шлюза безопасности должны устанавливать
подлинность друг друга. Значение по умолчанию этого параметра: shared
secrets. Мы должны определить rsasig для RSA, так как мы решили использовать
цифровые подписи RSA.
Этот параметр определяет публичный ключ для RSA-сигнатуры левого участника. В
нашем примере, левый 208.164.186.1, и представляет deep.openna.com, так что
мы должны поместить публичный ключ RSA для deep в этой строке.
Этот параметр определяет публичный ключ для RSA-сигнатуры правого участника.
В нашем примере, правый 208.164.186.2, и представляет mail.openna.com, так
что мы должны поместить публичный ключ RSA для mail в этой строке.
[root@deep /]# cd /
[root@deep /]# vi deep-keys
# 1024 bits, Fri Feb 4 05:05:19 2000
# for signatures only, UNSAFE FOR ENCRYPTION
#pubkey=0x010395daee1be05f3038ae529ef2668afd79f5ff1b16203c9ceaef801cea9cb74bcfb51a6e
cc08890d3eb4b5470c0fc35465c8ba2ce9d1145ff07b5427e04cf4a38ef98a7f29edcb4d7689f2da7a69199e
4318b4c8d0ea25d33e4f084186a2a54f4b4cec12cca1a5deac3b19d561c16a76bab772888f1fd71aa08f085
02a141b611f
Modulus:
0x95daee1be05f3038ae529ef2668afd79f5ff1b16203c9ceaef801cea9cb74bcfb51a6ecc08890d3eb4b5470c0
fc35465c8ba2ce9d1145ff07b5427e04cf4a38ef98a7f29edcb4d7689f2da7a69199e4318b4c8d0ea25d33e4f0
84186a2a54f4b4cec12cca1a5deac3b19d561c16a76bab772888f1fd71aa08f08502a141b611f
PublicExponent: 0x03
# everything after this point is secret
PrivateExponent:
0x63e74967eaea2025c98c69f6ef0753a6a3ff6764157dbdf1f50013471324dd352366f48805b0b37f232384b2
b52ce2ee85d173468b62eaa052381a9588a317b3a1324d01a531a41fa7add6c5efbdd88f4718feed2bc0246b
e924e81bb90f03e49ceedf7af0dd48f06f265b519600bd082c6e6bd27eaa71cc0288df1ecc3b062b
Prime1:
0xc5b471a88b025dd09d4bd7b61840f20d182d9b75bb7c11eb4bd78312209e3aee7ebfe632304db6df5e211d
21af7fee79c5d45546bea3ccc7b744254f6f0b847f
Prime2:
0xc20a99feeafe79767122409b693be75f15e1aef76d098ab12579624aec708e85e2c5dd62080c3a64363f2f4
5b0e96cb4aef8918ca333a326d3f6dc2c72b75361
Exponent1:
0x83cda11b0756e935be328fcebad5f6b36573bcf927a80bf2328facb6c0697c9eff2a9976cade79ea3ec0be16
74fff4512e8d8e2f29c2888524d818df9f5d02ff
Exponent2:
0x815c66a9f1fefba44b6c2b124627ef94b9411f4f9e065c7618fb96dc9da05f03ec83e8ec055d7c42ced4ca2e7
5f0f3231f5061086ccd176f37f9e81da1cf8ceb
Coefficient:
0x10d954c9e2b8d11f4db1b233ef37ff0a3cecfffad89ba5d515449b007803f577e3bd7f0183ceddfd805466d62f
767f3f5a5731a73875d30186520f1753a7e325
[root@mail /]# cd /
[root@mail /]# vi mail-keys
# 1024 bits, Fri Feb 4 04:46:59 2000
# for signatures only, UNSAFE FOR ENCRYPTION
#pubkey=0x01037631b81f00d5e6f888c542d44dbb784cd3646f084ed96f942d341c7c4686cbd405b8
05dc728f8697475f11e8b1dd797550153a3f0d4ff0f2b274b70a2ebc88f073748d1c1c8821dc6be6a2f0064f
3be7f8e4549f8ab9af64944f829b014788dd202cf7d2e320cab666f5e7a197e64efe0bfee94e92ce4dad82d5
230c57b89edf
Modulus:
0x7631b81f00d5e6f888c542d44dbb784cd3646f084ed96f942d341c7c4686cbd405b805dc728f8697475f11e8
b1dd797550153a3f0d4ff0f2b274b70a2ebc88f073748d1c1c8821dc6be6a2f0064f3be7f8e4549f8ab9af64944f
829b014788dd202cf7d2e320cab666f5e7a197e64efe0bfee94e92ce4dad82d5230c57b89edf
PublicExponent: 0x03
# everything after this point is secret
PrivateExponent:
0x4ecbd014ab3944a5b08381e2de7cfadde242f4b03490f50d737812fd8459dd3803d003e84c5faf0f84ea0bf0
7693a64e35637c2a08dff5f721a324b1747db09f62c871d5e11711251b845ae76753d4ef967c494b0def4f5d07
62f65da603bc04c41b4c6cab4c413a72c633b608267ae2889c162a3d5bc07ee083b1c6e038400b
Prime1:
0xc7f7cc8feaaac65039c39333b878bffd8f95b0dc22995c553402a5b287f341012253e9f25b83983c936f6ca51
2926bebee3d5403bf9f4557206c6bbfd9aac899
Prime2:
0x975015cb603ac1d488dc876132d8bc83079435d2d3395c03d5386b5c004eadd4d7b01b3d86aad0a2275d2
d6b791a2abe50d7740b7725679811a32ca22db97637
Exponent1:
0x854fddb5471c84357bd7b777d0507ffe5fb92092c1bb92e37801c3cc5aa22b5616e29bf6e7ad1028624a486
e0c619d47f428e2ad2a6a2e3a159d9d2a911c85bb
Exponent2:
0x64e00e87957c81385b3daf9621e5d302050d7937377b92ad38d04792aadf1e8de52012290471e06c1a3e1
e47a61171d435e4f807a4c39a6561177316c9264ecf
Coefficient:
0x6f087591becddc210c2ee0480e30beeb25615a3615203cd3cef65e5a1d476fd9602ca0ef10d9b858edb22db
42c975fb71883a470b43433a7be57df7ace4a0a3f
# образец соединения
conn deep-mail
left=208.164.186.1
leftsubnet=192.168.1.0/24
leftnexthop=205.151.222.250
right=208.164.186.2
rightsubnet=192.168.1.0/24
rightnexthop=205.151.222.251
keyingtries=0
auth=ah
authby=rsasig
leftrsasigkey=0x010395daee1be05f3038ae529ef2668afd79f5ff1b16203c9ceaef801cea9cb74bcfb5
1a6ecc08890d3eb4b5470c0fc35465c8ba2ce9d1145ff07b5427e04cf4a38ef98a7f29edcb4d7689f2d
a7a69199e4318b4c8d0ea25d33e4f084186a2a54f4b4cec12cca1a5deac3b19d561c16a76bab77288
8f1fd71aa08f08502a141b611f
rightrsasigkey=0x01037631b81f00d5e6f888c542d44dbb784cd3646f084ed96f942d341c7c4686cbd
405b805dc728f8697475f11e8b1dd797550153a3f0d4ff0f2b274b70a2ebc88f073748d1c1c8821dc6b
e6a2f0064f3be7f8e4549f8ab9af64944f829b014788dd202cf7d2e320cab666f5e7a197e64efe0bfee94
e92ce4dad82d5230c57b89edf
auto=start
[root@deep /]# vi /etc/ipsec.secrets
208.164.186.1 208.164.186.2
"0x9748cc31_2e99194f_d230589b_cd846b57_dc070b01_74b66f34_19c40a1a_804906ed"
208.164.186.1 208.164.186.2: RSA {
Modulus:
0x95daee1be05f3038ae529ef2668afd79f5ff1b16203c9ceaef801cea9cb74bcfb51a6ecc08890d3eb4b5470c0
fc35465c8ba2ce9d1145ff07b5427e04cf4a38ef98a7f29edcb4d7689f2da7a69199e4318b4c8d0ea25d33e4f0
84186a2a54f4b4cec12cca1a5deac3b19d561c16a76bab772888f1fd71aa08f08502a141b611f
PublicExponent: 0x03
# everything after this point is secret
PrivateExponent:
0x63e74967eaea2025c98c69f6ef0753a6a3ff6764157dbdf1f50013471324dd352366f48805b0b37f232384b2
b52ce2ee85d173468b62eaa052381a9588a317b3a1324d01a531a41fa7add6c5efbdd88f4718feed2bc0246b
e924e81bb90f03e49ceedf7af0dd48f06f265b519600bd082c6e6bd27eaa71cc0288df1ecc3b062b
Prime1:
0xc5b471a88b025dd09d4bd7b61840f20d182d9b75bb7c11eb4bd78312209e3aee7ebfe632304db6df5e211d
21af7fee79c5d45546bea3ccc7b744254f6f0b847f
Prime2:
0xc20a99feeafe79767122409b693be75f15e1aef76d098ab12579624aec708e85e2c5dd62080c3a64363f2f4
5b0e96cb4aef8918ca333a326d3f6dc2c72b75361
Exponent1:
0x83cda11b0756e935be328fcebad5f6b36573bcf927a80bf2328facb6c0697c9eff2a9976cade79ea3ec0be16
74fff4512e8d8e2f29c2888524d818df9f5d02ff
Exponent2:
0x815c66a9f1fefba44b6c2b124627ef94b9411f4f9e065c7618fb96dc9da05f03ec83e8ec055d7c42ced4ca2e7
5f0f3231f5061086ccd176f37f9e81da1cf8ceb
Coefficient:
0x10d954c9e2b8d11f4db1b233ef37ff0a3cecfffad89ba5d515449b007803f577e3bd7f0183ceddfd805466d62f
767f3f5a5731a73875d30186520f1753a7e325
}
[root@mail /]# vi /etc/ipsec.secrets
208.164.186.1 208.164.186.2: RSA {
Modulus:
0x95daee1be05f3038ae529ef2668afd79f5ff1b16203c9ceaef801cea9cb74bcfb51a6ecc08890d3eb4b5470c0
fc35465c8ba2ce9d1145ff07b5427e04cf4a38ef98a7f29edcb4d7689f2da7a69199e4318b4c8d0ea25d33e4f0
84186a2a54f4b4cec12cca1a5deac3b19d561c16a76bab772888f1fd71aa08f08502a141b611f
PublicExponent: 0x03
# everything after this point is secret
PrivateExponent:
0x63e74967eaea2025c98c69f6ef0753a6a3ff6764157dbdf1f50013471324dd352366f48805b0b37f232384b2
b52ce2ee85d173468b62eaa052381a9588a317b3a1324d01a531a41fa7add6c5efbdd88f4718feed2bc0246b
e924e81bb90f03e49ceedf7af0dd48f06f265b519600bd082c6e6bd27eaa71cc0288df1ecc3b062b
Prime1:
0xc5b471a88b025dd09d4bd7b61840f20d182d9b75bb7c11eb4bd78312209e3aee7ebfe632304db6df5e211d
21af7fee79c5d45546bea3ccc7b744254f6f0b847f
Prime2:
0xc20a99feeafe79767122409b693be75f15e1aef76d098ab12579624aec708e85e2c5dd62080c3a64363f2f4
5b0e96cb4aef8918ca333a326d3f6dc2c72b75361
Exponent1:
0x83cda11b0756e935be328fcebad5f6b36573bcf927a80bf2328facb6c0697c9eff2a9976cade79ea3ec0be16
74fff4512e8d8e2f29c2888524d818df9f5d02ff
Exponent2:
0x815c66a9f1fefba44b6c2b124627ef94b9411f4f9e065c7618fb96dc9da05f03ec83e8ec055d7c42ced4ca2e7
5f0f3231f5061086ccd176f37f9e81da1cf8ceb
Coefficient:
0x10d954c9e2b8d11f4db1b233ef37ff0a3cecfffad89ba5d515449b007803f577e3bd7f0183ceddfd805466d62f
767f3f5a5731a73875d30186520f1753a7e325
}
Требования по настройке сети для IPSec
FORWARD_IPV4="false"
Должна быть:
FORWARD_IPV4="yes"
[root@deep /]# /etc/rc.d/init.d/network restart
Bringing up interface lo [ OK ]
Bringing up interface eth0 [ OK ]
Bringing up interface eth1 [ OK ]
# Enable packet forwarding
net.ipv4.ip_forward = 1
[root@deep /]# /etc/rc.d/init.d/network restart
Bringing up interface lo [ OK ]
Bringing up interface eth0 [ OK ]
Bringing up interface eth1 [ OK ]
# FreeS/WAN IPSec VPN
# -------------------
# Если Вы используете FreeSWAN IPSec VPN, Вы должны заполнить адреса
# шлюзов в IPSECSG и виртуальных интурфейсов для FreeS/Wan IPSEC в параметре
# FREESWANVI. Смотрите начало этого скрипта для определения этих параметров.
# IPSECSG это разделенный пробелами список удаленных шлюзов. FREESWANVI это
# разделенный пробелами список виртуальных интерфейсов для реализации
# FreeS/Wan IPSEC. Включите только те, которые фактически используются.
# Разрешите протокол IPSEC из удаленных шлюзов на внешнем интерфейсе
# IPSEC использует три основных типа пакетов:
# IKE использует UDP-протокол и порт 500,
# ESP использует протокол номер 50 и
# AH использует протокол номер 51
ipchains -A input -i $EXTERNAL_INTERFACE -p udp -s $IPSECSG -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p udp -d $IPSECSG -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p 50 -s $IPSECSG -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p 50 -d $IPSECSG -j ACCEPT
ipchains -A input -i $EXTERNAL_INTERFACE -p 51 -s $IPSECSG -j ACCEPT
ipchains -A output -i $EXTERNAL_INTERFACE -p 51 -d $IPSECSG -j ACCEPT
# Разрешите весь трафик к виртуальному интерфейсу FreeS/WAN
ipchains -A input -i $FREESWANVI -s $ANYWHERE -d $ANYWHERE -j ACCEPT
ipchains -A output -i $FREESWANVI -s $ANYWHERE -d $ANYWHERE -j ACCEPT
# Пересылка всего из виртуального интерфейса FreeS/WAN IPSEC туннеля
ipchains -A forward -i $FREESWANVI -s $ANYWHERE -d $ANYWHERE -j ACCEPT
[root@deep /]# cat /proc/sys/net/ipv4/conf/ipsec0/rp_filter
0
[root@deep /]# cat /proc/sys/net/ipv4/conf/eth0/rp_filter
0
[root@deep /]# echo 0 > /proc/sys/net/ipv4/conf/ipsec0/rp_filter
[root@deep /]# echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
# Disable IP spoofing protection to allow IPSEC to work properly
echo 0 > /proc/sys/net/ipv4/conf/ipsec0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
ipsec_setup: WARNING: ipsec0 has route filtering turned on, KLIPS may not work
ipsec_setup: (/proc/sys/net/ipv4/conf/ipsec0/rp_filter = `1', should be 0)
ipsec_setup: WARNING: eth0 has route filtering turned on, KLIPS may not work
ipsec_setup: (/proc/sys/net/ipv4/conf/eth0/rp_filter = `1', should be 0)
# Маскарадинг внутреннего трафика.
# Весь внутренний трафик будет выглядеть.
ipchains -A forward -i $EXTERNAL_INTERFACE -s $LOCALNET_1 -j MASQ
Тестирование инсталляции
Feb 2 05:22:35 deep ipsec_setup: Starting FreeS/WAN IPSEC snap2000jan31b...
Feb 2 05:22:35 deep ipsec_setup: KLIPS debug `none'
Feb 2 05:22:35 deep ipsec_setup: KLIPS ipsec0 on eth0
192.168.1.1/255.255.255.0
broadcast 192.168.1.255
Feb 2 05:22:36 deep ipsec_setup: Disabling core dumps:
Feb 2 05:22:36 deep ipsec_setup: Starting Pluto (debug `none'):
Feb 2 05:22:37 deep ipsec_setup: Loading Pluto database `deep-mail':
Feb 2 05:22:37 deep ipsec_setup: Enabling Pluto negotiation:
Feb 2 05:22:37 deep ipsec_setup: Routing for Pluto conns `deep-mail':
Feb 2 05:22:37 deep ipsec_setup: Initiating Pluto tunnel `deep-mail':
Feb 2 05:22:39 deep ipsec_setup: 102 "deep-mail" #1: STATE_MAIN_I1: initiate
Feb 2 05:22:39 deep ipsec_setup: 104 "deep-mail" #1: STATE_MAIN_I2: from
STATE_MAIN_I1; sent MI2, expecting MR2
Feb 2 05:22:39 deep ipsec_setup: 106 "deep-mail" #1: STATE_MAIN_I3: from
STATE_MAIN_I2; sent MI3, expecting MR3
Feb 2 05:22:39 deep ipsec_setup: 004 "deep-mail" #1: STATE_MAIN_I4: SA
established
Feb 2 05:22:39 deep ipsec_setup: 110 "deep-mail" #2: STATE_QUICK_I1: initiate
Feb 2 05:22:39 deep ipsec_setup: 004 "deep-mail" #2: STATE_QUICK_I2: SA
established
Feb 2 05:22:39 deep ipsec_setup: ...FreeS/WAN IPSEC started
Feb 21 14:45:42 deep Pluto[432]: Starting Pluto (FreeS/WAN Version 1.3)
Feb 21 14:45:43 deep Pluto[432]: added connection description "deep-mail"
Feb 21 14:45:43 deep Pluto[432]: listening for IKE messages
Feb 21 14:45:43 deep Pluto[432]: adding interface ipsec0/eth0 192.168.1.1
Feb 21 14:45:43 deep Pluto[432]: loading secrets from "/etc/ipsec.secrets"
Feb 21 14:45:43 deep Pluto[432]: "deep-mail" #1: initiating Main Mode
Feb 21 14:45:44 deep Pluto[432]: "deep-mail" #1: ISAKMP SA established
Feb 21 14:45:44 deep Pluto[432]: "deep-mail" #2: initiating Quick Mode
POLICY_RSASIG+POLICY_ENCRYPT+POLICY_AUTHENTICATE+POLICY_TUNNEL+POLICY_PFS
Feb 21 14:45:46 deep Pluto[432]: "deep-mail" #2: sent QI2,
IPsec SA established
Feb 21 14:45:47 deep Pluto[432]: "deep-mail" #3: responding to Main Mode
Feb 21 14:45:49 deep Pluto[432]: "deep-mail" #3: sent MR3,
ISAKMP SA established
Feb 21 14:45:49 deep Pluto[432]: "deep-mail" #4: responding to Quick Mode
Feb 21 14:45:50 deep Pluto[432]: "deep-mail" #4: IPsec SA established
[root@deep /]# ls -l /proc/net/ipsec_*
-r--r--r-- 1 root root 0 Feb 2 05:30 /proc/net/ipsec_eroute
-r--r--r-- 1 root root 0 Feb 2 05:30 /proc/net/ipsec_klipsdebug
-r--r--r-- 1 root root 0 Feb 2 05:30 /proc/net/ipsec_spi
-r--r--r-- 1 root root 0 Feb 2 05:30 /proc/net/ipsec_spigrp
-r--r--r-- 1 root root 0 Feb 2 05:30 /proc/net/ipsec_spinew
-r--r--r-- 1 root root 0 Feb 2 05:30 /proc/net/ipsec_tncfg
-r--r--r-- 1 root root 0 Feb 2 05:30 /proc/net/ipsec_version
[root@deep /]# cat /proc/net/ipsec_tncfg
ipsec0 -> eth0 mtu=16260 -> 1500
ipsec1 -> NULL mtu=0 -> 0
ipsec2 -> NULL mtu=0 -> 0
ipsec3 -> NULL mtu=0 -> 0
[root@deep /]# ipsec look
deep.openna.com Fri Feb 4 17:25:17 EST 2000
============-============
192.168.1.1/32 -> 192.168.1.2/32 => tun0x106@192.168.1.2
esp0x4450894d@192.168.1.2
ah0x4450894c@192.168.1.2
------------=------------
ah0x3350f551@192.168.1.1 AH_HMAC_MD5: dir=in ooowin=32 seq=115
bit=0xffffffff alen=128
aklen=16 life(c,s,h)=bytes(16140,0,0)add(51656,0,0)use(54068,0,0)
packets(115,0,0) idle=499
ah0x4450894c@192.168.1.2 AH_HMAC_MD5: dir=out ooowin=32 seq=2828
alen=128 aklen=16
life(c,s,h)=bytes(449488,0,0)add(51656,0,0)use(51656,0,0)packets(2828,0,0)
idle=6
esp0x3350f552@192.168.1.1 ESP_3DES: dir=in ooowin=32 seq=115 bit=0xffffffff
eklen=24
life(c,s,h)=bytes(13380,0,0)add(51656,0,0)use(54068,0,0)packets(115,0,0)
idle=499
esp0x4450894d@192.168.1.2 ESP_3DES: dir=out ooowin=32 seq=2828 eklen=24
life(c,s,h)=bytes(381616,0,0)add(51656,0,0)use(51656,0,0)packets(2828,0,0)
idle=6
tun0x105@192.168.1.1 IPIP: dir=in 192.168.1.2 -> 192.168.1.1
life(c,s,h)=add(51656,0,0)
tun0x106@192.168.1.2 IPIP: dir=out 192.168.1.1 -> 192.168.1.2
life(c,s,h)=bytes(327581,0,0)add(51656,0,0)use(51656,0,0)packets(2828,0,0)
idle=6
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ipsec0
192.168.1.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
192.168.1.2 192.168.1.2 255.255.255.255 UGH 0 0 0 ipsec0
Destination Gateway Genmask Flags MSS Window irtt Iface
208.164.186.1 ---- 205.151.222.250 ---- 205.151.222.251 ---- 208.164.186.2
| |
192.168.1.0/24 192.168.1.0/24
| |
192.168.1.1 192.168.1.2
[root@deep /]# ipsec barf > result
Дополнительная документация
$ man ipsec atoaddr, addrtoa (3) конвертирование
Интернет-адресов в и из ASCII
$ man ipsec atoasr (3) конвертирование ASCII в
Интернет-адреса, подсети и диапазоны
$ man ipsec atobytes, bytestoa (3) конвертирование байтов двоичных данных в и
из ASCII формат
$ man ipsec atodata, datatoa (3) конвертирование двоичных данных
из и в ASCII формат
$ man ipsec atosa, satoa (3) конвертирует IPSEC Security Association
IDs в и из ASCII
$ man ipsec atosubnet, subnettoa (3) конвертирует подсеть/маска в
ASCII-форме в и из адрес
$ man ipsec atoul, ultoa (3) конвертирует unsigned-long числа в и из ASCII
$ man ipsec auto (8) контролирует автоматическое
снабжение ключами соединений IPSEC
$ man ipsec barf (8) выделение набора отладочной информации IPSEC
$ man ipsec bitstomask (3) конвертирование набора единиц и нулей в
маску подсети Интернет
$ man ipsec eroute (8) манипулирование таблицами маршрутизации IPSEC
$ man ipsec goodmask (3) является ли эта маска правильной?
$ man ipsec hostof (3) получает Интернет-адрес и маску подсети и возвращает
часть, связанную с хостом
$ man ipsec klipsdebug (8) устанавливает отладочные возможности и уровень
Klips (ядерная поддержка IPSEC)
$ man ipsec look (8) выводит минимальную отладочную информацию
$ man ipsec manual (8) поднимает и опускает IPSEC соединения с
ручным снабжением ключами
$ man ipsec masktobits (3) конвертирует маску подсети Интернет в
набор нолей и единиц
$ man ipsec optionsfrom (3) читает дополнительные опции командной
строки из файла
$ man ipsec pluto (8) демон манипуляции ключами IPsec IKE
$ man ipsec ranbits (8) генератор случайного набора битов в виде ASCII
$ man ipsec rangetoa (3) конвертирует диапазон Интернет адресов в ASCII
$ man ipsec rsasigkey (8) создает сигнатурный ключ RSA
$ man ipsec setup (8) контролирует подсистему IPSEC
$ man ipsec spi (8) управляет IPSEC Security Associations
$ man ipsec spigrp (8) группирует/расгруппирует IPSEC Security Associations
$ man ipsec subnetof (3) получает Интернет адрес и маску подсети и
возвращает часть, связанную с подсетью
$ man ipsec tncfg (8) ассоциирует виртуальный интерфейс
IPSEC с реальным интерфейсом
$ man ipsec whack (8) контролирует интерфейс для демона
управления ключами IPSEC
$ man ipsec.conf (5) конфигурация и соединения IPSEC
$ man ipsec.secrets (5) секреты для IKE/Ipsec аутентификацииИнсталлированные файлы
> /etc/rc.d/init.d/ipsec
> /etc/rc.d/rc0.d/K68ipsec
> /etc/rc.d/rc1.d/K68ipsec
> /usr/man/man3/ipsec_atoasr.3
> /usr/man/man3/ipsec_rangetoa.3
> /usr/man/man3/ipsec_atodata.3
> /etc/rc.d/rc2.d/S47ipsec
> /etc/rc.d/rc3.d/S47ipsec
> /etc/rc.d/rc4.d/S47ipsec
> /etc/rc.d/rc5.d/S47ipsec
> /etc/rc.d/rc6.d/K68ipsec
> /etc/ipsec.conf
> /etc/ipsec.secrets
> /usr/lib/ipsec
> /usr/lib/ipsec/spi
> /usr/lib/ipsec/eroute
> /usr/lib/ipsec/spigrp
> /usr/lib/ipsec/tncfg
> /usr/lib/ipsec/klipsdebug
> /usr/lib/ipsec/pluto
> /usr/lib/ipsec/whack
> /usr/lib/ipsec/ipsec
> /usr/lib/ipsec/barf
> /usr/lib/ipsec/manual
> /usr/lib/ipsec/auto
> /usr/lib/ipsec/look
> /usr/lib/ipsec/showdefaults
> /usr/lib/ipsec/_include
> /usr/lib/ipsec/_confread
> /usr/lib/ipsec/_keycensor
> /usr/lib/ipsec/_secretcensor
> /usr/lib/ipsec/_updown
> /usr/lib/ipsec/ranbits
> /usr/lib/ipsec/rsasigkey
> /usr/lib/ipsec/setup
> /usr/man/man3/ipsec_atoaddr.3
> /usr/man/man3/ipsec_addrtoa.3
> /usr/man/man3/ipsec_atosubnet.3
> /usr/man/man3/ipsec_subnettoa.3
> /usr/man/man3/ipsec_atobytes.3
> /usr/man/man3/ipsec_bytestoa.3
> /usr/man/man3/ipsec_datatoa.3
> /usr/man/man3/ipsec_atosa.3
> /usr/man/man3/ipsec_satoa.3
> /usr/man/man3/ipsec_atoul.3
> /usr/man/man3/ipsec_ultoa.3
> /usr/man/man3/ipsec_goodmask.3
> /usr/man/man3/ipsec_masktobits.3
> /usr/man/man3/ipsec_bitstomask.3
> /usr/man/man3/ipsec_optionsfrom.3
> /usr/man/man3/ipsec_subnetof.3
> /usr/man/man3/ipsec_hostof.3
> /usr/man/man3/ipsec_broadcastof.3
> /usr/man/man5/ipsec.secrets.5
> /usr/man/man5/ipsec.conf.5
> /usr/man/man8/ipsec_spi.8
> /usr/man/man8/ipsec.8
> /usr/man/man8/ipsec_eroute.8
> /usr/man/man8/ipsec_spigrp.8
> /usr/man/man8/ipsec_tncfg.8
> /usr/man/man8/ipsec_klipsdebug.8
> /usr/man/man8/ipsec_pluto.8
> /usr/man/man8/ipsec_whack.8
> /usr/man/man8/ipsec_barf.8
> /usr/man/man8/ipsec_look.8
> /usr/man/man8/ipsec_manual.8
> /usr/man/man8/ipsec_auto.8
> /usr/man/man8/ipsec_setup.8
> /usr/man/man8/ipsec_ranbits.8
> /usr/man/man8/ipsec_rsasigkey.8
> /usr/sbin/ipsec
Найди своих коллег! |