Настройка тайного секретного ключа RSA
Напомним, что сейчас FreeSWAN имеет два типа секретов: предварительно разделенные секреты и приватные ключи RSA. Предварительно разделенные секреты, которые настраиваются в наших файлах “ipsec.conf” и “ipsec.secrets”, мы рассмотрели выше. Некоторые люди предпочитают использовать приватные ключи RSA для аутентификации других хостов через Pluto демон. Если вы находитесь в этой ситуации, то надо будет сделать некоторые изменения в файлах “ipsec.conf” и “ipsec.secrets”, как описано ниже:
Вам нужно создать независимый RSA ключ для каждого шлюза. Каждый из них хранит этот ключ в своем файле “ipsec.secrets”, а публичный ключ перемещается в параметры “leftrsasigkey” и “rightrsasigkey” секции conn файла “ipsec.conf”, который одинаков для обоих шлюзах.
Шаг 1
Создайте независимый ключ RSA для каждого из шлюзов.
На первом шлюзе (например, deep) используйте команду:
[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...
На втором шлюзе (например, mail) используйте команду:
[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...
Утилита rsasigkey создает пару RSA ключей (публичный и приватный) из 1024- bit сигнатуры, и помещает их в файл 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 на обоих шлюзах:
# образец соединения 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
authby=rsasig
Этот параметр определяет как два шлюза безопасности должны устанавливать подлинность друг друга. Значение по умолчанию этого параметра - shared secrets. Мы должны определить rsasig для RSA, так как мы решили использовать цифровые подписи RSA.
leftrsasigkey=<Public key of deep>
Этот параметр определяет публичный ключ для RSA сигнатуры левого участника. В нашем примере, левый - 208.164.186.1, и представляет deep.openna.com, так что мы должны поместить публичный ключ RSA для deep в этой строке.
rightrsasigkey=<Public key of mail>
Этот параметр определяет публичный ключ для RSA сигнатуры правого участника. В нашем примере, правый - 208.164.186.2, и представляет mail.openna.com, , так что мы должны поместить публичный ключ RSA для mail в этой строке.
Мы можем найти публичный ключ для deep в файле “deep-keys”, а для mail в “mail-keys”. Эти файлы мы получили на первом шаге. Их содержимое выглядит следующим образов:
Ключи RSA для шлюза deep (deep-keys):
[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
Ключи RSA для шлюза mail (mail-keys):
[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
Извлеките и скопируйте публичный RSA ключ для deep и mail в ваши файлы “ipsec.conf”, как это показано ниже. Вы можете определит строки связанные с публичным ключом как начинающиеся с закомментированной строки: “#pubkey=”.
# образец соединения 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
Не забудьте, что в нашем примере, параметр “leftrsasigkey=” содержит публичный ключ для и параметр “rightrsasigkey=” содержит публичный ключ для mail.
Шаг 3
Модифицируйте ваш файл “/etc/ipsec.secrets” для использования приватного ключа RSA на каждом шлюзе.
Редактируйте оригинальный файл ipsec.secrets (vi /etc/ipsec.secrets) и добавьте в него приватный ключ RSA для подтверждения подлинности обоих шлюзов:
Файл “ipsec.secrets” для шлюза deep:
[root@deep /]# vi /etc/ipsec.secrets 208.164.186.1 208.164.186.2 "0x9748cc31_2e99194f_d230589b_cd846b57_dc070b01_74b66f34_19c40a1a_804906ed"
Вы должны изменить ваш оригинальный файл “ipsec.secrets” как это показано ниже на обоих шлюзах. Важно заметить, что приватные ключи не совпадают на deep и mail. Приватный ключ для deep берем из файла “deep-keys”, а приватный ключ для mail из “mail-keys”:
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.secrets” для шлюза mail:
[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 }
Аутентификация с использованием RSA сигнатур требует, чтобы каждый хост имел собственный приватный ключ. Начальная часть ключа может содержать признак, характеризующий тип ключа. “RSA” обозначает приватный ключ RSA и “PSK” (который принят по умолчанию) обозначает PreShared ключ. Так как “PSK” принимается по умолчанию, мы должны задать “RSA”, определяя использования приватного ключа RSA в этом файле (ipsec.secrets). Только суперпользователь “root” должен владеть файлом “ipsec.secrets”, и для всех остальных любой доступ к нему должен быть заблокирован.