BSD Now

BSD Now

Download on the App Store

BSD Now episodes

  • 175: How the Dtrace saved Christmas

    This week on BSDNow, we’ve got all sorts of post-holiday goodies to share. New OpenSSL APIs, Dtrace, OpenBSD

    This episode was brought to you by

    Headlines
    OpenSSL 1.1 API migration path, or the lack thereof

    As many of you will already be aware, the OpenSSL 1.1.0 release intentionally introduced significant API changes from the previous release. In summary, a large number of data structures that were previously publically visible have been made opaque, with accessor functions being added in order to get and set some of the fields within these now opaque structs. It is worth noting that the use of opaque data structures is generally beneficial for libraries, since changes can be made to these data structures without breaking the ABI. As such, the overall direction of these changes is largely reasonable.

    However, while API change is generally necessary for progression, in this case it would appear that there is NO transition plan and a complete disregard for the impact that these changes would have on the overall open source ecosystem.

    So far it seems that the only approach is to place the migration burden onto each and every software project that uses OpenSSL, pushing significant code changes to each project that migrates to OpenSSL 1.1, while maintaining compatibility with the previous API. This is forcing each project to provide their own backwards compatibility shims, which is practically guaranteeing that there will be a proliferation of variable quality implementations; it is almost a certainty that some of these will contain bugs, potentially introducing security issues or memory leaks.

    • I think this will be a bigger issue for other operating systems that do not have the flexibility of the ports tree to deliver a newer version of OpenSSL. If a project switches from the old API to the new API, and the OS only provides the older branch of OpenSSL, how can the application work?
    • Of course, this leaves the issue, if application A wants OpenSSL 1.0, and application B only works with OpenSSL 1.1, how does that work?
    • Due to a number of factors, software projects that make use of OpenSSL cannot simply migrate to the 1.1 API and drop support for the 1.0 API - in most cases they will need to continue to support both. Firstly, I am not aware of any platform that has shipped a production release with OpenSSL 1.1 - any software that supported OpenSSL 1.1 only, would effectively be unusable on every platform for the time being. Secondly, the OpenSSL 1.0.2 release is supported until the 31st of December 2019, while OpenSSL 1.1.0 is only supported until the 31st of August 2018 - any LTS style release is clearly going to consider shipping with 1.0.2 as a result.

      Platforms that are attempting to ship with OpenSSL 1.1 are already encountering significant challenges - for example, Debian currently has 257 packages (out of 518) that do not build against OpenSSL 1.1. There are also hidden gotchas for situations where different libraries are linked against different OpenSSL versions and then share OpenSSL data structures between them - many of these problems will be difficult to detect since they only fail at runtime.

      • It will be interesting to see what happens with OpenSSL, and LibreSSL
      • Hopefully, most projects will decide to switch to the cleaner APIs provided by s2n or libtls, although they do not provide the entire functionality of the OpenSSL API.
      • Hacker News comments
      • ***
        exfiltration via receive timing

        Another similar way to create a backchannel but without transmitting anything is to introduce delays in the receiver and measure throughput as observed by the sender. All we need is a protocol with transmission control. Hmmm. Actually, it’s easier (and more reliable) to code this up using a plain pipe, but the same principle applies to networked transmissions.

        For every digit we want to “send” back, we sleep a few seconds, then drain the pipe. We don’t care about the data, although if this were a video file or an OS update, we could probably do something useful with it.

        Continuously fill the pipe with junk data. If (when) we block, calculate the difference between before and after. This is a our secret backchannel data. (The reader and writer use different buffer sizes because on OpenBSD at least, a writer will stay blocked even after a read depending on the space that opens up. Even simple demos have real world considerations.)

        In this simple example, the secret data (argv) is shared by the processes, but we can see that the writer isn’t printing them from its own address space. Nevertheless, it works.

        Time to add random delays and buffering to firewalls? Probably not.

        • An interesting thought experiment that shows just how many ways there are to covertly convey a message
        • ***
          OpenBSD Desktop in about 30 Minutes
          • Over at hackernews we have a very non-verbose, but handy guide to getting to a OpenBSD desktop in about 30 minutes!
          • First, the guide will assume you’ve already installed OpenBSD 6.0, so you’ll need to at least be at the shell prompt of your freshly installed system to begin.
          • With that, now its time to do some tuning. Editing some resource limits in login.conf will be our initial task, upping some datasize tunables to 2GB
          • Next up, we will edit some of the default “doas” settings to something a bit more workable for desktop computing
          • Another handy trick, editing your .profile to have your PKG_PATH variables set automatically will make
          • One thing some folks may overlook, but disabling atime can speed disk performance (which you probably don’t care about atime on your desktop anyway), so this guide will show you what knobs to tweak in /etc/fstab to do so
          • After some final WPA / Wifi configuration, we then drop to “mere mortal” mode and begin our package installations. In this particular guide, he will be setting up Lumina Desktop (Which yes, it is on OpenBSD)
          • A few small tweaks later for xscreensaver and your xinitrc file, then you are ready to run “startx” and begin your desktop session!
          • All in all, great guide which if you are fast can probably be done in even less than 30 minutes and will result in a rock-solid OpenBSD desktop rocking Lumina none-the-less.
          • ***
            How DTrace saved Christmas
            • Adam Leventhal, one of the co-creators of DTrace, wrote up this post about how he uses DTrace at home, to save Christmas
            • I had been procrastinating making the family holiday card. It was a combination of having a lot on my plate and dreading the formulation of our annual note recapping the year; there were some great moments, but I’m glad I don’t have to do 2016 again. It was just before midnight and either I’d make the card that night or leave an empty space on our friends’ refrigerators.

              • Adobe Illustrator had other ideas: “Unable to set maximum number of files to be opened”
              • I’m not the first person to hit this. The problem seems to have existed since CS6 was released in 2016. None of the solutions were working for me, and — inspired by Sara Mauskopf’s excellent post — I was rapidly running out of the time bounds for the project. Enough; I’d just DTrace it.

                A colleague scoffed the other day, “I mean, how often do you actually use DTrace?” In his mind DTrace was for big systems, critical system, when dollars and lives were at stake. My reply: I use DTrace every day. I can’t imagine developing software without DTrace, and I use it when my laptop (not infrequently) does something inexplicable (I’m forever grateful to the Apple team that ported it to Mac OS X)

                Illustrator is failing on setrlimit(2) and blowing up as result. Let’s confirm that it is in fact returning -1:$ sudo dtrace -n 'syscall::setrlimit:return/execname == "Adobe Illustrato"/{ printf("%d %d", arg1, errno); }'

                dtrace: description 'syscall::setrlimit:return' matched 1 probe
                CPU ID FUNCTION:NAME
                0 532 setrlimit:return -1 1

                There it is. And setrlimit(2) is failing with errno 1 which is EPERM (value too high for non-root user). I already tuned up the files limit pretty high. Let’s confirm that it is in fact setting the files limit and check the value to which it’s being set. To write this script I looked at the documentation for setrlimit(2) (hooray for man pages!) to determine that the position of the resource parameter (arg0) and the type of the value parameter (struct rlimit). I needed the DTrace copyin() subroutine to grab the structure from the process’s address space:

                $ sudo dtrace -n 'syscall::setrlimit:entry/execname == "Adobe Illustrato"/{ this->r = *(struct rlimit *)copyin(arg1, sizeof (struct rlimit)); printf("%x %x %x", arg0, this->r.rlim_cur, this->r.rlim_max); }'

                dtrace: description 'syscall::setrlimit:entry' matched 1 probe

                CPU ID FUNCTION:NAME
                0 531 setrlimit:entry 1008 2800 7fffffffffffffff
                Looking through /usr/include/sys/resource.h we can see that 1008 corresponds to the number of files (RLIMIT_NOFILE |
                _RLIMIT_POSIX_FLAG)

                The quickest solution was to use DTrace again to whack a smaller number into that struct rlimit. Easy:

                $ sudo dtrace -w -n 'syscall::setrlimit:entry/execname == "Adobe Illustrato"/{ this->i = (rlim_t *)alloca(sizeof (rlim_t)); *this->i = 10000; copyout(this->i, arg1 + sizeof (rlim_t), sizeof (rlim_t)); }'

                dtrace: description 'syscall::setrlimit:entry' matched 1 probe

                dtrace: could not enable tracing: Permission denied

                Oh right. Thank you SIP (System Integrity Protection). This is a new laptop (at least a new motherboard due to some bizarre issue) which probably contributed to Illustrator not working when once it did. Because it’s new I haven’t yet disabled the part of SIP that prevents you from using DTrace on the kernel or in destructive mode (e.g. copyout()). It’s easy enough to disable, but I’m reboot-phobic — I hate having to restart my terminals — so I went to plan B: lldb

                • After using DTrace to get the address of the setrlimit function, Adam used lldb to change the result before it got back to the application:
                • (lldb) break set -n _init
                  Breakpoint 1: 47 locations.
                  (lldb) run
                  …
                  (lldb) di -s 0x1006e5b72 -c 1
                  0x1006e5b72: callq 0x1011628e0 ; symbol stub for: setrlimit
                  (lldb) memory write 0x1006e5b72 0x31 0xc0 0x90 0x90 0x90
                  (lldb) di -s 0x1006e5b72 -c 4
                  0x1006e5b72: xorl %eax, %eax
                  0x1006e5b74: nop
                  0x1006e5b75: nop
                  0x1006e5b76: nop

                  Next I just did a process detach and got on with making that holiday card…

                  DTrace was designed for solving hard problems on critical systems, but the need to understand how systems behave exists in development and on consumer systems. Just because you didn’t write a program doesn’t mean you can’t fix it.

                  News Roundup
                  Say my Blog's name!
                  • Brian Everly over at functionally paranoid has a treat for us today. Let us give you a moment to get the tin-foil hats on… Ok, done? Let’s begin!
                  • He starts off with a look at physical security. He begins by listing your options:

                    1. BIOS passwords – Not something I’m typically impressed with. Most can be avoided by opening up the machine, closing a jumper and powering it up to reset the NVRAM to factory defaults. I don’t even bother with them.
                    2. Full disk encryption – This one really rings my bell in a positive way. If you can kill power to the box (either because the bad actor has to physically steal it and they aren’t carrying around a pile of car batteries and an inverter or because you can interrupt power to it some other way), then the disk will be encrypted. The other beauty of this is that if a drive fails (and they all do eventually) you don’t have to have any privacy concerns about chucking it into an electronics recycler (or if you are a bad, bad person, into a landfill) because that data is effectively gibberish without the key (or without a long time to brute force it).
                    3. Two factor auth for logins – I like this one as well. I’m not a fan of biometrics because if your fingerprint is compromised (yes, it can happen – read about the department of defense background checks that were extracted by a bad agent – they included fingerprint images) you can’t exactly send off for a new finger. Things like the YubiKey are pretty slick. They require that you have the physical hardware key as well as the password so unless the bad actor lifted your physical key, they would have a much harder time with physical access to your hardware.
                    4. Out of those options, Brian mentions that he uses disk encryption and yubi-key for all his secure network systems.

                    5. Next up is network segmentation, in this case the first thing to do is change your admin password for any ISP supplied modem

                    6. / router. He goes on to scare us of javascript attacks being used not against your local machine, but instead non WAN exposed router admin interface. Scary Stuff!

                    7. For added security, naturally he firewalls the router by plugging in the LAN port to a OpenBSD box which does the 2nd layer of firewall / router protection.

                    8. What about privacy and browsing? Here’s some more of his tips:

                    9. I use Unbound as my DNS resolver on my local network (with all UDP port 53 traffic redirected to it by pf so I don’t have to configure anything on the clients) and then forward the traffic to DNSCrypt Proxy, caching the results in Unbound. I notice ZERO performance penalty for this and it greatly enhances privacy. This combination of Unbound and DNSCrypt Proxy works very well together. You can even have redundancy by having multiple upstream resolvers running on different ports (basically run the DNSCrypt Proxy daemon multiple times pointing to different public resolvers).

                      I also use Firefox exclusively for my web browsing. By leveraging the tips on this page, you can lock it down to do a great job of privacy protection. The fact that your laptop’s battery drain rate can be used to fingerprint your browser completely trips me out but hey – that’s the world we live in.’

                      • What about the cloud you may ask? Well Brian has a nice solution for that as well:
                      • I recently decided I would try to live a cloud-free life and I’ll give you a bit of a synopsis on it. I discovered a wonderful Open Source project called FreeNAS. What this little gem does is allow you to install a FreeBSD/zfs file server appliance on amd64 hardware and have a slick administrative web interface for managing it. I picked up a nice SuperMicro motherboard and chassis that has 4 hot swap drive bays (and two internal bays that I used to mirror the boot volume on) and am rocking the zfs lifestyle! (Thanks Alan Jude!)

                        One of the nicest features of the FreeNAS is that it provides the ability to leverage the FreeBSD jail functionality in an easy to use way. It also has plugins but the security on those is a bit sketchy (old versions of libraries, etc.) so I decided to roll my own. I created two jails – one to run OwnCloud (yeah, I know about NextCloud and might switch at some point) and the other to run a full SMTP/IMAP email server stack. I used Lets Encrypt to generate the SSL certificates and made sure I hit an A on SSLLabs before I did anything else.

                        • His post then goes in to talk about Backups and IoT devices, something else you need to consider in this truely paranoid world we are forced to live in. We even get a nice shout-out near the end!
                        • Enter TarSnap – a company that advertises itself as “Online Backups for the Truly Paranoid”. It brings a tear to my eye – a kindred spirit! :-) Thanks again to Alan Jude and Kris Moore from the BSD Now podcast for turning me onto this company. It has a very easy command syntax (yes, it isn’t a GUI tool – suck it up buttercup, you wanted to learn the shell didn’t you?) and even allows you to compile the thing from source if you want to.”

                          • We’ve only covered some of the highlights here, but you really should take a few moments of your time today and read this top to bottom. Lots of good tips here, already thinking how I can secure my home network better.
                          • The open source book: “Producing Open Source Software”
                            • “How to Run a Successful Free Software Project” by Karl Fogel
                            • 9 chapters and over 200 pages of content, plus many appendices
                            • Some interesting topics include:
                              • Choosing a good name
                              • version control
                              • bug tracking
                              • creating developer guidelines
                              • setting up communications channels
                              • choosing a license (although this guide leans heavily towards the GPL)
                              • setting the tone of the project
                              • joining or creating a Non-Profit Organization
                              • the economics of open source
                              • release engineering, packaging, nightly builds, etc
                              • how to deal with forks
                              • A lot of good information packaged into this ebook
                              • This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License
                              • ***
                                DTrace Flamegraphs for node.js on FreeBSD
                                • One of the coolest tools built on top of DTrace is flamegraphs
                                • They are a very accurate, and visual way to see where a program is spending its time, which can tell you why it is slow, or where it could be improved. Further enhancements include off-cpu flame graphs, which tell you when the program is doing nothing, which can also be very useful
                                • > Recently BSD UNIXes are being acknowledged by the application development community as an interesting operating system to deploy to. This is not surprising given that FreeBSD had jails, the original container system, about 17 years ago and a lot of network focused businesses such as netflix see it as the best way to deliver content. This developer interest has led to hosting providers supporting FreeBSD. e.g. Amazon, Azure, Joyent and you can get a 2 months free instance at Digital Ocean.

                                  DTrace is another vital feature for anyone who has had to deal with production issues and has been in FreeBSD since version 9. As of FreeBSD 11 the operating system now contains some great work by Fedor Indutny so you can profile node applications and create flamegraphs of node.js processes without any additional runtime flags or restarting of processes.

                                  • This is one of the most important things about DTrace. Many applications include some debugging functionality, but they require that you stop the application, and start it again in debugging mode. Some even require that you recompile the application in debugging mode.
                                  • Being able to attach DTrace to an application, while it is under load, while the problem is actively happening, can be critical to figuring out what is going on.
                                  • In order to configure your FreeBSD instance to utilize this feature make the following changes to the configuration of the server.

                                    • Load the DTrace module at boot
                                    • Increase some DTrace limits
                                    • Install node with the optional DTrace feature compiled in
                                    • Follow the generic node.js flamegraph tutorial
                                    • > I hope you find this article useful. The ability to look at a runtime in this manor has saved me twice this year and I hope it will save you in the future too. My next post on freeBSD and node.js will be looking at some scenarios on utilising the ZFS features.
                                    • Also check out Brendan Gregg’s ACM Queue Article “The Flame Graph: This visualization of software execution is a new necessity for performance profiling and debugging”

                                    • SSHGuard 2.0 Call for Testing
                                      • SSHGuard is a tool for monitoring brute force attempts and blocking them
                                      • It has been a favourite of mine for a while because it runs as a pipe from syslogd, rather than reading the log files from the disk
                                      • A lot of work to get SSHGuard working with new log sources (journalctl, macOS log) and backends (firewalld, ipset) has happened in 2.0. The new version also uses a configuration file.

                                        Most importantly, SSHGuard has been split into several processes piped into one another (sshg-logmon | sshg-parser | sshg-blocker | sshg-fw). sshg-parser can run with capsicum(4) and pledge(2). sshg-blocker can be sandboxed in its default configuration (without pid file, whitelist, blacklisting) and has not been tested sandboxed in other configurations.

                                        • Breaking the processes up so that the sensitive bits can be sandboxes is very nice to see
                                        • ***
                                          Beastie Bits
                                          • pjd’s 2007 paper from AsiaBSDCon: “Porting the ZFS file system to the FreeBSD operating system”

                                          • A Message From the FreeBSD Foundation

                                          • Remembering Roger Faulkner, Unix Champion and A few HN comments (including Bryan Cantrill)

                                          • Feedback/Questions
                                            • Peter - TrueOS Network
                                            • Chris - Remote Desktop
                                            • Goetz - Geli on Serial
                                            • Joe - BGP
                                            • Alejandro - BSD Router
                                            • ***
                                              1 hr 38 min
                                            • 174: 2016 Highlights

                                              A look back at 2016

                                              This episode was brought to you by

                                              alt="DigitalOcean - Simple Cloud Hosting, Built for Developers" />
                                              title="Tarsnap">

                                              Links
                                              • ZFS in the trenches
                                              | BSD Now 123
                                            • href="http://www.jupiterbroadcasting.com/99991/one-small-step-for-drm-one-giant-leap-for-bsd-bsd-now-143/">One small step for
                                              DRM, one giant leap for BSD | BSD Now 143
                                            • href="http://www.jupiterbroadcasting.com/101501/the-laporte-has-landed-bsd-now-152/">The Laporte has landed! | BSD Now
                                              152
                                            • Ham, Radio & Pie, Oh
                                            • My! | BSD Now 158
                                            • The
                                            • Foundation of NetBSD | BSD Now 162
                                            • href="http://www.jupiterbroadcasting.com/103871/return-of-the-cantrill-bsd-now-163/">Return of the Cantrill | BSD Now 163
                                              2 hr 56 min
                                            • 2016 highlights | BSD Now 174
                                              Chris takes over and guest hosts the show to give the guys some time off.
                                              We take a look back at 2016 in BSD, covering the announcement of TrueOS, OpenBSD and FreeBSD releases, a talk with Petra about NetBSD & much more!
                                              2 hr 56 min
                                            • 173: Carry on my Wayland son

                                              This week on the show, we’ve got some great stories to bring you, a look at the odder side of UNIX history

                                              This episode was brought to you by

                                              alt="DigitalOcean - Simple Cloud Hosting, Built for Developers" />
                                              title="Tarsnap">

                                              Headlines
                                              syspatch in testing state
                                              • Antoine Jacoutot ajacoutot@ openbsd has posted a call for testing for OpenBSD’s new syspatch tool
                                              • “syspatch(8), a "binary" patch system for -release is now ready for early testing. This does not use binary diffing to update the system, but regular signed tarballs containing the updated files (ala installer).”
                                              • “I would appreciate feedback on the tool. But please send it directly to me, there's no need to pollute the list. This is obviously WIP and the tool may or may not change in drastic ways.”
                                              • “These test binary patches are not endorsed by the OpenBSD project and should not be trusted, I am only providing them to get early feedback on the tool. If all goes as planned, I am hoping that syspatch will make it into the 6.1 release; but for it to happen, I need to know how it breaks your systems :-)”
                                              • Instructions
                                              • If you test it, report back and let us know how it went
                                              • ***
                                                Weston working
                                                • Over the past few years we’ve had some user-interest in the state of Wayland / Weston on FreeBSD. In the past day or so, Johannes Lundberg has sent in a progress report to the FreeBSD mailing lists.
                                                • Without further ADO:
                                                • We had some progress with Wayland that we'd like to share.

                                                  Wayland (v1.12.0)

                                                  Working

                                                  Weston (v1.12.0)

                                                  Working (Porting WIP)

                                                  Weston-clients (installed with wayland/weston port)

                                                  Working

                                                  XWayland (run X11 apps in Wayland compositor)

                                                  Works (maximized window only) if started manually but not when
                                                  launching X11 app from Weston. Most likely problem with Weston IPC.

                                                  Sway (i3-compatible Wayland compositor)

                                                  Working

                                                  SDL20 (Wayland backend)

                                                  games/stonesoup-sdl briefly tested.
                                                  https://twitter.com/johalun/status/811334203358867456

                                                  GDM (with Wayland)

                                                  Halted - depends on logind.

                                                  GTK3

                                                  gtk3-demo runs fine on Weston (might have to set GDK_BACKEND=wayland
                                                  first.
                                                  GTK3 apps working (gedit, gnumeric, xfce4-terminal tested, xfce desktop
                                                  (4.12) does not yet support GTK3)“

                                                  • Johannes goes on to give instructions on how / where you can fetch their WiP and do your own testing. At the moment you’ll need Matt Macy’s newer Intel video work, as well as their ports tree which includes all the necessary software bits.
                                                  • Before anybody asks, yes we are watching this for TrueOS!
                                                  • ***
                                                    Where the rubber meets the road (part two)
                                                    • Continuing with our story from Brian Everly from a week ago, we have an update today on the process to dual-boot OpenBSD with Arch Linux.
                                                    • As we last left off, Arch was up and running on the laptop, but some quirks in the hardware meant OpenBSD would take a bit longer.
                                                    • With those issues resolved and the HD seen again, the next issue that reared its head was OpenBSD not seeing the partition tables on the disk. After much frustration, it was time to nuke and pave, starting with OpenBSD first this time.
                                                    • After a successful GPT partitioning and install of OpenBSD, he went back to installing Arch, and then the story got more interesting.
                                                    • “I installed Arch as I detailed in my last post; however, when I fired up gdisk I got a weird error message:

                                                      “Warning! Disk size is smaller than the main header indicates! Loading secondary header from the last sector of the disk! You should use ‘v’ to verify disk integrity, and perhaps options on the expert’s menu to repair the disk.”

                                                      Immediately after this, I saw a second warning:

                                                      “Caution: Invalid backup GPT header, but valid main header; regenerating backup header from main header.”

                                                      And, not to be outdone, there was a third:

                                                      “Warning! Main and backup partition tables differ! Use the ‘c’ and ‘e’ options on the recovery & transformation menu to examine the two tables.”

                                                      Finally (not kidding), there was a fourth:

                                                      “Warning! One or more CRCs don’t match. You should repair the disk!”

                                                      Given all of that, I thought to myself, “This is probably why I couldn’t see the disk properly when I partitioned it under Linux on the OpenBSD side. I’ll let it repair things and I should be good to go.” I then followed the recommendation and repaired things, using the primary GPT table to recreate the backup one. I then installed Arch and figured I was good to go.“

                                                      • After confirming through several additional re-installs that the behavior was reproducible, he then decided to go full on crazy,and partition with MBR. That in and of itself was a challenge, since as he mentions, not many people dual-boot OpenBSD with Linux on MBR, especially using luks and lvm!
                                                      • If you want to see the details on how that was done, check it out.
                                                      • The story ends in success though! And better yet:
                                                      • “Now that I have everything working, I’ll restore my config and data to Arch, configure OpenBSD the way I like it and get moving. I’ll take some time and drop a note on the tech@ mailing list for OpenBSD to see if they can figure out what the GPT problem was I was running into. Hopefully it will make that part of the code stronger to get an edge-case bug report like this.”

                                                        • Take note here, if you run into issues like this with any OS, be sure to document in detail what happened so developers can explore solutions to the issue.
                                                        • ***
                                                          FreeBSD and ZFS as a time capsule for OS X
                                                          • Do you have any Apple users in your life? Perhaps you run FreeBSD for ZFS somewhere else in the house or office. Well today we have a blog post from Mark Felder which shows how you can use FreeBSD as a time-capsule for your OSX systems.
                                                          • The setup is quite simple, to get started you’ll need packages for netatalk3 and avahi-app for service discovery.
                                                          • Next up will be your AFP configuration. He helpfully provides a nice example that you should be able to just cut-n-paste. Be sure to check the hosts allow lines and adjust to fit your network. Also of note will be the backup location and valid users to adjust.
                                                          • A little easier should be the avahi setup, which can be a straight copy-n-paste from the site, which will perform the service advertisements.
                                                          • The final piece is just enabling specific services in /etc/rc.conf and either starting them by hand, or rebooting. At this point your OSX systems should be able to discover the new time-capsule provider on the network and DTRT.
                                                          • ***
                                                            News Roundup
                                                            netbenches - FreeBSD network forwarding performance benchmark results
                                                            • Olivier Cochard-Labbé, original creator of FreeNAS, and leader of the BSD Router Project, has a github repo of network benchmarks
                                                            • There are many interesting results, and all of the scripts, documentation, and configuration files to run the tests yourself
                                                            • IPSec Performance on an Atom C2558, 12-head vs IPSec Performance Branch
                                                            • Compared to: Xeon L5630 2.13GHz
                                                            • and IPSec with Authentication
                                                            • I look forward to seeing tests on even more hardware, as people with access to different configurations try out these benchmarks
                                                            • ***
                                                              A tcpdump Tutorial and Primer with Examples
                                                              • Most users will be familiar with the basics of using tcpdump, but this tutorial/primer is likely to fill in a lot of blanks, and advance many users understanding of tcpdump
                                                              • “tcpdump is the premier network analysis tool for information security professionals. Having a solid grasp of this über-powerful application is mandatory for anyone desiring a thorough understanding of TCP/IP. Many prefer to use higher level analysis tools such as Wireshark, but I believe this to usually be a mistake.”
                                                              • tcpdump is an important tool for any system or network administrator, it is not just for security. It is often the best way to figure out why the network is not behaving as expected.
                                                              • “In a discipline so dependent on a true understanding of concepts vs. rote learning, it’s important to stay fluent in the underlying mechanics of the TCP/IP suite. A thorough grasp of these protocols allows one to troubleshoot at a level far beyond the average analyst, but mastery of the protocols is only possible through continued exposure to them.”
                                                              • Not just that, but TCP/IP is a very interesting protocol, considering how little it has changed in its 40+ year history
                                                              • “First off, I like to add a few options to the tcpdump command itself, depending on what I’m looking at. The first of these is -n, which requests that names are not resolved, resulting in the IPs themselves always being displayed. The second is -X, which displays both hex and ascii content within the packet.”
                                                              • “It’s also important to note that tcpdump only takes the first 96 bytes of data from a packet by default. If you would like to look at more, add the -s number option to the mix, where number is the number of bytes you want to capture. I recommend using 0 (zero) for a snaplength, which gets everything.”
                                                              • The page has a nice table of the most useful options
                                                              • It also has a great primer on doing basic filtering
                                                              • If you are relatively new to using tcpdump, I highly recommend you spend a few minutes reading through this article
                                                              • ***
                                                                How Unix made it to the top
                                                                • Doug McIlroy gives us a nice background post on how “Unix made it to the top”
                                                                • It’s fairly short / concise, so I felt it would be good to read in its entirety.
                                                                • “It has often been told how the Bell Labs law department became the first non-research department to use Unix, displacing a newly acquired stand-alone word-processing system that fell short of the department's hopes because it couldn't number the lines on patent applications, as USPTO required. When Joe Ossanna heard of this, he told them about roff and promised to give it line-numbering capability the next day. They tried it and were hooked. Patent secretaries became remote members of the fellowship of the Unix lab. In due time the law department got its own machine.

                                                                  Less well known is how Unix made it into the head office of AT&T. It seems that the CEO, Charlie Brown, did not like to be seen wearing glasses when he read speeches. Somehow his PR assistant learned of the CAT phototypesetter in the Unix lab and asked whether it might be possible to use it to produce scripts in large type. Of course it was. As connections to the top never hurt, the CEO's office was welcomed as another ouside user. The cost--occasionally having to develop film for the final copy of a speech--was not onerous.

                                                                  Having teethed on speeches, the head office realized that Unix could also be useful for things that didn't need phototypesetting. Other documents began to accumulate in their directory. By the time we became aware of it, the hoard came to include minutes of AT&T board meetings. It didn't seem like a very good idea for us to be keeping records from the inner sanctum of the corporation on a computer where most everybody had super-user privileges. A call to the PR guy convinced him of the wisdom of keeping such things on their own premises. And so the CEO's office bought a Unix system.

                                                                  Just as one hears of cars chosen for their cupholders, so were theseusers converted to Unix for trivial reasons: line numbers and vanity.“

                                                                  Odd Comments and Strange Doings in Unix
                                                                  • Everybody loves easter-eggs, and today we have some fun odd ones from the history throughout UNIX told by Dennis Ritchie.
                                                                  • First up, was a fun one where the “mv” command could sometimes print the following “values of b may give rise to dom!”
                                                                  • “Like most of the messages recorded in these compilations, this one was produced in some situation that we considered unlikely or as result of abuse; the details don't matter. I'm recording why the phrase was selected.

                                                                    The very first use of Unix in the "real business" of Bell Labs was to type and produce patent applications, and for a while in the early 1970s we had three typists busily typing away in the grotty lab on the sixth floor. One day someone came in and observed on the paper sticking out of one of the Teletypes, displayed in magnificent isolation, this ominous phrase: values of b may give rise to dom!

                                                                    It was of course obvious that the typist had interrupted a printout (generating the "!" from the ed editor) and moved up the paper, and that the context must have been something like "varying values of beta may give rise to domain wall movement" or some other fragment of a physically plausible patent application.But the phrase itself was just so striking! Utterly meaningless, but it looks like what... a warning? What is "dom?"

                                                                    At the same time, we were experimenting with text-to-voice software by Doug McIlroy and others, and of course the phrase was tried out with it. For whatever reason, its rendition of "give rise to dom!" accented the last word in a way that emphasized the phonetic similarity between "doom" and the first syllable of "dominance." It pronounced "beta" in the British style, "beeta." The entire occurrence became a small, shared treasure.The phrase had to be recorded somewhere, and it was, in the v6 source. Most likely it was Bob Morris who did the deed, but it could just as easily have been Ken. I hope that your browser reproduces the b as a Greek beta.“

                                                                    • Next up is one you might have heard before:
                                                                    • /* You are not expected to understand this */> Every now and then on Usenet or elsewhere I run across a reference to a certain comment in the source code of the Sixth

                                                                      Edition Unix operating system.

                                                                      I've even been given two sweatshirts that quote it.

                                                                      Most probably just heard about it, but those who saw it in the flesh either had Sixth Edition Unix (ca. 1975) or read the annotated version of this system by John Lions (which was republished in 1996: ISBN 1-57298-013-7, Peer-to-Peer Communications).It's often quoted as a slur on the quantity or quality of the comments in the Bell Labs research releases of Unix. Not an unfair observation in general, I fear, but in this case unjustified.

                                                                      So we tried to explain what was going on. "You are not expected to understand this" was intended as a remark in the spirit of "This won't be on the exam," rather than as an impudent challenge.

                                                                      • There’s a few other interesting stories as well, if the odd/fun side of UNIX history at all interests you, I would recommend checking it out.
                                                                      • Beastie Bits
                                                                        • With patches in review the #FreeBSD base system builds 100% reproducibly

                                                                        • BSDCan 2017 Call for Participation

                                                                        • ioCell 2.0 released

                                                                        • who even calls link_ntoa?

                                                                        • Booting Androidx86 under bhyve

                                                                        • Feedback/Questions
                                                                          • Chris - VNET
                                                                          • Brian - Package Base
                                                                          • Wim - TrueOS Desktop All-n-one
                                                                          • Daniel - Long Boots
                                                                          • Bryan - ZFS / FreeNAS
                                                                          • Bryan - FreeNAS Security
                                                                          • ***
                                                                            1 hr 15 min
                                                                          • 172: A tale of BSD from yore

                                                                            This week on BSDNow, we have a very special guest joining us to tell us a tale of the early days in BSD history. That plus some new OpenSSH goodness, shell scripting utilities and much more. Stay tuned for your place to B...SD!

                                                                            This episode was brought to you by

                                                                            alt="DigitalOcean - Simple Cloud Hosting, Built for Developers" />

                                                                            Headlines
                                                                            Call For Testing: OpenSSH 7.4
                                                                            • Getting ready to head into the holidays for for the end of 2016 means some of us will have spare time on our hands. What a perfect time to get some call for testing work done!
                                                                            • Damien Miller has issued a public CFT for the upcoming OpenSSH 7.4 release, which considering how much we all rely on SSH I would expect will get some eager volunteers for testing.
                                                                            • What are some of the potential breakers?
                                                                            • “* This release removes server support for the SSH v.1 protocol.

                                                                              • ssh(1): Remove 3des-cbc from the client's default proposal. 64-bit

                                                                              • block ciphers are not safe in 2016 and we don't want to wait until
                                                                                attacks like SWEET32 are extended to SSH. As 3des-cbc was the
                                                                                only mandatory cipher in the SSH RFCs, this may cause problems
                                                                                connecting to older devices using the default configuration,
                                                                                but it's highly likely that such devices already need explicit
                                                                                configuration for key exchange and hostkey algorithms already
                                                                                anyway.

                                                                              • sshd(8): Remove support for pre-authentication compression.

                                                                              • Doing compression early in the protocol probably seemed reasonable
                                                                                in the 1990s, but today it's clearly a bad idea in terms of both
                                                                                cryptography (cf. multiple compression oracle attacks in TLS) and
                                                                                attack surface. Pre-auth compression support has been disabled by
                                                                                default for >10 years. Support remains in the client.

                                                                              • ssh-agent will refuse to load PKCS#11 modules outside a whitelist

                                                                              • of trusted paths by default. The path whitelist may be specified
                                                                                at run-time.

                                                                              • sshd(8): When a forced-command appears in both a certificate and

                                                                              • an authorized keys/principals command= restriction, sshd will now
                                                                                refuse to accept the certificate unless they are identical.
                                                                                The previous (documented) behaviour of having the certificate
                                                                                forced-command override the other could be a bit confusing and
                                                                                error-prone.

                                                                              • sshd(8): Remove the UseLogin configuration directive and support

                                                                              • for having /bin/login manage login sessions.“

                                                                                • What about new features? 7.4 has some of those to wake you up also:
                                                                                • “* ssh(1): Add a proxy multiplexing mode to ssh(1) inspired by the

                                                                                  version in PuTTY by Simon Tatham. This allows a multiplexing
                                                                                  client to communicate with the master process using a subset of
                                                                                  the SSH packet and channels protocol over a Unix-domain socket,
                                                                                  with the main process acting as a proxy that translates channel
                                                                                  IDs, etc. This allows multiplexing mode to run on systems that
                                                                                  lack file- descriptor passing (used by current multiplexing
                                                                                  code) and potentially, in conjunction with Unix-domain socket
                                                                                  forwarding, with the client and multiplexing master process on
                                                                                  different machines. Multiplexing proxy mode may be invoked using
                                                                                  "ssh -O proxy ..."

                                                                                  • sshd(8): Add a sshd_config DisableForwaring option that disables

                                                                                  • X11, agent, TCP, tunnel and Unix domain socket forwarding, as well
                                                                                    as anything else we might implement in the future. Like the
                                                                                    'restrict' authorized_keys flag, this is intended to be a simple
                                                                                    and future-proof way of restricting an account.

                                                                                  • sshd(8), ssh(1): Support the "curve25519-sha256" key exchange

                                                                                  • method. This is identical to the currently-support method named
                                                                                  • sshd(8): Improve handling of SIGHUP by checking to see if sshd is

                                                                                  • already daemonised at startup and skipping the call to daemon(3)
                                                                                    if it is. This ensures that a SIGHUP restart of sshd(8) will
                                                                                    retain the same process-ID as the initial execution. sshd(8) will
                                                                                    also now unlink the PidFile prior to SIGHUP restart and re-create
                                                                                    it after a successful restart, rather than leaving a stale file in
                                                                                    the case of a configuration error. bz#2641

                                                                                  • sshd(8): Allow ClientAliveInterval and ClientAliveCountMax

                                                                                  • directives to appear in sshd_config Match blocks.

                                                                                  • sshd(8): Add %-escapes to AuthorizedPrincipalsCommand to match

                                                                                  • those supported by AuthorizedKeysCommand (key, key type,
                                                                                    fingerprint, etc.) and a few more to provide access to the
                                                                                    contents of the certificate being offered.

                                                                                  • Added regression tests for string matching, address matching and

                                                                                  • string sanitisation functions.

                                                                                  • Improved the key exchange fuzzer harness.“

                                                                                    • Get those tests done and be sure to send feedback, both positive and negative.
                                                                                    • ***
                                                                                      How My Printer Caused Excessive Syscalls & UDP Traffic

                                                                                      “3,000 syscalls a second, on an idle machine? That doesn’t seem right. I just booted this machine. The only processes running are those required to boot the SmartOS Global Zone, which is minimal.”

                                                                                      This is a story from 2014, about debugging a machine that was being slowed down by excessive syscalls and UDP traffic. It is also an excellent walkthrough of the basics of DTrace

                                                                                      “Well, at least I have DTrace. I can use this one-liner to figure out what syscalls are being made across the entire system.”

                                                                                      dtrace -n 'syscall:::entry { @[probefunc,probename] = count(); }'

                                                                                      “Wow! That is a lot of lwp_sigmask calls. Now that I know what is being called, it’s time to find out who is doing the calling? I’ll use another one-liner to show me the most common user stacks invoking lwp_sigmask.”

                                                                                      dtrace -n 'syscall::lwp_sigmask:entry { @[ustack()] = count(); }'

                                                                                      “Okay, so this mdnsd code is causing all the trouble. What is the distribution of syscalls for the mdnsd program?”

                                                                                      dtrace -n 'syscall:::entry /execname == "mdnsd"/ { @[probefunc] = count(); } tick-1s { exit(0); }'

                                                                                      “Lots of signal masking and polling. What the hell! Why is it doing this? What is mdnsd anyways? Is there a man page? Googling for mdns reveals that it is used for resolving host names in small networks, like my home network. It uses UDP, and requires zero configuration. Nothing obvious to explain why it’s flipping out. I feel helpless. I turn to the only thing I can trust, the code.”

                                                                                      “Woah boy, this is some messy looking code. This would not pass illumos cstyle checks. Turns out this is code from Darwin—the kernel of OSX.”

                                                                                      “Hmmm…an idea pops into my computer animal brain. I wonder…I wonder if my MacBook is also experiencing abnormal syscall rates? Nooo, that can’t be it. Why would both my SmartOS server and MacBook both have the same problem? There is no good technical reason to link these two. But, then again, I’m dealing with computers here, and I’ve seen a lot of strange things over the years—I switch to my laptop.”

                                                                                      sudo dtrace -n 'syscall::: { @[execname] = count(); } tick-1s { exit(0); }'

                                                                                      Same thing, except mdns is called discoverd on OS X

                                                                                      “I ask my friend Steve Vinoski to run the same DTrace one-liner on his OSX machines. He has both Yosemite and the older Mountain Lion. But, to my dismay, neither of his machines are exhibiting high syscall rates. My search continues.”

                                                                                      “Not sure what to do next, I open the OSX Activity Monitor. In desperation I click on the Network tab.”

                                                                                      “ HOLE—E—SHIT! Two-Hundred-and-Seventy Million packets received by discoveryd. Obviously, I need to stop looking at code and start looking at my network. I hop back onto my SmartOS machine and check network interface statistics.”

                                                                                      “Whatever is causing all this, it is sending about 200 packets a second. At this point, the only thing left to do is actually inspect some of these incoming packets. I run snoop(1M) to collect events on the e1000g0 interface, stopping at about 600 events. Then I view the first 15.”

                                                                                      “ A constant stream of mDNS packets arriving from IP 10.0.1.8. I know that this IP is not any of my computers. The only devices left are my iPhone, AppleTV, and Canon printer. Wait a minute! The printer! Two days earlier I heard some beeping noises…”

                                                                                      “I own a Canon PIXMA MG6120 printer. It has a touch interface with a small LCD at the top, used to set various options. Since it sits next to my desk I sometimes lay things on top of it like a book or maybe a plate after I’m done eating. If I lay things in the wrong place it will activate the touch interface and cause repeated pressing. Each press makes a beeping noise. If the object lays there long enough the printer locks up and I have to reboot it. Just such events occurred two days earlier.”

                                                                                      “I fire up dladm again to monitor incoming packets in realtime. Then I turn to the printer. I move all the crap off of it: two books, an empty plate, and the title for my Suzuki SV650 that I’ve been meaning to sell for the last year. I try to use the touch screen on top of the printer. It’s locked up, as expected. I cut power to the printer and whip my head back to my terminal.”

                                                                                      No more packet storm

                                                                                      “Giddy, I run DTrace again to count syscalls.”

                                                                                      “I’m not sure whether to laugh or cry. I laugh, because, LOL computers. There’s some new dumb shit you deal with everyday, better to roll with the punches and laugh. You live longer that way. At least I got to flex my DTrace muscles a bit. In fact, I felt a bit like Brendan Gregg when he was debugging why OSX was dropping keystrokes.”

                                                                                      “I didn’t bother to root cause why my printer turned into a UDP machine gun. I don’t intend to either. I have better things to do, and if rebooting solves the problem then I’m happy. Besides, I had to get back to what I was trying to do six hours before I started debugging this damn thing.”

                                                                                      There you go. The Internet of Terror has already been on your LAN for years.

                                                                                      Making Getaddrinfo Concurrent in Python on Mac OS and BSD
                                                                                      • We have a very fun blog post today to pass along originally authored by “A. Jesse Jiryu Davis”. Specifically the tale of one man’s quest to unify the Getaddrinfo in Python with Mac OS and BSD.
                                                                                      • To give you a small taste of this tale, let us pass along just the introduction
                                                                                      • “Tell us about the time you made DNS resolution concurrent in Python on Mac and BSD. No, no, you do not want to hear that story, my friends. It is nothing but old lore and #ifdefs.

                                                                                        But you made Python more scalable. The saga of Steve Jobs was sung to you by a mysterious wizard with a fanciful nickname! Tell us!

                                                                                        Gather round, then. I will tell you how I unearthed a lost secret, unbound Python from old shackles, and banished an ancient and horrible Mutex Troll. Let us begin at the beginning.“

                                                                                        • Is your interest piqued? It should be. I’m not sure we could do this blog post justice trying to read it aloud here, but definetly recommend if you want to see how he managed to get this bit of code working cross platform. (And it’s highly entertaining as well)
                                                                                        • “A long time ago, in the 1980s, a coven of Berkeley sorcerers crafted an operating system. They named it after themselves: the Berkeley Software Distribution, or BSD. For generations they nurtured it, growing it and adding features. One night, they conjured a powerful function that could resolve hostnames to IPv4 or IPv6 addresses. It was called getaddrinfo. The function was mighty, but in years to come it would grow dangerous, for the sorcerers had not made getaddrinfo thread-safe.”

                                                                                          “As ages passed, BSD spawned many offspring. There were FreeBSD, OpenBSD, NetBSD, and in time, Mac OS X. Each made its copy of getaddrinfo thread safe, at different times and different ways. Some operating systems retained scribes who recorded these events in the annals. Some did not.”

                                                                                          • The story continues as our hero battles the Mutex Troll and quests for ancient knowledge
                                                                                          • “Apple engineers are not like you and me — they are a shy and secretive folk. They publish only what code they must from Darwin. Their comings and goings are recorded in no bug tracker, their works in no changelog. To learn their secrets, one must delve deep.”

                                                                                            “There is a tiny coven of NYC BSD users who meet at the tavern called Stone Creek, near my dwelling. They are aged and fierce, but I made the Sign of the Trident and supplicated them humbly for advice, and they were kindly to me.”

                                                                                            • Spoiler: “Without a word, the mercenary troll shouldered its axe and trudged off in search of other patrons on other platforms. Never again would it hold hostage the worthy smiths forging Python code on BSD.”
                                                                                            • ***
                                                                                              Using release(7) to create FreeBSD images for OpenStack
                                                                                              • Following a recent episode where we covered a walk through on how to create FreeBSD guest OpenStack images, we wondered if it would be possible to integrate this process into the FreeBSD release(7) process, so they images could be generated consistently and automatically
                                                                                              • Being the awesome audience that you are, one of you responded by doing exactly that
                                                                                              • “During a recent BSDNow podcast, Allan and Kris mentioned that it would be nice to have a tutorial on how to create a FreeBSD image for OpenStack using the official release(7) tools. With that, it came to me that: #1 I do have access to an OpenStack environment and #2 I am interested in having FreeBSD as a guest image in my environment. Looks like I was up for the challenge.”

                                                                                                “Previously, I’ve had success running FreeBSD 11.0-RELEASE on OpenStack but more could/should be done. For instance, as suggested by Allan, wouldn’t be nice to deploy the latest code from FreeBSD ? Running -STABLE or even -CURRENT ? Yes, it would. Also, wouldn’t it be nice to customize these images for a specific need? I’d say ‘Yes’ for that as well.”

                                                                                                “After some research I found that the current openstack.conf file, located at /usr/src/release/tools/ could use some extra tweaks to get where I wanted. I’ve created and attached that to a bugzilla on the same topic. You can read about that here.”

                                                                                                • Steps:
                                                                                                  • Fetch the FreeBSD source code and extract it under /usr/src
                                                                                                  • Once the code is in place, follow the regular process of build(7) and perform a make buildworld buildkernel
                                                                                                  • Change into the release directory (/usr/src/release) and perform a make cloudware
                                                                                                  • make cloudware-release WITH_CLOUDWARE=yes CLOUDWARE=OPENSTACK VMIMAGE=2G
                                                                                                  • “That’s it! This will generate a qcow2 image with 1.4G in size and a raw image of 2G. The entire process uses the release(7) toolchain to generate the image and should work with newer versions of FreeBSD.”

                                                                                                    • The patch has already been committed to FreeBSD
                                                                                                    • ***
                                                                                                      Interview - Rod Grimes - [email protected]
                                                                                                      • Want to help fund the development of GPU Passthru? Visit bhyve.org
                                                                                                      • ***
                                                                                                        News Roundup
                                                                                                        Configuring the FreeBSD automounter
                                                                                                        • Ever had to configure the FreeBSD auto-mounting daemon? Today we have a blog post that walks us through a few of the configuration knobs you have at your disposal.
                                                                                                        • First up, Tom shows us his /etc/fstab file, and the various UFS partitions he has setup with the ‘noauto’ flag so they are not mounted at system boot.
                                                                                                        • His amd.conf file is pretty basic, with just options enabled to restart mounts, and unmount on exit.
                                                                                                        • Where most users will most likely want to pay attention is in the crafting of an amd.map file
                                                                                                        • Within this file, we have the various command-foo which performs mounts and unmounts of targeted disks / file-systems on demand.
                                                                                                        • Pay special attention to all the special chars, since those all matter and a stray or missing ; could be a source of failure.
                                                                                                        • Lastly a few knobs in rc.conf will enable the various services and a reboot should confirm the functionality.
                                                                                                        • ***
                                                                                                          l2k16 hackathon report: LibreSSL manuals now in mdoc(7)
                                                                                                          • Hackathon report by Ingo Schwarze
                                                                                                          • “Back in the spring two years ago, Kristaps Dzonsons started the pod2mdoc(1) conversion utility, and less than a month later, the LibreSSL project began. During the general summer hackathon in the same year, g2k14, Anthony Bentley started using pod2mdoc(1) for converting LibreSSL manuals to mdoc(7).”

                                                                                                            “Back then, doing so still was a pain, because pod2mdoc(1) was still full of bugs and had gaping holes in functionality. For example, Anthony was forced to basically translate the SYNOPSIS sections by hand, and to fix up .Fn and .Xr in the body by hand as well. All the same, he speedily finished all of libssl, and in the autumn of the same year, he mustered the courage to commit his work.”

                                                                                                            “Near the end of the following winter, i improved the pod2mdoc(1) tool to actually become convenient in practice and started work on libcrypto, converting about 50 out of the about 190 manuals. Max Fillinger also helped a bit, converting a handful of pages, but i fear i tarried too much checking and committing his work, so he quickly gave up on the task. After that, almost nothing happened for a full year.”

                                                                                                            “Now i was finally fed up with the messy situation and decided to put an end to it. So i went to Toulouse and finished the conversion of the remaining 130 manual pages in libcrypto, such that you can now view the documentation of all functions”

                                                                                                            Interactive Terminal Utility: smenu
                                                                                                            • Ok, I’ve made no secret of my love for shell scripting. Well today we have a new (somewhat new to us) tool to bring your way.
                                                                                                            • Have you ever needed to deal with large lists of data, perhaps as the result of a long specially crafted pipe?
                                                                                                            • What if you need to select a specific value from a range and then continue processing?
                                                                                                            • Enter ‘smenu’ which can help make your scripting life easier.
                                                                                                            • “smenu is a selection filter just like sed is an editing filter.

                                                                                                              This simple tool reads words from the standard input, presents them in a cool interactive window after the current line on the terminal and writes the selected word, if any, on the standard output.

                                                                                                              After having unsuccessfully searched the NET for what I wanted, I decided to try to write my own.

                                                                                                              I have tried hard to made its usage as simple as possible. It should work, even when using an old vt100 terminal and is UTF-8 aware.“

                                                                                                              • What this means, is in your interactive scripts, you can much easier present the user with a cursor driven menu to select from a range of possible choices. (Without needing to craft a bunch of dialog flags)
                                                                                                              • Take a look, and hopefully you’ll be able to find creative uses for your shell scripts in the future.
                                                                                                              • ***
                                                                                                                Ubuntu still isn't free software

                                                                                                                “Any redistribution of modified versions of Ubuntu must be approved, certified or provided by Canonical if you are going to associate it with the Trademarks. Otherwise you must remove and replace the Trademarks and will need to recompile the source code to create your own binaries. This does not affect your rights under any open source licence applicable to any of the components of Ubuntu. If you need us to approve, certify or provide modified versions for redistribution you will require a licence agreement from Canonical, for which you may be required to pay. For further information, please contact us”

                                                                                                                “Mark Shuttleworth just blogged about their stance against unofficial Ubuntu images. The assertion is that a cloud hoster is providing unofficial and modified Ubuntu images, and that these images are meaningfully different from upstream Ubuntu in terms of their functionality and security. Users are attempting to make use of these images, are finding that they don't work properly and are assuming that Ubuntu is a shoddy product. This is an entirely legitimate concern, and if Canonical are acting to reduce user confusion then they should be commended for that.”

                                                                                                                “The appropriate means to handle this kind of issue is trademark law. If someone claims that something is Ubuntu when it isn't, that's probably an infringement of the trademark and it's entirely reasonable for the trademark owner to take action to protect the value associated with their trademark. But Canonical's IP policy goes much further than that - it can be interpreted as meaning[1] that you can't distribute works based on Ubuntu without paying Canonical for the privilege, even if you call it something other than Ubuntu. [1]: And by "interpreted as meaning" I mean that's what it says and Canonical refuse to say otherwise”

                                                                                                                “If you ask a copyright holder if you can give a copy of their work to someone else (assuming it doesn't infringe trademark law), and they say no or insist you need an additional contract, it's not free software. If they insist that you recompile source code before you can give copies to someone else, it's not free software. Asking that you remove trademarks that would otherwise infringe trademark law is fine, but if you can't use their trademarks in non-infringing ways, that's still not free software.”

                                                                                                                “Canonical's IP policy continues to impose restrictions on all of these things, and therefore Ubuntu is not free software.”

                                                                                                                Beastie Bits
                                                                                                                • OPNsense 16.7.10 released

                                                                                                                • OpenBSD Foundation Welcomes First Iridium Donor: Smartisan

                                                                                                                • Jan Koum donates $500,000 to FreeBSD

                                                                                                                • The Soviet Russia, BSD makes you

                                                                                                                • Feedback/Questions
                                                                                                                  • Jason - Value
                                                                                                                  • Hamza - Shell Scripting
                                                                                                                    • Blog link
                                                                                                                    • Dave - Migrating to FreeBSD
                                                                                                                    • Dan - Which BSD?
                                                                                                                    • Zach - AMD Video
                                                                                                                    • ***
                                                                                                                      1 hr 31 min
                                                                                                                    • 171: The APU - BSD Style!

                                                                                                                      Today on the show, we’ve got a look at running OpenBSD on a APU, some BSD in your Android, managing your own FreeBSD cloud service with ansible and much more. Keep it turned on your place to B...SD!

                                                                                                                      This episode was brought to you by

                                                                                                                      Headlines
                                                                                                                      OpenBSD on PC Engines APU2
                                                                                                                      • A detailed walkthrough of building an OpenBSD firewall on a PC Engines APU2
                                                                                                                      • It starts with a breakdown of the parts that were purchases, totally around $200
                                                                                                                      • Then the reader is walked through configuring the serial console, flashing the ROM, and updating the BIOS
                                                                                                                      • The next step is actually creating a custom OpenBSD install image, and pre-configuring its serial console. Starting with OpenBSD 6.0, this step is done automatically by the installer
                                                                                                                      • Installation:
                                                                                                                        • Power off the APU2
                                                                                                                        • Insert the bootable OpenBSD installer USB flash drive to one of the USB slots on the APU2
                                                                                                                        • Power on the APU2, press F10 to get to the boot menu, and choose to boot from USB (usually option number 1)
                                                                                                                        • At the boot> prompt, remember the serial console settings (see above)
                                                                                                                        • Also at the boot> prompt, press Enter to start the installer
                                                                                                                        • Follow the installation instructions
                                                                                                                        • The driver used for wireless networking is athn(4). It might not work properly out of the box. Once OpenBSD is installed, run fw_update with no arguments. It will figure out which firmware updates are required and will download and install them. When it finishes, reboot.

                                                                                                                          Where the rubber meets the road… (part one)
                                                                                                                          • A user describes their adventures installing OpenBSD and Arch Linux on a new Lenovo X1 Carbon (4th gen, skylake)
                                                                                                                          • They also detail why they moved away from their beloved Macbook, which while long, does describe a journey away from Apple that we’ve heard elsewhere.
                                                                                                                          • The journey begins with getting a new Windows laptop, shrinking the partition and creating space for a triple-boot install, of Windows / Arch / OpenBSD
                                                                                                                          • Brian then details how he setup the partitioning and performed the initial Arch installation, getting it tuned to his specifications.
                                                                                                                          • Next up was OpenBSD though, and that went sideways initially due to a new NVMe drive that wasn’t fully supported (yet)
                                                                                                                          • The article is split into two parts (we will bring you the next installment at a future date), but he leaves us with the plan of attack to build a custom OpenBSD kernel with corrected PCI device identifiers.
                                                                                                                          • We wish Brian luck, and look forward to the “rest of the story” soon.
                                                                                                                          • ***
                                                                                                                            Howto setup a FreeBSD jail server using iocage and ansible.
                                                                                                                            • Setting up a FreeBSD jail server can be a daunting task. However when a guide comes along which shows you how to do that, including not exposing a single (non-jailed) port to the outside world, you know we had a take a closer look.
                                                                                                                            • This guide comes to us from GitHub, courtesy of Joerg Fielder.
                                                                                                                            • The project goals seem notable:

                                                                                                                            • Ansible playbook that creates a FreeBSD server which hosts multiple jails.

                                                                                                                              • Travis is used to run/test the playbook.
                                                                                                                              • No service on the host is exposed externally.
                                                                                                                              • All external connections terminate within a jail.
                                                                                                                              • Roles can be reused using Ansible Galaxy.
                                                                                                                              • Combine any of those roles to create FreeBSD server, which perfectly suits you.
                                                                                                                              • To get started, you’ll need a machine with Ansible, Vagrant and VirtualBox, and your credentials to AWS if you want it to automatically create / destroy EC2 instances.

                                                                                                                              • There’s already an impressive list of Anisible roles created for you to start with:

                                                                                                                                • freebsd-build-server - Creates a FreeBSD poudriere build server
                                                                                                                                • freebsd-jail-host - FreeBSD Jail host
                                                                                                                                • freebsd-jailed - Provides a jail
                                                                                                                                • freebsd-jailed-nginx - Provides a jailed nginx server
                                                                                                                                • freebsd-jailed-php-fpm - Creates a php-fpm pool and a ZFS dataset which is used as web root by php-fpm
                                                                                                                                • freebsd-jailed-sftp - Installs a SFTP server
                                                                                                                                • freebsd-jailed-sshd - Provides a jailed sshd server.
                                                                                                                                • freebsd-jailed-syslogd - Provides a jailed syslogd
                                                                                                                                • freebsd-jailed-btsync - Provides a jailed btsync instance server
                                                                                                                                • freebsd-jailed-joomla - Installs Joomla
                                                                                                                                • freebsd-jailed-mariadb - Provides a jailed MariaDB server
                                                                                                                                • freebsd-jailed-wordpress - Provides a jailed Wordpress server.
                                                                                                                                • Since the machines have to be customized before starting, he mentions that cloud-init is used to do the following:

                                                                                                                                • activate pf firewall

                                                                                                                                • add a pass all keep state rule to pf to keep track of connection states, which in turn allows you to reload the pf service without losing the connection

                                                                                                                                • install the following packages:

                                                                                                                                  • sudo
                                                                                                                                  • bash
                                                                                                                                  • python27
                                                                                                                                  • allow passwordless sudo for user ec2-user

                                                                                                                                  • “

                                                                                                                                  • From there it is pretty straight-forward, just a couple commands to spin up the VM’s either locally on your VirtualBox host, or in the cloud with AWS. Internally the VM’s are auto-configured with iocage to create jails, where all your actual services run.

                                                                                                                                  • A neat project, check it out today if you want a shake-n-bake type cloud + jail solution.

                                                                                                                                  • Colin Percival's bsdiff helps reduce Android apk bandwidth usage by 6 petabytes per day
                                                                                                                                    • A post on the official Android-Developers blog, talks about how they used bsdiff (and bspatch) to reduce the size of Android application updates by 65%
                                                                                                                                    • bsdiff was developed by FreeBSD’s Colin Percival
                                                                                                                                    • Earlier this year, we announced that we started using the bsdiff algorithm (by Colin Percival). Using bsdiff, we were able to reduce the size of app updates on average by 47% compared to the full APK size.

                                                                                                                                      • This post is actually about the second generation of the code.
                                                                                                                                      • Today, we're excited to share a new approach that goes further — File-by-File patching. App Updates using File-by-File patching are, on average, 65% smaller than the full app, and in some cases more than 90% smaller.

                                                                                                                                        Android apps are packaged as APKs, which are ZIP files with special conventions. Most of the content within the ZIP files (and APKs) is compressed using a technology called Deflate. Deflate is really good at compressing data but it has a drawback: it makes identifying changes in the original (uncompressed) content really hard. Even a tiny change to the original content (like changing one word in a book) can make the compressed output of deflate look completely different. Describing the differences between the original content is easy, but describing the differences between the compressed content is so hard that it leads to inefficient patches.

                                                                                                                                        • So in the second generation of the code, they use bsdiff on each individual file, then package that, rather than diffing the original and new archives
                                                                                                                                        • bsdiff is used in a great many other places, including shrinking the updates for the Firefox and Chrome browsers
                                                                                                                                        • You can find out more about bsdiff here: http://www.daemonology.net/bsdiff/
                                                                                                                                        • A far more sophisticated algorithm, which typically provides roughly 20% smaller patches, is described in my doctoral thesis.

                                                                                                                                          • Considering the gains, it is interesting that no one has implemented Colin’s more sophisticated algorithm
                                                                                                                                          • Colin had an interesting observation last night: “I just realized that bandwidth savings due to bsdiff are now roughly equal to what the total internet traffic was when I wrote it in 2003.”
                                                                                                                                          • ***
                                                                                                                                            News Roundup
                                                                                                                                            Distrowatch does an in-depth review of NAS4Free
                                                                                                                                            • Jesse Smith over at DistroWatch has done a pretty in-depth review of Nas4Free.
                                                                                                                                            • The review starts with mentioning that NAS4Free works on 3 platforms, ARM/i386/AMD64 and for the purposes of this review he would be using AMD64 builds.
                                                                                                                                            • After going through the initial install (doing typical disk management operations, such as GPT/MBR, etc) he was ready to begin using the product.
                                                                                                                                            • One concern originally observed was that the initial boot seemed rather slow. Investigation revealed this was due to it loading the entire OS image into memory, and the first (long) disk read did take some time, but once loaded was super responsive.
                                                                                                                                            • The next steps involved doing the initial configuration, which meant creating a new ZFS storage pool. After this process was done, he did find one puzzling UI option called “VM” which indicated it can be linked to VirtualBox in some way, but the Docs didn’t reveal its secrets of usage.
                                                                                                                                            • Additionally covered were some of the various “Access” methods, including traditional UNIX permissions, AD and LDAP, and then various Sharing services which are typical to a NAS, Such as NFS / Samba and others.
                                                                                                                                            • One neat feature was the built-in file-browser via the web-interface, which allows you another method of getting at your data when sometimes NFS / Samba or WebDav aren’t enough.
                                                                                                                                            • Jesse gives us a nice round-up conclusion as well
                                                                                                                                            • Most of the NAS operating systems I have used in the past were built around useful features. Some focused on making storage easy to set up and manage, others focused on services, such as making files available over multiple protocols or managing torrents. Some strive to be very easy to set up. NAS4Free does pretty well in each of the above categories. It may not be the easiest platform to set up, but it's probably a close second. It may not have the prettiest interface for managing settings, but it is quite easy to navigate. NAS4Free may not have the most add-on services and access protocols, but I suspect there are more than enough of both for most people.

                                                                                                                                              Where NAS4Free does better than most other solutions I have looked at is security. I don't think the project's website or documentation particularly focuses on security as a feature, but there are plenty of little security features that I liked. NAS4Free makes it very easy to lock the text console, which is good because we do not all keep our NAS boxes behind locked doors. The system is fairly easy to upgrade and appears to publish regular security updates in the form of new firmware. NAS4Free makes it fairly easy to set up user accounts, handle permissions and manage home directories. It's also pretty straight forward to switch from HTTP to HTTPS and to block people not on the local network from accessing the NAS's web interface.

                                                                                                                                              All in all, I like NAS4Free. It's a good, general purpose NAS operating system. While I did not feel the project did anything really amazing in any one category, nor did I run into any serious issues. The NAS ran as expected, was fairly straight forward to set up and easy to manage. This strikes me as an especially good platform for home or small business users who want an easy set up, some basic security and a solid collection of features.

                                                                                                                                              Browsix: Unix in the browser tab
                                                                                                                                              • Browsix is a research project from the PLASMA lab at the University of Massachusetts, Amherst.
                                                                                                                                              • The goal: Run C, C++, Go and Node.js programs as processes in browsers, including LaTeX, GNU Make, Go HTTP servers, and POSIX shell scripts.
                                                                                                                                              • “Processes are built on top of Web Workers, letting applications run in parallel and spawn subprocesses. System calls include fork, spawn, exec, and wait.”
                                                                                                                                              • Pipes are supported with pipe(2) enabling developers to compose processes into pipelines.

                                                                                                                                                Sockets include support for TCP socket servers and clients, making it possible to run applications like databases and HTTP servers together with their clients in the browser.

                                                                                                                                                • Browsix comprises two core parts:
                                                                                                                                                  • A kernel written in TypeScript that makes core Unix features (including pipes, concurrent processes, signals, sockets, and a shared file system) available to web applications.
                                                                                                                                                  • Extended JavaScript runtimes for C, C++, Go, and Node.js that support running programs written in these languages as processes in the browser.
                                                                                                                                                  • This seems like an interesting project, although I am not sure how it would be used as more than a toy
                                                                                                                                                  • ***
                                                                                                                                                    Book Review: PAM Mastery
                                                                                                                                                    • nixCraft does a book review of Michael W. Lucas’ “Pam Mastery”
                                                                                                                                                    • Linux, FreeBSD, and Unix-like systems are multi-user and need some way of authenticating individual users. Back in the old days, this was done in different ways. You need to change each Unix application to use different authentication scheme.

                                                                                                                                                      • Before PAM, if you wanted to use an SQL database to authenticate users, you had to write specific support for that into each of your applications. Same for LDAP, etc.
                                                                                                                                                      • So Open Group lead to the development of PAM for the Unix-like system. Today Linux, FreeBSD, MacOS X and many other Unix-like systems are configured to use a centralized authentication mechanism called Pluggable Authentication Modules (PAM). The book “PAM Mastery” deals with the black magic of PAM.

                                                                                                                                                        • Of course, each OS chose to implement PAM a little bit differently
                                                                                                                                                        • The book starts with the basic concepts about PAM and authentication. You learn about Multi-Factor Authentication and why use PAM instead of changing each program to authenticate the user. The author went into great details about why PAM is useful for developers and sysadmin for several reasons. The examples cover CentOS Linux (RHEL and clones), Debian Linux, and FreeBSD Unix system.

                                                                                                                                                          I like the way the author described PAM Configuration Files and Common Modules that covers everyday scenarios for the sysadmin. PAM configuration file format and PAM Module Interfaces are discussed in easy to understand language. Control flags in PAM can be very confusing for new sysadmins. Modules can be stacked in a particular order, and the control flags determine how important the success or failure of a particular module.

                                                                                                                                                          There is also a chapter about using one-time passwords (Google Authenticator) for your application.

                                                                                                                                                          The final chapter is all about enforcing good password policies for users and apps using PAM.

                                                                                                                                                          The sysadmin would find this book useful as it covers a common authentication scheme that can be used with a wide variety of applications on Unix. You will master PAM topics and take control over authentication for your organization IT infrastructure. If you are Linux or Unix sysadmin, I would highly recommend this book. Once again Michael W Lucas nailed it. The only book you may need for PAM deployment.

                                                                                                                                                          • get “PAM Mastery”
                                                                                                                                                          • ***
                                                                                                                                                            Reflections on Trusting Trust - Ken Thompson, co-author of UNIX

                                                                                                                                                            Ken Thompson's "cc hack" - Presented in the journal, Communication of the ACM, Vol. 27, No. 8, August 1984, in a paper entitled "Reflections on Trusting Trust", Ken Thompson, co-author of UNIX, recounted a story of how he created a version of the C compiler that, when presented with the source code for the "login" program, would automatically compile in a backdoor to allow him entry to the system. This is only half the story, though. In order to hide this trojan horse, Ken also added to this version of "cc" the ability to recognize if it was recompiling itself to make sure that the newly compiled C compiler contained both the "login" backdoor, and the code to insert both trojans into a newly compiled C compiler. In this way, the source code for the C compiler would never show that these trojans existed.

                                                                                                                                                            • The article starts off by talking about a content to write a program that produces its own source code as output. Or rather, a C program, that writes a C program, that produces its own source code as output.
                                                                                                                                                            • The C compiler is written in C. What I am about to describe is one of many "chicken and egg" problems that arise when compilers are written in their own language. In this case, I will use a specific example from the C compiler.

                                                                                                                                                              Suppose we wish to alter the C compiler to include the sequence "\v" to represent the vertical tab character. The extension to Figure 2 is obvious and is presented in Figure 3. We then recompile the C compiler, but we get a diagnostic. Obviously, since the binary version of the compiler does not know about "\v," the source is not legal C. We must "train" the compiler. After it "knows" what "\v" means, then our new change will become legal C. We look up on an ASCII chart that a vertical tab is decimal 11. We alter our source to look like Figure 4. Now the old compiler accepts the new source. We install the resulting binary as the new official C compiler and now we can write the portable version the way we had it in Figure 3.

                                                                                                                                                              The actual bug I planted in the compiler would match code in the UNIX "login" command. The replacement code would miscompile the login command so that it would accept either the intended encrypted password or a particular known password. Thus if this code were installed in binary and the binary were used to compile the login command, I could log into that system as any user. Such blatant code would not go undetected for long. Even the most casual perusal of the source of the C compiler would raise suspicions.

                                                                                                                                                              Next “simply add a second Trojan horse to the one that already exists. The second pattern is aimed at the C compiler. The replacement code is a Stage I self-reproducing program that inserts both Trojan horses into the compiler. This requires a learning phase as in the Stage II example. First we compile the modified source with the normal C compiler to produce a bugged binary. We install this binary as the official C. We can now remove the bugs from the source of the compiler and the new binary will reinsert the bugs whenever it is compiled. Of course, the login command will remain bugged with no trace in source anywhere.

                                                                                                                                                              So now there is a trojan’d version of cc. If you compile a clean version of cc, using the bad cc, you will get a bad cc. If you use the bad cc to compile the login program, it will have a backdoor. The source code for both backdoors no longer exists on the system. You can audit the source code of cc and login all you want, they are trustworthy.

                                                                                                                                                              The compiler you use to compile your new compiler, is the untrustworthy bit, but you have no way to know it is untrustworthy, and no way to make a new compiler, without using the bad compiler.

                                                                                                                                                              The moral is obvious. You can't trust code that you did not totally create yourself. (Especially code from companies that employ people like me.) No amount of source-level verification or scrutiny will protect you from using untrusted code. In demonstrating the possibility of this kind of attack, I picked on the C compiler. I could have picked on any program-handling program such as an assembler, a loader, or even hardware microcode. As the level of program gets lower, these bugs will be harder and harder to detect. A well installed microcode bug will be almost impossible to detect.

                                                                                                                                                              Acknowledgment: I first read of the possibility of such a Trojan horse in an Air Force critique of the security of an early implementation of Multics. I can- not find a more specific reference to this document. I would appreciate it if anyone who can supply this reference would let me know.

                                                                                                                                                              Beastie Bits
                                                                                                                                                              • Custom made Beastie Stockings

                                                                                                                                                              • Migrating ZFS from mirrored pool to raidz1 pool

                                                                                                                                                              • OpenBSD and you

                                                                                                                                                              • Watson.org FreeBSD and Linux cross reference

                                                                                                                                                              • OpenGrok

                                                                                                                                                              • FreeBSD SA-16:37: libc -- A 26+ year old bug found in BSD’s libc, all BSDs likely affected -- A specially crafted argument can trigger a static buffer overflow in the library, with possibility to rewrite following static buffers that belong to other library functions.

                                                                                                                                                              • HardenedBSD issues correction for libc patch -- original patch improperly calculates how many bytes are remaining in the buffer.

                                                                                                                                                              • From December the 27th until the 30th there the 33rd Chaos Communication Congress[0] is going to take place in Hamburg, Germany. Think of it as the yearly gathering of the european hackerscene and their overseas friends. I am one of the persons organizing the "BSD assembly" as a gathering place for BSD enthusiasts and waving the flag amidst the all the other projects / communities.

                                                                                                                                                                Feedback/Questions
                                                                                                                                                                • Chris - IPFW + Wifi
                                                                                                                                                                • Jason - bhyve pci
                                                                                                                                                                • Al - pf errors
                                                                                                                                                                • Zach - Xorg settings
                                                                                                                                                                • Bart - Wireless Support
                                                                                                                                                                • ***
                                                                                                                                                                  1 hr 28 min
                                                                                                                                                                • 170: Sandboxing Cohabitation

                                                                                                                                                                  This week on the show, we’ve got some new info on the talks from EuroBSDCon, a look at sharing a single ZFS pool between Linux and BSD, Sandboxing and much more! Stay tuned for your place to B...SD!

                                                                                                                                                                  This episode was brought to you by

                                                                                                                                                                  alt="DigitalOcean - Simple Cloud Hosting, Built for Developers" />

                                                                                                                                                                  Headlines
                                                                                                                                                                  EuroBSDcon 2016 Presentation Slides
                                                                                                                                                                  • Due to circumstances beyond the control of the organizers of EuroBSDCon, there were not recordings of the talks given at the event.
                                                                                                                                                                  • However, they have collected the slide decks from each of the speakers and assembled them on this page for you
                                                                                                                                                                  • Also, we have some stuff from MeetBSD already:
                                                                                                                                                                  • Youtube Playlist
                                                                                                                                                                  • Not all of the sessions are posted yet, but the rest should appear shortly
                                                                                                                                                                  • MeetBSD 2016 Trip Report: Domagoj Stolfa
                                                                                                                                                                  • ***
                                                                                                                                                                    Cohabiting FreeBSD and Gentoo Linux on a Common ZFS Volume
                                                                                                                                                                    • Eric McCorkle, who has contributed ZFS support to the FreeBSD EFI boot-loader code has posted an in-depth look at how he’s setup dual-boot with FreeBSD and Gentoo on the same ZFS volume.
                                                                                                                                                                    • He starts by giving us some background on how the layout is done. First up, GRUB is used as the boot-loader, allowing boot of both Linux and BSD
                                                                                                                                                                    • The next non-typical thing was using /etc/fstab to manage mount-points, instead of the typical ‘zfs mount’ usage, (apart from /home datasets)

                                                                                                                                                                    • data/home is mounted to /home, with all of its child datasets using the ZFS mountpoint system

                                                                                                                                                                    • data/freebsd and its child datasets house the FreeBSD system, and all have their mountpoints set to legacy

                                                                                                                                                                    • data/gentoo and its child datasets house the Gentoo system, and have their mountpoints set to legacy as well

                                                                                                                                                                    • So, how did he set this up? He helpfully provides an overview of the steps:

                                                                                                                                                                      • Use the FreeBSD installer to create the GPT and ZFS pool
                                                                                                                                                                      • Install and configure FreeBSD, with the native FreeBSD boot loader
                                                                                                                                                                      • Boot into FreeBSD, create the Gentoo Linux datasets, install GRUB
                                                                                                                                                                      • Boot into the Gentoo Linux installer, install Gentoo
                                                                                                                                                                      • Boot into Gentoo, finish any configuration tasks
                                                                                                                                                                      • The rest of the article walks us through the individual commands that make up each of those steps, as well as how to craft a GRUB config file capable of booting both systems.

                                                                                                                                                                      • Personally, since we are using EFI, I would have installed rEFInd, and chain-loaded each systems EFI boot code from there, allowing the use of the BSD loader, but to each their own!

                                                                                                                                                                      • HardenedBSD introduces Safestack into base
                                                                                                                                                                        • HardenedBSD has integrated SafeStack into its base system and ports tree
                                                                                                                                                                        • SafeStack is part of the Code Pointer Integrity (CPI) project within clang.
                                                                                                                                                                        • “SafeStack is an instrumentation pass that protects programs against attacks based on stack buffer overflows, without introducing any measurable performance overhead. It works by separating the program stack into two distinct regions: the safe stack and the unsafe stack. The safe stack stores return addresses, register spills, and local variables that are always accessed in a safe way, while the unsafe stack stores everything else. This separation ensures that buffer overflows on the unsafe stack cannot be used to overwrite anything on the safe stack.”
                                                                                                                                                                        • “As of 28 November 2016, with clang 3.9.0, SafeStack only supports being applied to applications and not shared libraries. Multiple patches have been submitted to clang by third parties to add support for shared libraries.”
                                                                                                                                                                        • SafeStack is only enabled on AMD64
                                                                                                                                                                        • ***
                                                                                                                                                                          pledge(2)… or, how I learned to love web application sandboxing
                                                                                                                                                                          • We’ve talked about OpenBSD’s sandboxing mechanism pledge() in the past, but today we have a great article by Kristaps Dzonsons, about how he grew to love it for Web Sandboxing.
                                                                                                                                                                          • +First up, he gives us his opening argument that should make most of you sit up and listen:

                                                                                                                                                                            I use application-level sandboxing a lot because I make mistakes a lot; and when writing web applications, the price of making mistakes is very dear.

                                                                                                                                                                            In the early 2000s, that meant using systrace(4) on OpenBSD and NetBSD. Then it was seccomp(2) (followed by libseccomp(3)) on Linux. Then there was capsicum(4) on FreeBSD and sandbox_init(3) on Mac OS X.

                                                                                                                                                                            All of these systems are invoked differently; and for the most part, whenever it came time to interface with one of them, I longed for sweet release from the nightmare. Please, try reading seccomp(2). To the end. Aligning web application logic and security policy would require an arduous (and usually trial-and-error or worse, copy-and-paste) process. If there was any process at all — if the burden of writing a policy didn't cause me to abandon sandboxing at the start.

                                                                                                                                                                            And then there was pledge(2).

                                                                                                                                                                            This document is about pledge(2) and why you should use it and love it. “

                                                                                                                                                                            +Not convinced yet? Maybe you should take his challenge:

                                                                                                                                                                            Let's play a drinking game. The challenge is to stay out of the hospital.

                                                                                                                                                                            1.Navigate to seccomp(2).

                                                                                                                                                                            1. Read it to the end.
                                                                                                                                                                            2. Drink every time you don't understand.
                                                                                                                                                                            3. For capsicum(4), the challenge is no less difficult. To see these in action, navigate no further than OpenSSH, which interfaces with these sandboxes: sandbox-seccomp-filter.c or sandbox-capsicum.c. (For a history lesson, you can even see sandbox-systrace.c.) Keep in mind that these do little more than restrict resources to open descriptors and the usual necessities of memory, signals, timing, etc. Keep that in mind and be horrified. “

                                                                                                                                                                              • Now Kristaps has his theory on why these are so difficult (NS..), but perhaps there is a better way. He makes the case that pledge() sits right in that sweet-spot, being powerful enough to be useful, but easy enough to implement that developers might actually use it.
                                                                                                                                                                              • All in all, a nice read, check it out! Would love to hear other developer success stories using pledge() as well.
                                                                                                                                                                              • ***
                                                                                                                                                                                News Roundup
                                                                                                                                                                                Unix history repository, now on GitHub
                                                                                                                                                                                • OS News has an interesting tidbit on their site today, about the entire commit history of Unix now being available online, starting all the way back in 1970 and bringing us forward to today.

                                                                                                                                                                                • From the README

                                                                                                                                                                                • The history and evolution of the Unix operating system is made available as a revision management repository, covering the period from its inception in 1970 as a 2.5 thousand line kernel and 26 commands, to 2016 as a widely-used 27 million line system. The 1.1GB repository contains about half a million commits and more than two thousand merges. The repository employs Git system for its storage and is hosted on GitHub. It has been created by synthesizing with custom software 24 snapshots of systems developed at Bell Labs, the University of California at Berkeley, and the 386BSD team, two legacy repositories, and the modern repository of the open source FreeBSD system. In total, about one thousand individual contributors are identified, the early ones through primary research. The data set can be used for empirical research in software engineering, information systems, and software archaeology.

                                                                                                                                                                                  • This is a fascinating find, especially will be of value to students and historians who wish to look back in time to see how UNIX evolved, and in this repo ultimately turned into modern FreeBSD.
                                                                                                                                                                                  • ***
                                                                                                                                                                                    Yandex commits improvements to FreeBSD network stack
                                                                                                                                                                                    • “Rework ip_tryforward() to use FIB4 KPI.”
                                                                                                                                                                                    • This commit brings some code from the experimental routing branch into head
                                                                                                                                                                                    • As you can see from the graphs, it offers some sizable improvements in forwarding and firewalled packets per second
                                                                                                                                                                                    • commit
                                                                                                                                                                                    • ***
                                                                                                                                                                                      The brief history of Unix socket multiplexing – select(2) system call
                                                                                                                                                                                      • Ever wondered about the details of socket multiplexing, aka the history of select(2)?
                                                                                                                                                                                      • Well Marek today gives a treat, with a quick look back at the history that made today’s modern multiplexing possible.
                                                                                                                                                                                      • First, his article starts the way all good ones do, presenting the problem in silent-movie form:
                                                                                                                                                                                      • In mid-1960's time sharing was still a recent invention. Compared to a previous paradigm - batch-processing - time sharing was truly revolutionary. It greatly reduced the time wasted between writing a program and getting its result. Batch-processing meant hours and hours of waiting often to only see a program error. See this film to better understand the problems of 1960's programmers: "The trials and tribulations of batch processing".

                                                                                                                                                                                        • Enter the wild world of the 1970’s, and we’ve now reached the birth of UNIX which tried to solve the batch processing problem with time-sharing.
                                                                                                                                                                                        • These days when a program was executed, it could "stall" (block) only on a couple of things1:

                                                                                                                                                                                          • wait for CPU
                                                                                                                                                                                          • wait for disk I/O
                                                                                                                                                                                          • wait for user input (waiting for a shell command) or console (printing data too fast)“
                                                                                                                                                                                            • Jump forward another dozen years or so, and the world changes yet again:
                                                                                                                                                                                            • This all changed in 1983 with the release of 4.2BSD. This revision introduced an early implementation of a TCP/IP stack and most importantly - the BSD Sockets API.Although today we take the BSD sockets API for granted, it wasn't obvious it was the right API. STREAMS were a competing API design on System V Revision 3.

                                                                                                                                                                                              • Coming in along with the sockets API was the select(2) call, which our very own Kirk McKusick gives us some background on:
                                                                                                                                                                                              • Select was introduced to allow applications to multiplex their I/O.

                                                                                                                                                                                                Consider a simple application like a remote login. It has descriptors for reading from and writing to the terminal and a descriptor for the (bidirectional) socket. It needs to read from the terminal keyboard and write those characters to the socket. It also needs to read from the socket and write to the terminal. Reading from a descriptor that has nothing queued causes the application to block until data arrives. The application does not know whether to read from the terminal or the socket and if it guesses wrong will incorrectly block. So select was added to let it find out which descriptor had data ready to read. If neither, select blocks until data arrives on one descriptor and then awakens telling which descriptor has data to read.

                                                                                                                                                                                                [...] Non-blocking was added at the same time as select. But using non-blocking when reading descriptors does not work well. Do you go into an infinite loop trying to read each of your input descriptors? If not, do you pause after each pass and if so for how long to remain responsive to input? Select is just far more efficient.

                                                                                                                                                                                                Select also lets you create a single inetd daemon rather than having to have a separate daemon for every service.

                                                                                                                                                                                                • The article then wraps up with an interesting conclusion:
                                                                                                                                                                                                • > CSP = Communicating sequential processes

                                                                                                                                                                                                  In this discussion I was afraid to phrase the core question. Were Unix processes intended to be CSP-style processes? Are file descriptors a CSP-derived "channels"? Is select equivalent to ALT statement?

                                                                                                                                                                                                  I think: no. Even if there are design similarities, they are accidental. The file-descriptor abstractions were developed well before the original CSP paper.

                                                                                                                                                                                                  It seems that an operating socket API's evolved totally disconnected from the userspace CSP-alike programming paradigms. It's a pity though. It would be interesting to see an operating system coherent with the programming paradigms of the user land programs.

                                                                                                                                                                                                  • A long (but good) read, and worth your time if you are interested in the history how modern multiplexing came to be.
                                                                                                                                                                                                  • ***
                                                                                                                                                                                                    How to start CLion on FreeBSD?
                                                                                                                                                                                                    • CLion (pronounced "sea lion") is a cross-platform C and C++ IDE
                                                                                                                                                                                                    • By default, the Linux version comes bundled with some binaries, which obviously won’t work with the native FreeBSD build
                                                                                                                                                                                                    • Rather than using Linux emulation, you can replace these components with native versions
                                                                                                                                                                                                      • pkg install openjdk8 cmake gdb
                                                                                                                                                                                                      • Edit clion-2016.3/bin/idea.properties and change run.processes.with.pty=false
                                                                                                                                                                                                      • Start CLion and open Settings | Build, Execution, Deployment | Toolchains
                                                                                                                                                                                                      • Specify CMake path: /usr/local/bin/cmake and GDB path: /usr/local/bin/gdb
                                                                                                                                                                                                      • Without a replacement for fsnotifier, you will get a warning that the IDE may be slow to detect changes to files on disk
                                                                                                                                                                                                      • But, someone has already written a version of fsnotifier that works on FreeBSD and OpenBSD
                                                                                                                                                                                                      • fsnotifier for OpenBSD and FreeBSD -- The fsnotifier is used by IntelliJ for detecting file changes. This version supports FreeBSD and OpenBSD via libinotify and is a replacement for the bundled Linux-only version coming with the IntelliJ IDEA Community Edition.
                                                                                                                                                                                                      • ***
                                                                                                                                                                                                        Beastie Bits
                                                                                                                                                                                                        • TrueOS Pico – FreeBSD ARM/RPi Thin Clients

                                                                                                                                                                                                        • A Puppet package provider for FreeBSD's PkgNG package manager.

                                                                                                                                                                                                        • Notes from November London *BSD meetup

                                                                                                                                                                                                        • SemiBug meeting on Dec 20th

                                                                                                                                                                                                        • Feedback/Questions
                                                                                                                                                                                                          • Erno - SSH without password
                                                                                                                                                                                                          • Jonathan - Magical ZFS
                                                                                                                                                                                                          • George - TrueOS
                                                                                                                                                                                                          • Mohammad - Jails IP
                                                                                                                                                                                                          • Gibheer - BEs
                                                                                                                                                                                                          • ***
                                                                                                                                                                                                            1 hr 17 min
                                                                                                                                                                                                          • 169: Scheduling your NetBSD

                                                                                                                                                                                                            On today’s episode, we are loaded and ready to go. Lots of OpenBSD news, a look at LetsEncrypt usage, the NetBSD scheduler (oh my) and much more. Keep it tuned to your place to B...SD!

                                                                                                                                                                                                            This episode was brought to you by

                                                                                                                                                                                                            Headlines
                                                                                                                                                                                                            Production ready
                                                                                                                                                                                                            • Ted Unangst brings us a piece on what it means to be Production Ready
                                                                                                                                                                                                            • He tells the story of a project he worked on that picked a framework that was “production ready”
                                                                                                                                                                                                            • They tested time zones, and it all seemed to work
                                                                                                                                                                                                            • They tested the unicode support in english and various european languages, and it was all good
                                                                                                                                                                                                            • They sent some emails with it, and it just worked
                                                                                                                                                                                                            • The framework said “Production Ready” on the tin, and it passed all the tests. What is the worst that could happen?
                                                                                                                                                                                                            • Now, we built our product on top of this. Some of the bugs were caught internally. Others were discovered by customers, who were of course a little dismayed. Like, how could you possibly ship this? Indeed. We were doing testing, quite a bit really, but when every possible edge case has a bug, it’s hard to find them all.

                                                                                                                                                                                                              • A customer from Arizona, which does not observe Daylight Saving Time, crashed the app
                                                                                                                                                                                                              • Some less common unicode characters caused a buffer overflow
                                                                                                                                                                                                              • The email system did not properly escape a period on its own line, truncating the email
                                                                                                                                                                                                              • “Egregious performance because of a naive N2 algorithm for growing a buffer.”
                                                                                                                                                                                                              • “Egregious performance on some platforms due to using the wrong threading primitives.”
                                                                                                                                                                                                              • “Bizarre database connection bugs for some queries that I can’t at all explain.”
                                                                                                                                                                                                              • “In short, everything was “works for me” quality. But is that really production quality?”
                                                                                                                                                                                                              • “There are some obvious contenders for the title of today’s most “production ready” software, but it’s a more general phenomenon. People who have success don’t know what they don’t know, what they didn’t test, what unused features will crash and burn.”
                                                                                                                                                                                                              • Using Let's Encrypt within FreeBSD.org

                                                                                                                                                                                                                I decided to give Let's Encrypt certificates a shot on my personal web servers earlier this year after a disaster with StartSSL. I'd like to share what I've learned.

                                                                                                                                                                                                                The biggest gotcha is that people tend to develop bad habits when they only have to deal with certificates once a year or so. The beginning part of the process is manual and the deployment of certificates somehow never quite gets automated, or things get left out.

                                                                                                                                                                                                                That all changes with Let's Encrypt certificates. Instead of 1-5 year lifetime certificates the Let's Encrypt certificates are only valid for 90 days. Most people will be wanting to renew every 60-80 days. This forces the issue - you really need to automate and make it robust.

                                                                                                                                                                                                                The Let's Encrypt folks provide tools to do this for you for the common cases. You run it on the actual machine, it manages the certificates and adjusts the server configuration files for you. Their goal is to provide a baseline shake-n-bake solution. I was not willing to give that level of control to a third party tool for my own servers - and it was absolutely out of the question for for the FreeBSD.org cluster.

                                                                                                                                                                                                                I should probably mention that we do things on the FreeBSD.org cluster that many people would find a bit strange. The biggest problem that we have to deal with is that the traditional model of a firewall/bastion between "us" and "them" does not apply. We design for the assumption that hostile users are already on the "inside" of the network. The cluster is spread over 8 distinct sites with naked internet and no vpn between them. There is actually very little trust between the systems in this network - eg: ssh is for people only - no headless users can ssh. There are no passwords. Sudo can't be used. The command and control systems use signing. We don't trust anything by IPv4/IPv6 address because we have to assume MITM is a thing. And so on. In general, things are constructed to be trigger / polling / pull based.

                                                                                                                                                                                                                The downside is that this makes automation and integration of Let's Encrypt clients interesting. If server configuration files can't be modified; and replicated web infrastructure is literally read-only (via jails/nullfs); and DNS zone files are static; and headless users can't ssh and therefore cannot do commits, how do you do the verification tokens in an automated fashion? Interesting, indeed.

                                                                                                                                                                                                                We wanted to be able to use certificates on things like ldap and smtp servers. You can't do http file verification on those so we had to use dns validation of domains.

                                                                                                                                                                                                                • First, a signing request is generated, and the acme-challenge is returned
                                                                                                                                                                                                                • Peter’s post then walks through how the script adds the required TXT record to prove control of the domain, regenerates the zone file, DNSSEC signs it, and waits for it to be published, then continues the letsencrypt process.
                                                                                                                                                                                                                • Letsencrypt then issues the actual certificate
                                                                                                                                                                                                                • We export the fullchain files into a publication location. There is another jail that can read the fullchain certificates via nullfs and they are published with our non-secrets update mechanism

                                                                                                                                                                                                                  Since we are using DNSSEC, here is a good opportunity to maintain signed TLSA fingerprints. The catch with TLSA record updates is managing the update event horizon. You are supposed to have both fingerprints listed across the update cycle. We use 'TLSA 3 1 1' records to avoid issues with propagation delays for now. TLSA 3 0 1 changes with every renewal, while 3 1 1 only changes when you generate a new private key.

                                                                                                                                                                                                                  The majority of TLS/SSL servers require a full restart to re-load the certificates if the filename is unchanged. I found out the hard way.

                                                                                                                                                                                                                  • There is a great deal more detail in the blog post, I recommend you check it out
                                                                                                                                                                                                                  • Learning more about the NetBSD scheduler (... than I wanted to know)
                                                                                                                                                                                                                    • Part 1
                                                                                                                                                                                                                    • Part 2
                                                                                                                                                                                                                    • Part 3
                                                                                                                                                                                                                    • Today I had a need to do some number crunching using a home-brewn C program. In order to do some manual load balancing, I was firing up some Amazon AWS instances (which is Xen) with NetBSD 7.0. In this case, the system was assigned two CPUs I started two instances of my program, with the intent to have each one use one CPU. Which is not what happened! Here is what I observed, and how I fixed things for now.

                                                                                                                                                                                                                      ~~

                                                                                                                                                                                                                      load averages: 2.14, 2.08, 1.83; up 0+00:45:56 18:01:32
                                                                                                                                                                                                                      27 processes: 4 runnable, 21 sleeping, 2 on CPU
                                                                                                                                                                                                                      CPU0 states: 100% user, 0.0% nice, 0.0% system, 0.0% interrupt, 0.0% idle
                                                                                                                                                                                                                      CPU1 states: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
                                                                                                                                                                                                                      Memory: 119M Act, 7940K Exec, 101M File, 3546M Free
                                                                                                                                                                                                                      ~~

                                                                                                                                                                                                                      ~~

                                                                                                                                                                                                                      PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
                                                                                                                                                                                                                      2791 root 25 0 8816K 964K RUN/0 16:10 54.20% 54.20% myprog
                                                                                                                                                                                                                      2845 root 26 0 8816K 964K RUN/0 17:10 47.90% 47.90% myprog
                                                                                                                                                                                                                      ~~

                                                                                                                                                                                                                      I expected something like WCPU and CPU being around 100%, assuming that each process was bound to its own CPU. The values I actually saw (and listed above) suggested that both programs were fighting for the same CPU. Huh?! NetBSD allows to create "processor sets", assign CPU(s) to them and then assign processes to the processor sets. Let's have a look!

                                                                                                                                                                                                                      ~~

                                                                                                                                                                                                                      # psrset -c
                                                                                                                                                                                                                      1
                                                                                                                                                                                                                      # psrset -b 0 2791
                                                                                                                                                                                                                      # psrset -b 1 2845
                                                                                                                                                                                                                      load averages: 2.02, 2.05, 1.94; up 0+00:59:32 18:15:08
                                                                                                                                                                                                                      27 processes: 1 runnable, 24 sleeping, 2 on CPU
                                                                                                                                                                                                                      CPU0 states: 100% user, 0.0% nice, 0.0% system, 0.0% interrupt, 0.0% idle
                                                                                                                                                                                                                      CPU1 states: 100% user, 0.0% nice, 0.0% system, 0.0% interrupt, 0.0% idle
                                                                                                                                                                                                                      Memory: 119M Act, 7940K Exec, 101M File, 3546M Free

                                                                                                                                                                                                                      PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
                                                                                                                                                                                                                      2845 root 25 0 8816K 964K CPU/1 26:14 100% 100% myprog
                                                                                                                                                                                                                      2791 root 25 0 8816K 964K RUN/0 25:40 100% 100% myprog

                                                                                                                                                                                                                      ~~

                                                                                                                                                                                                                      Things are as expected now, with each program being bound to its own CPU. Now why this didn't happen by default is left as an exercise to the reader.

                                                                                                                                                                                                                      I had another look at this today, and was able to reproduce the behaviour using VMWare Fusion with two CPU cores on both NetBSD 7.0_STABLE as well as -current

                                                                                                                                                                                                                      The one hint that I got so far was from Michael van Elst that there may be a rouding error in sched_balance(). Looking at the code, there is not much room for a rounding error. But I am not familiar enough (at all) with the code, so I cannot judge if crucial bits are dropped here, or how that function fits in the whole puzzle.

                                                                                                                                                                                                                      Pondering on the "rounding error", I've setup both VMs with 4 CPUs, and the behaviour shown there is that load is distributed to about 3 and a half CPU - three CPUs under full load, and one not reaching 100%. There's definitely something fishy in there.

                                                                                                                                                                                                                      With multiple CPUs, each CPU has a queue of processes that are either "on the CPU" (running) or waiting to be serviced (run) on that CPU. Those processes count as "migratable" in runqueue_t. Every now and then, the system checks all its run queues to see if a CPU is idle, and can thus "steal" (migrate) processes from a busy CPU. This is done in sched_balance().

                                                                                                                                                                                                                      Such "stealing" (migration) has the positive effect that the process doesn't have to wait for getting serviced on the CPU it's currently waiting on. On the other side, migrating the process has effects on CPU's data and instruction caches, so switching CPUs shouldn't be taken too easy.

                                                                                                                                                                                                                      All in all, I'd say the patch is a good step forward from the current situation, which does not properly distribute pure CPU hogs, at all.

                                                                                                                                                                                                                      Building Cost-Effective 100-Gbps Firewalls for HPC with FreeBSD

                                                                                                                                                                                                                      The continuous growth of the NASA Center for Climate Simulation (NCCS) requires providing high-performance security tools and enhancing the network capacity. In order to support the requirements of emerging services, including the Advanced Data Analytics Platform (ADAPT) private cloud, the NCCS security team has proposed an architecture to provide extremely cost-effective 100-gigabit-per-second (Gbps) firewalls.

                                                                                                                                                                                                                      The aim of this project is to create a commodity-based platform that can process enough packets per second (pps) to sustain a 100-Gbps workload within the NCCS computational environment. The test domain consists of several existing systems within the NCCS, including switches (Dell S4084), routers (Dell R530s), servers (Dell R420s, and C6100s), and host card adapters (10-Gbps Mellanox ConnectX2 and Intel 8259 x Ethernet cards).

                                                                                                                                                                                                                      Previous NCCS work testing the FreeBSD operating system for high-performance routing reached a maximum of 4 million pps. Building on this work, we are comparing FreeBSD-11.0 and FreeBSD-Current along with implementing the netmap-fwd Application Programming Interface (API) and tuning the 10-gigabit Ethernet cards. We used the tools iperf3, nuttcp, and netperf to monitor the performance of the maximum bandwidth through the cards. Additional testing has involved enabling the Common Address Redundancy Protocol (CARP) to achieve an active/active architecture.

                                                                                                                                                                                                                      The tests have shown that at the optimally tuned and configured FreeBSD system, it is possible to create a system that can manage the huge amounts of pps needed to create a 100-Gbps firewall with commodity components.

                                                                                                                                                                                                                      • Some interesting findings:
                                                                                                                                                                                                                        • FreeBSD was able to send more pps as a client than Centos 6.
                                                                                                                                                                                                                        • Netmap-fwd increased the pps rate significantly.
                                                                                                                                                                                                                        • The choice of network card can have a significant impact on pps, tuning, and netmap support.
                                                                                                                                                                                                                        • Further tests will continue verifying the above results with even more capable systems-such as 40-gigabit and 100-gigabit Ethernet cards-to achieve even higher performance. In addition to hardware improvements, updates to the network capabilities in the FreeBSD-Current version will be closely monitored and applied as appropriate. The final result will be a reference architecture with representative hardware and software that will enable the NCCS to build, deploy, and efficiently maintain extremely cost-effective 100-Gbps firewalls.

                                                                                                                                                                                                                          Netflix has already managed to saturate a 100 Gbps interface using only a single CPU Socket (rather than a dual socket server). Forwarding/routing is a bit different, but it is definitely on track to get there. Using a small number of commodity servers to firewall 100 Gbps of traffic just takes some careful planning and load balancing. Soon it will be possible using a single host.

                                                                                                                                                                                                                          News Roundup
                                                                                                                                                                                                                          iocell - A FreeBSD jail manager.
                                                                                                                                                                                                                          • Another jail manager has arrived on the scene, iocell, which begins life as a fork of the “classic” iocage.
                                                                                                                                                                                                                          • Due to its shared heritage, it offers much of the same functionality and flags as iocage users will be familiar with.
                                                                                                                                                                                                                          • For those who aren’t up to speed with either products, some of those features include:
                                                                                                                                                                                                                            • Templates, clones, basejails, fully independent jails
                                                                                                                                                                                                                            • Ease of use
                                                                                                                                                                                                                            • Zero configuration files
                                                                                                                                                                                                                            • Rapid thin provisioning within seconds
                                                                                                                                                                                                                            • Automatic package installation
                                                                                                                                                                                                                            • Virtual networking stacks (vnet)
                                                                                                                                                                                                                            • Shared IP based jails (non vnet)
                                                                                                                                                                                                                            • Resource limits (CPU, MEMORY, DISK I/O, etc.)
                                                                                                                                                                                                                            • Filesystem quotas and reservations
                                                                                                                                                                                                                            • Dedicated ZFS datasets inside jails
                                                                                                                                                                                                                            • Transparent ZFS snapshot management
                                                                                                                                                                                                                            • Binary updates
                                                                                                                                                                                                                            • Differential jail packaging
                                                                                                                                                                                                                            • Export and import
                                                                                                                                                                                                                            • And many more!
                                                                                                                                                                                                                            • The program makes extensive use of ZFS for performing jail operations, so a zpool will be required (But doesn’t have to be your boot-pool)
                                                                                                                                                                                                                            • It still looks “very” fresh, even using original iocage filenames in the repo, so a safe guess is that you’ll be able to switch between iocage and iocell with relative ease.
                                                                                                                                                                                                                            • Fail2ban on OpenBSD 6.0
                                                                                                                                                                                                                              • We’ve used Fail2Ban in PC-BSD before, due to it’s ability to detect and block brute force attempts against a variety of services, including SSH, mail, and others. It even can work to detect jail brute force attempts, blocking IPs on the hosts firewall.
                                                                                                                                                                                                                              • However what about OpenBSD users? Well, Gordon Turner comes to the rescue today with a great writeup on deploying Fail2Ban specifically for that platform.
                                                                                                                                                                                                                              • Now, Fail2Ban is a python program, so you’ll need to pkg install Python first, then he provides instructions on how to manually grab the F2B sources and install on OpenBSD.
                                                                                                                                                                                                                              • Helpfully Gordon gives us some handy links to scripts and modifications to get F2B running via RC as well, which is a bit different since F2B has both a server and client that must run together.
                                                                                                                                                                                                                              • With the installation bits out of the way, we get to next hit the “fun” stuff, which comes in the way of SSH brute force detection.
                                                                                                                                                                                                                              • Naturally we will be configuring F2B to use “pf” to do our actual blocking, but the examples shown give us full control over the knobs used to detect, and then ultimately call ‘pfctl’ to do our heavy lifting.
                                                                                                                                                                                                                              • The last bits of the article give us a runthrough on how to “prime” pf with the correct block tables and performing basic administrative tasks to control F2B in production.
                                                                                                                                                                                                                              • A great article, and if you run an OpenBSD box exposed to the internet, you may want to bookmark this one.
                                                                                                                                                                                                                              • openbsd changes of note
                                                                                                                                                                                                                                • Continuing with our OpenBSD news for the week, we have a new blog post by TedU, which gives us a bunch of notes on the things which have changed over there as of late:
                                                                                                                                                                                                                                • Some of the notables include:

                                                                                                                                                                                                                                  • mcl2k2 pools and the em conversion. The details are in the commits, but the short story is that due to hardware limitations, a number of tradeoffs need to be made between performance and memory usage. The em chip can (mostly) only be programmed to write to 2k buffers. However, ethernet payloads are not nicely aligned. They’re two bytes off. Leading to a costly choice. Provide a 2k buffer, and then copy all the data after the fact, which is slow. Or allocate a larger than 2k buffer, and provide em with a pointer that’s 2 bytes offset. Previously, the next size up from 2k was 4k, which is quite wasteful. The new 2k2 buffer size still wastes a bit of memory, but much less.
                                                                                                                                                                                                                                  • FreeType 2.7 is prettier than ever.
                                                                                                                                                                                                                                  • vmm for i386. Improve security. vmm is still running with a phenomenal set of privileges, but perhaps some cross-VM attacks may be limited. On the other side of the world, hyperv support is getting better.
                                                                                                                                                                                                                                  • Remove setlocale. setlocale was sprinkled all throughout the code base many years ago, even though it did nothing, in anticipation of a day when it would do something. We’ve since decided that day will never come, and so many setlocale calls can go.
                                                                                                                                                                                                                                  • syspatch is coming. Lots of commits actually. Despite the name, it’s more like a system update, since it replaces entire binaries. Then again, replacing a few binaries in a system is like patching small parts of the whole. A syspatch update will be smaller than an entire release.
                                                                                                                                                                                                                                  • There’s a new build system. It kind of works like before, but a lot of the details have changed to support less root. Actually, it’d be accurate to say the whole build privilege system has been flipped. Start as root, which drops down to the build user to do the heavy lifting, instead of starting as a user that can elevate to root at any time. This no longer requires the build user to be pseudo-root; in fact, the goal is that the build user can’t elevate.
                                                                                                                                                                                                                                  • There’s several other items on this list, take a look for more details, and he also helpfully provides commit-links if you want to see more about any of these topics.

                                                                                                                                                                                                                                  • It came from Bell Labs
                                                                                                                                                                                                                                    • A little late for a halloween episode, we have “It came from Bell Labs”, a fascinating article talking about the successor to UNIX, Plan9
                                                                                                                                                                                                                                    • There was once an operating system that was intended to be the successor to Unix. Plan 9 From Bell Labs was its name, and playing with it for five minutes is like visiting an alternate dimension where computers are done differently. It was so ahead of its time that it would be considered cutting edge, even today. Find out the weird and woolly history to Plan Nine’s inception and eventual consignment as a footnote of operating systems today.

                                                                                                                                                                                                                                      • So, if you’ve never heard of Plan 9, how did it exactly differ from the UNIX we know and love today?
                                                                                                                                                                                                                                      • Here’s just a few of the key features under Plan 9’s hood + 9P – The distributed file system protocol. Everything runs through this, there is no escaping it. Since everything runs on top of 9P, that makes everything running on a Plan 9 box distributed as well. This means, for example, you can import /dev/audio from another machine on the network to use its sound card when your own machine doesn’t have one. + ndb – The namespace server. In conjunction with 9P, it bosses all the programs around and forces them to comply to the Plan 9 way. + Instead of Unix sockets, all the networking just runs through 9P. Thus, everything from ethernet packets to network cards are all just one more kind of file. + While Unicode is implemented ad-hoc in other systems, it’s baked into Plan 9 from the first int main(). In fact, even users who don’t like Plan 9 have to admit that the character encoding support, together with the beautiful built-in rio font, makes every other operating system look primitive. + The system’s own internal programs are built to be a rounded set of user tools from the ground up. So, for instance, it comes with its own editor, acme, built to be its own weird morphing thing that plays nice with the 9P protocol.

                                                                                                                                                                                                                                        • Sounds neat, but how did it work in the real world?
                                                                                                                                                                                                                                        • The result was a mixture of both breathtaking efficiency and alienating other-worldliness. Trying out the system is like a visit to an alternate reality where time-traveling gremlins changed how computers are made and used. You can execute anycommand anywhere just by typing its name and middle-clicking on it, even in the middle of reading a file. You can type out your blog post in the middle of a man page and save it right there. Screenshots are made by pointing /dev/screen to a file. When you execute a program in a terminal, the terminal morphs into the program you launched instead of running in the background. The window manager, rio, can be invoked within rio to create an instance of itself running inside itself. You can just keep going like that, until, like Inception, you get lost in which layer you’re in. Get used to running Plan 9 long enough, and you will find yourself horribly ill-adapted for dealing with the normal world.

                                                                                                                                                                                                                                          While system administrators can’t stop praising it, the average home user won’t see much benefit unless they happen to run about eight desktop machines scattered all over. But to quote legendary hacker tribal bard Eric S. Raymond: “…Plan 9 failed simply because it fell short of being a compelling enough improvement on Unix to displace its ancestor.”

                                                                                                                                                                                                                                          • A fascinating article, worth your time to read it through, even though we’ve pulled some of the best bits here. Nice look at the alternative dimension that could have been.
                                                                                                                                                                                                                                          • Beastie Bits
                                                                                                                                                                                                                                            • inks -- Basically Reddit or Hacker News, but without the disagreeable trolls and military industrial complex shills downvoting everything to hide the truth
                                                                                                                                                                                                                                            • “PAM is Un-American” talk now online
                                                                                                                                                                                                                                            • Reddit advertising of “PAM Mastery”
                                                                                                                                                                                                                                            • MeetBSD 2016 Report by Michael Dexter
                                                                                                                                                                                                                                            • Various CBSD Tutorials
                                                                                                                                                                                                                                            • Feedback/Questions
                                                                                                                                                                                                                                              • Dylan - Kaltura Alt
                                                                                                                                                                                                                                              • Scott - ZFS in Low-Mem
                                                                                                                                                                                                                                              • J - Mixing Ports / Pkgs
                                                                                                                                                                                                                                              • Trenton - Dtract & PC-BSD
                                                                                                                                                                                                                                              • Ivan - ZFS Backups
                                                                                                                                                                                                                                                • Send questions, comments, show ideas/topics, or stories you want mentioned on the show to [email protected]
                                                                                                                                                                                                                                                • 1 hr 28 min
                                                                                                                                                                                                                                                • 168: The Post Show Show

                                                                                                                                                                                                                                                  This week on BSDNow. Allan and I are back from MeetBSD! A good time was had by all, lots to discuss, so let’s jump right into it on your place to B...SD!

                                                                                                                                                                                                                                                  This episode was brought to you by

                                                                                                                                                                                                                                                  Headlines
                                                                                                                                                                                                                                                  Build a FreeBSD 11.0-release Openstack Image with bsd-cloudinit

                                                                                                                                                                                                                                                  We are going to prepare a FreeBSD image for Openstack deployment. We do this by creating a FreeBSD 11.0-RELEASE instance, installing it and converting it using bsd-cloudinit. We'll use the CloudVPS public Openstack cloud for this. Create an account there and install the Openstack command line tools, like nova, cinder and glance.

                                                                                                                                                                                                                                                  A FreeBSD image with Cloud Init will automatically resize the disk to the size of the flavor and it will add your SSH key right at boot. You can use Cloud Config to execute a script at first boot, for example, to bootstrap your system into Puppet or Ansible. If you use Ansible to manage OpenStack instances you can integrate it without manually logging in or doing anything manually.

                                                                                                                                                                                                                                                  Since FreeBSD 10.2-RELEASE there is an rc script which, when the file /firstboot exists, expands the root filesystem to the full disk. While bsd-cloudinit does this as well, if you don't need the whole cloudinit stack, (when you use a static ssh key for example), you can touch that file to make sure the disk is expanded at the first boot

                                                                                                                                                                                                                                                  • A detailed tutorial that shows how to create customized cloud images using the FreeBSD install media
                                                                                                                                                                                                                                                  • There is also the option of using the FreeBSD release tools to build custom cloud images in a more headless fashion
                                                                                                                                                                                                                                                  • Someone should make a tutorial out of that
                                                                                                                                                                                                                                                  • ***
                                                                                                                                                                                                                                                    iXsystems Announces TrueOS Launch
                                                                                                                                                                                                                                                    • As loyal listeners to this show, you’ve no doubt heard by now that we are in the middle of undergoing a shift in moving PC-BSD -> TrueOS.
                                                                                                                                                                                                                                                    • Last week during MeetBSD this was made “official” with iX issuing our press release and I was able to give a talk detailing many of the reasons and things going on with this change.
                                                                                                                                                                                                                                                    • The talk should be available online here soon(ish), but for a quick recap:
                                                                                                                                                                                                                                                    • TrueOS is moving to a rolling-release model based on FreeBSD -CURRENT
                                                                                                                                                                                                                                                    • Lumina has become the default desktop for TrueOS
                                                                                                                                                                                                                                                    • LibreSSL is enabled top to bottom
                                                                                                                                                                                                                                                    • We are in the middle of working on conversion to OpenRC for run-control replacement
                                                                                                                                                                                                                                                    • The TrueOS pico was announced, which is our “Thin-Client” solution, right now allowing you to use a TrueOS server pared with a RPI2 device.
                                                                                                                                                                                                                                                    • ***
                                                                                                                                                                                                                                                      Running FreeBSD 11 on Raspberry Pi
                                                                                                                                                                                                                                                      • This article covers some of the changes you will notice if you upgrade your RPI to FreeBSD 11.0
                                                                                                                                                                                                                                                      • It covers some of the changes to WiFi in 11.0
                                                                                                                                                                                                                                                      • Pro Tip: you can get a list of WiFi devices by doing: sysctl net.wlan.devices
                                                                                                                                                                                                                                                      • There are official binary packages for ARM with 11.0, so you can just ‘pkg install’ your favourite apps
                                                                                                                                                                                                                                                      • Many of the LEDs are exposed via the /dev/led/ interface, which you can just echo 0 or 1 to, or use morse(6) to send a message
                                                                                                                                                                                                                                                      • gpioctl can be used to control the various GPIO pins
                                                                                                                                                                                                                                                      • The post also covers how to setup the real-time clock on the Raspberry Pi
                                                                                                                                                                                                                                                      • There is also limited support for adjusting the CPU frequency of the Pi
                                                                                                                                                                                                                                                      • There are also tips on configuring a one-wire temperature sensor
                                                                                                                                                                                                                                                      • ***
                                                                                                                                                                                                                                                        void-zones-tools for FreeBSD
                                                                                                                                                                                                                                                        • Adblock has been in the news a bit recently, with some of the more popular browser plugins now accepting brib...contributions to permit specific ads through.
                                                                                                                                                                                                                                                        • Well today the ad-blockers strike back. We have a great tutorial up on GitHub which demonstrates one of the useful features of using Unbound in FreeBSD to do your own ad-blocking with void-zones.
                                                                                                                                                                                                                                                        • Specifically, void-zones are a way to return NXDOMAIN when DNS requests are made to known malicious or spam sites.
                                                                                                                                                                                                                                                        • Using void-zones-tools software will make managing this easy, by being able to pull in known lists of sites to block from several 3rd party curators.
                                                                                                                                                                                                                                                        • When coupled with our past tutorials on setting up your own FreeBSD router, this may become very useful for a lot of folks who want to do ad-blocking ad at a lower level, allowing it to filter smart-phones or any other devices on a network.
                                                                                                                                                                                                                                                        • ***
                                                                                                                                                                                                                                                          News Roundup
                                                                                                                                                                                                                                                          BSD Socket API Revamp
                                                                                                                                                                                                                                                          • Martin Sustrik has started a draft RFC to revamp the BSD Sockets API:
                                                                                                                                                                                                                                                          • The progress in the area of network protocols is distinctively lagging behind. While every hobbyist new to the art of programming writes and publishes their small JavaScript libraries, there's no such thing going on with network protocols. Indeed, it looks like the field of network protocols is dominated by big companies and academia, just like programming as a whole used to be before the advent of personal computers.

                                                                                                                                                                                                                                                            the API proposed in this document doesn't try to virtualize all possible aspects of all possible protocols and provide a single set of functions to deal with all of them. Instead, it acknowledges how varied the protocol landscape is and how much the requirements for individual protocols differ. Therefore, it lets each protocol define its own API and asks only for bare minimum of standardised behaviour needed to implement protocol composability.

                                                                                                                                                                                                                                                            As a consequence, the new API is much more lightweight and flexible than BSD socket API and allows to decompose today's monolithic protocol monsters into small single-purpose microprotocols that can be easily combined together to achieve desired functionality.

                                                                                                                                                                                                                                                            • The idea behind the new design is to allow the software author to define their own protocols via a generic interface, and easily stack them on top of the existing network protocols, be they the basic protocols like TCP/IP, or a layer 7 protocol like HTTP
                                                                                                                                                                                                                                                            • Example of creating a stack of four protocols:
                                                                                                                                                                                                                                                            • ~~
                                                                                                                                                                                                                                                              int s1 = tcp_connect("192.168.0.111:5555");
                                                                                                                                                                                                                                                              int s2 = foo_start(s1, arg1, arg2, arg3);
                                                                                                                                                                                                                                                              int s3 = bar_start(s2);
                                                                                                                                                                                                                                                              int s4 = baz_start(s3, arg4, arg5);
                                                                                                                                                                                                                                                              ~~
                                                                                                                                                                                                                                                            • It also allows applying generic transformations to the protocols:
                                                                                                                                                                                                                                                            • ~~
                                                                                                                                                                                                                                                              int tcps = tcp_connect("192.168.0.111:80");
                                                                                                                                                                                                                                                              /* Websockets is a connected protocol. /
                                                                                                                                                                                                                                                              int ws = websock_connect(tcps);
                                                                                                                                                                                                                                                              uint16_t compression_algoritm;
                                                                                                                                                                                                                                                              mrecv(ws, &compression_algorithm, 2, -1);
                                                                                                                                                                                                                                                              / Compression socket is unconnected. /
                                                                                                                                                                                                                                                              int cs = compress_start(ws, compression_algorithm);
                                                                                                                                                                                                                                                              ~~
                                                                                                                                                                                                                                                              **
                                                                                                                                                                                                                                                              Updated version of re(4) for DragonflyBSD
                                                                                                                                                                                                                                                              • Sephe over at the Dragonfly project has issued a CFT for a newer version of the “re” driver
                                                                                                                                                                                                                                                              • For those who don’t know, that is for Realtek nics, specifically his updates add features:
                                                                                                                                                                                                                                                              • I have made an updated version of re(4), which leverages Realtek driver's chip/PHY reset/initialization code. I hope it can resolve all kinds of weirdness we encountered on this chip so far.

                                                                                                                                                                                                                                                                • Testers, you know what to do! Give this a whirl and let him know if you run into any new issues, or better yet, give feedback if it fixes some long-standing problems you’ve run into in the past.
                                                                                                                                                                                                                                                                • ***
                                                                                                                                                                                                                                                                  Hackathon reports from OpenBSD’s B2K16
                                                                                                                                                                                                                                                                  • b2k16 hackathon report: Jeremy Evans on ports cleaning, progress on postgres, nginx, ruby and more

                                                                                                                                                                                                                                                                  • b2k16 hackathon report: Landry Breuil on various ports progress

                                                                                                                                                                                                                                                                  • b2k16 hackathon report: Antoine Jacoutot on GNOME's path forward, various ports progress

                                                                                                                                                                                                                                                                  • We have a trio of hackathon reports from OpenBSD’s B2K16 (Recently held in Budapest)

                                                                                                                                                                                                                                                                  • First up - Jeremy Evans give us his rundown which starts with sweeping some of the cruft out of the barn:

                                                                                                                                                                                                                                                                  • I started off b2k16 by channeling tedu@, and removing a lot of ports, including lang/ruby/2.0, lang/io, convertors/ruby-json, databases/dbic++, databases/ruby-swift, databases/ruby-jdbc-*, x11/ruby-profiligacy, and mail/ruby-mailfactory.

                                                                                                                                                                                                                                                                    • After that, he talks about improvements made to postgres, nginx and ruby ports, fixing things such as pg_upgrade support, breaking nginx down into sub-packages and a major ruby update to about 50% of the packages.
                                                                                                                                                                                                                                                                    • Next up - Landry Breuil tells us about his trip, which also started with some major ports pruning, including some stale XFCE bits and drupal6.
                                                                                                                                                                                                                                                                    • One of the things he mentions is the Tor browser:
                                                                                                                                                                                                                                                                    • Found finally some time again to review properly the pending port for Tor Browser, even if i don't like the way it is developed (600+ patches against upstream firefox-esr !? even if relationship is improving..) nor will endorse its use, i feel that the time that was spent on porting it and updating it and maintaining it shouldn't be lost, and it should get commited - there are only some portswise minor tweaks to fix. Had a bit of discussions about that with other porters...

                                                                                                                                                                                                                                                                      • Lastly, Antoine Jacoutot gives us a smaller update on his work:
                                                                                                                                                                                                                                                                      • First task of this hackathon was for Jasper and I to upgrade to GNOME 3.22.1 (version 3.22.2 hit the ports tree since). As usual I already updated the core libraries a few days before so that we could start with a nice set of fully updated packages. It ended up being the fastest GNOME update ever, it all went very smoothly. We're still debating the future of GNOME on OpenBSD though. More and more features require systemd interfaces and without a replacement it may not make sense to keep it around. Implementing these interfaces requires time which Jasper and I don't really have these days... Anyway, we'll see.

                                                                                                                                                                                                                                                                        • All-n-all, a good trip it sounds like with some much needed hacking taking place. Good to see the cruft getting cleaned up, along with some new exciting ports landing.
                                                                                                                                                                                                                                                                        • ***
                                                                                                                                                                                                                                                                          July to September 2016 Status Report
                                                                                                                                                                                                                                                                          • The latest FreeBSD quarterly status report is out
                                                                                                                                                                                                                                                                          • It includes the induction of the new Core team, and reports from all of the other teams, including Release Engineering, Port Manager, and the FreeBSD Foundation
                                                                                                                                                                                                                                                                          • Some other highlights:
                                                                                                                                                                                                                                                                          • Capsicum Update
                                                                                                                                                                                                                                                                            • The Graphics Stack on FreeBSD
                                                                                                                                                                                                                                                                            • Using lld, the LLVM Linker, to Link FreeBSD
                                                                                                                                                                                                                                                                            • VirtualBox Shared Folders Filesystem
                                                                                                                                                                                                                                                                            • evdev support (better mouse, keyboard, and multi-touch support)
                                                                                                                                                                                                                                                                              • ZFS Code Sync with Latest OpenZFS/Illumos
                                                                                                                                                                                                                                                                                • The ARC now mostly stores compressed data, the same as is stored on disk, decompressing them on demand.
                                                                                                                                                                                                                                                                                • The L2ARC now stores the same (compressed) data as the ARC without recompression, and its RAM usage was further reduced.
                                                                                                                                                                                                                                                                                • The largest size of indirect block possible has been increased from 16KB to 128KB, and speculative prefetching of indirect blocks is now performed.
                                                                                                                                                                                                                                                                                • Improved ordering of space allocation.
                                                                                                                                                                                                                                                                                • The SHA-512t256 and Skein hashing algorithms are now supported.
                                                                                                                                                                                                                                                                                • ***
                                                                                                                                                                                                                                                                                  Beastie Bits
                                                                                                                                                                                                                                                                                  • How to Host Your Own Private GitHub with Gogs
                                                                                                                                                                                                                                                                                  • Nvidia Adds Telemetry To Latest Drivers
                                                                                                                                                                                                                                                                                  • KnoxBUG Upcoming Meeting
                                                                                                                                                                                                                                                                                  • Feedback/Questions
                                                                                                                                                                                                                                                                                    • William - Show Music
                                                                                                                                                                                                                                                                                    • Ray - Mounting a Cell Phone
                                                                                                                                                                                                                                                                                    • Ron - TrueOS + Radeon (Follow-up - He used nvidia card)
                                                                                                                                                                                                                                                                                    • Kurt - ZFS Migration
                                                                                                                                                                                                                                                                                    • Matt Dillon (Yes that Matt Dillon) - vkernels
                                                                                                                                                                                                                                                                                    • ***
                                                                                                                                                                                                                                                                                      1 hr 25 min
                                                                                                                                                                                                                                                                                    • 167: Playing the Long Game

                                                                                                                                                                                                                                                                                      This week on BSDNow, Allan & Kris are out at MeetBSD, but we never forget our loyal listeners. We have a great interview Allan did with Scott Long of Netflix & FreeBSD fame, as well as your questions on the place to B...SD!

                                                                                                                                                                                                                                                                                      This episode was brought to you by

                                                                                                                                                                                                                                                                                      alt="DigitalOcean - Simple Cloud Hosting, Built for Developers" />

                                                                                                                                                                                                                                                                                      Interview - Scott Long - [email protected]
                                                                                                                                                                                                                                                                                      • FreeBSD & Netflix
                                                                                                                                                                                                                                                                                      • ***
                                                                                                                                                                                                                                                                                        Feedback/Questions
                                                                                                                                                                                                                                                                                        • Zack - USB Config
                                                                                                                                                                                                                                                                                        • Jens - VMs, Jails and Containers
                                                                                                                                                                                                                                                                                        • Ranko - Tarsnap Keys
                                                                                                                                                                                                                                                                                        • Alex - OpenBSD in Hyper-V
                                                                                                                                                                                                                                                                                        • Curt - Discussion Segment
                                                                                                                                                                                                                                                                                        • 48 min

                                                                                                                                                                                                                                                                                        About BSD Now

                                                                                                                                                                                                                                                                                        From the publisher's feed

                                                                                                                                                                                                                                                                                        Created by three guys who love BSD, we cover the latest news and have an extensive series of tutorials, as well as interviews with various people from all areas of the BSD community. It also serves as…

                                                                                                                                                                                                                                                                                        More shows like BSD Now

                                                                                                                                                                                                                                                                                        The Changelog: Software Development, Open Source by Changelog Media

                                                                                                                                                                                                                                                                                        The Changelog: Software Development, Open Source

                                                                                                                                                                                                                                                                                        286 Listeners

                                                                                                                                                                                                                                                                                        Security Now (Audio) by TWiT

                                                                                                                                                                                                                                                                                        Security Now (Audio)

                                                                                                                                                                                                                                                                                        2,011 Listeners

                                                                                                                                                                                                                                                                                        MacBreak Weekly (Audio) by TWiT

                                                                                                                                                                                                                                                                                        MacBreak Weekly (Audio)

                                                                                                                                                                                                                                                                                        2,018 Listeners

                                                                                                                                                                                                                                                                                        Accidental Tech Podcast by Marco Arment, Casey Liss, John Siracusa

                                                                                                                                                                                                                                                                                        Accidental Tech Podcast

                                                                                                                                                                                                                                                                                        2,144 Listeners

                                                                                                                                                                                                                                                                                        LINUX Unplugged by Jupiter Broadcasting

                                                                                                                                                                                                                                                                                        LINUX Unplugged

                                                                                                                                                                                                                                                                                        272 Listeners

                                                                                                                                                                                                                                                                                        Risky Business by Risky Business Media

                                                                                                                                                                                                                                                                                        Risky Business

                                                                                                                                                                                                                                                                                        374 Listeners

                                                                                                                                                                                                                                                                                        Late Night Linux by The Late Night Linux Family

                                                                                                                                                                                                                                                                                        Late Night Linux

                                                                                                                                                                                                                                                                                        169 Listeners

                                                                                                                                                                                                                                                                                        Darknet Diaries by Jack Rhysider

                                                                                                                                                                                                                                                                                        Darknet Diaries

                                                                                                                                                                                                                                                                                        8,063 Listeners

                                                                                                                                                                                                                                                                                        Behind the Bastards by Cool Zone Media and iHeartPodcasts

                                                                                                                                                                                                                                                                                        Behind the Bastards

                                                                                                                                                                                                                                                                                        15,564 Listeners

                                                                                                                                                                                                                                                                                        Linux Dev Time by The Late Night Linux Family

                                                                                                                                                                                                                                                                                        Linux Dev Time

                                                                                                                                                                                                                                                                                        22 Listeners

                                                                                                                                                                                                                                                                                        2.5 Admins by The Late Night Linux Family

                                                                                                                                                                                                                                                                                        2.5 Admins

                                                                                                                                                                                                                                                                                        98 Listeners

                                                                                                                                                                                                                                                                                        Linux After Dark by The Late Night Linux Family

                                                                                                                                                                                                                                                                                        Linux After Dark

                                                                                                                                                                                                                                                                                        29 Listeners

                                                                                                                                                                                                                                                                                        This Day in AI Podcast by Michael Sharkey, Chris Sharkey

                                                                                                                                                                                                                                                                                        This Day in AI Podcast

                                                                                                                                                                                                                                                                                        221 Listeners

                                                                                                                                                                                                                                                                                        Linux Matters by Linux Matters

                                                                                                                                                                                                                                                                                        Linux Matters

                                                                                                                                                                                                                                                                                        22 Listeners

                                                                                                                                                                                                                                                                                        Better Offline by Cool Zone Media and iHeartPodcasts

                                                                                                                                                                                                                                                                                        Better Offline

                                                                                                                                                                                                                                                                                        608 Listeners