Cách thiết lập xác thực hai yếu tố trên Raspberry Pi

Raspberry Pi hiện có ở khắp mọi nơi, đó là lý do tại sao nó thu hút sự chú ý của các tác nhân đe dọa và tội phạm mạng. Chúng tôi sẽ chỉ cho bạn cách bảo mật Pi của bạn bằng xác thực hai yếu tố.

Raspberry Pi tuyệt vời

Tệp Raspberry Pi là một máy tính bảng đơn. Nó được ra mắt ở Anh vào năm 2012 với mục đích khuyến khích trẻ em mày mò, sáng tạo và học lập trình. Hình thức ban đầu là một tấm có kích thước bằng thẻ tín dụng được cung cấp bởi bộ sạc điện thoại.

Nó cung cấp đầu ra HDMI, cổng USB, kết nối mạng và chạy trên Linux. Các bổ sung sau này cho dòng bao gồm các phiên bản thậm chí còn nhỏ hơn được thiết kế để tích hợp vào sản phẩm hoặc hoạt động như các hệ thống không đầu. Giá dao động từ 5 USD cho Minimalist Pi Zero, tối đa 75 USD cho Pi 4 b/ 8 GB.

Thành công của anh ấy thật đáng kinh ngạc; hơn 30 triệu máy tính nhỏ này đã được bán trên toàn thế giới. Những người có sở thích đã làm những điều tuyệt vời và đầy cảm hứng với chúng, bao gồm cả việc bay đến rìa không gian và quay trở lại khinh khí cầu.

Thật không may, một khi nền tảng điện toán trở nên đủ phổ biến, nó chắc chắn sẽ thu hút sự chú ý của tội phạm mạng. Thật đáng sợ khi nghĩ có bao nhiêu Pi sử dụng tài khoản người dùng và mật khẩu mặc định. Nếu Pi của bạn là công khai và có thể truy cập được từ internet thông qua Secure Shell (SSH), thì Pi đó phải được bảo mật.

Ngay cả khi bạn không có bất kỳ dữ liệu hoặc phần mềm có giá trị nào trên Pi của mình, bạn vẫn cần bảo vệ nó vì Pi của bạn không phải là mục tiêu thực sự – đó chỉ là một cách để xâm nhập vào mạng của bạn. Khi một tác nhân đe dọa tìm thấy chỗ đứng trong mạng, nó sẽ chuyển sang các thiết bị khác mà nó thực sự quan tâm.

Xác thực hai yếu tố

Xác thực – nghĩa là quyền truy cập vào hệ thống – yêu cầu ít nhất một yếu tố. Các yếu tố được chia thành các loại sau:

Một cái gì đó bạn biết: chẳng hạn như mật khẩu hoặc -phrase.
Thứ bạn có: như điện thoại di động, mã thông báo vật lý hoặc dongle.
Một cái gì đó bạn là: đọc sinh trắc học, chẳng hạn như quét vân tay hoặc võng mạc.

Xác thực đa yếu tố (MFA) yêu cầu mật khẩu và ít nhất một mục từ các danh mục khác. Trong ví dụ của chúng tôi, chúng tôi sẽ sử dụng mật khẩu và điện thoại di động. Điện thoại di động sẽ khởi chạy ứng dụng xác thực Google và Pi sẽ khởi chạy ứng dụng xác thực Google.

Ứng dụng điện thoại di động được liên kết với Pi của bạn bằng cách quét mã QR. Điều này truyền một số thông tin trước đến điện thoại di động Pi, đảm bảo rằng các thuật toán tạo số của chúng tạo ra các mã giống nhau đồng thời. Các mã được gọi là mật khẩu một lần dựa trên thời gian (TOTP).

Khi nhận được yêu cầu kết nối, Pi của bạn sẽ tạo mã. Bạn sử dụng ứng dụng xác thực trên điện thoại của mình để xem mã hiện tại, sau đó Pi của bạn sẽ hỏi bạn mật khẩu và mã xác thực. Mật khẩu và TOTP của bạn phải chính xác trước khi bạn có thể kết nối.

Định cấu hình Pi

Nếu bạn thường sử dụng SSH trên Pi của mình, thì đó có thể là một hệ thống không đầu, vì vậy chúng tôi sẽ thiết lập nó qua kết nối SSH.

An toàn nhất là tạo hai kết nối SSH: một để thiết lập và thử nghiệm, và một để hoạt động như một mạng lưới an toàn. Bằng cách đó, nếu bạn tự khóa Pi của mình, bạn vẫn sẽ có kết nối SSH thứ hai đang hoạt động. Thay đổi cài đặt SSH sẽ không ảnh hưởng đến kết nối đang diễn ra, vì vậy bạn có thể sử dụng cài đặt thứ hai để hoàn tác mọi thay đổi và khắc phục tình trạng này.

