<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hey Noah, responses inline.<br>
    <br>
    Thanks<br>
    Russ<br>
    <br>
    <div class="moz-cite-prefix">On 11/19/17 3:36 AM, Noah Dietrich
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CA+N0JEwL9sayq+=LdRP7uYHVHLesyHm6MGJwHyG+QHLKEHJgdA@mail.gmail.com">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <div dir="ltr">Hello,
        <div><br>
        </div>
        <div>While working with Snort3 (build 240), I have found some
          issues, and have a few questions and requests. I am happy to
          submit these through Github if you'd like.</div>
      </div>
    </blockquote>
    This is fine.  Whatever works for you.<br>
    <blockquote type="cite"
cite="mid:CA+N0JEwL9sayq+=LdRP7uYHVHLesyHm6MGJwHyG+QHLKEHJgdA@mail.gmail.com">
      <div dir="ltr">
        <div><br>
        </div>
        <div>1.  What is the difference between <b>ips.include</b> and
          <b>ips.rules</b>?  From the manual and examples, it looks like
          ips.include is for legacy rules (although snort3 community
          rules load fine), while ips.rules is for local rules in the
          same file.  can you clarify?</div>
      </div>
    </blockquote>
    ips.include = filename of Snort 3.0 rules you want to load.  Like
    Snort 2.X, you can put include statements in that file to include
    other files.  Snort 3.0 will not load Snort 2.X rules (but you can
    use snort2lua to convert them).<br>
    <br>
    ips.rules = string variable containing rules directly in the Lua
    file.  This is good for simple rules or test configurations or
    enabling specific builtins like this:<br>
    <br>
    local_rules =<br>
    [[<br>
    block ( gid:119; sid:16; )<br>
    block ( gid:119; sid:32; )<br>
    ]]<br>
    <br>
    ips = { rules = local_rules }<br>
    <br>
    <blockquote type="cite"
cite="mid:CA+N0JEwL9sayq+=LdRP7uYHVHLesyHm6MGJwHyG+QHLKEHJgdA@mail.gmail.com">
      <div dir="ltr">
        <div>2.  For best practices, are you expecting people to set <b>$RULE_HOME</b>
          in <b>snort_defaults.lua</b>, or should this be overwritten
          in <b>snort.lua</b>?  Should this be moved to snort.lua,
          since the word 'defaults' seems to indicate something the user
          shouldn't change.</div>
      </div>
    </blockquote>
    I am not familiar with RULE_HOME, but obviously those files are just
    starting points and should be modified to meet your needs.  That
    said, my suggestion would be to just edit snort.lua and
    copy/paste/tweak stuff from snort_defaults.lua into snort.lua or
    elsewhere.  That way you can more easily absorb any changes to
    snort_defaults.lua.<br>
    <blockquote type="cite"
cite="mid:CA+N0JEwL9sayq+=LdRP7uYHVHLesyHm6MGJwHyG+QHLKEHJgdA@mail.gmail.com">
      <div dir="ltr">
        <div>3.  If $RULE_HOME is set, when referencing rule files, you
          are now required to have all rules under that folder (with no
          explicit paths to other locations). This seems like a bug.  It
          would be nice if relative files would use the $RULES_HOME
          directory, while full paths to rule files would not use
          $RULE_HOME.</div>
      </div>
    </blockquote>
    Are you referring to RULE_PATH?  Regardless, there is no restriction
    on where your rules are located or on including one file from
    another.  Snort++ intentionally doesn't start guessing about the
    location of stuff so I wouldn't call that a bug.  Sounds like adding
    a command line option that says look for all rules files starting
    with a given path will do what you want.<br>
    <blockquote type="cite"
cite="mid:CA+N0JEwL9sayq+=LdRP7uYHVHLesyHm6MGJwHyG+QHLKEHJgdA@mail.gmail.com">
      <div dir="ltr">
        <div>4.  When using <b>ips.include</b> with a file that lists
          all rule files (example below), the file paths don't seem to
          be relative to $RULE_HOME, but are relative to the snort.lua
          file, which seems odd.</div>
      </div>
    </blockquote>
    By default, everything should be relative to your current working
    directory, which seems normal.  :)  How is this different from #3?<br>
    <blockquote type="cite"
