黑客培训教程

源代码在线查看: the unix operating system (berkley 4.2).txt

软件大小: 9884 K
上传用户: teasler111
关键词: 黑客 培训教程
下载地址: 免注册下载 普通下载 VIP

相关代码

								Following is all the information that you need to understand the workings of				the UNIX operating system (Berkley 4.2).								Patched together by The War												On the security side of UNIX:				-----------------------------				On the Security of UNIX Dennis M. Ritchie Recently there has been much interest				in the security aspects of operating systems and software. At issue is the				ability to prevent undesired disclosure of information, destruction of				information, and harm to the functioning of the system. This paper discusses				the degree of security which can be provided under the system and offers a				number of hints on how to improve security. The first fact to face is that was				not developed with security, in any realistic sense, in mind; this fact alone				guarantees a vast number of holes. (Actually the same statement can be made				with respect to most systems.) The area of security in which is theoretically				weakest is in protecting against crashing or at least crippling the operation				of the system.				   The problem here is not mainly in uncritical acceptance of bad parameters				to system calls there may be bugs in this area, but none are known- but rather				in lack of checks for excessive consumption of resources. Most notably, there				is no limit on the amount of disk storage used, either in total space allocated				or in the number of files or directories. Here is a particularly ghastly shell				sequence guaranteed to stop the system:								     while :; do				         mkdir x				         cd x				      done 								Ether a panic will occur because all the i-nodes on the device are used up, 				or all the disk blocks will be consumed, thus preventing anyone from 				writing files on the device.  In this version  of the system, users are 				prevented from creating more than a set number of processes simultaneously, so				unless users are in collusion it is unlikely that any one can stop the 				system altogether.  However, creation of 20 or so CPU or disk-bound jobs  				leaves  few  resources available for others.  Also, if many large jobs are 				run simultaneously, swap space may run out, causing a panic.  It should be 				evident that excessive consumption of disk space, files, swap space, and  				processes can  easily occur accidentally in malfunctioning programs				as well as at command level.  In fact is  essentially defenseless against 								this kind of abuse, nor is there any easy fix.  The best that can be said is				that it is generally fairly easy to detect what has happened when disaster				strikes, to identify the user responsible, and take appropriate  action.				In practice, we  have found that difficulties in this area are rather rare,				but we have not been faced with malicious users, and enjoy a fairly generous				supply of resources which have served to cushion us against accidental				overconsumption. The picture is considerably brighter in the area of protection				of information from unauthorized perusal and destruction. Here the degree of				security seems (almost) adequate theoretically, and the problems lie more in				the necessity for care in the actual use of the system. Each file has				associated with it eleven bits of protection information together				with a user identification number and a usergroup identification number (UID				and GID).  Nine of the protection bits are used to specify independently				permission to read, to write, and to execute the file to the user himself,				to members of the user's group, and to all other users.  Each process 				generated by or for a user has associated with it an effective UID and				a real UID, and an effective and real GID.  When an attempt is made to access				the file for  reading, writing,  or  execution, the user process's effective				UID is compared against the file's UID; if a match is  obtained, access is				granted provided the read, write, or execute bit respectively for the user 				himself is present.  If the UID for the file and  for the process fail to				match, but the GID's do match, the group bits are used; if the GID's do 				not match, the bits  for other users are tested.  The last two bits of each 				file's protection information, called the set-UID and set-GID  bits, are used				only when the file is executed as a program.  If, in this case, the set-UID				bit is on for the  file, the effective UID for the process is changed to the 				UID associated with the file; the change persists until the process 								terminates or until the UID changed again by another execution of a set-UID				file.  Similarly the effective  group ID of a process is changed to the GID 				associated with a file when that file is executed and has the set-GID  bit 				set.  The real UID and GID of a process do not change when any file is				executed, but only as the result of a privileged system call.  The basic				notion of the set-UID and set-GID bits is that one may write a program which  				is executable by others and which maintains files accessible to others 				only by that program.  The classical example is the game-playing  program  				which maintains records of the scores of its players.  The program itself has				to read and write the score file, but no one but the game's sponsor can be 				allowed unrestricted access to the file lest they manipulate the game to their				own advantage.  The solution is to turn on the set-UID bit of the game program.				When, and only when, it is invoked by players of the game, it may update the 				score file but ordinary programs executed by others cannot access the 				score.  There are a number of special cases involved in determining access 				permissions.  Since executing a directory as a program is a meaningless				operation, the execute-permission bit, for directories, is taken instead to 				mean permission to  earch  he directory for a given file during the scanning of				a path name; thus if a directory  has execute  permission but no read 				permission for a given user, he may access files with known names in the  				directory, but may not read (list) the entire contents of the directory. Write				permission on a directory is interpreted to mean  that the user may 				create and delete files in that directory; it is impossible for any 				user to write directly into any directory.  Another, and from the point				of view of security, much more serious special case is that there is a ``super				user'' who is able  to read any file and write any nondirectory.  The				super-user is also able to change the protection mode and  the owner UID and 								GID of any file and to invoke privileged system calls.  It must be 				recognized that the mere notion of a super-user is a theoretical, and 				usually practical, blemish on any protection scheme.  The first necessity				for a secure system is of course arranging that all files and 				directories have the proper protection modes. Traditionally, software has been				exceedingly permissive in this regard; essentially all commands create files  				readable and writable by everyone. In the current version, this policy may be				easily adjusted to suit the needs of the  installation or the individual 				user.  Associated with each process and its descendants is a mask, which is in				effect with the mode of every file and directory created by that process. In 				this way, users can arrange that, by default, all their files are no more 				accessible than they wish.  The standard mask, set by allows all 				permissions to the user himself  and to his group, but disallows writing by				others.  To maintain both data privacy and data integrity, it is necessary, 				and largely sufficient, to make one's files inaccessible to others.  The lack				of sufficiency could follow from the existence of set-UID programs created 				by the user and the possibility of total breach of system security in one 				of the ways discussed below  (or one of the ways not discussed below).  For				greater protection, an encryption scheme is available.  Since the editor 				is able to create encrypted documents, and the command can be used to pipe				such documents into the other text-processing programs, the length of time				during which cleartext versions need  be  available is strictly limited. The 				encryption scheme used is not one of the strongest known, but it is judged 				adequate, in the sense that  cryptanalysis is likely to require 				considerably more effort than more direct methods of reading the encrypted				files.  For example, a user who stores data that he regards as truly secret				should be aware that he is implicitly trusting the system administrator not								to install a version of the crypt command that stores every typed 				password in a  file.  Needless to say, the system administrators must be at 				least as careful as their most demanding user to place the correct 				protection mode on the files under their control.  In particular, it is 				necessary that  special files be protected from  writing, and probably 				reading, by ordinary users when they store sensitive files belonging to 				other users.  It is easy to write programs that examine and change files 				by accessing the device on which the files live.  On the issue of  password 				security, is probably better than most systems.  Passwords are stored in an 				encrypted form which, in the absence of serious attention from specialists in				the field, appears reasonably secure,  provided its  limitations are				understood.  In the current version, it  is based on a slightly defective				version of the Federal DES;  it  is  purposely defective so that easily-				available hardware is useless for attempts at exhaustive key-search.				Since both the encryption algorithm and the encrypted passwords are available,				exhaustive enumeration of potential passwords is still feasible  up to a				point.  We have observed that users choose passwords that are easy to				guess: they are short, or from a limited alphabet, or in a dictionary.				Passwords should be at least six characters long and randomly  chosen				from an alphabet which includes digits and special characters.  Of course				there also exist feasible non-cryptanalytic ways of finding out				passwords.  For example: write a program which types out ``login:'' on				the typewriter and  copies  whatever is  typed to a file of your own.  Then				invoke the command and go away until the victim  arrives.   The  set-UID  (				set-GID) notion must be used carefully if any security is to be maintained.				The first thing to keep in mind is that a  writable set-UID file can have				another program copied onto it.  For example, if the super-user command is								writable,  anyone can copy the shell onto it and get a password-free version				of A more subtle problem can come from set-UID programs which are not				sufficiently careful of what is fed into them.  To take an obsolete				example, the previous version of the command was set-UID and owned by the				super-user.  This version sent mail to the recipient's own directory.  The				notion was that one should be able to send mail to anyone even if they want				to protect their directories from writing.  The trouble  was that was				rather dumb: anyone could  mail someone  else's private file to himself.  Much				more serious is the following scenario:  make  a file with a line like one in				the password file which allows one to log in as the  super-user.  Then make a				link  named  ``.mail'' to the password file in some writable directory on the				same device as the password  file (say/tmp).  Finally mail the bogus login				line to /tmp/.mail; You can then login as the superuser, clean up the 				incriminating evidence, and have your will.  The fact that users can mount 				their own disks and tapes as file systems can be another way of gaining 				superuser status.  Once a disk pack is mounted, the system believes what is on				it. Thus one can take a  blank disk pack, put on it anything desired, and 				mount it.  There are obvious and  unfortunate consequences.   For 				example: a mounted disk with garbage onit will crash the system; one of the 				files  on  the  mounted disk can easily  be a password-free version of other 				files can be unprotected entries for special files.  The only easy fix for 				this problem is to forbid the use of to unprivileged users.  A partial				solution, not so restrictive, would be  to have  the  command examine the				special file for bad data, set-UID  programs owned by others, and				accessible special files, and balk at  unprivileged invokers.								-				Info about the /etc/passwd file:								---								NME				     passwd - password file								DSCRIPTION				     Passwd contains for each user the 				following information:								    name (login name, contains no 				upper case)				     encrypted password				     numerical user ID				     numerical group ID				     user's real name, office, 				extension, home phone.				     initial working directory				     program to use as Shell								    The name may contain `&', meaning insert the login name.				     This information is set by the chfn(1) command and used by				     the finger(1) command.								    This is an ASCII file.  Each field within each user's entry				     is separated from the next by a colon.  Each user is				     separated from the next by a new line.  If the password				     field is null, no password is demanded; if the Shell field				     is null, then /bin/sh is used.								    This file resides in directory / etc.  Because of the				     encrypted passwords, it can and does have general read				     permission and can be used, for example, to map numerical user				     ID's to names.								    Appropriate precautions must be taken to lock the file				     against changes if it is to be edited with a text editor;				     vipw(8) does the necessary locking.								FLES				     /etc/passwd								SE ALSO								     getpwent(3), login(1), crypt(3), 				passwd(1), group(5),				     chfn(1), finger(1), vipw(8), 				adduser(8)								BGS				     A binary indexed file format should be available for fast access.								    User information (name, office, etc.) should be stored elsewhere.				---								   Now if you have had the patience to read all of this and you have digested				it you know everything that you need to know about the Unix system to hold up				your end of an intelligent conversation.								Have fun!											

相关资源