On 12/12/2016 10:41 PM, Reg Tiangha wrote:
> On 12/11/2016 11:16 PM, Reg Tiangha wrote:
>> On 12/11/2016 06:01 PM, raahe...@gmail.com
>> wrote:
>>
>>> Thanks for all your info.
>>>
>> A few last observations:
>>
>> - If you run coldkernel on a NetVM or ProxyVM, *nothing* will be able to
>> connect behind it (which kind of sucks).
>> - Dropbox no longer launches and it keeps trying to download the daemon
>> every time you start it up. Ironically, there are no issues with
>> SpiderOAK or NextCloud, but those programs don't force you to download a
>> daemon after installation.
>> - coldkernel works in a usbVM with USB input proxy, however, it does
>> *not* work with mass storage device pass-through (which also sucks) and
>> it has the added effect of locking up Qubes VM Manager once you try as well.
>>
>> Note that all of my sysVMs are running Fedora minimal templates; not
>> sure if using a Debian template would make a difference, but I would
>> suspect not. In the meantime, I've reverted all of my service VMs to use
>> normal kernels and am only running coldkernel on AppVMs.
>>
>> I wonder if properly setting RBAC rules may help with some of the
>> issues? It'd be nice to be able to figure out how to get gradm working
>> in an AppVM. Does anyone know what the /dev/grsec device is or how to
>> create it?
>>
> Looks like preliminary coldkernel support for Debian templates is now
> official:
>
> https://coldhak.ca/blog/2016/12/12/coldkernel-qubes-1.html
>
> They fixed the makefile issue so the Debian instructions as written
> should just work. They even enabled the RBAC driver in the kernel.config
> file (if any of the coldhak team is out there reading this, thanks so
> much! But if you really don't want it in your kernel, you can modify the
> coldkernel.config file with CONFIG_GRKERNSEC_NO_RBAC=y ; and if you
> really wanted SELinux in your kernel, theoretically you would add the
> various SELinux kernel config options to this file as well; you can
> Google for what those are although I haven't tried it myself).
>
> The Fedora instructions are still pending for the reasons in the blog
> post, but if people *really* want to try it on a FC template, I'll give
> you my instructions from start to finish. I'll start with how to compile
> it on an FC BuildVM, then how to install your rpms on other FC templates
> without having to reinstall the entire build environment and compiling
> each time. I used FC 24, but it should still work on FC 23.
>
> First, the Build instructions:
>
> 1) On dom0:
>
>    sudo qubes-dom0-update grub2-xen
>
> 2) On FC TemplateVM (make sure /home has at least 4GB free):
>
>   a) Install support for booting from pvgrub2 kernels:
>
>      sudo dnf install qubes-kernel-vm-support
>
>   b) Install the dev environment:
>
>      sudo dnf install hmaccalc zlib-devel binutils-devel
> elfutils-libelf-devel ncurses-devel gcc-plugin-devel wget git gnupg2 bc
> gcc-c++ rpm-build
>
>   c) Optional:  Install bison and flexx to compile gradm:
>
>      sudo dnf install bison flex
>
>
> OPTIONAL:  At this point, you can create an AppVM to do the actual
> compiling, just make sure to save the rpms and u2mfn.ko kernel module
> that you'll end up making. Otherwise, if this is the TemplateVM you
> intend to also use later on in a different AppVM, then keep going.
>
>
> 3)  Clone coldkernel from github:
>
>      wget "https://coldhak.ca/coldhak/keys/coldhak.asc"; - O coldhak.asc
>
>      gpg --import coldhak.asc
>
>      git clone https://github.com/coldhakca/coldkernel
>
>      cd coldkernel
>
>      git verify-tag coldkernel-0.9a-4.8.13
>
>      git checkout tags/coldkernel-0.9a-4.8.13
>
> 4) Build coldkernel:
>
>      make qubes-guest
>
> 5) Now you'll have made two rpms. Install them:
>
>     sudo dnf install
> kernel-headers-4.8.13_coldkernel_grsec_1-2.x86_64.rpm
> kernel-4.8.13_coldkernel_grsec_1-2.x86_64.rpm
>
>
> Now, this is the tricky part. You'll also need to compile the u2mfn.ko
> kernel module, which isn't done by default because the coldkernel kernel
> sources aren't installed by default. BUT a version of the kernel sources
> still exists in your coldkernel directory so you can use that instead to
> build it.
>
>
> 6) Symlink kernel source to where dkms can find it:
>
>      sudo ln -s /home/user/coldkernel/linux-4.8.13
> /lib/modules/4.8.13-coldkernel-grsec-1/build
>
> 7) Build the u2mfn kernel module and rebuild initramfs:
>
>      sudo dkms autoinstall -k 4.8.13-coldkernel-grsec-1
>
>      sudo dracut --regenerate-all --force
>
>
> It will compile the u2mfn kernel module and will place it in
> /lib/modules/4.8.13-coldkernel-grsec-1/extra. IF YOU INTEND TO INSTALL
> COLDKERNEL ON OTHER FC TEMPLATES, BACK THIS FILE UP!!
>
> 7b) Back up the u2mfn kernel module:
>
>      sudo cp /lib/modules/4.8.13-coldkernel-grsec-1/extra/u2mfn.ko
> /home/user/coldkernel/
>
>
> Now, you'll have your two rpms and the u2mfn kernel module in your
> coldkernel directory. Save those elsewhere if you intend on installing
> coldkernel on other machines (ex. Copy to another VM).
>
>
> Continuing on, you'll want to install grsecurity's paxctld program:
>
> 8) Grab paxctld and verify it:
>
>      wget
> https://grsecurity.net/paxctld/paxctld-systemd-1.2.1-1.x86_64.{rpm,rpm.sig}
>
>      gpg (or it might be gpg2) --homedir=.gnupg --verify
> paxctld-systemd-1.2.1-1.x86_64.{rpm.sig,rpm}
>
> 9) Install and enable paxctld:
>
>      sudo dnf install paxctld-systemd-1.2.1-1.x86_64.rpm
>
>      sudo cp paxctld.conf /etc/paxctld.conf
>
>      sudo paxctld -d
>
>      sudo systemctl enable paxctld
>
> 10) Create grub config file. When you use the pvgrub2 kernel, it'll
> ignore any qvm-prefs kernelopts you may have set. So you'll need to
> create a /etc/default/grub file containing your kernelopts (ex.
> GRUB_CMDLINE_LINUX="nopat"). Once done, run:
>
>      sudo grub2-mkconfig -o /boot/grub2/grub.cfg
>
>
> Shutdown the VM, and assuming you did this all on a Template VM, change
> its kernel to pvgrub2 and start it up. If you did it on an AppVM, all of
> the system changes will be erased, making it really important to have
> backed up that u2mfn file.
>
> If you want to install this on other FC templates without having to
> recompile, make sure to back up the:
>
>      - kernel and kernel-header rpms
>
>      - the paxctld rpm and conf file
>
> to another machine.
>
>
> HOW TO INSTALL ON OTHER FC TEMPLATES:
>
> 1) Copy the linux and linux-headers rpm files as well as the u2mfn.ko
> file to the FC template you want to install it on.
>
> 2) Install pvgrub2 support:
>
>      sudo dnf install qubes-kernel-vm-support grub2-tools (and bison and
> flex if you'll be compiling gradm on it as well)
>
> 3) Install the coldkernel rpms:
>
>      sudo dnf install
> kernel-headers-4.8.13_coldkernel_grsec_1-2.x86_64.rpm
> kernel-4.8.13_coldkernel_grsec_1-2.x86_64.rp
>
> 4) Copy the u2mfn kernel module to the kernel module's directory:
>
>      sudo cp u2mfn.ko /lib/modules/4.8.13-coldkernel-grsec-1/extra/
>
> 5) Rebuild kernel module map:
>
>      sudo depmod -v 4.8.13-coldkernel-grsec-1
>
> 6) Regenerate initramfs:
>
>      sudo dracut --regenerate-all --force
>
> 7)  Install grub (don't forget to make your /etc/default/grub file if
> you need to pass additional kernel options):
>
>      sudo grub2-mkconfig -o /boot/grub2/grub.cfg
>
> 8)  Install paxctld as per the instructions above.
>
>
> That should do it. Once you boot into the gresecurity environment,
> you'll then be able to compile gradm and use that to profile your machine.
>
> Unfortunately, I was hoping I could do that to profile ServiceVMs, but I
> still have the same issues as before, mainly any AppVM set to use a
> coldkernel-enabled Proxy or NetVM refuses to start (libxenlight throws
> an error), and Qubes VM Manager crashes any time you try to attach a USB
> device to another VM using a sys-usb VM with coldkernel. I don't know
> how to fix this; I tried tracing things manually and using paxctl to
> disable memory protections on various qubes binaries (FYI: running
> paxctl -cm on the dropbox binary in your home directory allows it to
> work again), but it was like trying to find a needle in a haystack. I
> don't know enough about the Qubes architecture to even know where to begin.
>
> But hopefully my instructions will allow other people to try it for
> themselves and help test this stuff out. Good luck, and thanks again to
> the coldhak crew for all their hard work!!
>
>
Ah crap. Step 2 should read:

   sudo dnf install qubes-kernel-vm-support grub2-common

Otherwise, you won't be able to install grub on the vm. Don't forget it!


-- 
You received this message because you are subscribed to the Google Groups 
"qubes-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to qubes-users+unsubscr...@googlegroups.com.
To post to this group, send email to qubes-users@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/qubes-users/o2o1rs%244ml%242%40blaine.gmane.org.
For more options, visit https://groups.google.com/d/optout.

Reply via email to