|
|
1.1 ! root 1: % Run this file through LaTex with the appropriate wrapper. ! 2: ! 3: \chapter{Security Management} ! 4: ! 5: \section{Configuration} ! 6: ! 7: \subsection{Compilation Options} ! 8: ! 9: The configuration file \file{h/config.h} in the ISODE source tree can be edited ! 10: to select various options. These are compile-time options --- QUIPU must be ! 11: re-compiled and re-installed before they take effect. ! 12: ! 13: To select an option, add a line like this : ! 14: \begin{quote}\begin{verbatim} ! 15: #define <option_name> ! 16: \end{verbatim}\end{quote} ! 17: ! 18: (Instead of $<$option\_name$>$, type the name of the option that you want). ! 19: ! 20: If there is a line explicitly cancelling the option that you have selected, ! 21: it must be removed. Such lines look like this : ! 22: \begin{quote}\begin{verbatim} ! 23: #undef <option_name> ! 24: \end{verbatim}\end{quote} ! 25: ! 26: The available options are as follows : ! 27: ! 28: \begin{describe} ! 29: \item [NO\_STATS] ! 30: ! 31: This option results in a DSA that doesn't record any usage and ! 32: audit information. From the standpoint of security, it is advisable not ! 33: to select this option. Audit logs are very useful for detecting and tracing ! 34: attempts to break the security of the system. ! 35: ! 36: \item[HAVE\_PROTECTED] ! 37: ! 38: This option results in a DSA that can perform protected simple authentication. ! 39: \item[HAVE\_RSA] ! 40: ! 41: This option results in a DSA that can perform strong authentication. ! 42: \end{describe} ! 43: ! 44: To build a DSA that can perform strong or protected simple authentication, ! 45: you will need additional files that are not part of the ISODE. ! 46: These files (the ``QUIPU security upgrade'') are distributed by ! 47: University College London. For further information, contact : ! 48: ! 49: \begin{verse} ! 50: Steve Kille \\ ! 51: Department of Computer Science \\ ! 52: University College London \\ ! 53: Gower Street, \\ ! 54: London, \\ ! 55: England ! 56: \end{verse} ! 57: ! 58: \begin{verse} ! 59: Internet: [email protected] ! 60: \end{verse} ! 61: ! 62: \subsection{Quipu Userid} ! 63: ! 64: The DSA should not run under the userid of the super-user ({\em root}). The ! 65: reason for this is that no application should be run as root unless it is ! 66: absolutely necessary, just in case an undetected bug causes it to malfunction. ! 67: (A process running as an ordinary user will be halted if it starts to ! 68: misbehave; One running as root might carry on and delete important files, for ! 69: example). ! 70: ! 71: Ideally, the DSA should be assigned a special userid to run under. (Called, ! 72: for example, ``quipu''). If this is not possible, it should run under the ! 73: userid of the DSA manager. Whichever option is taken, we shall henceforth refer ! 74: to the selected userid as ``quipu'' in the documentation. ! 75: ! 76: \subsection{File Permissions} ! 77: ! 78: The EDB files are where QUIPU stores the contents of the Directory. As these ! 79: files potentially contain sensitive information, they should be readable and ! 80: writable only by the quipu userid. ! 81: ! 82: There are two log files; one for debugging information and one for audit. ! 83: Both of these files should be readable and writable only by the quipu userid. ! 84: There is a potential problem here, in that ISODE's logging code usually makes ! 85: log files writable by everybody. To be on the safe side, make a separate ! 86: directory for QUIPU's logs (\file{/etc/isode/quipu-logs}, for example). Make this ! 87: directory only accessible by the quipu userid, and change the tailoring ! 88: parameter {\em logdir} so that the logs are written there. ! 89: ! 90: \section{Discretionary Access Control} ! 91: ! 92: The principles of discretionary access control are explained in the ! 93: Part II of this Manual. This section gives guidelines on setting the access ! 94: control lists for entries in the DIT. ! 95: ! 96: \subsection{What must be Publicly Readable} ! 97: ! 98: Some attributes are used by the Directory itself for routing and other ! 99: purposes. If these attributes are not publicly readable (and hence readable ! 100: by all DSA's) then the Directory's internal communications may fail. ! 101: If a DUA gives messages such as ``Unavailable'' this is one possible cause. ! 102: Note that there are many other possible causes of such failures --- Network ! 103: congestion or a machine being down is the most likely explanation. ! 104: ! 105: The following attributes ought to be publicly readable: ! 106: ! 107: \begin{itemize} ! 108: \item ! 109: masterDSA ! 110: \item ! 111: slaveDSA ! 112: \item ! 113: presentationAddress ! 114: \item ! 115: userCertificate ! 116: \item ! 117: treeStructure ! 118: \end{itemize} ! 119: ! 120: The {\em userPassword} attribute ought to be comparable by everybody, but not ! 121: readable. ! 122: ! 123: \section{Audit} ! 124: ! 125: \subsection{Enabling Auditing} ! 126: ! 127: The {\em stats} parameter in the {\em quiputailor} file controls how much audit ! 128: information is kept. It is advisable to enable recording of audit events at ! 129: levels {\em notice}, {\em exceptions}, and {\em fatal}. ! 130: ! 131: \subsection{Relating Events to Users} ! 132: ! 133: Most events in the usage log contain an {\em association descriptor} instead ! 134: of the name of the user who caused the event. An association descriptor is ! 135: a (small) number which identifies a connection to QUIPU. (It's rather like ! 136: knowing which terminal line a command came in on). To discover the user name, ! 137: it is necessary to scan back through the log to find the record for the start ! 138: of the association. This will contain the name of the user and how they ! 139: authenticated themselves. ! 140: ! 141: \subsection{Format of Audit Records} ! 142: ! 143: Each record in the log file is formatted as follows :- ! 144: ! 145: \begin{quote}\begin{verbatim} ! 146: <AuditRecord> ::= <month> "/" <day> <time> <process> ! 147: <pid> "(" <userid> ")" <Event> ! 148: \end{verbatim}\end{quote} ! 149: ! 150: \begin{describe} ! 151: \item [time:] ! 152: The time of the event in hh:mm:ss format. ! 153: \item [process:] ! 154: The name of the program (quipu). ! 155: \item [pid:] ! 156: The process id of the DSA. ! 157: \item [userid:] ! 158: The id of the user who started the DSA running. It is {\em not} the id ! 159: of the DUA which caused the event! ! 160: \item [Event:] ! 161: is the rest of the message. The following sections describe most of the ! 162: common messages. ! 163: \end{describe} ! 164: ! 165: ! 166: \subsection{Start of an Association} ! 167: ! 168: \begin{quote}\begin{verbatim} ! 169: <BindEvent> ::= "Bind" "(" <Integer> ")" ! 170: "(" <AuthType> ")" ! 171: ":" <DN> ! 172: <AuthType> ::= "none" | "simple" | "protected" | "strong" ! 173: \end{verbatim}\end{quote} ! 174: ! 175: For example : ! 176: ! 177: \begin{quote}\begin{verbatim} ! 178: Bind (4) (simple): c=GB@o=University College ! 179: London@ou=Computer Science@cn=Steve Kille ! 180: \end{verbatim}\end{quote} ! 181: ! 182: This means that Steve Kille has started using association descriptor 4, and ! 183: proved his identity using simple authentication (i.e. a password). ! 184: ! 185: \subsection{End of an Association} ! 186: ! 187: \begin{quote}\begin{verbatim} ! 188: <UnbindEvent> ::= "Unbind" "(" <Integer> ")" <WhoBy> ! 189: ":" <DN> <WhoBy> ::= "(by this)" | "(by that)" ! 190: \end{verbatim}\end{quote} ! 191: ! 192: For example : ! 193: ! 194: \begin{quote}\begin{verbatim} ! 195: Unbind (4) (by that): c=GB@o=University College ! 196: London@ou=Computer Science@cn=Steve Kille ! 197: \end{verbatim}\end{quote} ! 198: ! 199: This means that Steve Kille's DUA has disconnected from the DSA, and descriptor ! 200: 4 is left free for use by someone else. The "(by that)" means that the DUA, ! 201: rather than the DSA, decided to close the connection. ! 202: ! 203: \subsection{DAP Operation} ! 204: ! 205: \begin{quote}\begin{verbatim} ! 206: <DAPOperationEvent> ::= <OpType> "(" <Integer> ")" ! 207: ":" <DN> ! 208: <OpType> ::= "Read" | "Search" | "List" | "Compare" ! 209: \end{verbatim}\end{quote} ! 210: ! 211: For example : ! 212: ! 213: \begin{quote}\begin{verbatim} ! 214: Read (4): c=gb@o=Nottingham University ! 215: \end{verbatim}\end{quote} ! 216: ! 217: This means that whoever is using association 4 (Steve Kille in this example) ! 218: has read the entry for Nottingham University. ! 219: ! 220: \subsection{DAP Result} ! 221: ! 222: \begin{quote}\begin{verbatim} ! 223: <DAPResultEvent> ::= "Result sent" "(" <Integer> ")" ! 224: <DAPErrorEvent> ::= "Error sent" "(" <Integer> ")" ! 225: \end{verbatim}\end{quote} ! 226: ! 227: Each operation will normally be answered by either a result or an error. ! 228: ! 229: \subsection{Chaining} ! 230: ! 231: \begin{quote}\begin{verbatim} ! 232: <ChainingEvent> ::= "Chain" "(" <Integer> ")" ! 233: \end{verbatim}\end{quote} ! 234: ! 235: This means that the DSA has decided to contact another DSA in order to ! 236: perform the operation received previously. ! 237: ! 238: \subsection{Other Events} ! 239: ! 240: The are many other messages that can be written to the audit log. The text ! 241: messages should be self-explanatory.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.