Computer >> Máy Tính >  >> Kết nối mạng >> VPN

Cách bạn có thể sử dụng OpenVPN để truy cập an toàn vào các tài nguyên AWS riêng tư

Bài viết này được điều chỉnh từ một phần của khóa học Pluralsight mới của tôi, “Kết nối Tài nguyên tại chỗ với Cơ sở hạ tầng AWS của bạn.”

Đôi khi bạn có cần kết nối với các tài nguyên bạn đang chạy trên Amazon Web Services không? Việc truy cập các phiên bản EC2 công khai của bạn bằng SSH và mã hóa dữ liệu S3 của bạn, đối với tất cả các mục đích và mục đích, đủ an toàn. Nhưng còn việc tham gia phiên bản cơ sở dữ liệu RDS back-end hoặc làm việc với dữ liệu dựa trên AWS không công khai thì sao? Có đủ loại lý do khiến quản trị viên giữ những tài nguyên đó ngoài tầm với của công chúng. Nhưng nếu bạn không thể có được họ khi bạn cần, thì họ có khả năng làm tốt điều gì cho bạn?

Vì vậy, bạn sẽ cần phải tìm một cách an toàn và đáng tin cậy xung quanh ACL và các nhóm bảo mật để bảo vệ nội dung của bạn. Một giải pháp mà tôi đề cập trong khóa học “Kết nối tài nguyên tại chỗ với cơ sở hạ tầng AWS của bạn” trên Pluralsight là Kết nối trực tiếp. Nhưng nếu thẻ giá của Direct Connect là một khoản tiêu tốn ngân sách cho công ty của bạn, thì một số loại đường hầm VPN có thể thực hiện thủ thuật.

Mạng riêng ảo là gì?

Mạng riêng ảo (VPN) thường được sử dụng để cho phép hoạt động mạng bị hạn chế hoặc duyệt ẩn danh. Nhưng đó không phải là nội dung của bài viết này.

VPN là một kết nối điểm-điểm cho phép bạn di chuyển dữ liệu một cách an toàn giữa hai trang web trên một mạng công cộng. Một cách hiệu quả, một đường hầm có thể được thiết kế để kết hợp hai trang web riêng tư cách biệt nhau về mặt địa lý thành một mạng riêng tư duy nhất. Theo ngữ cảnh của chúng tôi, điều đó có nghĩa là kết nối mạng văn phòng cục bộ của bạn với AWS VPC đang lưu trữ các tài nguyên riêng tư của bạn.

Có hai cách để thực hiện việc này:

  • Kết nối VPN được quản lý được xây dựng dựa trên Cổng riêng ảo AWS
  • Sử dụng VPN của riêng bạn.

Bài viết này sẽ tập trung vào phương pháp tự làm.

Máy chủ truy cập OpenVPN

Như tên cho thấy, OpenVPN là một dự án mã nguồn mở và bạn luôn có thể tải xuống phiên bản cộng đồng miễn phí và thiết lập mọi thứ trên máy chủ VPN của riêng mình. Nhưng công ty OpenVPN cũng cung cấp Máy chủ truy cập OpenVPN được xây dựng có mục đích dưới dạng EC2 AMI đi kèm với các công cụ cấu hình tự động và tích hợp thân thiện với AWS.

Từ những gì tôi có thể thấy, khởi chạy AMI trong AWS VPC của bạn và mở nó cho các kết nối từ xa được kiểm soát đã trở thành cách “đúng đắn” để hoàn thành công việc này.

Nó có giá bao nhiêu? Nếu bạn chỉ đang thử nghiệm mọi thứ và không có kế hoạch truy cập VPN bằng nhiều hơn hai kết nối cùng một lúc, thì bản thân AMI là miễn phí. Bạn vẫn phải chịu chi phí thông thường của phiên bản EC2, nhưng nếu tài khoản của bạn vẫn đủ điều kiện cho Bậc miễn phí, thì bạn cũng có thể nhận được miễn phí.

Sau khi bạn đưa VPN vào hoạt động sản xuất, giấy phép bạn mua sẽ phụ thuộc vào số lượng kết nối đồng thời mà bạn cần. Trang này có thông tin chi tiết bạn cần.

