The security of the Virtual Private Server system is assured by the use of passwords used to gain access to personal or privileged information. Since passwords play such an important role in Virtual Private Server security, there are many issues you should consider when choosing and using passwords.
Of the many possible avenues of attack that a malicious individual may resort to when attacking a Virtual Private Server, password cracking is among the most effective and useful. The UNIX operating system, upon which the Virtual Private Server system is based, maintains a list of recognized users and information about their passwords in a special file (or files) used as needed for authentication purposes. The Virtual Private Server system stores this information in a file named ~/etc/passwd located on each Virtual Private Server.
Many cracking techniques in popular usage today by malicious individuals to penetrate server security involve "dictionary guessing" where computers are used to automate a trial-and-error guessing process to discover the correct password to a User Account. As a prelude to cracking activity, these individuals will often attempt to view the ~/etc/passwd file of a server to use it as input to their automated guessing programs. Due to the design of the UNIX password scheme, the ~/etc/passwd file does not contain the actual account passwords. Passwords are instead stored as a special sequence of characters generated by a specific cryptographic algorithm, using the actual password as a encryption key to encrypt a block of known plaintext. In addition, these encrypted passwords are stored in a different file which is harder to get to without already having root access to a Virtual Private Server.
As such, knowing the contents of the ~/etc/passwd file does not provide a direct knowledge of any account passwords. However, it does offer a list of all valid accounts and a skilled hacker can quickly check the validity of a guessed password, greatly assisting any cracking efforts. Using a large word list or dictionary the attackers try every word or permutation of words in an attempt to guess the password, checking their results against the encrypted passwords until they have a match.
This process can be surprisingly successful. As a result you should not use weak passwords that could be feasibly listed in any dictionary, including any foreign language dictionary. Trivial permutations such as spelling a dictionary word or account name backwards, concatenating one or more dictionary words, and prefixing or suffixing dictionary words with letters or digits should also be avoided because they are among the first permutations a dedicated attacker will check. Characteristics of good passwords include sufficient length (traditional UNIX systems recognize and use the first eight characters of the password so plan on choosing passwords seven to eight characters in length), sufficient complexity (UNIX passwords are case sensitive, meaning that uppercase and lowercase letters are not the same, and they may also contain unusual characters such as punctuation characters, so plan on using strange or unusual capitalization and characters), and sufficient obscurity (never use a password that incorporates personal information about yourself that could be easily obtained).
In the book "Practical UNIX Security", Simson Garfinkel and Gene Spafford offer the following checklist of things to consider when choosing password. To be secure, a password should not be any of the following:
The authors continue and state that good passwords are passwords that are difficult to guess. In general, good passwords:
Remember: following a sensible password policy will help ensure that your Virtual Private Server remains the robust and secure system it should always be.