SSH là một trong những cách phổ biến nhất để kiểm soát Raspberry Pi từ laptop hoặc PC. Trong bài viết hôm nay, bạn sẽ tìm hiểu cách thiết lập xác thực hai yếu tố để truy cập SSH vào Raspberry Pi và thêm một lớp bảo mật bổ sung cho nó.
Lưu ý: Nếu bạn đang sử dụng file SSH key để truy cập Raspberry Pi của mình, xác thực hai yếu tố sẽ không được sử dụng.
Cập nhật Pi
Giả sử bạn đã thiết lập Raspberry Pi với Raspberry Pi OS, trước hết, hãy kiểm tra xem tất cả phần mềm đã được cập nhật chưa. Mở Terminal và gõ lệnh sau:
sudo apt update && sudo apt -y upgrade
Kích hoạt SSH
Raspberry Pi OS có SSH server bị tắt theo mặc định. Trước khi có thể kết nối với Pi thông qua SSH, bạn cần kích hoạt nó bằng cách chạy các lệnh Terminal sau:
sudo systemctl enable ssh
sudo systemctl start ssh
Bây giờ, bạn có thể kết nối với máy chủ SSH.
Yêu cầu nhận biết việc xác thực với cơ chế challenge-response
Cuối cùng, Raspberry Pi cần thử thách việc xác thực danh tính của bạn và sau đó xử lý phản hồi, nghĩa là bạn cần kích hoạt mật khẩu theo cơ chế challenge-response (thách thức – đáp ứng).
Để bắt đầu, hãy mở file cấu hình SSH để chỉnh sửa bằng cách chạy lệnh Terminal sau:
sudo nano /etc/ssh/sshd_config
Trong file này, hãy tìm phần ChallengeResponseAuthentication và thay đổi từ no thành yes.
Bây giờ, bạn có thể lưu file sshd_config đã cập nhật bằng cách nhấn Ctrl
+O
, sau đó là Ctrl
+X
.
Quay lại Terminal, khởi động lại daemon SSH với cấu hình mới:
sudo systemctl restart ssh
Vì các thay đổi đã được thực hiện đối với cấu hình SSH, nên cần kiểm tra xem bạn còn có thể kết nối với Raspberry Pi qua SSH hay không.
Để kết nối với SSH server, bạn sẽ cần biết địa chỉ IP của Raspberry Pi. Nếu bạn không có sẵn thông tin này, thì hãy chạy lệnh sau trên Pi:
hostname -I
Lệnh này sẽ trả về địa chỉ IP bạn cần sử dụng.
Chuyển sang laptop hoặc máy tính, khởi chạy Terminal và sau đó kết nối với Raspberry Pi, đảm bảo thay thế 10.3.3.0.0 bằng địa chỉ IP đã tìm ở trên:
ssh pi@10.3.000.0
Bây giờ, bạn đã được kết nối qua SSH.
Thiết lập xác thực hai yếu tố
Tiếp theo, tải xuống ứng dụng Authenticator để tạo mã xác thực một lần. Có nhiều ứng dụng xác thực trên thị trường, nhưng bài viết sử dụng Google Authenticator cho hướng dẫn này, vì nó có sẵn cho cả iOS và Android.
Sau khi tải xuống ứng dụng di động này, bạn cũng sẽ cần cài đặt mô-đun PAM Google Authenticator trên Raspberry Pi.
Trên Pi, mở cửa sổ Terminal và chạy lệnh sau:
sudo apt install libpam-google-authenticator
Khi Google Authenticator được cài đặt trên cả Raspberry Pi và thiết bị di động, bạn đã sẵn sàng để thiết lập xác thực hai yếu tố.
Tạo kết nối: Liên kết Pi với thiết bị di động
Để tạo liên kết giữa ứng dụng di động và Raspberry Pi, hãy tạo mã QR trên Pi và sau đó quét mã này bằng điện thoại thông minh hoặc máy tính bảng.
Để tạo mã QR, hãy quay lại Raspberry Pi và chạy lệnh Terminal sau:
google-authenticator
Raspberry Pi sẽ hỏi liệu mã token xác thực của nó có bị giới hạn thời gian hay không. Để bảo mật hơn, bạn thường muốn tạo mã token xác thực dựa trên thời gian, trừ khi bạn có lý do cụ thể để không làm như vậy.
Terminal sẽ tạo mã QR, mặc dù bạn có thể cần thay đổi kích thước Terminal để xem mã vạch đầy đủ.
Ngoài ra còn có một loạt các mã khẩn cấp. Nếu bạn bị mất, thất lạc hoặc làm hỏng thiết bị di động của mình, các mã này sẽ cho phép bạn truy cập Raspberry Pi qua SSH, ngay cả khi không có thiết bị di động. Ghi lại các mã này và lưu giữ chúng ở nơi an toàn.
Sử dụng mã QR này để kết nối Raspberry Pi với ứng dụng Google Authenticator:
1. Trên điện thoại thông minh hoặc máy tính bảng, hãy khởi chạy ứng dụng Google Authenticator.
2. Ở góc dưới bên phải, hãy nhấn vào dấu hiệu +.
3. Chọn Scan a QR barcode. Khi được nhắc, hãy cấp quyền cho ứng dụng truy cập vào camera của thiết bị.
4. Hướng camera của thiết bị lên màn hình và đặt nó ở trên mã QR. Ngay khi điện thoại thông minh hoặc máy tính bảng phát hiện mã QR, nó sẽ tạo một tài khoản và bắt đầu tự động tạo mã xác thực.
5. Quay trở lại Raspberry Pi. Terminal sẽ nhắc bạn cập nhật file google_authenticator. Nhấn phím Y
trên bàn phím.
6. Bạn sẽ được hỏi liệu bạn có muốn ngăn nhiều người sử dụng cùng một mã xác thực hay không. Nhấn phím Y
trên bàn phím.
7. Khi được hỏi liệu bạn có muốn tăng cửa sổ time skew hay không, hãy nhấn N
, vì điều này sẽ giúp bảo vệ bạn trước các cuộc tấn công Brute Force.
8. Terminal sẽ yêu cầu bạn kích hoạt giới hạn Rate-limiting, hạn chế bạn (và bọn tin tặc có thể xuất hiện trong tương lai) trong 3 lần đăng nhập cứ sau 30 giây. Rate-limiting có thể giúp bảo vệ bạn trước các cuộc tấn công Brute Force và những cuộc tấn công dựa trên mật khẩu khác, vì vậy bạn nên chọn Yes, trừ khi có lý do cụ thể để không làm như vậy.
Linux PAM
Cuối cùng, bạn cần kích hoạt xác thực hai yếu tố cho Raspberry Pi bằng cách sử dụng Linux Pluggable Authentication Modules (PAM).
Để bắt đầu, hãy mở file sshd trong trình soạn thảo Nano:
sudo nano /etc/pam.d/sshd
Thêm dòng sau:
auth required pam_google_authenticator.so
Tuy nhiên, vị trí bạn thêm sẽ rơi vào các trường hợp sau:
1. Sau khi nhập mật khẩu
Nếu bạn muốn được nhắc nhập mã xác thực một lần sau khi nhập mật khẩu Raspberry Pi, hãy thêm dòng này sau @include.
2. Trước khi nhập mật khẩu
Nếu bạn muốn được nhắc nhập mã xác thực một lần trước khi nhập mật khẩu, hãy thêm dòng này trước @include.
Khi bạn đã thực hiện những thay đổi này, hãy lưu file bằng cách nhấn Ctrl
+O
, sau đó là Ctrl
+X
.
Khởi động lại daemon SSH:
sudo systemctl restart ssh
Bây giờ, mỗi khi cố gắng kết nối qua SSH, bạn sẽ được yêu cầu mã xác minh một lần.