Linux Căn Bản – Bài 2: OpenVPN và SSH

Xin chào,

Hôm nay chúng ta sẽ thực hành thiết lập kết nối OpenVPN đến TryHackMe, sau đó sẽ SSH đến server của Learn Linux để lấy giao diện CLI của server Learn Linux (Bạn nào chưa vào phòng thì xem lại bài Linux Căn Bản bài 0 nhé) .


1/ Kết nối VPN đến máy chủ TryHackMe

1a/ Sơ lược về giao thức VPN

Giao thức VPN (Virtual Private Network) là một giao thức mã hóa dữ liệu đường truyền giúp gia tăng sự an toàn khi truyền dữ liệu trong mạng Internet. Như ở series Mạng Căn Bản các bạn đã biết, chuẩn giao thức dùng để lướt web hiện tại được khuyến khích dùng là HTTPS vốn có sẵn tính năng mã hóa dữ liệu trước khi được truyền đi. Khi kết hợp với VPN, dữ liệu của bạn sẽ được mã hóa 2 lần giúp gia tăng tính bảo mật của việc truyền dữ liệu.

Khi lướt web, giao thức VPN hoạt động gần giống với cách hoạt động của một proxy server , chỉ khác ở chỗ kết nối từ máy của bạn đến VPN server sẽ được mã hóa bởi cả HTTPS lẫn VPN.

Dành cho bạn nào đã quên cách thức hoạt động của proxy server, proxy server đóng vai trò như là một người trung gian gửi và nhận dữ liệu truyền đi giữa thiết bị của bạn và server đích đến. Cụ thể, khi bạn gửi dữ liệu đi từ A đến B, thay vì đi thẳng từ A => B, bạn sẽ gửi dữ liệu đến proxy server C (A => C), sau đó proxy server sẽ hủy dữ liệu gửi đi của bạn đồng thời tạo một dữ liệu có nội dung và địa chỉ đến y như dữ liệu đã hủy chỉ khác ở địa chỉ IP và địa chỉ MAC của người gửi thay vì là địa chỉ của máy bạn thì sẽ là địa chỉ của proxy server; sau đó proxy server sẽ gửi dữ liệu đi đến điểm cần đến (C => B). Dữ liệu được trả về cũng sẽ trải qua quá trình gần y như vậy (B => C), chỉ khác là lần này, địa chỉ của server gửi sẽ được giữ nguyên, chỉ có địa chỉ đến sẽ được thay bằng địa chỉ của máy A; sau đó dữ liệu được gửi về A (C => A).

Trong kết nối A => C =>B như trên, thì C chính là VPN server, đường truyền từ A => C được mã hóa 2 lần bằng cả HTTPS và VPN, đường truyền từ C => B chỉ được mã hóa bởi HTTPS mà thôi.

Với khả năng của mình, VPN hay được dùng như là một giải pháp để lướt web ẩn danh, ngăn chặn việc các server như Facebook và Google thu thập dữ liệu lướt web và biết được IP thật của bạn. Tuy nhiên, vỏ quýt dày có móng tay nhọn, Facebook và Google đã phát triển hệ thống nhận diện người dùng dựa trên đa yếu tố để vẫn có thể biết bạn là ai dù cho bạn đã sử dụng VPN, nhưng mình xin phép bàn về chủ đề này trong một bài khác nhé.

Một ứng dụng khác của VPN đó là giúp bạn xem được nội dung ví dụ một bộ phim chỉ được chiếu ở một số quốc gia nhất định. Bằng việc chuyển hướng đường truyền đến VPN server đặt tại một trong những quốc gia chiếu bộ phim đó, bạn sẽ nghiễm nhiên được xem như là một máy trong hệ thống mạng của quốc gia đó và không bị chặn truy cập nội dung phim mà bạn muốn xem.