Đây là những gì chúng tôi sẽ làm trong hướng dẫn này:

  • Chọn, cung cấp và khởi chạy Ubuntu AMI với Máy chủ truy cập OpenVPN được cài đặt sẵn trong VPC của tôi
  • Truy cập máy chủ bằng SSH và định cấu hình VPN
  • Thiết lập người dùng quản trị
  • Thiết lập một máy cục bộ làm ứng dụng khách OpenVPN và kết nối với một phiên bản riêng tư trong AWS VPC của tôi

Sẵn sàng chưa?

Khởi chạy Máy chủ Truy cập OpenVPN

Từ trang tổng quan EC2 - và đảm bảo rằng chúng tôi đang ở đúng khu vực AWS - khởi chạy một phiên bản để hoạt động như một máy chủ VPN của chúng tôi. Thay vì sử dụng một trong các AMI Bắt đầu Nhanh, tôi sẽ nhấp vào tab AWS Marketplace và tìm kiếm “máy chủ truy cập openvpn”. OpenVPN cung cấp một số hình ảnh chính thức gắn liền với giấy phép cung cấp số lượng khách hàng được kết nối ngày càng tăng.

Tôi sẽ xem xét hình ảnh Ubuntu này hoạt động thông qua một thỏa thuận “Mang theo Giấy phép của riêng bạn”. Như tôi đã viết trước đó, chúng tôi thực sự sẽ không cần giấy phép cho những gì chúng tôi sẽ làm.

Cách bạn có thể sử dụng OpenVPN để truy cập an toàn vào các tài nguyên AWS riêng tư
AMI của Máy chủ truy cập OpenVPN có sẵn từ AWS Marketplace

Việc chọn AMI sẽ mở ra một cửa sổ bật lên cho chúng tôi biết hình ảnh này sẽ khiến chúng tôi tốn bao nhiêu mỗi giờ bằng cách sử dụng các loại phiên bản khác nhau và các lựa chọn lưu trữ EBS. Tuy nhiên, đó chỉ là chi phí cơ sở hạ tầng AWS thông thường và không bao gồm phí cấp phép.

Cách bạn có thể sử dụng OpenVPN để truy cập an toàn vào các tài nguyên AWS riêng tư
Chi phí AMI của Máy chủ truy cập OpenVPN - AWS thanh toán trực tiếp

Khi nói đến loại phiên bản, tôi sẽ hạ cấp xuống t2.micro để giữ nó trong cấp miễn phí. Máy chủ sản xuất bận rộn có thể yêu cầu nhiều năng lượng hơn một chút.

Vì tôi sẽ muốn khởi động phiên bản thứ hai trong cùng một mạng con trong vài phút nữa, tôi sẽ chọn, nói “us-East-1b” từ trang Cấu hình chi tiết phiên bản và ghi chú lại sau.

Cách bạn có thể sử dụng OpenVPN để truy cập an toàn vào các tài nguyên AWS riêng tư
Chọn một mạng con và ghi chú cho sau

Giờ đây, trang Nhóm bảo mật là nơi cài đặt OpenVPN AMI thực sự tỏa sáng. Chúng tôi được giới thiệu với một nhóm bảo mật mở ra mọi thứ chúng tôi cần. Cổng 22 dành cho lưu lượng SSH vào máy chủ, 943 là cổng chúng tôi sẽ sử dụng để truy cập GUI quản trị, 443 là lưu lượng HTTP được mã hóa TLS và OpenVPN sẽ lắng nghe các kết nối máy khách đến trên cổng 1194.

Cách bạn có thể sử dụng OpenVPN để truy cập an toàn vào các tài nguyên AWS riêng tư
Nhóm bảo mật đi kèm với OpenVPN AMI

Lưu ý :Nếu thực tế, thông thường sẽ là một ý tưởng hay nếu bạn thắt chặt các quy tắc đó để chỉ chấp nhận các yêu cầu từ các dải địa chỉ IP hợp lệ của công ty, nhưng điều này sẽ ổn nếu thử nghiệm trong thời gian ngắn.

Từ đây, tôi sẽ xem lại cài đặt của mình, xác nhận rằng tôi đã có khóa mã hóa SSH được liệt kê và kích hoạt.