Nếu điều tồi tệ nhất xảy ra và bạn hoàn toàn bị khóa SSH, bạn vẫn có thể kết nối Pi với màn hình, bàn phím và chuột, sau đó đăng nhập vào một phiên thông thường. Điều này có nghĩa là bạn vẫn có thể đăng nhập miễn là Pi của bạn có thể điều khiển màn hình. Tuy nhiên, nếu không thể, bạn thực sự cần để mở kết nối SSH của mạng bảo mật cho đến khi bạn có thể xác minh rằng xác thực hai yếu tố của mình đang hoạt động.

Tất nhiên, hình phạt cuối cùng là cài đặt lại hệ điều hành trên thẻ micro SD của Pi, nhưng hãy cố gắng tránh điều đó.

Trước tiên, chúng ta cần thực hiện hai cuộc gọi đến Pi. Cả hai lệnh trông như thế này:

ssh [email protected]

Tên của Pi này là “cơ quan giám sát”, nhưng thay vào đó hãy nhập tên của bạn. Nếu bạn đã thay đổi tên người dùng mặc định, hãy sử dụng luôn tên người dùng đó; của chúng tôi là “pi”.

Hãy nhớ rằng, vì lý do bảo mật, hãy nhập lệnh này hai lần trong các cửa sổ đầu cuối khác nhau để có hai kết nối với số Pi của bạn. Sau đó thu nhỏ một trong số chúng để nó không cản trở và vô tình bị đóng.

Sau khi kết nối, bạn sẽ thấy một lời chào. Lời nhắc sẽ hiển thị tên người dùng (trong trường hợp này là “pi”) và tên của Pi (trong trường hợp này là “cơ quan giám sát”).

Kết nối SSH với Raspberry Pi trong cửa sổ đầu cuối.

Bạn cần chỉnh sửa tệp “sshd_config”. Chúng tôi sẽ làm điều này trong trình soạn thảo văn bản nano:

sudo nano /etc/ssh/sshd_config

Sudo nano /etc/ssh/sshd_config trong cửa sổ đầu cuối.

Cuộn qua tệp cho đến khi bạn thấy dòng sau:

ChallengeResponseAuthentication no

Thay “không” bằng “có”.

Tệp sshd_config được mở trong trình chỉnh sửa nano với dòng ChallengeResponseAuthentication được tô sáng trong cửa sổ đầu cuối.

Nhấn Ctrl + O để lưu các thay đổi thành nano, sau đó nhấn Ctrl + X để đóng tệp. Sử dụng lệnh sau để khởi động lại daemon SSH:

sudo systemctl restart ssh

Sudo systemctl restart ssh trong cửa sổ đầu cuối.

Bạn cần cài đặt Google Authenticator, đây là thư viện Pluggable Authenticator (PAM). Ứng dụng (SSH) sẽ gọi giao diện PAM của Linux và giao diện này sẽ tìm mô-đun PAM thích hợp để hỗ trợ loại xác thực được yêu cầu.

Nhập các thông tin sau:

sudo apt-get install libpam-google-authenticator

Sudo apt-get install libpam-google-authenticationator trong cửa sổ đầu cuối.

Cài đặt ứng dụng

Ứng dụng Google Authenticator có sẵn cho iPhone và Android, vì vậy chỉ cần cài đặt phiên bản phù hợp cho điện thoại di động của bạn. Bạn cũng có thể sử dụng Authy và các ứng dụng khác hỗ trợ loại mã xác thực này.

Biểu tượng ứng dụng Google Authenticator trên điện thoại di động Android.

Thiết lập xác thực hai yếu tố

Trong tài khoản bạn sẽ sử dụng khi kết nối với Pi của mình qua SSH, hãy chạy lệnh sau (không bao gồm tiền tố sudo):

google-authenticator

Bạn sẽ được hỏi liệu bạn có muốn mã thông báo xác thực dựa trên thời gian hay không; nhấn Y rồi nhấn Enter.

Mã Trả lời nhanh A (QR) được tạo, nhưng nó được mã hóa vì nó rộng hơn cửa sổ đầu cuối 80 cột. Kéo cửa sổ rộng hơn để xem mã.

Bạn cũng sẽ thấy một số mã bảo mật dưới mã QR. Chúng được lưu trong một tệp có tên “.google_authenticator”, nhưng giờ đây bạn có thể tạo một bản sao của chúng. Nếu bạn mất khả năng nhận TOTP (ví dụ: nếu bạn mất điện thoại di động), bạn có thể sử dụng các mã này để xác thực.

Bạn phải trả lời bốn câu hỏi, câu hỏi đầu tiên là:

Do you want me to update your "/home/pi/.google_authenticator" file? (y/n)

Nhấn Y rồi nhấn Enter.

Muốn tôi cập nhật của bạn

Câu hỏi tiếp theo là liệu bạn có muốn ngăn không cho cùng một mã được sử dụng nhiều lần trong khoảng thời gian 30 giây hay không.

Nhấn Y rồi nhấn Enter.

Bạn có muốn cấm sử dụng nhiều lần cùng một mã thông báo xác thực không? (y/n) trong cửa sổ đầu cuối.

