OpenSWAN + Checkpoint

From wiki.habital.lv
Jump to navigation Jump to search

Создание соединения с файерволом "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"