SaferAccess without Passwords
Jul06, 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ờingười dịch: Hầu như ai cũng nói cần có các mật khẩuan 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ấychẳng có mật khẩu gì mới tốt thì sao.
Làmthế nào bạn chắc chắn rằng các mật khẩu của bạnlà an toàn? Bạn có thể làm cho chúng dài hơn, làm phứctạ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ừngtà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ìnhshell 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ì sshlà lựa chọn rõ ràng.
Khigõ 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ụngmột cặp khóa không đối xứng.
Mộtcặ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ộtthuậ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ểnkhai cài đặt từ lâu rồi. ĐSA an toàn hơn, nhưng đòihỏ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 khaicài đặt ssh daemon được cập nhật không phải là mộtvấ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áckhóa được tạo ra là lớn hơn so với một mật khẩucủa người sử dụng bình thường. Các khóa RSA ít nhấtlà 768 bit, mặc định 2048 bit. Các khóa DSA là 1024 là tiêuchuẩn.
Đểtạo ra một khóa DSA, hãy sử dụng lệnh sau:
$ssh-keygen -t dsa
Điềunà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ậttừ (passphrase) trong quá trình tạo khóa, bổ sung thêm choan ninh.
Howdo you make sure that your passwords are safe? You can make themlonger, complicate them by adding odd c-haracters, making sure to usedifferent passwords for each user account that you have. Or, you cansimply skip them all together.
Thesecure shell, ssh, is a key tool in any Linux user's toolbox. As soonas you have more than one machine to interact with, ssh is theobvious choice.
Whenlogging into a remote machine through ssh, you are usually promptedwith the remote user's password. An al-ternative to this is to use anasymmetric key pair.
Anasymmetric key pair consists of a private and public key. These aregenerated f-rom an algorithm - either RSA or DSA. RSA has been aroundfor a long time and is widely supported, even by old legacyimplementations. DSA is safer, but requires v2 of the ssh protocol.This is not much of an issue in an open source world - keeping thessh daemon implementation up to date is not a problem, but rather arequirement. Thus, DSA is the recommended choice, unless you have anyspecific reason to pick RSA.
Thegenerated keys are larger than a common user password. RSA keys areat least 768 bits, default 2048 bits. DSA keys are 1024, as thestandard specifies this.
Togenerate a DSA key, use the following command:
$ssh-keygen -t dsa
Thisgenerates the files ~/.ssh/id_dsa and ~/.ssh/id_dsa.pub. You canspecify a passphrase in the key generation process. This means thatthey key only can be used in combination with a passphrase, adding tothe security.
Tệpđược tạo ra kết thúc bằng pub là một nửa công khaicủa cặp khóa. Nó có thể được chia sẻ với các máychủ 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àyqua thư, không chia sẻ nó trong các máy tính không tincậ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ácmật khẩu mà bạn có thể nhớ. Các khóa cũng hoàn toànngẫ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ànmá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áccặp khóa.
Việcđã tạo ra cặp khóa của bạn, tất cả điều còn lạilà 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ềunày bổ sung khóa của bạn vào danh sách các khóa đượcphé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ềunày áp dụng cho tất cả các cơ chế dựa vào sshd. Nênbạn có thể scp một cách tự do, cũng như mount các phầncủa hệ thống tệp từ xa bằng việc sử dụng sshfs.
Mộtsự nắm bắt tiềm tàng vấn đề 22 ở đây là nếu máytính ở xa không cho phép các đăng nhập dựa vào mậtkhẩu thì thế nào. Rồi lệnh ssh-copy-idsẽ không làm việc. Thay vì bạn sẽ phải lấy các nộidung của nửa khóa công khai và bổ sung bằng tay nó vàonhư một dòng mới tới tệp ~/.ssh/authorized_keystrên máy tính ở xa. Đây là những gì mà lệnh ssh-copy-idlàm cho bạn.
Điềunày cũng nói cho bạn những gì phải làm nếu một khóabị 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ấykhóa theo yêu cầu từ cuối dòng nơi mà nó đọcusername@hostname.
Vìthế, cho lần tiếp sau, không cần các mật khẩu nữa!
Thegenerated file ending with pub is the public half of the pair. Thiscan be shared with remote hosts that you want to ssh to. The otherfile, id_dsa, is the private half of the pair. This must be protectedjust as you password. I.e. do not mail this, do not store it onuntrusted machines, etc.
Havinga 1024 bits long key can be thought of as having a 128 c-haracterslong password. This means that the key pair method is safer than mostpasswords that you can remember. Keys are also completely random, sothey cannot be cracked using dictionary attacks. This means that youcan increase the safety of your remote host by disabling logins usingpasswords, thus forcing all users to use key pairs.
Havinggenerated your key pair, all that is left is copying the public halfof the key to the remote machine. You do that using the ssh-copy-idcommand.
$ssh-copy-id -i ~/.ssh/id_dsa.pub user@remote
Thisadds your key to the remote machine's list of authorized keys. Justto 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.
Havingadded the key to the remote machine, you should now be able to ssh toit without using a password.
$ssh user@remote
Thisapplies to all sshd-based mechanisms. So you can scp freely, as wellas mount parts of the remote file system using sshfs.
Onepotential catch twenty two issue here is if the remote machine doesnot allow password-based logins. Then the ssh-copy-id command willnot work. Instead you will have to take the contents of the publickey half and manually add it as a new line to the~/.ssh/authorized_keys file on the remote machine. This is what thessh-copy-id command does for you.
Thisalso tells you what to do if a key is compromised, or simply fallsinto disuse. Simply remove the corresponding line f-rom the remote'slist of authorized keys. You can usually recognize the key inquestion f-rom the end of the line whe-re it reads username@hostname.
So,until next time, no more passwords!
______________________
JohanThelin is a consultant working with Qt, embedded and free
software.On-line, he is known as e8johan.
Dịchtài liệu: Lê Trung Nghĩa
Ý kiến bạn đọc
Những tin mới hơn
Những tin cũ hơn
Blog này được chuyển đổi từ http://blog.yahoo.com/letrungnghia trên Yahoo Blog sang sử dụng NukeViet sau khi Yahoo Blog đóng cửa tại Việt Nam ngày 17/01/2013.Kể từ ngày 07/02/2013, thông tin trên Blog được cập nhật tiếp tục trở lại với sự hỗ trợ kỹ thuật và đặt chỗ hosting của nhóm phát triển...