Thứ Tư, 20 tháng 7, 2011

Truy cập an toàn hơn khi không có mật khẩu

Safer Access without Passwords

Jul 06, 2011 By Johan Thelin

Theo: http://www.linuxjournal.com/content/safer-access-without-passwords

Bài được đưa lên Internet ngày: 06/07/2011

Lời người dịch: Hầu như ai cũng nói cần có các mật khẩu an toàn, mật khẩu có đủ độ dài với những chuỗi ký tự kỳ dị. Nhưng đôi khi, các quản trị viên lại thấy chẳng có mật khẩu gì mới tốt thì sao.

Làm thế nào bạn chắc chắn rằng các mật khẩu của bạn là an toàn? Bạn có thể làm cho chúng dài hơn, làm phức tạp chúng bằng việc bổ sung thêm các ký tự kỳ dị, nghĩ chắc việc sử dụng các mật khẩu khác nhau cho từng tài khoản người sử đụng mà bạn có. Hoặc bạn có thể chỉ đơn giản bỏ qâu chúng hoàn toàn.

Trình shell an inh, ssh, là công cụ chủ chốt trong hộp công cụ của bất kỳ người sử dụng Linux nào. Ngay khi bạn có nhiều hơn 1 máy tính để tương tác với chúng, thì ssh là lựa chọn rõ ràng.

Khi gõ vào một máy tính từ xa thông qua ssh, bạn thường được nhắc với mật khẩu của người sử dụng từ xa. Một lựa chọn thay thế cho điều này là hãy sử dụng một cặp khóa không đối xứng.

Một cặp khóa không đối xứng có chứa một khóa cá nhân và một khóa công khai. Những khóa này được tạo ra từ một thuật toán - hoặc RSA hoặc DSA. RSA đã có từ khá lâu và được hỗ trợ rộng rãi, thậm chí bằng những triển khai cài đặt từ lâu rồi. ĐSA an toàn hơn, nhưng đòi hỏi v2 của giao thức ssh. Điều này không có nhiều vấn đề trong một thế giới nguồn mở - giữ cho triển khai cài đặt ssh daemon được cập nhật không phải là một vấn đề, mà là một yêu cầu. Vì thế, DSA là lựa chọn được khuyến cáo, trừ phi bạn có bất kỳ lý do cụ thể nào khác để chọn RSA.

Các khóa được tạo ra là lớn hơn so với một mật khẩu của người sử dụng bình thường. Các khóa RSA ít nhất là 768 bit, mặc định 2048 bit. Các khóa DSA là 1024 là tiêu chuẩn.

Để tạo ra một khóa DSA, hãy sử dụng lệnh sau:

$ ssh-keygen -t dsa

Điều này sẽ tạo ra các tệp ~/.ssh/id_dsa and ~/.ssh/id_dsa.pub. Bạn có thể chỉ định một mật từ (passphrase) trong quá trình tạo khóa, bổ sung thêm cho an ninh.

How do you make sure that your passwords are safe? You can make them longer, complicate them by adding odd characters, making sure to use different passwords for each user account that you have. Or, you can simply skip them all together.

The secure shell, ssh, is a key tool in any Linux user's toolbox. As soon as you have more than one machine to interact with, ssh is the obvious choice.

When logging into a remote machine through ssh, you are usually prompted with the remote user's password. An alternative to this is to use an asymmetric key pair.

An asymmetric key pair consists of a private and public key. These are generated from an algorithm - either RSA or DSA. RSA has been around for a long time and is widely supported, even by old legacy implementations. DSA is safer, but requires v2 of the ssh protocol. This is not much of an issue in an open source world - keeping the ssh daemon implementation up to date is not a problem, but rather a requirement. Thus, DSA is the recommended choice, unless you have any specific reason to pick RSA.

The generated keys are larger than a common user password. RSA keys are at least 768 bits, default 2048 bits. DSA keys are 1024, as the standard specifies this.

To generate a DSA key, use the following command:

$ ssh-keygen -t dsa

This generates the files ~/.ssh/id_dsa and ~/.ssh/id_dsa.pub. You can specify a passphrase in the key generation process. This means that they key only can be used in combination with a passphrase, adding to the security.

Tệp được tạo ra kết thúc bằng pub là một nửa công khai của cặp khóa. Nó có thể được chia sẻ với các máy chủ host từ xa mà bạn muốn ssh tới. Tệp khác, id_dsa, là nửa riêng tư của cặp khóa. Nó phải được bảo vệ như mật khẩu của bạn, nghĩa là không gửi thứ này qua thư, không chia sẻ nó trong các máy tính không tin cậy...

