Điểm:0

sử dụng Strongswan với pkcs11 và ybikey

lá cờ us

Tôi đang cố gắng triển khai cấu hình VPN mới trong doanh nghiệp của mình.

Tôi đã thiết lập thành công kết nối giữa máy tính của mình và máy chủ vpn ipsec ở chế độ chứng chỉ.

Tôi đã tải lên tệp p12 trong ybikey chứa khóa riêng của tôi, khóa pub của máy chủ và CA.

$ pkcs11-tool --test --login

Sử dụng vị trí 0 với mã thông báo hiện tại (0x0)
Đăng nhập vào "uid=r.beal,dc=ldap-...".
Vui lòng nhập mã PIN người dùng: 
C_SeedRandom() và C_GenerateRandom():
  gieo hạt (C_SeedRandom) không được hỗ trợ
  Dường như ok
tiêu hóa:
  tất cả 4 chức năng tiêu hóa dường như hoạt động
  MĐ5: Được
  SHA-1: Được rồi
  RIPEMD160: Được rồi
Chữ ký (hiện chỉ dành cho RSA)
  khóa kiểm tra 0 (khóa PIV AUTH) 
  tất cả 4 chức năng chữ ký dường như hoạt động
  kiểm tra cơ chế chữ ký:
    RSA-X-509: Được
    RSA-PKCS: OK
    SHA1-RSA-PKCS: Được
    MD5-RSA-PKCS: Được
    RIPEMD160-RSA-PKCS: OK
    SHA256-RSA-PKCS: OK
Xác minh (hiện chỉ dành cho RSA)
  khóa kiểm tra 0 (khóa PIV AUTH)
    RSA-X-509: Được
    RSA-PKCS: OK
    SHA1-RSA-PKCS: Được
    MD5-RSA-PKCS: Được
    RIPEMD160-RSA-PKCS: OK
Giải mã (hiện chỉ dành cho RSA)
  khóa kiểm tra 0 (khóa PIV AUTH)
    RSA-X-509: Được
    RSA-PKCS: OK
Không có lỗi

Tôi đã thêm phần này vào tập tin swanctl.conf:

bí mật {
    tokenyubikey {
        ghim = 123456
        khe = 0
        handle = 1 # Theo những gì tôi hiểu, crt của tôi ở đây
        mô-đun = yubi-mô-đun
    }
}

Và phần này trong file /etc/strongswan.d/charon/pkcs11.conf:

mô-đun yubi {
    #path = /usr/lib/libykcs11.so
    đường dẫn = /usr/lib/pkcs11/opensc-pkcs11.so
}

Khi tôi sử dụng mô-đun ybikey pkcs11:

00[CFG] mô-đun PKCS11 '<name>' thiếu đường dẫn thư viện
00[CFG] đã tải thư viện PKCS#11 v2.40 'yubi-module' (/usr/lib/libykcs11.so)
00[CFG] Yubico (www.yubico.com): Thư viện PKCS#11 PIV (SP-800-73) v2.21
00[CFG] đã tìm thấy mã thông báo trong vị trí 'yubi-module':0 (Yubico YubiKey OTP+FIDO+CCID 00 00)
00[CFG] YubiKey PIV #16616360 (Yubico (www.yubico.com): YubiKey YK5)
00[CFG] đã tải chứng chỉ không đáng tin cậy 'Chứng chỉ X.509 cho Xác thực PIV'
00[CFG] đã tải chứng chỉ không đáng tin cậy 'Chứng chỉ X.509 cho Chứng thực PIV'

Và khi sử dụng mô-đun là opensc :