Về bảo mật, độ an toàn của giao thức VPN phụ thuộc khá nhiều vào nhà cung cấp dịch vụ VPN. Nếu thuật toán mã hóa không đủ mạnh hoặc VPN server có lỗi tạo cơ hội cho các hacker xâm nhập thành công vào hệ thống. Nên khi chọn sử dụng dịch vụ VPN, bạn nên chọn dịch vụ uy tín nhé.

1b/ VPN tunneling

Ngoài việc cho phép người dùng lướt web ẩn danh, VPN còn được sử dụng bởi các công ty như một giải pháp cho phép truy cập hệ thống từ xa. Cứ xem như công ty đó là TryHackMe đi. Các bạn hãy nhìn vào sơ đồ minh họa sau

Như bạn có thể thấy, hệ thống của TryHackMe (mạng 192.168.1.0/24) được bảo vệ bởi tường lửa nhầm ngăn chặn mọi kết nối không được phép từ ngoài vào trong. Bạn là máy tính có IP 2.2.2.2 muốn truy cập vào hệ thống mạng của TryHackMe để thực hành lab, tuy nhiên do tường lửa chặn kết nối, bạn không thể truy cập trực tiếp được. Lúc này, nếu để ý kỹ, chúng ta sẽ thấy một đường hầm màu xanh (VPN Tunnel), chạy xuyên qua tường lửa và kết nối từ thiết bị của bạn (địa chỉ IP 2.2.2.2) đến VPN server của TryHackme.

Như vậy có nghĩa là gì? Nghĩa là VPN tạo nên một đường hầm (VPN Tunnel) từ máy của bạn đến VPN server nằm trong hệ thống mạng của TryHackMe, đường hầm này đi xuyên qua cả tường lửa bảo vệ toàn hệ thống mạng của công ty. Tất cả thông tin ở trong hầm đều sẽ được mã hóa hai lần bởi VPN và một giao thức khác ví dụ như HTTPS hoặc SSH. Để có thể vào được đường hầm này, bạn phải thỏa mãn ít nhất 2 điều kiện:

  1. Có một tài khoản người dùng được TryHackMe cấp phép (chính là tài khoản TryHackMe của bạn)
  2. Máy của bạn có file thiết lập VPN client có chứa thông tin tài khoản của bạn dùng để kết nối đến VPN server của TryHackMe (file này các bạn sẽ download TryHackMe sau khi đăng nhập vào tài khoản của mình). Thông tin tài khoản của bạn sẽ được dùng để xác minh bạn là ai và bạn có quyền vào hầm VPN hay không.

Khi đã thỏa mãn 2 điều kiện trên, bạn sẽ kết nối được với VPN server của TryHackme, đồng thời bạn sẽ được cấp 1 IP thuộc mạng 192.168.1.0 của TryHackMe để định danh thiết bị của bạn trong mạng và để bạn có thể giao tiếp với các máy (các phòng như phòng Learn Linux chẳng hạn) trong hệ thống của TryHackMe.

1c/ Thực hành kết nối VPN đến TryHackMe VPN server

Các bạn cần phải tạo tài khoản và download file openvpn từ TryHackMe về máy của mình. Bạn nào chưa biết có thể xem lại mục 5 của bài này nhé.

Sau khi đã có tài khoản, các bạn đăng nhập vào TryHackMe, nhìn về bên trái, bạn sẽ thấy mục Access Machines, sau đó bấm chọn OpenVPN.

Sau đó, các bạn sẽ chọn VPN server để kết nối. Nếu bạn ở VN, mình nghĩ chọn server đặt ở Úc (AU-Regular-1) sẽ là ok nhất do có vị trí địa lí gần VN nhất. Sau đó bạn click Download My Configuration File để tải file VPN client về máy.

1c-1/ Trên Linux

B1: Các bạn nhập các lệnh sau:

sudo su 

#Nhập mật khẩu máy linux của bạn. Linux
sẽ không hiện ra bất kì ký tự nào khi bạn
nhập mật khẩu, nên bạn cứ nhập bình thường
sau đó click enter

