Đi tới 2FA (Xác thực hai yếu tố cho ASA SSL VPN)

Nhu cầu cung cấp quyền truy cập từ xa vào môi trường công ty ngày càng xuất hiện thường xuyên hơn, bất kể người dùng hay đối tác của bạn cần quyền truy cập vào một máy chủ cụ thể trong tổ chức của bạn.

Vì những mục đích này, hầu hết các công ty đều sử dụng công nghệ VPN, công nghệ này đã được chứng minh là một phương pháp được bảo vệ đáng tin cậy trong việc cung cấp quyền truy cập vào các tài nguyên cục bộ của tổ chức.

Công ty của tôi cũng không ngoại lệ, và chúng tôi cũng như nhiều công ty khác, sử dụng công nghệ này. Và, giống như nhiều người khác, chúng tôi sử dụng Cisco ASA 55xx làm cổng truy cập từ xa.

Khi số lượng người dùng từ xa tăng lên, cần phải đơn giản hóa thủ tục cấp thông tin xác thực. Nhưng đồng thời, điều này phải được thực hiện mà không ảnh hưởng đến sự an toàn.

Đối với bản thân, chúng tôi đã tìm ra giải pháp sử dụng xác thực hai yếu tố để kết nối qua Cisco SSL VPN, sử dụng mật khẩu một lần. Và ấn phẩm này sẽ cho bạn biết cách tổ chức một giải pháp như vậy với thời gian tối thiểu và chi phí bằng XNUMX cho phần mềm cần thiết (miễn là bạn đã có Cisco ASA trong cơ sở hạ tầng của mình).

Thị trường có đầy đủ các giải pháp đóng hộp để tạo mật khẩu một lần, đồng thời cung cấp nhiều tùy chọn để lấy chúng, có thể gửi mật khẩu qua SMS hoặc sử dụng mã thông báo, cả phần cứng và phần mềm (ví dụ: trên điện thoại di động). Nhưng mong muốn tiết kiệm tiền và mong muốn tiết kiệm tiền cho chủ nhân của mình, trong cuộc khủng hoảng hiện nay, đã buộc tôi phải tìm cách miễn phí để triển khai dịch vụ tạo mật khẩu một lần. Mặc dù miễn phí nhưng không thua kém nhiều so với các giải pháp thương mại (ở đây chúng ta nên đặt trước, lưu ý rằng sản phẩm này cũng có phiên bản thương mại, nhưng chúng tôi đã đồng ý rằng chi phí của chúng tôi, tính bằng tiền, sẽ bằng XNUMX).

Vì vậy, chúng tôi sẽ cần:

- Một image Linux có bộ công cụ tích hợp sẵn - multiOTP, FreeRADIUS và nginx, để truy cập máy chủ qua web (http://download.multiotp.net/ - Tôi đã sử dụng image tạo sẵn cho VMware)
- Máy chủ thư mục hoạt động
— Bản thân Cisco ASA (để thuận tiện, tôi sử dụng ASDM)
— Bất kỳ mã thông báo phần mềm nào hỗ trợ cơ chế TOTP (ví dụ: tôi sử dụng Google Authenticator, nhưng FreeOTP tương tự sẽ làm được)

Tôi sẽ không đi vào chi tiết về cách hình ảnh mở ra. Kết quả là bạn sẽ nhận được Debian Linux với multiOTP và FreeRADIUS đã được cài đặt sẵn, được định cấu hình để hoạt động cùng nhau và giao diện web để quản trị OTP.

Bước 1. Chúng tôi khởi tạo hệ thống và định cấu hình nó cho mạng của bạn
Theo mặc định, hệ thống đi kèm với thông tin xác thực gốc. Tôi nghĩ mọi người đều đoán rằng nên thay đổi mật khẩu người dùng root sau lần đăng nhập đầu tiên. Bạn cũng cần thay đổi cài đặt mạng (mặc định là “192.168.1.44” với cổng “192.168.1.1”). Sau đó bạn có thể khởi động lại hệ thống.

Hãy tạo người dùng trong Active Directory otp, với mật khẩu Mật khẩu của tôi.

Bước 2. Thiết lập kết nối và nhập người dùng Active Directory
Để làm điều này, chúng ta cần truy cập vào bảng điều khiển và trực tiếp vào tệp multiotp.php, bằng cách sử dụng chúng tôi sẽ định cấu hình cài đặt kết nối với Active Directory.

Chuyển đến thư mục /usr/local/bin/multiotp/ và thực hiện lần lượt các lệnh sau:

./multiotp.php -config default-request-prefix-pin=0

Xác định xem có cần thêm mã pin (vĩnh viễn) hay không khi nhập mã pin một lần (0 hoặc 1)

./multiotp.php -config default-request-ldap-pwd=0

Xác định xem có cần mật khẩu tên miền khi nhập mã pin một lần hay không (0 hoặc 1)

./multiotp.php -config ldap-server-type=1

Loại máy chủ LDAP được chỉ định (0 = máy chủ LDAP thông thường, trong trường hợp của chúng tôi là 1 = Active Directory)

./multiotp.php -config ldap-cn-identifier="sAMAccountName"

Chỉ định định dạng để hiển thị tên người dùng (giá trị này sẽ chỉ hiển thị tên, không có tên miền)

./multiotp.php -config ldap-group-cn-identifier="sAMAccountName"

Điều tương tự, chỉ dành cho một nhóm

./multiotp.php -config ldap-group-attribute="memberOf"

Chỉ định một phương pháp để xác định xem người dùng có thuộc một nhóm hay không

./multiotp.php -config ldap-ssl=1

Tôi có nên sử dụng kết nối an toàn tới máy chủ LDAP không (tất nhiên - có!)

./multiotp.php -config ldap-port=636

Cổng kết nối với máy chủ LDAP

./multiotp.php -config ldap-domain-controllers=adSRV.domain.local

Địa chỉ máy chủ Active Directory của bạn

./multiotp.php -config ldap-base-dn="CN=Users,DC=domain,DC=local"

Chúng tôi chỉ ra nơi bắt đầu tìm kiếm người dùng trong miền

./multiotp.php -config ldap-bind-dn="[email protected]"

Chỉ định người dùng có quyền tìm kiếm trong Active Directory

./multiotp.php -config ldap-server-password="MySuperPassword"

Chỉ định mật khẩu người dùng để kết nối với Active Directory

./multiotp.php -config ldap-network-timeout=10

Đặt thời gian chờ kết nối với Active Directory

./multiotp.php -config ldap-time-limit=30

Chúng tôi đặt giới hạn thời gian cho hoạt động nhập người dùng

./multiotp.php -config ldap-activated=1

Kích hoạt cấu hình kết nối Active Directory

./multiotp.php -debug -display-log -ldap-users-sync

Chúng tôi nhập người dùng từ Active Directory

Bước 3. Tạo mã QR cho mã thông báo
Mọi thứ ở đây cực kỳ đơn giản. Mở giao diện web của máy chủ OTP trên trình duyệt, đăng nhập (đừng quên thay đổi mật khẩu mặc định cho quản trị viên!), và nhấp vào nút “In”:

Đi tới 2FA (Xác thực hai yếu tố cho ASA SSL VPN)
Kết quả của hành động này sẽ là một trang chứa hai mã QR. Chúng tôi mạnh dạn bỏ qua mã đầu tiên trong số chúng (mặc dù có dòng chữ hấp dẫn Google Authenticator / Authenticator / 2 Steps Authenticator) và một lần nữa, chúng tôi mạnh dạn quét mã thứ hai thành mã thông báo phần mềm trên điện thoại:

Đi tới 2FA (Xác thực hai yếu tố cho ASA SSL VPN)
(vâng, tôi cố tình làm hỏng mã QR để không thể đọc được).

Sau khi hoàn thành các hành động này, mật khẩu gồm sáu chữ số sẽ bắt đầu được tạo trong ứng dụng của bạn sau mỗi ba mươi giây.

Để chắc chắn, bạn có thể kiểm tra trong cùng giao diện:

Đi tới 2FA (Xác thực hai yếu tố cho ASA SSL VPN)
Bằng cách nhập tên người dùng và mật khẩu một lần từ ứng dụng trên điện thoại của bạn. Bạn có nhận được phản hồi tích cực không? Vì vậy, chúng tôi tiếp tục.

Bước 4. Cấu hình bổ sung và kiểm tra hoạt động FreeRADIUS
Như tôi đã đề cập ở trên, multiOTP đã được cấu hình để hoạt động với FreeRADIUS, tất cả những gì còn lại là chạy thử nghiệm và thêm thông tin về cổng VPN của chúng tôi vào tệp cấu hình FreeRADIUS.

Chúng tôi quay trở lại bảng điều khiển máy chủ, vào thư mục /usr/local/bin/multiotp/, đi vào:

./multiotp.php -config debug=1
./multiotp.php -config display-log=1

Bao gồm ghi nhật ký chi tiết hơn.

Trong tệp cấu hình máy khách FreeRADIUS (/etc/freeradius/clinets.conf) nhận xét tất cả các dòng liên quan đến localhost và thêm hai mục:

client localhost {
        ipaddr = 127.0.0.1
        secret          = testing321
        require_message_authenticator = no
}

- cho thử nghiệm

client 192.168.1.254/32 {
        shortname =     CiscoASA
        secret =        ConnectToRADIUSSecret
}

— cho cổng VPN của chúng tôi.

Khởi động lại FreeRADIUS và thử đăng nhập:

radtest username 100110 localhost 1812 testing321

đâu tên truy nhập = tên người dùng, 100110 = mật khẩu do ứng dụng trên điện thoại cung cấp cho chúng tôi, localhost = Địa chỉ máy chủ RADIUS, 1812 - Cổng máy chủ RADIUS, testing321 — Mật khẩu máy khách máy chủ RADIUS (mà chúng tôi đã chỉ định trong cấu hình).

Kết quả của lệnh này sẽ được xuất ra xấp xỉ như sau:

Sending Access-Request of id 44 to 127.0.0.1 port 1812
        User-Name = "username"
        User-Password = "100110"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 1812
        Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=44, length=20

Bây giờ chúng ta cần đảm bảo rằng người dùng đã được xác thực thành công. Để làm điều này, chúng ta sẽ xem xét nhật ký của multiotp:

tail /var/log/multiotp/multiotp.log

Và nếu mục cuối cùng có:

2016-09-01 08:58:17     notice  username  User    OK: User username successfully logged in from 127.0.0.1
2016-09-01 08:58:17     debug           Debug   Debug: 0 OK: Token accepted from 127.0.0.1

Sau đó mọi thứ diễn ra tốt đẹp và chúng tôi có thể hoàn thành

Bước 5: Định cấu hình Cisco ASA
Hãy đồng ý rằng chúng ta đã có một nhóm và chính sách được định cấu hình để truy cập qua SLL VPN, được định cấu hình cùng với Active Directory và chúng ta cần thêm xác thực hai yếu tố cho cấu hình này.

1. Thêm nhóm máy chủ AAA mới:

Đi tới 2FA (Xác thực hai yếu tố cho ASA SSL VPN)
2. Thêm máy chủ multiOTP của chúng tôi vào nhóm:

Đi tới 2FA (Xác thực hai yếu tố cho ASA SSL VPN)
3. Chúng tôi chỉnh sửa hồ sơ kết nối, đặt nhóm máy chủ Active Directory làm máy chủ xác thực chính:

Đi tới 2FA (Xác thực hai yếu tố cho ASA SSL VPN)
4. Trong tab Nâng cao -> Xác thực Chúng ta cũng chọn nhóm máy chủ Active Directory:

Đi tới 2FA (Xác thực hai yếu tố cho ASA SSL VPN)
5. Trong tab Nâng cao -> Trung học xác thực, hãy chọn nhóm máy chủ đã tạo trong đó máy chủ multiOTP được đăng ký. Lưu ý rằng tên người dùng Phiên được kế thừa từ nhóm máy chủ AAA chính:

Đi tới 2FA (Xác thực hai yếu tố cho ASA SSL VPN)
Áp dụng các cài đặt và

Bước 6, hay còn gọi là bước cuối cùng
Hãy kiểm tra xem xác thực hai yếu tố có hoạt động với SLL VPN hay không:

Đi tới 2FA (Xác thực hai yếu tố cho ASA SSL VPN)
Thì đấy! Khi kết nối qua Máy khách Cisco AnyConnect VPN, bạn cũng sẽ được yêu cầu nhập mật khẩu thứ hai, một lần.

Tôi hy vọng rằng bài viết này sẽ giúp được ai đó và nó sẽ giúp ai đó suy nghĩ về cách sử dụng nó, miễn phí Máy chủ OTP, cho các nhiệm vụ khác. Chia sẻ trong các ý kiến ​​​​nếu bạn muốn.

Nguồn: www.habr.com

Thêm một lời nhận xét