| 1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 | 
|---|
| 2 | <html>
 | 
|---|
| 3 | <head>
 | 
|---|
| 4 | <title>HOWTO samhain+GnuPG</title>
 | 
|---|
| 5 | <style type="text/css">
 | 
|---|
| 6 | <!--
 | 
|---|
| 7 | 
 | 
|---|
| 8 | html { background: #eee; color: #000; }
 | 
|---|
| 9 | 
 | 
|---|
| 10 | body { background: #eee; color: #000; margin: 0; padding: 0;}
 | 
|---|
| 11 | 
 | 
|---|
| 12 | div.body {
 | 
|---|
| 13 |         background: #fff; color: #000;
 | 
|---|
| 14 |         margin: 0 1em 0 1em; padding: 1em;
 | 
|---|
| 15 |         font-family: serif;
 | 
|---|
| 16 |         font-size: 1em; line-height: 1.2em;
 | 
|---|
| 17 |         border-width: 0 1px 0 1px;
 | 
|---|
| 18 |         border-style: solid;
 | 
|---|
| 19 |         border-color: #aaa;
 | 
|---|
| 20 | }
 | 
|---|
| 21 | 
 | 
|---|
| 22 | div.block {
 | 
|---|
| 23 |         background: #b6c5f2; color: #000;
 | 
|---|
| 24 |         margin: 1em; padding: 0 1em 0 1em;
 | 
|---|
| 25 |         border-width: 1px;
 | 
|---|
| 26 |         border-style: solid;
 | 
|---|
| 27 |         border-color: #2d4488;
 | 
|---|
| 28 | }
 | 
|---|
| 29 | 
 | 
|---|
| 30 | div.warnblock {
 | 
|---|
| 31 |         background: #b6c5f2; color: #000;
 | 
|---|
| 32 |         margin: 1em; padding: 0 1em 0 1em;
 | 
|---|
| 33 |         border-width: 1px;
 | 
|---|
| 34 |         border-style: solid;
 | 
|---|
| 35 |         border-color: #FF9900;
 | 
|---|
| 36 | }
 | 
|---|
| 37 | 
 | 
|---|
| 38 | table {
 | 
|---|
| 39 |         background: #F8F8F8; color: #000;
 | 
|---|
| 40 |         margin: 1em;
 | 
|---|
| 41 |         border-width: 0 0 0 1px;
 | 
|---|
| 42 |         border-style: solid;
 | 
|---|
| 43 |         border-color: #C0C0C0;
 | 
|---|
| 44 | }
 | 
|---|
| 45 | 
 | 
|---|
| 46 | td {
 | 
|---|
| 47 |         border-width: 0 1px 1px 0;
 | 
|---|
| 48 |         border-style: solid;
 | 
|---|
| 49 |         border-color: #C0C0C0;
 | 
|---|
| 50 | }
 | 
|---|
| 51 | 
 | 
|---|
| 52 | th {
 | 
|---|
| 53 |         background: #F8F8FF;
 | 
|---|
| 54 |         border-width: 1px 1px 2px 0;
 | 
|---|
| 55 |         border-style: solid;
 | 
|---|
| 56 |         border-color: #C0C0C0;
 | 
|---|
| 57 | }
 | 
|---|
| 58 | 
 | 
|---|
| 59 | 
 | 
|---|
| 60 | /* body text, headings, and rules */
 | 
|---|
| 61 | 
 | 
|---|
| 62 | p { margin: 0; text-indent: 0em; margin: 0 0 0.5em 0 }
 | 
|---|
| 63 | 
 | 
|---|
| 64 | h1, h2, h3, h4, h5, h6 {
 | 
|---|
| 65 |         color: #206020; background: transparent;
 | 
|---|
| 66 |         font-family: Optima, Arial, Helvetica, sans-serif;
 | 
|---|
| 67 |         font-weight: normal;
 | 
|---|
| 68 | }
 | 
|---|
| 69 | 
 | 
|---|
| 70 | h1 { font-size: 1.69em; margin: 1.4em 0 0.4em 0; }
 | 
|---|
| 71 | h2 { font-size: 1.44em; margin: 1.4em 0 0.4em 0; }
 | 
|---|
| 72 | h3 { font-size: 1.21em; margin: 1.4em 0 0.4em 0; }
 | 
|---|
| 73 | h4 { font-size: 1.00em; margin: 1.4em 0 0.4em 0; }
 | 
|---|
| 74 | h5 { font-size: 0.81em; margin: 1.4em 0 0.4em 0; }
 | 
|---|
| 75 | h6 { font-size: 0.64em; margin: 1.4em 0 0.4em 0; }
 | 
|---|
| 76 | 
 | 
|---|
| 77 | hr {
 | 
|---|
| 78 |         color: transparent; background: transparent;
 | 
|---|
| 79 |         height: 0px; margin: 0.6em 0;
 | 
|---|
| 80 |         border-width: 1px ;
 | 
|---|
| 81 |         border-style: solid;
 | 
|---|
| 82 |         border-color: #999;
 | 
|---|
| 83 | }
 | 
|---|
| 84 | 
 | 
|---|
| 85 | /* bulleted lists and definition lists */
 | 
|---|
| 86 | 
 | 
|---|
| 87 | ul { margin: 0 1em 0.6em 2em; padding: 0; }
 | 
|---|
| 88 | li { margin: 0.4em 0 0 0; }
 | 
|---|
| 89 | 
 | 
|---|
| 90 | dl { margin: 0.6em 1em 0.6em 2em; }
 | 
|---|
| 91 | dt { color: #285577; }
 | 
|---|
| 92 | 
 | 
|---|
| 93 | tt { color: #602020; }
 | 
|---|
| 94 | 
 | 
|---|
| 95 | /* links */
 | 
|---|
| 96 | 
 | 
|---|
| 97 | a.link {
 | 
|---|
| 98 |         color: #33c; background: transparent;
 | 
|---|
| 99 |         text-decoration: none;
 | 
|---|
| 100 | }
 | 
|---|
| 101 | 
 | 
|---|
| 102 | a:hover {
 | 
|---|
| 103 |         color: #000; background: transparent;
 | 
|---|
| 104 | }
 | 
|---|
| 105 | 
 | 
|---|
| 106 | body > a {
 | 
|---|
| 107 |         font-family: Optima, Arial, Helvetica, sans-serif;
 | 
|---|
| 108 |         font-size: 0.81em;
 | 
|---|
| 109 | }
 | 
|---|
| 110 | 
 | 
|---|
| 111 | h1, h2, h3, h4, h5, h6 {
 | 
|---|
| 112 |         color: #2d5588; background: transparent;
 | 
|---|
| 113 |         font-family: Optima, Arial, Helvetica, sans-serif;
 | 
|---|
| 114 |         font-weight: normal;
 | 
|---|
| 115 | }
 | 
|---|
| 116 | 
 | 
|---|
| 117 |   -->
 | 
|---|
| 118 | </style></head>
 | 
|---|
| 119 | 
 | 
|---|
| 120 | <body>
 | 
|---|
| 121 | <div class="body">
 | 
|---|
| 122 | <p style="text-align: center; background: #ccc; border: 1px solid #2d5588;"><a 
 | 
|---|
| 123 |    style="text-decoration: none;" 
 | 
|---|
| 124 |    href="http://www.la-samhna.de/samhain/">samhain file integrity 
 | 
|---|
| 125 |    scanner</a> | <a style="text-decoration: none;" 
 | 
|---|
| 126 |    href="http://www.la-samhna.de/samhain/s_documentation.html">online 
 | 
|---|
| 127 |    documentation</a></p>
 | 
|---|
| 128 | <br><center>
 | 
|---|
| 129 | <h1>Using samhain with GnuPG</h1>
 | 
|---|
| 130 | </center>
 | 
|---|
| 131 | <br>
 | 
|---|
| 132 | <hr>
 | 
|---|
| 133 | <p>
 | 
|---|
| 134 | This document aims to explain how to use samhain with <b>signed configuration
 | 
|---|
| 135 | and database files</b> which are checked by invoking GnuPG.
 | 
|---|
| 136 | </p>
 | 
|---|
| 137 | <h2>Introduction</h2>
 | 
|---|
| 138 | <p>
 | 
|---|
| 139 | Samhain can be compiled to recognize PGP signatures on configuration and
 | 
|---|
| 140 | database files and to invoke GnuPG in order to check such signatures.
 | 
|---|
| 141 | (<b>Note:</b> while the application usually is referred to as <i>GnuPG</i>,
 | 
|---|
| 142 | the executable itself is called <i>gpg</i>).
 | 
|---|
| 143 | </p>
 | 
|---|
| 144 | <p>
 | 
|---|
| 145 | If samhain is compiled with this option, then 
 | 
|---|
| 146 | </p>
 | 
|---|
| 147 | 
 | 
|---|
| 148 | <ol>
 | 
|---|
| 149 | <li>
 | 
|---|
| 150 | both the <i>configuration file</i>
 | 
|---|
| 151 | and the <i>file signature database</i> must be signed, and
 | 
|---|
| 152 | </li>
 | 
|---|
| 153 | <li>
 | 
|---|
| 154 | for both files the signatures must verify correctly, 
 | 
|---|
| 155 | </li>
 | 
|---|
| 156 | <li>
 | 
|---|
| 157 | otherwise samhain will abort.
 | 
|---|
| 158 | </li>
 | 
|---|
| 159 | </ol>
 | 
|---|
| 160 | 
 | 
|---|
| 161 | 
 | 
|---|
| 162 | <h2>Prerequisites</h2>
 | 
|---|
| 163 | <ul>
 | 
|---|
| 164 | <li>
 | 
|---|
| 165 | <p>
 | 
|---|
| 166 | Obviously you need <i>gpg</i> (GnuPG), and you must 
 | 
|---|
| 167 | have created a key pair with:
 | 
|---|
| 168 | </p><p>
 | 
|---|
| 169 | <tt>   gpg --gen-key</tt>
 | 
|---|
| 170 | </p><p>
 | 
|---|
| 171 | (it does not really matter which type of key, the defaults are ok).
 | 
|---|
| 172 | </p><p>
 | 
|---|
| 173 | GnuPG uses a public-key algorithm: the key pair consists of
 | 
|---|
| 174 | </p>
 | 
|---|
| 175 | <ul>
 | 
|---|
| 176 | <li> 
 | 
|---|
| 177 | a <i>secret key</i> that is
 | 
|---|
| 178 | used for signing and stored in <b>~user/.gnupg/secring.gpg</b>, and
 | 
|---|
| 179 | </li><li>
 | 
|---|
| 180 | a <i>public key</i> used for verifying the signature, and stored in
 | 
|---|
| 181 | <b>~user/.gnupg/pubring.gpg</b>. 
 | 
|---|
| 182 | </li>
 | 
|---|
| 183 | </ul>
 | 
|---|
| 184 | <p>
 | 
|---|
| 185 | The secret key obviously should be
 | 
|---|
| 186 | kept secret, while the public key can be published.
 | 
|---|
| 187 | </p>
 | 
|---|
| 188 | </li>
 | 
|---|
| 189 | <li>
 | 
|---|
| 190 | <p>
 | 
|---|
| 191 | You need to compile samhain with support for GnuPG:
 | 
|---|
| 192 | </p><p>
 | 
|---|
| 193 | <tt>   ./configure --with-gpg=/path/to/gpg [more options]</tt>
 | 
|---|
| 194 | </p><p>
 | 
|---|
| 195 | </li>
 | 
|---|
| 196 | </ul>
 | 
|---|
| 197 | 
 | 
|---|
| 198 | <p>
 | 
|---|
| 199 | <b>Note 1:</b> If compiled with support for GnuPG, 
 | 
|---|
| 200 | the TIGER192 checksum of the gpg
 | 
|---|
| 201 | executable will be compiled into samhain, and the gpg executable will
 | 
|---|
| 202 | be checksummed (to verify its integrity) before invoking it. If you
 | 
|---|
| 203 | don't like this, you should add the <i>configure</i> option:
 | 
|---|
| 204 | </p><p>
 | 
|---|
| 205 | <tt>   --with-checksum=no</tt>
 | 
|---|
| 206 | </p>
 | 
|---|
| 207 | <div class="warnblock">
 | 
|---|
| 208 | <p>
 | 
|---|
| 209 | Compiling in the GnuPG checksum will tie the samhain executable to
 | 
|---|
| 210 | the gpg executable. If you upgrade GnuPG, you will need to re-compile
 | 
|---|
| 211 | samhain. If you don't like this, use <tt>'--with-checksum=no'</tt>.
 | 
|---|
| 212 | </p>
 | 
|---|
| 213 | </div>
 | 
|---|
| 214 | <p>
 | 
|---|
| 215 | <b>Note 2:</b> The mere fact that the signature
 | 
|---|
| 216 | is correct does not prove that it has been signed by <i>you</i> with
 | 
|---|
| 217 | <i>your</i> key - it just proves that it has been signed by <i>somebody</i>.
 | 
|---|
| 218 | Samhain can optionally check the <i>fingerprint</i> of the key that has been
 | 
|---|
| 219 | used to sign the files, to verify that <i>your</i> key has been used
 | 
|---|
| 220 | to sign the file(s). To enable this, use the <i>configure</i> option
 | 
|---|
| 221 | </p><p>
 | 
|---|
| 222 | <tt>   --with-fingerprint=FINGERPRINT</tt>
 | 
|---|
| 223 | </p><p>
 | 
|---|
| 224 | where FINGERPRINT is the hexadecimal fingerprint of the key as listed
 | 
|---|
| 225 | with
 | 
|---|
| 226 | </p><p>
 | 
|---|
| 227 | <tt>   gpg --fingerprint</tt>
 | 
|---|
| 228 | </p>
 | 
|---|
| 229 | 
 | 
|---|
| 230 | <h3>Example</h3>
 | 
|---|
| 231 | 
 | 
|---|
| 232 | <pre style="background-color:#DDDDDD; color:#000000">
 | 
|---|
| 233 | 
 | 
|---|
| 234 | rainer$ gpg --fingerprint rainer
 | 
|---|
| 235 | pub  1024D/0F571F6C 1999-10-31 Rainer Wichmann
 | 
|---|
| 236 |      Key fingerprint = EF6C EF54 701A 0AFD B86A  F4C3 1AAD 26C8 0F57 1F6C
 | 
|---|
| 237 | uid                            Rainer Wichmann
 | 
|---|
| 238 | sub  1024g/9DACAC30 1999-10-31
 | 
|---|
| 239 | 
 | 
|---|
| 240 | rainer$ which gpg
 | 
|---|
| 241 | /usr/bin/gpg
 | 
|---|
| 242 | 
 | 
|---|
| 243 | rainer$ ./configure --with-gpg=/usr/bin/gpg --with-fingerprint=EF6CEF54701A0AFDB86AF4C31AAD26C80F571F6C
 | 
|---|
| 244 | 
 | 
|---|
| 245 | </pre>
 | 
|---|
| 246 | 
 | 
|---|
| 247 | <h2>Signing the files</h2>
 | 
|---|
| 248 | <p>
 | 
|---|
| 249 | The <i>configuration file</i> and the 
 | 
|---|
| 250 | <i>file signature database</i> 
 | 
|---|
| 251 | (created by running <tt>samhain -t init</tt>) must be signed manually
 | 
|---|
| 252 | using the command:
 | 
|---|
| 253 | </p><p>
 | 
|---|
| 254 | <tt>   gpg -a --clearsign --not-dash-escaped /etc/samhainrc</tt><br/>
 | 
|---|
| 255 | <tt>   mv /etc/samhainrc.asc /etc/samhainrc</tt>
 | 
|---|
| 256 | </p><p>
 | 
|---|
| 257 | <i>Gpg</i> will create a <i>signed copy</i> of the file, 
 | 
|---|
| 258 | named <i>file.asc</i>.
 | 
|---|
| 259 | You need to <b>rename</b> (<tt>cp/mv</tt>) this signed copy 
 | 
|---|
| 260 | to the original filename.
 | 
|---|
| 261 | After signing the configuration file, you can initialize the database
 | 
|---|
| 262 | and sign it likewise.
 | 
|---|
| 263 | </p>
 | 
|---|
| 264 | <p>
 | 
|---|
| 265 | <b>Note 1:</b> The installation script will ask you to 
 | 
|---|
| 266 | sign the <i>configuration file</i> upon installation. 
 | 
|---|
| 267 | </p><p>
 | 
|---|
| 268 | <b>Note 2:</b> The <i>gpg</i> option  <tt>--not-dash-escaped</tt> 
 | 
|---|
| 269 | does not harm if used with the
 | 
|---|
| 270 | <i>configuration file</i>, but is only required for the 
 | 
|---|
| 271 | <i>file signature database</i>.
 | 
|---|
| 272 | </p>
 | 
|---|
| 273 | 
 | 
|---|
| 274 | <h3>TIP</h3>
 | 
|---|
| 275 | <p>
 | 
|---|
| 276 |    In the subdirectory <tt>scripts/</tt> of the source directory you will find
 | 
|---|
| 277 |    a Perl script <b>samhainadmin.pl</b> to facilitate some
 | 
|---|
| 278 |    tasks related to the administration of signed configuration and
 | 
|---|
| 279 |    database files (e.g. examine/create/remove signatures). 
 | 
|---|
| 280 |    Use with <i>--help</i> to get usage 
 | 
|---|
| 281 |    information.
 | 
|---|
| 282 | </p>
 | 
|---|
| 283 | 
 | 
|---|
| 284 | <h3>CAVEAT</h3>
 | 
|---|
| 285 | <p>
 | 
|---|
| 286 |    When signing, the option <i>--not-dash-escaped</i> is
 | 
|---|
| 287 |    recommended, because otherwise the database might get corrupted. 
 | 
|---|
| 288 |    However, this implies that after a database update, 
 | 
|---|
| 289 |    you <i>must</i> remove the old signature first, before
 | 
|---|
| 290 |    re-signing the database. Without 'dash escaping', 
 | 
|---|
| 291 |    gpg will not properly handle the old signature.
 | 
|---|
| 292 |    See the tip just above.
 | 
|---|
| 293 | </p>
 | 
|---|
| 294 | 
 | 
|---|
| 295 | <h3>Example</h3>
 | 
|---|
| 296 | 
 | 
|---|
| 297 | <pre style="background-color:#DDDDDD; color:#000000">
 | 
|---|
| 298 | 
 | 
|---|
| 299 | root# gpg -a --clearsign --not-dash-escaped /etc/samhainrc
 | 
|---|
| 300 | 
 | 
|---|
| 301 | You need a passphrase to unlock the secret key for
 | 
|---|
| 302 | user: "Rainer Wichmann"
 | 
|---|
| 303 | 1024-bit DSA key, ID 0F571F6C, created 1999-10-31
 | 
|---|
| 304 | 
 | 
|---|
| 305 | root# mv  /etc/samhainrc.asc /etc/samhainrc
 | 
|---|
| 306 | root# samhain -t init
 | 
|---|
| 307 | root# gpg -a --clearsign --not-dash-escaped /var/lib/samhain/samhain_file
 | 
|---|
| 308 | 
 | 
|---|
| 309 | You need a passphrase to unlock the secret key for
 | 
|---|
| 310 | user: "Rainer Wichmann"
 | 
|---|
| 311 | 1024-bit DSA key, ID 0F571F6C, created 1999-10-31
 | 
|---|
| 312 | 
 | 
|---|
| 313 | root# mv /var/lib/samhain/samhain_file.asc /var/lib/samhain/samhain_file
 | 
|---|
| 314 | root# samhain -D -t check
 | 
|---|
| 315 | 
 | 
|---|
| 316 | </pre>
 | 
|---|
| 317 | 
 | 
|---|
| 318 | <h2>Make samhain verify the signature</h2>
 | 
|---|
| 319 | <p>
 | 
|---|
| 320 | This is the part where some people run into problems. The point is,
 | 
|---|
| 321 | when <i>gpg</i> is invoked by samhain, it must <i>find the public key</i>
 | 
|---|
| 322 | needed for verification. <i>Gpg</i> expects public keys in a file
 | 
|---|
| 323 | located at <b>~user/.gnupg/pubring.gpg</b> where <b>~user</b>
 | 
|---|
| 324 | is the home directory of the user as that <i>gpg</i> is running.
 | 
|---|
| 325 | </p><p>
 | 
|---|
| 326 | It is therefore <i>crucial</i> to include the public key corresponding
 | 
|---|
| 327 | to te secret key used for signing into the correct <b>pubring.gpg</b>
 | 
|---|
| 328 | file (this file can hold many public keys, e.g. of people sending you
 | 
|---|
| 329 | emails signed by them).
 | 
|---|
| 330 | </p><p>
 | 
|---|
| 331 | So which is the correct file? Here we have to consider two separate
 | 
|---|
| 332 | cases:
 | 
|---|
| 333 | </p>
 | 
|---|
| 334 | <ol>
 | 
|---|
| 335 | <li>The client (or standalone) samhain daemon runs with UID 0 (i.e. root),
 | 
|---|
| 336 | thus the public key must be in <b>~root/.gnupg/pubring.gpg</b>
 | 
|---|
| 337 | </li>
 | 
|---|
| 338 | <li>
 | 
|---|
| 339 | The server (yule) <i>always</i> drops root privileges (if started with), and
 | 
|---|
| 340 | runs as a <i>non-root user</i>. The username to use is compiled in,
 | 
|---|
| 341 | either with the <i>configure</i> option <tt>--enable-identity=USER</tt>,
 | 
|---|
| 342 | or by default as determined by <i>configure</i> (the first existing user
 | 
|---|
| 343 | out of the list <i>yule, daemon, nobody</i>). Thus, the public key
 | 
|---|
| 344 | must be in <b>~root/.gnupg/pubring.gpg</b> (for startup) <i>and</i>
 | 
|---|
| 345 | in <b>~non_root_user/.gnupg/pubring.gpg</b> (for reload with SIGHUP).
 | 
|---|
| 346 | </li>  
 | 
|---|
| 347 | </ol>
 | 
|---|
| 348 | <p>
 | 
|---|
| 349 | To import a public key into the public 
 | 
|---|
| 350 | keyring (pubring.gpg) of another user, you can do:
 | 
|---|
| 351 | </p><p>
 | 
|---|
| 352 | <tt>   gpg --export KEY-ID > filename</tt><br>
 | 
|---|
| 353 | <tt>   su another_user</tt><br>
 | 
|---|
| 354 | <tt>   gpg --import filename</tt>
 | 
|---|
| 355 | </p>
 | 
|---|
| 356 | <p>
 | 
|---|
| 357 | <b>Note:</b> samhain will invoke <i>gpg</i> with the options:
 | 
|---|
| 358 | </p><p>
 | 
|---|
| 359 | <tt>   --status-fd 1 --verify --homedir /homedir/.gnupg --no-tty -</tt>
 | 
|---|
| 360 | </p><p>
 | 
|---|
| 361 | and pipe the configuration/database file into <i>gpg</i>, similar to:
 | 
|---|
| 362 | </p><p> 
 | 
|---|
| 363 | <tt>cat filename | /usr/bin/gpg --status-fd 1 --verify --homedir /root/.gnupg --no-tty -</tt>
 | 
|---|
| 364 | </p><p>
 | 
|---|
| 365 | (of course samhain does not invoke cat, or the shell; the example above
 | 
|---|
| 366 | just shows how to do the same from the shell command prompt).
 | 
|---|
| 367 | </p>
 | 
|---|
| 368 | 
 | 
|---|
| 369 | <h3>Example for signature check</h3>
 | 
|---|
| 370 | <p>
 | 
|---|
| 371 | If you want to check the signature the same way samhain does, it should look
 | 
|---|
| 372 | like (note the GOODSIG and VALIDSIG keywords in the output):
 | 
|---|
| 373 | </p>
 | 
|---|
| 374 | <pre style="background-color:#DDDDDD; color:#000000">
 | 
|---|
| 375 | 
 | 
|---|
| 376 | root# cat /etc/samhainrc | gpg --status-fd 1 --verify --homedir /root/.gnupg --no-tty -
 | 
|---|
| 377 | gpg: Signature made Sat Mar 15 16:08:21 2003 CET using DSA key ID 0F571F6C
 | 
|---|
| 378 | [GNUPG:] SIG_ID 9hQvRhgjWLqyFzVOHi2b0uDmBFo 2003-03-15 1047740901
 | 
|---|
| 379 | [GNUPG:] GOODSIG 1AAD26C80F571F6C Rainer Wichmann
 | 
|---|
| 380 | gpg: Good signature from "Rainer Wichmann"
 | 
|---|
| 381 | gpg:                 aka "Rainer Wichmann"
 | 
|---|
| 382 | [GNUPG:] VALIDSIG EF6CEF54701A0AFDB86AF4C31AAD26C80F571F6C 2003-03-15 1047740901
 | 
|---|
| 383 | [GNUPG:] TRUST_ULTIMATE
 | 
|---|
| 384 | 
 | 
|---|
| 385 | </pre>
 | 
|---|
| 386 | 
 | 
|---|
| 387 | <h2>Troubleshooting</h2>
 | 
|---|
| 388 | <p>
 | 
|---|
| 389 | First and foremost, run samhain (or yule) from the command line, in non-daemon
 | 
|---|
| 390 | mode, and with the command-line option <tt>-p debug</tt> for debug-level
 | 
|---|
| 391 | output. This will print
 | 
|---|
| 392 | descriptive information on setup errors and/or relevant output from
 | 
|---|
| 393 | the GnuPG subprocess.
 | 
|---|
| 394 | </p>
 | 
|---|
| 395 | <p>
 | 
|---|
| 396 | Output from the GnuPG subprocess is marked by <b>[GNUPG:]</b>, and
 | 
|---|
| 397 | may show the following errors:
 | 
|---|
| 398 | </p>
 | 
|---|
| 399 | 
 | 
|---|
| 400 | <ul>
 | 
|---|
| 401 | <li><b>ERRSIG</b> and/or <b>NO_PUBKEY</b> indicates that gpg did not find
 | 
|---|
| 402 |     the public key to verify the signature. You should import that key
 | 
|---|
| 403 |     into the keyrings of root and (for yule additionaly) the yule user.
 | 
|---|
| 404 | </li>
 | 
|---|
| 405 | <li><b>BADSIG</b> indicates that the public key was found by gpg, but
 | 
|---|
| 406 |     the signature is invalid. Either the file has been modified after
 | 
|---|
| 407 |     signing, or a previous signature has not been removed.
 | 
|---|
| 408 | </li>
 | 
|---|
| 409 | <li><b>NODATA</b> indicates that there is no signed data, i.e. the 
 | 
|---|
| 410 |     configuration or database file is not signed at all. 
 | 
|---|
| 411 | </li>
 | 
|---|
| 412 | </ul>
 | 
|---|
| 413 | </div>
 | 
|---|
| 414 | </body>
 | 
|---|
| 415 | </html>
 | 
|---|