Sau khi phiên bản được khởi chạy, tôi sẽ được hiển thị thông tin đăng nhập quan trọng - bao gồm thực tế là tài khoản người dùng mà chúng tôi sẽ sử dụng để SSH vào máy chủ được gọi là openvpnas - và hướng dẫn Bắt đầu nhanh. Tôi cũng sẽ nhận được một email chứa các liên kết đến cùng một thông tin.

Quay lại bảng điều khiển phiên bản EC2, trong khi máy mới khởi động xong, chúng tôi sẽ hiển thị địa chỉ IP công khai của mình. Nếu chúng tôi cần khởi động lại phiên bản, không có gì đảm bảo rằng chúng tôi sẽ lấy lại cùng một IP đó, điều này có thể gây ra một số tình huống lộn xộn hợp lý. Vì vậy, bạn nên chỉ định phiên bản là Elastic IP.

Để làm điều đó, tôi sẽ nhấp vào IP đàn hồi, sau đó nhấp vào Phân bổ địa chỉ mới. Ghi lại địa chỉ mới và đóng trang. Bây giờ, khi đã chọn địa chỉ đó, hãy nhấp vào Hành động và “Liên kết địa chỉ”. Tôi sẽ nhấp một lần vào hộp Phiên bản và phiên bản OpenVPN của tôi - với thẻ hữu ích - được liệt kê. Tôi chỉ cần chọn nó, nhấp vào "Liên kết" và tôi đã hoàn tất. Kể từ bây giờ, đó sẽ là IP công cộng vĩnh viễn để truy cập vào máy chủ của chúng tôi.

Cách bạn có thể sử dụng OpenVPN để truy cập an toàn vào các tài nguyên AWS riêng tư
Liên kết địa chỉ IP đàn hồi mới với phiên bản của bạn

Truy cập máy chủ

Tôi sẽ dán địa chỉ IP công cộng vào thiết bị đầu cuối như một phần của lệnh SSH của mình. Lệnh này gọi cặp khóa mà tôi đã đặt cho trường hợp này.

ssh -i KeyPairName.pem openvpnas@<PublicIPAddress>

Nếu bạn đang truy cập từ máy Windows hoặc macOS, mọi thứ có thể hoạt động hơi khác một chút, nhưng tài liệu sẽ cung cấp cho bạn tất cả sự trợ giúp mà bạn cần.

Tuy nhiên, trước khi rời khỏi bảng điều khiển Phiên bản, tôi sẽ thực hiện một chức năng quan trọng hơn. Với phiên bản OpenVPN được chọn, tôi sẽ nhấp vào Hành động, sau đó nhấp vào Kết nối mạng, sau đó nhấp vào “Thay đổi kiểm tra nguồn / đích”. Tôi sẽ đảm bảo rằng tính năng kiểm tra đã bị vô hiệu hóa. Sẽ không có gì nhiều nếu tôi không làm điều này.

Bây giờ đến phiên SSH của tôi. Ngay sau khi nó bắt đầu, tôi phải đối mặt với thỏa thuận cấp phép OpenVPN EULA và sau đó là trình hướng dẫn thiết lập. Nếu bạn cần thay đổi cài đặt sau này, bạn luôn có thể chạy lại trình hướng dẫn bằng lệnh sau:

sudo ovpn-init — ec2.

Hầu hết các mặc định của trình hướng dẫn sẽ hoạt động tốt, nhưng bạn nên giải thích nhanh những gì đang xảy ra. Dưới đây là các câu hỏi và một số bình luận về màu sắc khi cần thiết:

primary Access Server node? yes [You’d answer no if you were setting up a backup or failover node.]
specify the network interface and IP address to be used by the Admin Web UI [1 — For all interfaces; can be changed to static later.]
specify the port number for the Admin Web UI [default]
specify the TCP port number for the OpenVPN Daemon [default]
Should client traffic be routed by default through the VPN? [no--That’s   not the kind of VPN we’re building here. What we’re doing is only about getting remote clients safely and securely into our VPC. The same applies to client DNS traffic.]
Should client DNS traffic be routed by default through the VPN? [no] 
Use local authentication via internal DB? [no — can be useful, but we’ll use Linux/AWS authentication for simplicity.]
Should private subnets be accessible to clients by default? [yes — that’s the whole point of the VPN, after all.]
login to the Admin UI as “openvpn”? [yes]
Provide OpenVPN Access Server license key [Unnecessary for testing.]