cite="mid:CA+N0JEwL9sayq+=LdRP7uYHVHLesyHm6MGJwHyG+QHLKEHJgdA@mail.gmail.com">
      <div dir="ltr">
        <div>5.  It would be nice to be able to specify multiple rule
          files in your snort.lua, rather than listing them all in
          ips.include (or whatever). The current method of lincluding a
          list of rule files in a text file referenced from <b>ips.include
          </b>seems like a kludge and adds an extra layer of work and
          increases the chance of an issue when configuring your rules. 
          A comma-seperated list of files (relative to $RULE_HOME or
          full paths) would be helpful.</div>
      </div>
    </blockquote>
    Would this work for you (assuming the new command line option
    mentioned in #3)?<br>
    <br>
    local_rules =<br>
    [[<br>
    include one.rules<br>
    include two.rules<br>
    # ...<br>
    ]]<br>
    <br>
    ips = { rules = local_rules }<br>
    <blockquote type="cite"
cite="mid:CA+N0JEwL9sayq+=LdRP7uYHVHLesyHm6MGJwHyG+QHLKEHJgdA@mail.gmail.com">
      <div dir="ltr">
        <div>6.  Not sure if this is an issue or not, but if you specify
          the GID keyword in a rule loaded with <b>ips.include</b>,
          snort3 will segfault.</div>
      </div>
    </blockquote>
    Oops.  Any segfault is an issue but I'm unable to reproduce that. 
    Can you isolate it and send the rule?<br>
    <blockquote type="cite"
cite="mid:CA+N0JEwL9sayq+=LdRP7uYHVHLesyHm6MGJwHyG+QHLKEHJgdA@mail.gmail.com">
      <div dir="ltr">
        <div><br>
        </div>
        <div>Thank you,</div>
        <div>Noah</div>
        <div><br>
        </div>
        <div><br>
        </div>
        <div>Here is how my system is configured for the above questions
          (relevant sections only):</div>
        <div><br>
        </div>
        <div><b><u>/etc/snort/snort_defaults.lua:</u></b></div>
        <div>
          <div>RULE_PATH = '/etc/snort/rules'</div>
        </div>
        <div><br>
        </div>
        <div><b><u>/etc/snort/</u></b><b><u>snort.lua</u></b></div>
        <div>
          <div>ips =</div>
          <div>{</div>
          <div>    enable_builtin_rules = true,<br>
          </div>
          <div>    include = RULE_PATH .. '/ips.include',<br>
          </div>
          <div>}</div>
        </div>
        <div><br>
        </div>
        <div><b><u>/etc/snort/rules/ips.include</u></b><br>
        </div>
        <div>
          <div>include rules/snort3-community.rules</div>
          <div>include rules/local.rules</div>
          <div style="text-decoration-line:underline;font-weight:bold"><br>
          </div>
        </div>
        <div style="text-decoration-line:underline;font-weight:bold">ls
          -l /etc/snort/rules</div>
        <div>
          <div>-rw-r--r-- 1 root root      64 Nov 19 09:33             
            ips.include<br>
          </div>
          <div>-rw-r--r-- 1 root root    1389 Nov 19 09:36           
            local.rules</div>
          <div>-rw-r--r-- 1 root root  376241 Nov 18 13:42         
            sid-msg.map</div>
          <div>-rw-r--r-- 1 root root 1504089 Nov 18 13:36       
             snort3-community.rules</div>
          <div style="text-decoration-line:underline;font-weight:bold"><br>
          </div>
          <div style=""><b style=""><u><br>
              </u></b></div>
          <div>
            <div><b><u>noah@snort3:/etc/snort$ /bin/snort -V</u></b></div>
            <div><br>
            </div>
            <div>   ,,_     -*> Snort++ <*-</div>
            <div>  o"  )~   Version 3.0.0 (Build 240) from 2.9.8-383</div>
            <div>   ''''    By Martin Roesch & The Snort Team</div>
            <div>           <a href="http://snort.org/contact#team"
                moz-do-not-send="true">http://snort.org/contact#team</a></div>
            <div>           Copyright (C) 2014-2017 Cisco and/or its
              affiliates. All rights reserved.</div>
            <div>           Copyright (C) 1998-2013 Sourcefire, Inc., et
              al.</div>
            <div>           Using DAQ version 2.2.2</div>
            <div>           Using LuaJIT version 2.0.4</div>
            <div>           Using OpenSSL 1.0.2g  1 Mar 2016</div>
            <div>           Using libpcap version 1.7.4</div>
            <div>           Using PCRE version 8.38 2015-11-23</div>
            <div>           Using ZLIB version 1.2.8</div>
            <div>           Using FlatBuffers 1.7.0</div>
            <div>           Using Hyperscan version 4.6.0 2017-11-18</div>
            <div>           Using LZMA version 5.1.0alpha</div>
            <div style="font-weight:bold;text-decoration-line:underline"><br>
            </div>
          </div>
          <div style="text-decoration-line:underline;font-weight:bold"><br>
          </div>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Snort-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Snort-devel@lists.snort.org">Snort-devel@lists.snort.org</a>
<a class="moz-txt-link-freetext" href="https://lists.snort.org/mailman/listinfo/snort-devel">https://lists.snort.org/mailman/listinfo/snort-devel</a>

Please visit <a class="moz-txt-link-freetext" href="http://blog.snort.org">http://blog.snort.org</a> for the latest news about Snort!</pre>
    </blockquote>
    <br>
  </body>
</html>