00[CFG] mô-đun PKCS11 '<name>' thiếu đường dẫn thư viện
00[CFG] đã tải thư viện PKCS#11 v2.20 'yubi-module' (/usr/lib/pkcs11/opensc-pkcs11.so)
00[CFG] Dự án OpenSC: Khung thẻ thông minh OpenSC v0.22
00[CFG] đã tìm thấy mã thông báo trong vị trí 'yubi-module':0 (Yubico YubiKey OTP+FIDO+CCID 00 00)
00[CFG] uid=r.beal,dc=ldap-.. (piv_II: PKCS#15 mô phỏng)
00[CFG] đã tải chứng chỉ không đáng tin cậy 'Chứng chỉ xác thực PIV'

Tôi nên sử dụng mô-đun nào?

Khi tôi chạy daemon ipsec

# khởi động lại ipsec --nofork
Khởi động StrongSwan 5.9.3 IPsec [khởi động]...
00[DMN] Khởi động IKE charon daemon (strongSwan 5.9.3, Linux 5.14.15-arch1-1, x86_64)
00[CFG] mô-đun PKCS11 '<name>' thiếu đường dẫn thư viện
00[CFG] đã tải thư viện PKCS#11 v2.20 'yubi-module' (/usr/lib/pkcs11/opensc-pkcs11.so)
00[CFG] Dự án OpenSC: Khung thẻ thông minh OpenSC v0.22
00[CFG] đã tìm thấy mã thông báo trong vị trí 'yubi-module':0 (Yubico YubiKey OTP+FIDO+CCID 00 00)
00[CFG] uid=r.beal,dc=ldap-.. (piv_II: PKCS#15 mô phỏng)
00[CFG] đã tải chứng chỉ không đáng tin cậy 'Chứng chỉ xác thực PIV'
00[CFG] plugin attr-sql: URI cơ sở dữ liệu chưa được đặt
00[NET] sử dụng giao diện dự báo wlan0
00[CFG] tham gia các nhóm phát đa hướng dự báo: 224.0.0.1,224.0.0.22,224.0.0.251,224.0.0.252,239.255.255.250
00[CFG] đang tải chứng chỉ ca từ '/etc/ipsec.d/cacerts'
00[CFG] đã tải chứng chỉ ca "C=FR, ST=Idf, L=City, O=company, OU=company, CN=company, [email protected]" từ '/etc/ipsec.d/cacerts /ca.pem'
00[CFG] đang tải chứng chỉ aa từ '/etc/ipsec.d/aacerts'
00[CFG] đang tải chứng chỉ người ký ocsp từ '/etc/ipsec.d/ocspcerts'
00[CFG] đang tải chứng chỉ thuộc tính từ '/etc/ipsec.d/acerts'
00[CFG] đang tải crl từ '/etc/ipsec.d/crls'
00[CFG] tải bí mật từ '/etc/ipsec.secrets'
00[CFG] plugin sql: URI cơ sở dữ liệu chưa được đặt
00[CFG] mở tệp bộ ba /etc/ipsec.d/triplets.dat không thành công: Không có tệp hoặc thư mục như vậy
00[CFG] đã tải 0 cấu hình máy chủ RADIUS
00[CFG] Cấu hình HA bỏ lỡ địa chỉ cục bộ/từ xa
00[CFG] không có tập lệnh nào cho tập lệnh ext-auth được xác định, đã tắt
00[LIB] plugin đã tải: charon ldap pkcs11 aesni aes des rc2 sha2 sha3 sha1 md5 mgf1 nonce ngẫu nhiên x509 ràng buộc thu hồi pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf Bliss gmp Curve25519 agent chapoly xcbc cmac hmac ntru drbg mysql new sqlite attr kernel-netlink giải quyết socket-default bypass-lan connmark dự báo farp stroke vici updown eap-identity eap-sim eap-aka eap-aka-3gpp2 eap-simaka-pseudonym eap-simaka-reauth eap-md5 eap-gtc eap- mschapv2 eap-dynamic eap-radius eap-tls eap-ttls eap-peap xauth-generic xauth-eap xauth-pam xauth-noauth bộ đếm thống nhất dhcp radattr
00[LIB] giảm khả năng, chạy dưới dạng uid 0, gid 0
00[JOB] sinh ra 16 worker thread
06[IKE] đã cài đặt chính sách bỏ qua cho 172.17.0.0/16
06[IKE] đã cài đặt chính sách bỏ qua cho 192.168.1.0/24
06[IKE] đã cài đặt chính sách bỏ qua cho ::1/128
06[IKE] đã cài đặt chính sách bỏ qua cho fe80::/64
02[CFG] đã tìm thấy mã thông báo trong vị trí 'yubi-module':0 (Yubico YubiKey OTP+FIDO+CCID 00 00)
02[CFG] uid=r.beal,dc=ldap-.. (piv_II: PKCS#15 mô phỏng)
02[CFG] đã tải chứng chỉ không đáng tin cậy 'Chứng chỉ xác thực PIV'
charon (10359) bắt đầu sau 120 ms
11[CFG] nhận đột quỵ: thêm kết nối 'kiểm tra'
11[CFG] đã tải chứng chỉ "C=FR, ST=Idf, L=City, O=company, OU=company, CN=uid=r.beal,dc=ldap,dc=company,dc=fr, E=r [email protected]" từ '/etc/swanctl/x509/r.beal.pem'
11[CFG] id 'UID=r.beal, DC=ldap, DC=company, DC=fr' không được chứng nhận xác nhận, mặc định là 'C=FR, ST=Idf, L=City, O=company, OU= công ty, CN=uid=r.beal,dc=ldap,dc=company,dc=fr, [email protected]'
11[CFG] đã thêm cấu hình 'thử nghiệm'

Thẻ thông minh đã có mặt!

Bây giờ tôi đang cố gắng kết nối với VPN (/etc/ipsec.conf):

kiểm tra kết nối
     right=1.2.3.4 <= ip công khai của máy chủ vpn của tôi
     rightid=remote_id_of_the_server
     leftcert=/etc/swanctl/x509/r.beal.pem
     leftid=my_mail
     left=%defaultroute
     #leftcert=%thẻ thông minh
     auto=thêm

Tôi đặt CA vào /etc/ipsec.d/cacerts/

nhật ký ipsec:

01[CFG] nhận đột quỵ: bắt đầu 'kiểm tra'
09[IKE] bắt đầu thử nghiệm IKE_SA[1] lên 1.2.3.4
09[ENC] tạo yêu cầu IKE_SA_INIT 0 [ SA KE Không N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) N(REDIR_SUP) ]
09[NET] gửi gói: từ 192.168.1.199[500] đến 1.2.3.4[500] (1000 byte)
10[NET] gói đã nhận: từ 1.2.3.4[500] đến 192.168.1.199[500] (38 byte)
10[ENC] đã phân tích phản hồi IKE_SA_INIT 0 [ N(INVAL_KE) ]
10[IKE] ngang hàng không chấp nhận nhóm DH ECP_256, nó đã yêu cầu MODP_2048
10[IKE] bắt đầu thử nghiệm IKE_SA[1] đến 1.2.3.4
10[ENC] tạo yêu cầu IKE_SA_INIT 0 [ SA KE Không N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) N(REDIR_SUP) ]
10[NET] gửi gói: từ 192.168.1.199[500] đến 1.2.3.4[500] (1192 byte)
06[NET] gói đã nhận: từ 1.2.3.4[500] đến 192.168.1.199[500] (481 byte)
06[ENC] đã phân tích cú pháp phản hồi IKE_SA_INIT 0 [ SA KE Không N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(HASH_ALG) N(CHDLESS_SUP) ]
06[CFG] đề xuất đã chọn: IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048
06[IKE] máy chủ cục bộ đứng sau NAT, đang gửi các bản cập nhật liên tục
06[IKE] máy chủ từ xa đứng sau NAT
06[IKE] đã nhận được yêu cầu chứng chỉ cho "C=FR, ST=Idf, L=City, O=company, OU=company, CN=company, [email protected]"
06[IKE] gửi yêu cầu chứng chỉ cho "C=FR, ST=Idf, L=City, O=company, OU=company, CN=company, [email protected]"
06[IKE] không tìm thấy khóa riêng cho 'C=FR, ST=Idf, L=City, O=company, OU=company, CN=uid=r.beal,dc=ldap,dc=company,dc=fr, [email protected]'

Có một sự khởi đầu của kết nối! Tôi nên làm gì để ipsec sử dụng khóa riêng bên trong thẻ thông minh của mình?

Tôi thấy bài này: "NO_PROPOSAL_CHOSEN" khi cố gắng xác thực bằng chứng chỉ từ thẻ thông minh bằng Swanctl Tôi có cùng một vấn đề không? Tôi đã cố sao chép tất cả các chứng chỉ trong thư mục x509 nhưng tôi cũng gặp lỗi tương tự 'không tìm thấy khóa riêng'.

CHỈNH SỬA ===

Bây giờ khi tôi gọi "swanctl --load-creds" ipsec sẽ tìm khóa riêng và sử dụng nó!

Nhưng bây giờ tôi có một vấn đề mạng.

16[IKE] xác thực 'compagny.com' với RSA_EMSA_PKCS1_SHA2_256 thành công
16[IKE] Thử nghiệm IKE_SA[1] được thiết lập từ 192.168.1.199[[email protected]]...1.2.3.4[compagny.com]
16[IKE] lên lịch xác thực lại trong 10059s
16[IKE] vòng đời IKE_SA tối đa 10599 giây
16[CFG] xử lý thuộc tính UNITY_SPLITDNS_NAME không thành công
16[CFG] xử lý thuộc tính INTERNAL_IP4_NETMASK không thành công
16[IKE] cài đặt máy chủ DNS 172.22.0.17 vào /etc/resolv.conf
16[IKE] cài IP ảo mới 10.66.0.5
16[IKE] đã nhận được thông báo TS_UNACCCEPTABLE, không có CHILD_SA nào được tạo
16[IKE] không thiết lập được CHILD_SA, giữ nguyên IKE_SA
16[IKE] đã nhận được AUTH_LIFETIME sau 20278 giây, quá trình xác thực lại đã được lên lịch sau 10059 giây

Tôi đã thêm vào tệp conf của mình:

leftsourceip=%config

Máy chủ VPN của tôi được định cấu hình để không định tuyến lưu lượng truy cập internet của máy khách. Vì vậy, tôi nghĩ rằng đó là một vấn đề cấu hình mạng bây giờ.

lá cờ cn
Tại sao bạn cấu hình bí mật trong swanctl.conf nhưng kết nối trong ipsec.conf? (Không trực tiếp gây ra sự cố, nhưng vẫn còn lạ.) Định cấu hình khóa riêng là chưa đủ, bạn cũng cần có chứng chỉ/khóa chung khớp với danh tính cục bộ đã định cấu hình. Có một chứng chỉ được tải từ mã thông báo, nhưng chứng chỉ đó dường như không đáng tin cậy (như PKCS#11 đã báo cáo). Nếu bạn không thể thay đổi điều đó, bạn có thể thử tải chứng chỉ trong kết nối một cách rõ ràng.
rBeal avatar
lá cờ us
Tôi đã chỉnh sửa bài đăng của mình. Kết nối có thể hoạt động nếu chứng chỉ không đáng tin cậy không? Tôi không thể tìm thấy lý do tại sao nó không được tin cậy. Tất cả các chứng chỉ được tạo từ tường lửa của Stormshield. Vì vậy, tôi cho rằng họ ổn.
lá cờ cn
Bạn có thể đã tham chiếu chứng chỉ trên mã thông báo thay vì tải nó từ một tệp (sử dụng cú pháp `%smartcard`). Và tôi thực sự có thể đã sai ở trên. Việc bạn định cấu hình khóa trong swanctl.conf thay vì ipsec.secrets thực sự có thể là một yếu tố bổ sung gây ra điều này vì tôi không thấy khóa thực sự được tải (điều này không xảy ra nếu `swanctl --load-creds` hoặc ` --load-all` không bao giờ được gọi (điều này sẽ không xảy ra nếu bạn chỉ sử dụng `ipsec (re)start`). Vì vậy, hãy thử định cấu hình nó trong [ipsec.secrets](https://wiki.strongswan.org/ dự án/strongswan/wiki/PINsecret).
rBeal avatar
lá cờ us
Cảm ơn !! Bây giờ tôi có một vấn đề mới, tôi đã chỉnh sửa bài đăng của mình.
rBeal avatar
lá cờ us
Tôi đồng ý để có một cấu hình sạch. Tôi đang làm việc để có một cái sạch sẽ. Làm cách nào tôi có thể tìm thấy keyid cho tệp ipsec.secrets?
lá cờ cn
Đó là `CKA_ID` cho khóa trên mã thông báo (tương ứng với _handle_ trong swanctl.conf). Việc máy chủ trả về lỗi `TS_UNACCCEPTABLE` có thể là do bạn chưa định cấu hình `rightsubnet`. Định cấu hình (các) mạng con bạn muốn tiếp cận, sử dụng `0.0.0.0/0` để tạo đường hầm cho mọi thứ hoặc để bộ phản hồi thu hẹp nó xuống những gì nó đã định cấu hình. Nếu có thể, hãy kiểm tra nhật ký trên máy chủ để biết lý do nó trả về lỗi đó.
Điểm:0
lá cờ us

Giải pháp là đặt rightsubnet thành 0.0.0.0/0

Cảm ơn ecdsa!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.