#Chuyển đến thư mục chứa file open vpn mà
bạn đã tải xuống bằng lệnh "cd". Ví dụ nếu
bạn lưu file tại thư mục Downloads:

cd Downloads 

#Bạn kiểm tra xem file openvpn có nằm trong
thư mục Downloads không bằng lệnh ls

ls

#Sau đó tiến hành chạy file bằng lệnh

openvpn <tên-file>.ovpn

B2: Nếu bạn thấy dòng cuối cùng như hình bên dưới nghĩa là bạn đã kết nối thành công với server VPN của TryHackMe.

Bạn có thể kiểm tra lại bằng cách refresh (F5) lại trang Access via OpenVPN, nếu bạn thấy chỗ connected có một dấu check màu xanh, có nghĩa là bạn đã kết nối với TryHackMe thành công.

B3: Để ngắt kết nối, các bạn ấn cùng lúc tổ hợp phím Ctrl+C.

1c-2/ Trên Windows

B1: Các bạn tải và cài đặt phần mềm OpenVPN GUI application. Các bạn cứ click Next hết nhé.

B2: Chọn server và tải file VPN client

B3: Chuột phải shortcut của OpenVPN và chọn Run as administrator

B4: Bấm nút browse và tìm đến thư mục đã tải file VPN client về. Sau đó, tải file VPN client vào OpenVPN Connect.

B5: Sau khi đã tải file xong, bạn sẽ được màn hình như thế này. Lúc này, bạn click vào nút Add.

B6: Sau đó, OpenVPN sẽ tự động kết nối với SSH server của TryHackMe. Nếu thành công, bạn sẽ có màn hình như bên dưới. Your Private IP chính là địa chỉ IP của bạn được cấp bởi DHCP server của TryHackMe để bạn kết nối với các máy trong hệ thống của TryHackMe.

B7: Bạn có thể vào trang Access via OpenVPN trên TryHackMe để kiểm tra lại. Nếu bạn có dấu check xanh ở phần Connected như hình dưới có nghĩa là bạn đã kết nối thành công đến OpenVPN server của TryHackMe.

B8: Để ngắt kết nối bạn chỉ cần click vào nút xanh để gạt tắt nó đi là xong

2/ SSH đến server Learn Linux

Đến bước này bạn đã thành công truy cập vào hệ thống mạng nội bộ của TryHackMe. Từ đây để có thể truy cập tới phòng Learn Linux để làm lab, bạn có thể tiến hành sử dụng giao thức SSH.

Các bạn cần phân biệt rõ chức năng của SSH và VPN tunneling nhé. VPN tunneling cho phép bạn truy cập vào hệ thống mạng của TryHackMe. Còn SSH cho phép bạn kết nối đến một server (tùy bạn chọn miễn là bạn có username và password của ssh account của server đó và server đó có chạy SSH, cụ thể ở đây là phòng Learn Linux) nằm trong hệ thống mạng của TryHackMe.

Trước khi đi đến phần SSH, chúng ta sẽ đi nhanh qua từ Task 1 đến Task 3.

Task 1

B1: Các bạn vào phòng Learn Linux, ở task 1 bấm Deploy để chạy server. Đồng thời đọc phần giới thiệu ở Task 1. Trong đó lưu ý số 2 là nổi bật nhất đó là cùng 1 lúc bạn chỉ được phép chạy 1 server mà thôi. Nếu bạn đang chạy server nào khác trên TryHackMe, bạn cần phải tắt server đó trước.

B2: Sau khi bấm Deploy, bạn sẽ chờ trong khoản 1 phút 30 giây để server được kích hoạt. Sau khi hoàn thành, IP của server sẽ được hiện ra như sau.

B3: Từ máy của bạn, bạn có thể thử ping đến server Learn Linux để đảm bảo máy bạn và server Learn Linux có thể giao tiếp với nhau. Nếu Ping thành công, bạn sẽ được như hình dưới. (Lưu ý là IP của bạn và của mình không nhất thiết phải giống nhau nhé)