Có một khóa chiều dài 1024 bit có thể được nghĩ như có một mật khẩu dài 128 ký tự. Điều này có nghĩa là phương pháp cặp khóa là an toàn hơn so với hầu hết các mật khẩu mà bạn có thể nhớ. Các khóa cũng hoàn toàn ngẫu nhiên, nên chúng không thể bị bẻ bằng việc sử dụng các cuộc tấn công có sử dụng các từ điển. Điều này có nghĩa là bạn có thể gia tăng sự an toàn máy chủ host từ xa của bạn bằng việc vô hiệu hóa các đăng nhập bằng việc sử dụng các mật khẩu, vì thế ép tất cả những người sử dụng phải sử dụng các cặp khóa.

Việc đã tạo ra cặp khóa của bạn, tất cả điều còn lại là sao chép nửa công khai của khóa cho máy ở xa. Bạn làm điều đó bằng việc sử dụng lệnh ssh-copy-id.

$ ssh-copy-id -i ~/.ssh/id_dsa.pub user@remote

Điều này bổ sung khóa của bạn vào danh sách các khóa được phép của máy ở xa. Chỉ là để có ở phía an toàn, nó cũng tốt để đảm bảo rằng ~/.ssh and ~/.ssh/authorized_keys sẽ không được viết bởi bất kỳ người sử dụng nào khác bạn. Bạn có thể phải sửa điều này bằng việc sử d ụng lệnh chmod.

Việc đã bổ sung khóa cho máy ở xa, bạn bây giờ nên có khả năng ssh tới nó mà không cần sử dụng một mật khẩu.

$ ssh user@remote

Điều này áp dụng cho tất cả các cơ chế dựa vào sshd. Nên bạn có thể scp một cách tự do, cũng như mount các phần của hệ thống tệp từ xa bằng việc sử dụng sshfs.

Một sự nắm bắt tiềm tàng vấn đề 22 ở đây là nếu máy tính ở xa không cho phép các đăng nhập dựa vào mật khẩu thì thế nào. Rồi lệnh ssh-copy-id sẽ không làm việc. Thay vì bạn sẽ phải lấy các nội dung của nửa khóa công khai và bổ sung bằng tay nó vào như một dòng mới tới tệp ~/.ssh/authorized_keys trên máy tính ở xa. Đây là những gì mà lệnh ssh-copy-id làm cho bạn.

Điều này cũng nói cho bạn những gì phải làm nếu một khóa bị tổn thương, hoặc đơn giản là không sử dụng được. Đơn giản hãy loại bỏ dòng tương ứng khỏi danh sách ở xa các khóa được phép. Bạn có thể thường nhận thấy khóa theo yêu cầu từ cuối dòng nơi mà nó đọc username@hostname.

Vì thế, cho lần tiếp sau, không cần các mật khẩu nữa!

The generated file ending with pub is the public half of the pair. This can be shared with remote hosts that you want to ssh to. The other file, id_dsa, is the private half of the pair. This must be protected just as you password. I.e. do not mail this, do not store it on untrusted machines, etc.

Having a 1024 bits long key can be thought of as having a 128 characters long password. This means that the key pair method is safer than most passwords that you can remember. Keys are also completely random, so they cannot be cracked using dictionary attacks. This means that you can increase the safety of your remote host by disabling logins using passwords, thus forcing all users to use key pairs.

Having generated your key pair, all that is left is copying the public half of the key to the remote machine. You do that using the ssh-copy-id command.

$ ssh-copy-id -i ~/.ssh/id_dsa.pub user@remote

This adds your key to the remote machine's list of authorized keys. Just to be on the safe side, it is also good to ensure that the ~/.ssh and ~/.ssh/authorized_keys aren't writable by any other user than you. You might have to fix this using chmod.

Having added the key to the remote machine, you should now be able to ssh to it without using a password.

$ ssh user@remote

This applies to all sshd-based mechanisms. So you can scp freely, as well as mount parts of the remote file system using sshfs.

One potential catch twenty two issue here is if the remote machine does not allow password-based logins. Then the ssh-copy-id command will not work. Instead you will have to take the contents of the public key half and manually add it as a new line to the ~/.ssh/authorized_keys file on the remote machine. This is what the ssh-copy-id command does for you.

This also tells you what to do if a key is compromised, or simply falls into disuse. Simply remove the corresponding line from the remote's list of authorized keys. You can usually recognize the key in question from the end of the line where it reads username@hostname.

So, until next time, no more passwords!

______________________

Johan Thelin is a consultant working with Qt, embedded and free
software. On-line, he is known as e8johan.

Dịch tài liệu: Lê Trung Nghĩa

letrungnghia.foss@gmail.com

Không có nhận xét nào:

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.