On Mon, Jan 21, 2013 at 5:50 PM, Doug Burks <[email protected]> wrote:
> Excellent, thanks!

Should be fixed now.

> On Mon, Jan 21, 2013 at 11:48 AM, Daniel Borkmann <[email protected]> wrote:
>> On 01/21/2013 05:46 PM, Doug Burks wrote:
>>>
>>> After removing all set_ioprio_*() calls in the files pcap_mmap.c,
>>> pcap_rw.c, pcap_sg.c, it's now rotating properly:
>>>
>>> ./netsniff-ng -i eth0 -o /tmp/test/ -s --prefix snort.log. --interval
>>> 1MiB --user 1 --group 1
>>> netsniff-ng 0.5.8-rc0
>>> Running! Hang up with ^C!
>>>
>>> ^C
>>>
>>> Cannot set NIC flags!
>>>
>>>
>>> ls -alh /tmp/test
>>> total 5.0M
>>> drwxr-xr-x  2 daemon daemon 4.0K Jan 21 11:44 .
>>> drwxrwxrwt 13 root   root    12K Jan 21 11:41 ..
>>> -rw-r--r--  1 root   root   1.1M Jan 21 11:44 snort.log.1358786624.pcap
>>> -rw-r--r--  1 daemon daemon 1.1M Jan 21 11:44 snort.log.1358786641.pcap
>>> -rw-r--r--  1 daemon daemon 1.1M Jan 21 11:44 snort.log.1358786656.pcap
>>> -rw-r--r--  1 daemon daemon 1.1M Jan 21 11:44 snort.log.1358786674.pcap
>>> -rw-r--r--  1 daemon daemon 683K Jan 21 11:45 snort.log.1358786691.pcap
>>
>>
>> Okay, so I will fix things up tonight and let you know when it's upstream.
>>
>>
>>> On Mon, Jan 21, 2013 at 11:36 AM, Daniel Borkmann <[email protected]>
>>> wrote:
>>>>
>>>> On 01/21/2013 05:28 PM, Daniel Borkmann wrote:
>>>>>
>>>>>
>>>>> On 01/21/2013 05:16 PM, Doug Burks wrote:
>>>>>>
>>>>>>
>>>>>> Hi Daniel,
>>>>>>
>>>>>> I tested using options similar to what we normally use.  It writes the
>>>>>> first pcap correctly (although I notice that the ownership is
>>>>>> root:root instead of daemon:daemon), but once the 1MiB interval has
>>>>>> been reached and netsniff-ng tries to rotate to the second pcap, it
>>>>>> fails when setting io prio.
>>>>>>
>>>>>> ./netsniff-ng -i eth0 -o /tmp/test/ -s --prefix snort.log. --interval
>>>>>> 1MiB --user 1 --group 1
>>>>>> netsniff-ng 0.5.8-rc0
>>>>>> Running! Hang up with ^C!
>>>>>>
>>>>>> Failed to set io prio for pid!
>>>>>>
>>>>>>
>>>>>> ls -alh /tmp/test/
>>>>>> total 3.3M
>>>>>> drwxr-xr-x  2 daemon daemon 4.0K Jan 21 11:08 .
>>>>>> drwxrwxrwt 13 root   root    12K Jan 21 11:06 ..
>>>>>> -rw-r--r--  1 root   root   1.1M Jan 21 11:05 snort.log.1358784314.pcap
>>>>>> -rw-r--r--  1 daemon daemon   24 Jan 21 11:05 snort.log.1358784337.pcap
>>>>>>
>>>>>>
>>>>>> Any ideas?
>>>>>
>>>>>
>>>>>
>>>>> Thanks for your feedback / tests!
>>>>>
>>>>> Ideas why it fails ... yes.
>>>>>
>>>>> The privileges are currently dropped right before entering the main
>>>>> loop,
>>>>> so
>>>>> the first file is still opened as root. Basically, the issue is that in
>>>>> the
>>>>> background netsniff-ng does some more automatic tuning that requires
>>>>> privileges
>>>>> (like setting the disc I/O scheduling policy), instead of just opening a
>>>>> file
>>>>> and that's it.
>>>>>
>>>>> So in the end, it's only useful for a couple of scenarios (for trafgen
>>>>> in
>>>>> general
>>>>> it's useful, netsniff-ng: for replaying a pcap, for recording a single
>>>>> pcap, ...),
>>>>> but probably not for the use case you have. Thus, I'm afraid, sticking
>>>>> with the
>>>>> setcap workaround might be the best solution.
>>>>>
>>>>> I don't see a value in shortly regaining privileges and then dropping
>>>>> them
>>>>> again
>>>>> (if that's actually possible with effective/read IDs); probably, it
>>>>> might
>>>>> be as
>>>>> good as not dropping them at all.
>>>>>
>>>>> Opinions?
>>>>
>>>>
>>>>
>>>> If it concerns only the ioprio, we could add another pcap function that
>>>> gets
>>>> called
>>>> once before dropping the privs.
>>>>
>>>> Would it work for you, if you remove all set_ioprio_*() calls in the
>>>> files
>>>> pcap_mmap.c,
>>>> pcap_rw.c, pcap_sg.c ?
>>>>
>>>> If so, then we can do sth about it! ;-)
>>>>
>>>> Let me know. Thanks!
>>>>
>>>>
>>>>>> On Mon, Jan 21, 2013 at 5:01 AM, Daniel Borkmann <[email protected]>
>>>>>> wrote:
>>>>>>>
>>>>>>>
>>>>>>> On 01/19/2013 02:54 PM, Doug Burks wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks so much!
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> I'd be grateful if you can test it on your system.
>>>>>>>
>>>>>>> It should work for most cases. In netsniff-ng, I've seen that it exits
>>>>>>> non-gracefully
>>>>>>> when netsniff-ng is in promisc mode, since after destroying the
>>>>>>> mmap'ed
>>>>>>> rings it tries
>>>>>>> to put the card into non-promisc again, but has no rights for it
>>>>>>> (since
>>>>>>> we've dropped
>>>>>>> it). I don't think it makes much sense to regain privileged rights
>>>>>>> only
>>>>>>> for
>>>>>>> the
>>>>>>> cleanup work.
>>>>>>>
>>>>>>>
>>>>>>>> On Fri, Jan 18, 2013 at 3:37 PM, Daniel Borkmann
>>>>>>>> <[email protected]>
>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Sun, Dec 2, 2012 at 10:11 PM, Doug Burks <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Well, since you asked...  :)
>>>>>>>>>>
>>>>>>>>>> I know I can do the following to allow netsniff-ng to be run as a
>>>>>>>>>> non-root user:
>>>>>>>>>> sudo setcap
>>>>>>>>>> cap_net_raw,cap_ipc_lock,cap_sys_admin,cap_net_admin=eip
>>>>>>>>>> netsniff-ng
>>>>>>>>>>
>>>>>>>>>> But it would be quite nice if netsniff-ng had internal support for
>>>>>>>>>> dropping to a non-root user after opening the eth device.  Many
>>>>>>>>>> other
>>>>>>>>>> pcap tools (such as daemonlogger, snort, suricata, etc.) support
>>>>>>>>>> this
>>>>>>>>>> via command-line arguments like:
>>>>>>>>>> -u user -g group
>>>>>>>>>> OR
>>>>>>>>>> --user user --group group
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Done, after setup, you can now drop privileges in netsniff-ng and
>>>>>>>>> trafgen.
>>>>>>>>>
>>>>>>>>>> Thoughts?
>>>>>>>>>>
>>>>>>>>>> Thanks for your consideration!
>>>>>>>>>>
>>>>>>>>>> Doug
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Sun, Dec 2, 2012 at 3:50 PM, Daniel Borkmann
>>>>>>>>>> <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> By the way, if you have any other feature requests / wishes
>>>>>>>>>>> (besides
>>>>>>>>>>> the list in TODO) that might be useful for many users, let us
>>>>>>>>>>> know,
>>>>>>>>>>> and we'd be happy to further improve the toolkit.
>>>>>>>>>>>
>>>>>>>>>>> On Sun, Dec 2, 2012 at 5:49 PM, Daniel Borkmann
>>>>>>>>>>> <[email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Dec 2, 2012 at 5:47 PM, Doug Burks <[email protected]>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks for the always fast response!  Deploying the "tcpdump
>>>>>>>>>>>>> -dd"
>>>>>>>>>>>>> solution now.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks!
>>>>>>>>>>>>
>>>>>>>>>>>> If we have something new regarding bpfc, I'll announce it on the
>>>>>>>>>>>> list
>>>>>>>>>>>> anyway.
>>>>>>>>>>>>
>>>>>>>>>>>>> On Sun, Dec 2, 2012 at 9:00 AM, Daniel Borkmann
>>>>>>>>>>>>> <[email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Sun, Dec 2, 2012 at 2:55 PM, Doug Burks
>>>>>>>>>>>>>> <[email protected]>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Tue, Oct 30, 2012 at 10:41 AM, Daniel Borkmann
>>>>>>>>>>>>>>> <[email protected]> wrote:
>>>>>>>>>>>>>>> <snip>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> -f /etc/nsm/$HOSTNAME-$INTERFACE/bpf-pcap.conf
>>>>>>>>>>>>>>>>> This should be the same option in netsniff-ng, but my
>>>>>>>>>>>>>>>>> understanding is
>>>>>>>>>>>>>>>>> that I'll need to convert my "human-readable" bpf-pcap.conf
>>>>>>>>>>>>>>>>> using
>>>>>>>>>>>>>>>>> "tcpdump -dd"?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Yes, it you want to use filters and bpf-pcap.conf contains
>>>>>>>>>>>>>>>> tcpdump-like filters, run them through "tcpdump -dd <my
>>>>>>>>>>>>>>>> filter>" >
>>>>>>>>>>>>>>>> out.ops and then pass out.ops to netsniff-ng via "--filter
>>>>>>>>>>>>>>>> out.ops".
>>>>>>>>>>>>>>>> That's it; netsniff-ng will then automatically enable the BPF
>>>>>>>>>>>>>>>> JIT
>>>>>>>>>>>>>>>> if
>>>>>>>>>>>>>>>> it's available in your kernel. This feature translates BPF
>>>>>>>>>>>>>>>> filters
>>>>>>>>>>>>>>>> into architecture optimized machine opcodes within the
>>>>>>>>>>>>>>>> kernel.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> We've officially replaced daemonlogger with netsniff-ng and it
>>>>>>>>>>>>>>> appears
>>>>>>>>>>>>>>> to be working well!  However, we haven't included BPF
>>>>>>>>>>>>>>> functionality
>>>>>>>>>>>>>>> yet, so I need to add that now.  I can do what's described
>>>>>>>>>>>>>>> above,
>>>>>>>>>>>>>>> but
>>>>>>>>>>>>>>> the FAQ also says:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Cool, I'm very happy about that!
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> "If you try to create custom socket filters with tcpdump -dd,
>>>>>>>>>>>>>>> you
>>>>>>>>>>>>>>> have
>>>>>>>>>>>>>>> to edit the ret opcode (0x6) of the resulting filter,
>>>>>>>>>>>>>>> otherwise
>>>>>>>>>>>>>>> your
>>>>>>>>>>>>>>> payload will be cut off:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 0x6, 0, 0, 0xFFFFFFFF instead of 0x6, 0, 0, 0x00000060
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> The Linux kernel now takes skb->len instead of 0xFFFFFFFF. If
>>>>>>>>>>>>>>> you
>>>>>>>>>>>>>>> do
>>>>>>>>>>>>>>> not change it, the kernel will take 0x00000060 as buffer
>>>>>>>>>>>>>>> length
>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>> packets larger than 96 Byte will be cut off (filled with zero
>>>>>>>>>>>>>>> Bytes)!
>>>>>>>>>>>>>>> It's a bug in libpcaps filter compiler. Detailed information
>>>>>>>>>>>>>>> about
>>>>>>>>>>>>>>> this issue can be found on our blog post."
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> The linked blog post is no longer available.  So is this an
>>>>>>>>>>>>>>> issue I
>>>>>>>>>>>>>>> need to be concerned about?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Actually not anymore. I use Fedora and the tcpdump version
>>>>>>>>>>>>>> there
>>>>>>>>>>>>>> outputs:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> # tcpdump -dd ip
>>>>>>>>>>>>>> tcpdump: WARNING: eth0: no IPv4 address assigned
>>>>>>>>>>>>>> { 0x28, 0, 0, 0x0000000c },
>>>>>>>>>>>>>> { 0x15, 0, 1, 0x00000800 },
>>>>>>>>>>>>>> { 0x6, 0, 0, 0x0000ffff },
>>>>>>>>>>>>>> { 0x6, 0, 0, 0x00000000 },
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> So they have changed this from 0x00000060 into 0x0000ffff.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> For bpfc itself, I didn't have time to finish the high-level
>>>>>>>>>>>>>> compiler,
>>>>>>>>>>>>>> yet. We have an assembler-like compiler where you can also
>>>>>>>>>>>>>> create
>>>>>>>>>>>>>> filters with, but for usability you can use the method
>>>>>>>>>>>>>> described
>>>>>>>>>>>>>> above, of course.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Doug Burks
>>>>>>>>>>>>> http://securityonion.blogspot.com
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Doug Burks
>>>>>>>>>> http://securityonion.blogspot.com
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>> --
>>>>
>>>>
>>>
>>>
>>>
>>
>> --
>>
>>
>
>
>
> --
> Doug Burks
> http://securityonion.blogspot.com
>
> --
>
>

-- 


Reply via email to