Task 2

Ở task 2, tác giả cho biết phòng Learn Linux sẽ truyền tải rất nhiều kiến thức khác nhau về CLI trong các sections, các sections sẽ có sự liên quan đến nhau và càng về sau sẽ càng khó cũng như cần kiến thức ở các sections trước. Tác giả cũng chia sẻ đã thiết kế mỗi section vào một account người dùng và bạn chỉ có thể lên được section tiếp theo sau khi đã vượt qua thử thách của section trước đó.

Nghĩa là nó giống như chơi CTF ấy, nếu các bạn để ý kỹ cấu trúc trình bày nội dung của phòng, bạn sẽ thấy task 11, 21 và 33 chính là các thử thách mà bạn phải vượt qua để lên được section cao hơn. Cụ thể, từ task 1 đến 11 thuộc account Shiba1, bạn phải vượt qua được task 11 để lấy được mật khẩu của account Shiba2 để học tiếp lên section mới, các sections khác tương tự như vậy. Một điểm lưu ý nữa là ở Task 43, chúng ta sẽ có một bài kiểm tra, như bài kiểm tra cuối kỳ để đánh giá xem bạn đã học được những gì bằng cách yêu cầu bạn tìm ra root flag đã được giấu trong phòng Learn Linux.

Task 3

Ở task 3, tác giả sẽ sơ lược lại cho các bạn kiến thức về giao thức SSH. Bạn cũng có thể đọc thêm về giao thức SSH ở bài 7 của series Mạng Căn Bản.

2A/ SSH trên Linux

Trên giao diện dòng lệnh của Linux các bạn gõ những lệnh sau:

sudo su
ssh shiba1@<ip-address>

Password của tài khoản shiba1 là shiba1 nhé.

Nếu thành công, bạn sẽ được như hình bên trên. Vậy là bạn đã SSH thành công đến máy Learn Linux.

2B/ SSH trên Windows

SSH trên hệ điều hành Windows sẽ hơi rắc rối hơn một tí. Cụ thể bạn phải tải về một phần mềm giúp cài đặt những ứng dụng hỗ trợ cần thiết để bạn có thể SSH đến máy Learn Linux. Ở đây chúng ta sẽ chọn dùng Putty, một phần mềm mã nguồn mở miễn phí.

B1: Download phần mềm Putty tại đây. Các bạn chọn download file installer.msi nhé.

B2: Cài đặt phần mềm Putty. Các bạn cứ click Next và Install nhé.

B3: Click chuột phải vào shortcut Putty và chọn Run as Administrator

B4: Giao diện chính của Putty hiện ra như sau

B5: Các bạn điền địa chỉ IP của phòng Learn Linux vào sau đó ấn Open.

B6: Bạn click Yes để lưu lại SSH key của Learn Linux server vào bộ nhớ máy.

B7: Một cửa sổ khác sẽ hiện ra hỏi bạn username và password. Bạn sẽ điền thông tin như sau:

  • login as: shiba1
  • password: shiba1

Vậy là bạn đã SSH thành công đến server Learn Linux bằng cách sử dụng Putty.

Bạn có thể thấy size chữ trên Putty hơi nhỏ. Để chỉnh lớn hơn, bạn có thể làm như sau:

B1: Click chuột phải vào phần màu xanh dương phía trên giao diện dòng lệnh và chọn Change Settings.

B2: Chọn Windows > Appearance, ở phần Font settings, chọn Change.

B3: Giao diện chỉnh font chữ và font size sẽ hiện ra, bạn chọn font chữ và size phù hợp sau đó click OK.

B4: Click Apply để cập nhật thay đổi font chữ.

Bạn sẽ thấy font size lớn hơn và rõ hơn.


Hẹn gặp lại các bạn ở bài 3, chúng ta sẽ bắt đầu thực tập những câu lệnh đầu tiên.

Vincent Nguyễn

Leave a comment