Index: net-mgmt/check_snmp_pkgvuln/Makefile =================================================================== --- /dev/null +++ net-mgmt/check_snmp_pkgvuln/Makefile @@ -0,0 +1,29 @@ +# Created by: Jarrod Sayers +# $FreeBSD$ + +PORTNAME= check_snmp_pkgvuln +PORTVERSION= 0.02 +CATEGORIES= net-mgmt +PKGNAMEPREFIX= nagios- +PKGNAMESUFFIX= -plugin +MASTER_SITES= # none +DISTFILES= # none + +MAINTAINER= dvl@FreeBSD.org +COMMENT= Security vulnerability plugin for Nagios + +RUN_DEPENDS= snmpwalk:${PORTSDIR}/net-mgmt/net-snmp + +NAGIOS_PLUGIN_DIR?= libexec/nagios + +NO_WRKSUBDIR= yes +NO_BUILD= yes + +PLIST_SUB+= NAGIOS_PLUGIN_DIR=${NAGIOS_PLUGIN_DIR} + +do-install: + ${MKDIR} ${STAGEDIR}${PREFIX}/${NAGIOS_PLUGIN_DIR} + ${INSTALL_SCRIPT} ${FILESDIR}/check_snmp_pkgvuln \ + ${STAGEDIR}${PREFIX}/${NAGIOS_PLUGIN_DIR}/ + +.include Index: net-mgmt/check_snmp_pkgvuln/files/check_snmp_pkgvuln =================================================================== --- /dev/null +++ net-mgmt/check_snmp_pkgvuln/files/check_snmp_pkgvuln @@ -0,0 +1,110 @@ +#! /bin/sh +# +# Author: Clement Laforet +# +# Converted to pkg audit by Dan Langille +# +# This script is under beerware licence from Poul-Henning Kamp +# . +# +# ---------------------------------------------------------------------------- +# "THE BEER-WARE LICENSE" (Revision 42): +# wrote this file. As long as you retain this notice you +# can do whatever you want with this stuff. If we meet some day, and you think +# this stuff is worth it, you can buy me a beer in return. Clement Laforet +# ---------------------------------------------------------------------------- +# +# Changelog: +# - 20050715: v0.01 initial version. +# +# +HOME="/var/spool/nagios" +SED="/usr/bin/sed" +SNMPWALK="/usr/local/bin/snmpwalk" +PKGAUDIT="/usr/sbin/pkg audit -q" + +TMPDIR="/tmp" +MKTEMP="/usr/bin/mktemp" +PROGNAME=`/usr/bin/basename $0` +PROGPATH=`/usr/bin/dirname $0` +TMPFILE=`${MKTEMP} ${TMPDIR}/${PROGNAME}.XXXXX` || { + ${ECHO} "failed to created tmp file" + exit ${STATE_UNKNOWN} +} + +SNMP_COMMUNITY="public" +SNMP_VERSION="1" + +. $PROGPATH/utils.sh + +ERROR_RETCODE=${STATE_CRITICAL} + +usage() { + ${ECHO} "Usage: $PROGNAME -H [-c ] [-v ] [-E ]\n" + ${ECHO} "default community is \"public\"\n" + ${ECHO} "default version is 1\n" + ${ECHO} "default error code is 2 [critical]\n" +} + +exit_clean() { + rm -f ${TMPFILE} + exit ${1} +} + +if [ ${#} -lt 1 ]; then + usage + exit_clean ${STATE_UNKNOWN} +fi + +while getopts "H:c:v:E:h" option +do + case $option in + H) + HOSTNAME=${OPTARG} + ;; + h) + usage + exit_clean ${STATE_OK} + ;; + c) + SNMP_COMMUNITY=${OPTARG} + ;; + v) + SNMP_VERSION=${OPTARG} + ;; + E) + ERROR_RETCODE=${OPTARG} + ;; + *) + echo "Unknown argument: $1" + usage + exit_clean ${STATE_UNKNOWN} + ;; + esac +done +shift $(($OPTIND - 1)) + + +if [ "x${HOSTNAME}" = "x" ]; then + ${ECHO} "you need a hostname" + exit_clean ${STATE_UNKNOWN} +fi + +${SNMPWALK} -v ${SNMP_VERSION} -c ${SNMP_COMMUNITY} ${HOSTNAME} \ + HOST-RESOURCES-MIB::hrSWInstalledName > ${TMPFILE} || {\ + exit_clean ${STATE_UNKNOWN} + } + +PKGS=`${SED} -e 's/.*"\(.*\)"$/\1/' ${TMPFILE}` +RESULT=`${PKGAUDIT} ${PKGS}` + +if [ "$?" -ne "0" ] +then + SPACES=`echo $RESULT | tr -cd ' ' | wc -c` + PKGCOUNT=$((SPACES + 1)) + echo ${PKGCOUNT} vulnerable packages: ${RESULT} + exit_clean ${ERROR_RETCODE} +else + echo ${RESULT} + exit_clean ${STATE_OK} +fi Index: net-mgmt/check_snmp_pkgvuln/pkg-descr =================================================================== --- /dev/null +++ net-mgmt/check_snmp_pkgvuln/pkg-descr @@ -0,0 +1,6 @@ +check_snmp_pkgvuln is a Nagios plugin that detects hosts that are running +vulnerable ports based on the database of security vulnerabilities +provided by portaudit. The plugin communicates with the host via SNMP +using the HOST-RESOURCES-MIB::hrSWInstalledName MIB. + +WWW: https://gist.github.com/dlangille/aec6af1179debd99cd6c Index: net-mgmt/check_snmp_pkgvuln/pkg-plist =================================================================== --- /dev/null +++ net-mgmt/check_snmp_pkgvuln/pkg-plist @@ -0,0 +1,2 @@ +%%NAGIOS_PLUGIN_DIR%%/check_snmp_pkgvuln +@dir %%NAGIOS_PLUGIN_DIR%%