“Secure shell” SSH là một giao thức mạng để thiết lập kết nối an toàn giữa các máy chủ, tiêu chuẩn qua cổng 22 (tốt hơn nên thay đổi). Máy khách SSH và máy chủ SSH có sẵn cho hầu hết các hệ điều hành. Hầu như mọi giao thức mạng khác đều hoạt động bên trong SSH, nghĩa là bạn có thể làm việc từ xa trên một máy tính khác, truyền luồng âm thanh hoặc video qua kênh được mã hóa, v.v. Bên cạnh đó,
Quá trình xác thực diễn ra bằng mật khẩu, nhưng các nhà phát triển và quản trị viên hệ thống thường sử dụng khóa SSH. Vấn đề là khóa riêng có thể bị đánh cắp. Về mặt lý thuyết, việc thêm cụm mật khẩu sẽ bảo vệ khỏi bị đánh cắp khóa riêng, nhưng trên thực tế, khi chuyển tiếp và lưu khóa vào bộ đệm, chúng sẽ
Cách triển khai xác thực hai yếu tố
Các nhà phát triển từ Honeycomb đã xuất bản gần đây
Các hướng dẫn giả định rằng bạn có một máy chủ cơ bản nhất định mở ra Internet (pháo đài). Bạn muốn kết nối với máy chủ này từ máy tính xách tay hoặc máy tính thông qua Internet và truy cập tất cả các thiết bị khác nằm phía sau nó. 2FA đảm bảo rằng kẻ tấn công không thể làm điều tương tự ngay cả khi chúng có quyền truy cập vào máy tính xách tay của bạn, chẳng hạn như bằng cách cài đặt phần mềm độc hại.
Tùy chọn đầu tiên là OTP
OTP - mật khẩu kỹ thuật số dùng một lần, trong trường hợp này sẽ được sử dụng để xác thực SSH cùng với khóa. Các nhà phát triển viết rằng đây không phải là một lựa chọn lý tưởng vì kẻ tấn công có thể tạo ra một pháo đài giả, chặn OTP của bạn và sử dụng nó. Nhưng có còn hơn không.
Trong trường hợp này, ở phía máy chủ, các dòng sau được ghi vào cấu hình Chef:
metadata.rb
attributes/default.rb
(từattributes.rb
)files/sshd
recipes/default.rb
(sao chép từrecipe.rb
)templates/default/users.oath.erb
Bất kỳ ứng dụng OTP nào cũng được cài đặt ở phía client: Google Authenticator, Authy, Duo, Lastpass, đã cài đặt brew install oath-toolkit
hoặc apt install oathtool openssl
, thì một chuỗi (khóa) base16 ngẫu nhiên được tạo ra. Nó được chuyển đổi sang định dạng Base32 mà trình xác thực di động sử dụng và nhập trực tiếp vào ứng dụng.
Do đó, bạn có thể kết nối với Bastion và thấy rằng giờ đây nó không chỉ yêu cầu cụm mật khẩu mà còn yêu cầu mã OTP để xác thực:
➜ ssh -A bastion
Enter passphrase for key '[snip]':
One-time password (OATH) for '[user]':
Welcome to Ubuntu 18.04.1 LTS...
Tùy chọn thứ hai là xác thực phần cứng
Trong trường hợp này, người dùng không bắt buộc phải nhập mã OTP mỗi lần vì yếu tố thứ hai trở thành thiết bị phần cứng hoặc sinh trắc học.
Ở đây, cấu hình Chef phức tạp hơn một chút và cấu hình máy khách phụ thuộc vào hệ điều hành. Nhưng sau khi hoàn thành tất cả các bước, máy khách trên MacOS có thể xác nhận xác thực trong SSH bằng cụm mật khẩu và đặt ngón tay lên cảm biến (yếu tố thứ hai).
Chủ sở hữu iOS và Android xác nhận đăng nhập
Trên Linux/ChromeOS có một tùy chọn để hoạt động với mã thông báo USB YubiKey. Tất nhiên, kẻ tấn công có thể đánh cắp mã thông báo của bạn nhưng hắn vẫn không biết cụm mật khẩu.
Nguồn: www.habr.com