Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20191114070037.GA11723@pi3.com.pl>
Date: Thu, 14 Nov 2019 08:00:37 +0100
From: Adam Zabrocki <pi3@....com.pl>
To: lkrg-users@...ts.openwall.com
Subject: Re: module loading / systemd bug report / suggestion /
 my Debian packaging rationale

Hi,

On Wed, Nov 13, 2019 at 10:30:00AM +0000, Patrick Schleizer wrote:
> Adam Zabrocki:
> > It should be fine in most environment. What do you think?
> 
> 
> It's OK with me, but I still don't think a systemd unit file is the
> correct way to load a kernel module.
> 
> In the Debian package which I am intending to create, I'd just use
> system'd /usr/lib/modules-load.d mechanism. [Unless you'd oppose that.
> Then I'd follow upstream LKRG wish.] Other related concerns are replied
> to below.
> 

No concerns from my side.

> >> # module loading
> >>
> >> Another approach would be to not use a systemd unit file but instead
> >> system'd /usr/lib/modules-load.d mechanism.
> >>
> >> A drop-in configuration file snippet in folder /usr/lib/modules-load.d
> >> i.e. /usr/lib/modules-load.d/p_lkrg with contents:
> >> p_lkrg
> >>
> >> Works for me on Debian 10, buster. I think that way the module gets
> >> loaded even earlier, which should be even better.
> >>
> >> I am considering to use that mechanism for the Debian packaging that I
> >> am planning. Unless there is a reason not to use this approach.
> >>
> > 
> > Interesting. I was not aware about that feature. However, I can see a few 
> > caveats:
> > 
> >  1. You should probably provide argument to the LKRG module to change default 
> > log level (1) to be 0.
> 
> 
> The /etc/sysctl.d mechanism could be used. If I had to bet, I'd bet it
> is processed by systemd even before module loading. So module arguments
> would be load just at the right time before LKRG module load. Even the
> /usr/lib/modules-load.d mechanism might allow to pass sysctl parameters,
> I don't know yet.
> 

Fair point.

> > During the boot, kernel might generate a lot of events 
> > which forces LKRG doing verification and you might receive a lot of "System is 
> > clean!" messages.
> 
> 
> I am not worried about these. Most users (that I am working with)
> wouldn't notice any log / kernel messages. [1]
> 

OK

> > It can be configured via p_init_log_level argument.
> 
> >  2. I believe you would still want to have systemd service file which could (in 
> > the later phase of booting) reconfigure LKRG via sysctl interface (like it is 
> > doin now).
> 
> 
> Why use a systemd service file if a system administrator could easily
> use sysctl directly?
> 

I believe it's just a personal preferences. There is no real 'need' for using 
it.

> >> # module unloading
> >>
> >> scripts/bootup/systemd/lkrg.service uses "ExecStop=/sbin/rmmod p_lkrg".
> >> Why unload the kernel module at shutdown? Perhaps malware could
> >> specifically target to run after that moment? Any reason to unload?
> >> Could just keep the module?
> >>
> > 
> > The reason why we have "ExecStop" is to provide convinient way of managing LKRG 
> > via 'service' interface. E.g. if you want to update LKRG to the newer version, 
> > you can execute from the LKRG folder just the following commands:
> > 
> > make uninstall
> > make install
> > 
> > under-the-hood old LKRG will be unloaded (via 'systemctl stop lkrg.service' + 
> > 'systemctl disable lkrg.service' command).
> > 
> > You might also want to stop LKRG for some reasons and reenable it again later. 
> > This is an easy way of doing it.
> 
> 
> Right. However, using rmmod directly would be similar easy?
> 

Yep. I'm using LKRG in 'traditional way', but some people find systemd service 
file easier. That's why it's there.

> > Of course you are right that it is not ideal. The best would be to not have 
> > unloading feature at all (which is possible to achieve from the simple 
> > source-code modification) and at the same time set LKRG to the 'hiding mode'.
> 
> 
> Yes. I'd prefer that. At the moment I am not convinced that LKRG
> unloading (without reboot) is an important feature.
> 
> [1] I am coming from a usability perspective. What I am working on is
> taking great existing pieces of software that are difficult to use for
> laymen and transforming it into "mobile phone app style". I.e. make it
> easier to use for "laymen". "Dumbing it down." "ELI5". Of course, I am
> aware that there are many levels of being a technical vs non-technical
> users. Levels such as
> 
> - a) Windows desktop users, never heard of Linux
> - b) Linux desktop users
> - c) Whonix users
> - d) aware of and installing LKRG
> 
> By goal is to make LKRG easily available to groups of c) and b). Many of
> these won't be interesting in and/or understand module unloading, kernel
> messages, and whatnot.
> 
> LKRG is not something that many users would even notice. But it's added
> value. LKRG would do its thing without the user noticing much.

That's one of the goals, yes.

> Predicting from my experience, most users wouldn't be aware of LKRG. My
> goals are to provide easy installation, potentially installation by
> default. Providing value to non-technical users without them requiring
> technical knowledge.
> 
> One step at a time, but I am already wondering how a graphical user
> interface (GUI) for LKRG could be provided. Potentially invented by me.
> If exploits are detected (and killed) the user could be presented with
> the kernel log message shown in a (zenity) popup. Otherwise if LKRG
> messages are "hidden" in the kernel log, I think most users wouldn't
> notice even if LKRG had a chance to and did something good.
> 

Yep. We have/had this in mind as well. LKRG can be a core-logic module which 
might be wrapped and use in such a way. It can be a 'brain' of any ATP-like 
systems as well.

> Maybe LKRG can be considered similar to antivirus:
> 
> "A tool that is useful to check if your security concept is efficient.
> But not part of the security concept (hardening, ...) itself. If your
> antivirus found (and removed) a virus, it means your security
> precautions failed. Shut down the machine and move on to disaster
> recovery procedures."
> 
> >> # install section
> >>
> >> [Install]
> >> WantedBy=multi-user.target
> >>
> >> I am not sure that should be WantedBy=sysinit.target.
> >>
> > 
> > My knowledge of 'systemd' service is limited. If I understand it correctly, you 
> > are suggesting to load LKRG at the ealier stage, correct?
> 
> 
> Yes.
> 
> Similar discussion which made me unsure if I am right about this:
> 
> https://github.com/rustybird/corridor/issues/43
> 

Thanks,
Adam

> Kind regards,
> Patrick

-- 
pi3 (pi3ki31ny) - pi3 (at) itsec pl
http://pi3.com.pl

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.