Khi trình hướng dẫn hoàn tất, tôi được hiển thị một số thông tin kết nối và được khuyên nên cài đặt NTP daemon thời gian mạng. Điều đó sẽ không cần thiết trên hộp Ubuntu này, vì nó đã được cài đặt và chạy theo mặc định.

Như tôi đã đề cập trước đó, tôi sẽ cần cung cấp cho người dùng openvpn một mật khẩu để tôi có thể sử dụng nó để đăng nhập vào GUI web. Tôi làm điều đó như sudo với lệnh passwd.

sudo passwd openvpn

Đó là tất cả những thứ phía máy chủ mà chúng tôi cần. Bây giờ tôi sẽ sử dụng trình duyệt để đăng nhập vào GUI web. Tôi sử dụng địa chỉ IP công khai của máy chủ của chúng tôi với tiền tố https an toàn, theo sau là dấu gạch chéo và quản trị viên.

https://<PublicIPAddress>/admin

Bạn sẽ nhận được cảnh báo "Kết nối của bạn không phải là riêng tư" vì chúng tôi đang sử dụng chứng chỉ tự ký thay vì chứng chỉ do Tổ chức phát hành chứng chỉ cung cấp.

Cách bạn có thể sử dụng OpenVPN để truy cập an toàn vào các tài nguyên AWS riêng tư
Đây là điều bình thường khi sử dụng chứng chỉ tự ký

Đó không phải là vấn đề đối với chúng tôi, vì chúng tôi chỉ giới thiệu VPN của mình cho những người dùng được chọn từ bên trong công ty của chúng tôi và họ có thể tin tưởng vào chứng chỉ của chúng tôi. Vì vậy, tôi sẽ nhấp qua cảnh báo, đăng nhập và đồng ý với EULA.

Vui lòng dành thời gian khám phá các tính năng được cung cấp bởi bảng điều khiển quản trị OpenVPN của riêng bạn.

Cách bạn có thể sử dụng OpenVPN để truy cập an toàn vào các tài nguyên AWS riêng tư
Bảng điều khiển quản trị OpenVPN

Thiết lập máy khách VPN

Tuy nhiên, ngay bây giờ, tôi sẽ mở trang giao diện người dùng ứng dụng khách bằng địa chỉ truy cập web mà chúng tôi đã hiển thị trước đó, nhưng lần này không có quản trị viên gạch chéo. Đây không gì khác hơn là một màn hình đăng nhập, nơi bạn có thể xác thực bằng cách sử dụng cùng một người dùng openvpn như trước đây. (Bạn luôn có thể tạo người dùng mới trở lại bảng điều khiển dành cho quản trị viên.)

Phía sau màn hình đăng nhập, chỉ có một tập hợp các liên kết này với hướng dẫn cài đặt ứng dụng khách OpenVPN trên bất kỳ nền tảng nào trong số đó. Tuy nhiên, liên kết cuối cùng được gọi là “Chính bạn”.

Cách bạn có thể sử dụng OpenVPN để truy cập an toàn vào các tài nguyên AWS riêng tư
Trang khách OpenVPN

Nhấp vào nó sẽ nhắc bạn tải xuống và lưu tệp có tên client.ovpn. Tệp này chứa cài đặt cấu hình để khớp với máy chủ và các khóa thực mà chúng tôi sẽ sử dụng để xác thực. Bạn chắc chắn muốn xử lý tệp này một cách cẩn thận để tệp không bị rơi vào tay kẻ xấu. Điều đó sẽ bao gồm việc không gửi nó qua email thuần túy qua các kết nối không được mã hóa.

Tôi sẽ mở tệp cục bộ và sao chép nội dung. Sau đó, trong một trình bao bên trong một máy ảo Linux đang chạy trong mạng cục bộ của tôi, tôi sẽ tạo một tệp mới có tên là client.ovpn và dán nội dung vào. Nếu bạn đã nhấp qua liên kết “OpenVPN cho Linux” trong giao diện người dùng máy khách trước đó, bạn sẽ thấy rằng bước bổ sung duy nhất cần thiết là cài đặt OpenVPN bằng trình quản lý gói Apt - hoặc Yum nếu bạn đang sử dụng máy CentOS hoặc Red Hat. Điều đó sẽ chỉ cần một lệnh. Khi nó hoàn thành công việc của mình, chúng ta sẽ sẵn sàng.