Câu hỏi thứ ba là liệu bạn có muốn mở rộng thời hạn chấp nhận mã thông báo TOTP hay không.

Nhấn N để phản hồi điều này, sau đó nhấn Enter.

Muốn làm điều đó? (y/n) trong cửa sổ đầu cuối.

Câu hỏi cuối cùng là “Bạn có muốn bật giới hạn tốc độ không?”

Nhập Y rồi nhấn Enter.

Bạn có muốn bật giới hạn tốc độ không? (y/n) trong cửa sổ đầu cuối.

Bạn đã trở lại dòng lệnh. Nếu cần, hãy kéo cửa sổ terminal rộng hơn và/hoặc cuộn lên trong cửa sổ terminal để xem toàn bộ mã QR.

Trên điện thoại di động của bạn, hãy mở ứng dụng xác thực, sau đó nhấn vào dấu cộng (+) ở góc dưới cùng bên phải của màn hình. Chọn “Quét mã QR” và sau đó quét mã QR trong cửa sổ đầu cuối.

Mục nhập mới sẽ xuất hiện trong ứng dụng xác thực, được đặt tên theo tên máy chủ của Pi và mã TOTP gồm sáu chữ số sẽ được hiển thị bên dưới mục nhập đó. Nó được hiển thị dưới dạng hai nhóm ba chữ số để dễ đọc hơn, nhưng bạn phải nhập nó dưới dạng một số có sáu chữ số.

Vòng tròn động bên cạnh mã cho biết mã sẽ có hiệu lực trong bao lâu: một vòng tròn đầy đủ có nghĩa là 30 giây, nửa vòng tròn có nghĩa là 15 giây, v.v.

Để tất cả chúng cùng nhau

Chúng tôi có thêm một tập tin để chỉnh sửa. Chúng ta cần cho SSH biết mô-đun xác thực PAM nào sẽ sử dụng:

sudo nano /etc/pam.d/sshd

Sudo nano /etc/pam.d/sshd trong cửa sổ đầu cuối.

Nhập các dòng sau vào đầu tệp:

#2FA

auth required pam_google_authenticator.so

yêu cầu xác thực pam_google_authenticator.so được thêm vào tệp sshd trong trình chỉnh sửa, trong cửa sổ đầu cuối.

Bạn cũng có thể chọn thời điểm nhận câu hỏi TOTP:

Sau khi nhập mật khẩu: nhập các dòng trước bên dưới “@include common-auth” như trong hình trên.
Trước khi bạn được hỏi mật khẩu của mình: hãy nhập các dòng trước đó ở trên “@include common-auth”.

Lưu ý dấu gạch dưới (_) được sử dụng trong “pam_google_authenticator.so” thay vì dấu gạch ngang (-) mà chúng tôi đã sử dụng trước đó trong lệnh apt-get để cài đặt mô-đun.

Nhấn Ctrl + O để lưu các thay đổi vào tệp, sau đó nhấn Ctrl + X để đóng trình chỉnh sửa. Chúng ta cần khởi động lại SSH lần cuối và hoàn tất:

sudo systemctl restart ssh

Sudo systemctl restart ssh trong cửa sổ đầu cuối.

Đóng kết nối SSH này, nhưng để kết nối SSH khác với mạng bảo mật hoạt động cho đến khi chúng tôi xác minh bước tiếp theo này.

Đảm bảo rằng ứng dụng xác thực của bạn đang mở và sẵn sàng trên điện thoại di động của bạn, sau đó mở một kết nối SSH mới tới Pi của bạn:

ssh [email protected]

ssh pi@watchdog.local trong cửa sổ đầu cuối.

Bạn sẽ được yêu cầu nhập mật khẩu và sau đó là mã. Nhập mã từ điện thoại di động của bạn mà không có dấu cách giữa các số. Giống như mật khẩu của bạn, nó không được hiển thị trên màn hình.

Nếu mọi việc diễn ra theo đúng kế hoạch, bạn sẽ có thể kết nối với Pi; nếu không, hãy sử dụng kết nối SSH với mạng bảo mật để xem lại các bước trước đó.

Tốt hơn an toàn hơn xin lỗi

Bạn có để ý chữ “r” phía trên trong từ “safer” không?

Thật vậy, giờ đây bạn an toàn hơn trước khi kết nối với Raspberry Pi, nhưng không có gì là an toàn 100%. Có nhiều cách để bỏ qua xác thực hai yếu tố. Chúng dựa trên kỹ thuật xã hội, tấn công trung gian và tấn công điểm cuối, hoán đổi SIM và các kỹ thuật nâng cao khác mà tất nhiên chúng tôi sẽ không đề cập ở đây.

Vậy tại sao phải bận tâm với tất cả những điều này nếu nó không hoàn hảo? Chà, vì lý do tương tự mà bạn khóa cửa trước khi rời đi, ngay cả khi có những người có thể cạy ổ khóa – hầu hết đều không thể.

Những bài viết liên quan

Back to top button