Portaudit and ezjail
Portaudit
is a handy utility for FreeBSD that lets you know if any of your installed
ports has a known security vulnerability. Part of the install puts a script
in /usr/local/etc/periodic/security
, which adds a report on ports
that should be updated, to the daily security e-mail the system sends to root.
If you have jails setup on your machine, they may have their own ports installed which you'd probably also want checked by portaudit. The brute-force way to do it would be to install separate copies of portaudit inside each jail, and keep an eye on separate daily security e-mails from each jail looking for problems.
In my case, I've been running jails setup by
ezjail, and
didn't want to install portaudit over and over again. Instead, I came
up with this minor shell script that checks each ezjail. If you save it
as /usr/local/etc/periodic/security/410.portaudit_ezjail
, then
it'll run each day, right after the main portaudit periodic script that updates
the vulnerability db and checks the main machine, and include the output in the
main machine's security e-mail.
#!/bin/sh # # Run portaudit against packages installed in ezjails, as # a periodic security job. # # # 2006-05-05 Barry Pederson <bp@barryp.org> # JAIL_CONFIGDIR="/usr/local/etc/ezjail" PACKAGE_DIR="/var/db/pkg" # If there is a global system configuration file, suck it in. # if [ -r /etc/defaults/periodic.conf ]; then . /etc/defaults/periodic.conf source_periodic_confs fi case "${daily_status_security_portaudit_enable:-YES}" in [Nn][Oo]) ;; *) for jailname in `ls $JAIL_CONFIGDIR` do . "${JAIL_CONFIGDIR}/${jailname}" eval rootdir=\"\$jail_${jailname}_rootdir\" echo echo "Jail: $jailname" echo "-------------------------" echo "ls ${rootdir}${PACKAGE_DIR} | xargs portaudit" | su -fm "${daily_status_security_portaudit_user:-nobody}" done ;; esac
I have to admit I'm not too fluent with shell scripting, and would have been much more comfortable writing it in Python, but that's probably a bit of overkill in this case.
Doh! As soon as I finished writing this, I happened to check the ezjail website, and found a link to jailaudit, by Philipp Wuensche which looks to do a similar thing but with more options, and has been submitted as a port.