nano client.ovpnsudo apt updatesudo apt install openvpn

Tiếp theo, chúng tôi sẽ mở kết nối VPN. Với tư cách là người chủ - sử dụng sudo - Tôi sẽ nhập openvpn với cờ cấu hình trỏ đến tệp cấu hình client.ovpn mà tôi vừa tạo.

sudo openvpn — config client.ovpn

Khi được nhắc xác thực, hãy sử dụng tài khoản openvpn cùng với mật khẩu bạn đã tạo cho nó trên máy chủ.

Bây giờ, tôi sẽ mở phiên trình bao thứ hai trên ứng dụng khách cục bộ của mình để tôi có thể thử truy cập vào máy chủ OpenVPN bằng cách sử dụng cục bộ của nó Địa chỉ IP - điều không thể thực hiện được nếu không có kết nối VPN hoạt động.

Tuy nhiên, trước tiên, hãy chạy ip a để liệt kê tất cả các giao diện mạng đang hoạt động trên máy này.

ip a

Bên cạnh mạng cục bộ, bạn cũng sẽ thấy một mạng có tên tun0. Giao diện này được tạo bởi OpenVPN và thường sẽ nằm trong phạm vi 172.16.x.x.

Tôi sẽ truy cập vào máy chủ từ xa bằng khóa riêng tư của mình - tất nhiên, khóa này cần phải tồn tại cục bộ - và riêng tư của máy chủ Địa chỉ IP. Nếu nó hoạt động, bạn sẽ có cho mình một VPN!

ssh -i KeyPairName.pem openvpnas@<PrivateIPAddress>

Cuối cùng, tôi sẽ chứng minh rằng VPN, như nó hiện đang được định cấu hình, sẽ cho phép chúng tôi truy cập vào các tài nguyên riêng tư khác trong Amazon VPC của chúng tôi. Điều này có thể hữu ích nếu chẳng hạn, bạn có một phiên bản cơ sở dữ liệu đang chạy trong VPC mà bạn không thể hiển thị với mạng công cộng.

Tôi sẽ khởi chạy phiên bản Ubuntu EC2 tiêu chuẩn nhưng tôi sẽ không cấp cho nó một IP công cộng. Tôi sẽ chỉ định cùng một mạng con us-East-1b mà chúng tôi đã sử dụng cho máy chủ OpenVPN để giữ mọi thứ đơn giản. Nhóm bảo mật mà tôi sẽ sử dụng sẽ cho phép truy cập SSH thông qua cổng 22 chứ không có gì khác.

Khi điều đó đang chạy, tôi sẽ ghi lại địa chỉ IP riêng của nó và quay lại khách hàng địa phương của tôi. Khi tôi chắc chắn rằng phiên bản đã được khởi chạy hoàn toàn, tôi sẽ sử dụng cùng một khóa riêng tư, tên người dùng “ubuntu” - vì đó là mặc định cho các phiên bản Ubuntu EC2 thông thường - và địa chỉ riêng mà tôi vừa sao chép.

Lại. Nếu nó hoạt động, bạn sẽ có kết nối VPN được định cấu hình đầy đủ vào tài nguyên riêng tư AWS của mình. Tận hưởng khoảnh khắc.

Đừng quên tắt tất cả các máy chủ của bạn và giải phóng địa chỉ IP đàn hồi của bạn khi bạn sử dụng xong chúng. Bạn không muốn phát sinh chi phí một cách không cần thiết.

Bài viết này được điều chỉnh từ một phần của khóa học Pluralsight mới của tôi, “Kết nối Tài nguyên tại chỗ với Cơ sở hạ tầng AWS của bạn”. Có rất nhiều thứ khác đến từ trang web Bootstrap IT của tôi, bao gồm các liên kết đến cuốn sách của tôi, Linux in Action và một khóa học kết hợp có tên là Linux in Motion, bao gồm hơn hai giờ video và khoảng 40% văn bản của Linux trong Hành động.