OpenSWAN + Checkpoint

From wiki.habital.lv
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Создание соединения с файерволом "CheckPoint" с помощью OpenSWAN.

Для создания соединения понадобятся публичные ключи клиента и сервера.

  • С помощью "CheckPoint Management Center" создаём клиента и публичный ключ для него (напр. freeswan.p12).
  • Также необходимо получить сертификат сервера и внутренний ca-сертификат.

Получить сертификат сервера:

# fwm exportcert -obj checkpoint -cert defaultCert -pem -withroot -file checkpoint-cert.pkcs7

При этом будут получены предупреждения об ошибках:

Unable to open '/dev/fw0': No such file or directory
Failed to get interface list: No such file or directory
cp_fw_stat: cannot get interface list: No such file or directory
cp_get_active_policy_name: Failed to get Security Policy information

Игнорируем их. И преобразуем PKCS#7 сертификат в формат X.509:

# openssl pkcs7 -in checkpoint-cert.pkcs7 -print_certs >temp.pem

Расщепляем полученный файл на две части: checkpoint-internal-ca.pem (CA сертификат как правило первый в файле) и checkpoint-cert.pem (firewall сертификат второй в файле). Заголовки файлов выглядят примерно так:

Заголовок CA сертификата:

subject=/O=checkpoint.intranet.example.com..p9bkhs
issuer= /O=checkpoint.intranet.example.com..p9bkhs

Заголовок firewall сертификата:

subject=/O=checkpoint.intranet.example.com..p9bkhs/CN=rhl7 VPN Certificate
issuer= /O=checkpoint.intranet.example.com..p9bkhs

CA-сертификат можно получить через порт 18264 "CheckPoint Gateway". Напр.:

wget http://<checkpoint gw address>:18264/internal_ca.cer

После этого преобразуем полученный файл из DER-формата в PEM-формат:

# openssl x509 -inform DER -outform PEM -in internal_ca.cer -out internal_cap.pem

Копируем checkpoint-internal-ca.pem в /etc/ipsec.d/cacerts/ и checkpoint-cert.pem в /etc/ipsec.d/certs/.

  • Получим DER crl-файл:
# wget http://<checkpoint gw address>:18264/ICA_CRL1.crl

преобразуем в PEM и сохраним его в /etc/ipsec.d/crls/checkpoint.crl

# openssl crl -in ICA_CRL1.crl -inform DER -outform PEM -out /etc/ipsec.d/crls/checkpoint.crl
  • Из файла freeswan.p12 выделим сертификат пользователя freeswan-cert.pem и ключ freeswan-key.pem:
# openssl pkcs12 -in freeswan.p12 -nocerts -out /etc/ipsec.d/private/freeswan-key.pem
# openssl pkcs12 -in freeswan.p12 -nokeys -out temp2.pem

Файл temp2.pem содержит в себе два сертификата - сheckpoint-internal-ca.pem и freeswan-cert.pem. Соответственно перый и второй. Расщепляем файл на две части и копируем freeswan-cert.pem в /etc/ipsec.d/certs/. Заголовки файлов выглядят примерно так: Заголовок CA сертификата:

subject=/O=checkpoint.intranet.example.com..p9bkhs
issuer= /O=checkpoint.intranet.example.com..p9bkhs

Заголовок сертификата пользователя:

subject=/O=checkpoint.intranet.example.com..p9bkhs/OU=users/CN=freeswan
issuer=/O=checkpoint.intranet.example.com..p9bkhs

Создаём файл /etc/ipsec.conf:


   ## RoadWarrior to Gateway: FreeS/WAN X.509 <-> Check Point
   conn freeswan-checkpoint-x509
           # Right side is FreeS/WAN RoadWarrior
           right=%defaultroute
           rightrsasigkey=%cert
           rightid="/O=checkpoint.lab.aerasec.de..ab12cd/OU=users/CN=freeswan"
           rightcert=freeswan-cert.pem # As an alternative, the file itself can be specified
           # Left side is Check Point
           left=1.2.3.4                # CheckPoint Gateway address
           leftcert=checkpoint-cert.pem
           leftrsasigkey=%cert
           #leftrsasigkey=0x0103......  # only needed for old FreeS/WAN
           leftid=1.2.3.4               # Check Point VPN-1 send IP address as ID
           #leftid=                     # leave unset for old FreeS/WAN
           # config
           type=tunnel
           keyingtries=0
           disablearrivalcheck=no
           authby=rsasig
           auth=esp
           keyexchange=ike
           auto=start

   ## RoadWarrior to Net behind Gateway: FreeS/WAN X.509 <-> Check Point - Net
   conn freeswan-checkpoint-x509-net
           # Right side is FreeS/WAN RoadWarrior
           rightrsasigkey=%cert
           right=%defaultroute
           rightid="/O=checkpoint.lab.aerasec.de..ab12cd/OU=users/CN=freeswan"
           rightcert=freeswan-cert.pem # As an alternative, the file itself can be specified
           # Left side is Check Point
           left=1.2.3.4                # CheckPoint Gateway address
           leftsubnet=172.16.1.0/24    # Internal subnet address
           leftcert=checkpoint-cert.pem
           leftrsasigkey=%cert
           #leftrsasigkey=0x0103......  # only needed for old FreeS/WAN
           leftid=1.2.3.4               # Check Point VPN-1 send IP address as ID
           #leftid=                     # leave unset for old FreeS/WAN
           # config
           type=tunnel
           keyingtries=0
           disablearrivalcheck=no
           authby=rsasig
           auth=esp
           keyexchange=ike
           auto=start

В файле /etc/ipsec.conf rightid можно получить так:

 # openssl x509 -in freeswan-cert.pem -noout -subject

Создаём файл /etc/ipsec.secrets:

# Define RSA key
: RSA /etc/ipsec.d/private/freeswan-key.pem "key passphrase here"