One person suggested my openssl version might be too new (0.9.8). I just removed it and installed 0.9.7i, older enough version to be safe and one that I know another user has in a working configuration. After compiling it, I then recompiled NRPE against it and copied the files in place. It still fails with the same error.

/var/log/system.log shows:

   Mar 19 10:45:17 seth xinetd[26057]: Started working: 1 available service
   Mar 19 10:45:25 seth nrpe[26064]: Error: NRPE daemon cannot be run
   as user/group root!

I had it set to run as nobody:nobody, but that wasn't working. I even tried setting to run as daemon:wheel, but the same results. Finally, I created a nagios user and configured /etc/xinetd.d/nrpe to run as nagios:nagios and updated /etc/nagios/nrpe.cfg to use the same. However, all remote tests still result in the following:

From the server:

   [nag...@nagios ~]$ /usr/local/nagios/libexec/check_nrpe -H seth
   CHECK_NRPE: Error - Could not complete SSL handshake.

From the client:

   Mar 19 10:45:17 seth xinetd[26057]: Started working: 1 available service
   Mar 19 10:45:25 seth nrpe[26064]: Error: NRPE daemon cannot be run
   as user/group root!

Scouring Google shows that the "cannot be run as ... root" error is in the nrpe.c code. What I can't figure out is why its trying to run as root instead of the configured user...

Anyone running NRPE with xinetd for Mac's? I'm frustrated enough that I almost just want to use check_by_ssh, but I'd prefer to get this working and keep things consistent (ie: with NRPE). My /etc/nagios/nrpe.cfg and /etc/xinetd.d/nrpe are below:

   seth:/etc/xinetd.d root# pwd
   /etc/xinetd.d
   seth:/etc/xinetd.d root# cat nrpe
   # /etc/xinetd.d/nrpe
   # description: NRPE
   # default: on
   service nrpe
   {
           flags           = REUSE
           socket_type     = stream
           port        = 5666
           wait            = no
           user            = nagios
           group           = nagios
           server          = /usr/local/sbin/nrpe
           server_args     = -c /etc/nagios/nrpe.cfg --inetd
           log_on_failure  += USERID
           disable         = no
           only_from       = 127.0.0.1 10.1.1.170
   }

---------------------------

   seth:/etc/nagios root# pwd
   /etc/nagios
   seth:/etc/nagios root# cat nrpe.cfg
   #############################################################################
   # Sample NRPE Config File
   # Written by: Ethan Galstad (nag...@nagios.org)
   #
   # Last Modified: 11-23-2007
   #
   # NOTES:
   # This is a sample configuration file for the NRPE daemon.  It needs
   to be
   # located on the remote host that is running the NRPE daemon, not
   the host
   # from which the check_nrpe client is being executed.
   #############################################################################
   # LOG FACILITY
   # The syslog facility that should be used for logging purposes.

   log_facility=daemon

   # PID FILE
   # The name of the file in which the NRPE daemon should write it's
   process ID
   # number.  The file is only written if the NRPE daemon is started by
   the root
   # user and is running in standalone mode.

   pid_file=/var/run/nrpe.pid

   # PORT NUMBER
   # Port number we should wait for connections on.
   # NOTE: This must be a non-priviledged port (i.e. > 1024).
   # NOTE: This option is ignored if NRPE is running under either inetd
   or xinetd

   server_port=5666

   # SERVER ADDRESS
   # Address that nrpe should bind to in case there are more than one
   interface
   # and you do not want nrpe to bind on all interfaces.
   # NOTE: This option is ignored if NRPE is running under either inetd
   or xinetd

   #server_address=127.0.0.1

   # NRPE USER
   # This determines the effective user that the NRPE daemon should run
as. # You can either supply a username or a UID.
   #
   # NOTE: This option is ignored if NRPE is running under either inetd
   or xinetd

   nrpe_user=nagios

   # NRPE GROUP
   # This determines the effective group that the NRPE daemon should
run as. # You can either supply a group name or a GID.
   #
   # NOTE: This option is ignored if NRPE is running under either inetd
   or xinetd

   nrpe_group=nagios

   # ALLOWED HOST ADDRESSES
   # This is an optional comma-delimited list of IP address or hostnames
   # that are allowed to talk to the NRPE daemon.
   #
   # Note: The daemon only does rudimentary checking of the client's IP
   # address.  I would highly recommend adding entries in your
   /etc/hosts.allow
   # file to allow only the specified host to connect to the port
   # you are running this daemon on.
   #
   # NOTE: This option is ignored if NRPE is running under either inetd
   or xinetd

   allowed_hosts=127.0.0.1

   # COMMAND ARGUMENT PROCESSING
   # This option determines whether or not the NRPE daemon will allow
   clients
   # to specify arguments to commands that are executed.  This option
   only works
   # if the daemon was configured with the --enable-command-args
   configure script
# option. #
   # *** ENABLING THIS OPTION IS A SECURITY RISK! ***
   # Read the SECURITY file for information on some of the security
   implications
   # of enabling this variable.
   #
   # Values: 0=do not allow arguments, 1=allow command arguments

   dont_blame_nrpe=0



   # COMMAND PREFIX
   # This option allows you to prefix all commands with a user-defined
   string.
   # A space is automatically added between the specified prefix string
   and the
   # command line from the command definition.
   #
   # *** THIS EXAMPLE MAY POSE A POTENTIAL SECURITY RISK, SO USE WITH
   CAUTION! ***
   # Usage scenario:
   # Execute restricted commmands using sudo.  For this to work, you
   need to add
   # the nagios user to your /etc/sudoers.  An example entry for alllowing
   # execution of the plugins from might be:
   #
   # nagios          ALL=(ALL) NOPASSWD: /usr/lib/nagios/plugins/
   #
   # This lets the nagios user run all commands in that directory (and
   only them)
   # without asking for a password.  If you do this, make sure you
   don't give
   # random users write access to that directory or its contents!

   # command_prefix=/usr/bin/sudo



   # DEBUGGING OPTION
   # This option determines whether or not debugging messages are
   logged to the
   # syslog facility.
   # Values: 0=debugging off, 1=debugging on

   debug=0



   # COMMAND TIMEOUT
   # This specifies the maximum number of seconds that the NRPE daemon will
   # allow plugins to finish executing before killing them off.

   command_timeout=60



   # CONNECTION TIMEOUT
   # This specifies the maximum number of seconds that the NRPE daemon will
   # wait for a connection to be established before exiting. This is
   sometimes
   # seen where a network problem stops the SSL being established even
   though
   # all network sessions are connected. This causes the nrpe daemons to
   # accumulate, eating system resources. Do not set this too low.

   connection_timeout=300



   # WEEK RANDOM SEED OPTION
   # This directive allows you to use SSL even if your system does not have
   # a /dev/random or /dev/urandom (on purpose or because the necessary
   patches
   # were not applied). The random number generator will be seeded from
   a file
   # which is either a file pointed to by the environment valiable
   $RANDFILE
   # or $HOME/.rnd. If neither exists, the pseudo random number
   generator will
   # be initialized and a warning will be issued.
   # Values: 0=only seed from /dev/[u]random, 1=also seed from weak
   randomness

   #allow_weak_random_seed=1



   # INCLUDE CONFIG FILE
   # This directive allows you to include definitions from an external
   config file.

   #include=<somefile.cfg>



   # INCLUDE CONFIG DIRECTORY
   # This directive allows you to include definitions from config files
   (with a
   # .cfg extension) in one or more directories (with recursion).

   #include_dir=<somedirectory>
   #include_dir=<someotherdirectory>



   # COMMAND DEFINITIONS
   # Command definitions that this daemon will run.  Definitions
   # are in the following format:
   #
   # command[<command_name>]=<command_line>
   #
   # When the daemon receives a request to return the results of
   <command_name>
   # it will execute the command specified by the <command_line> argument.
   #
   # Unlike Nagios, the command line cannot contain macros - it must be
   # typed exactly as it should be executed.
   #
   # Note: Any plugins that are used in the command lines must reside
   # on the machine that this daemon is running on!  The examples below
   # assume that you have plugins installed in a /usr/local/nagios/libexec
   # directory.  Also note that you will have to modify the definitions
   below
   # to match the argument format the plugins expect.  Remember, these are
   # examples only!

   # The following examples use hardcoded command arguments...

   command[check_disks]=/usr/local/nagios/libexec/check_disk -m -e -w
   10% -c 5%
   command[check_load]=/usr/local/nagios/libexec/check_load -r -w 5.0
   -c 10.0
   command[check_memory]=/usr/local/nagios/libexec/check_memory.pl -w
   10% -c 5%
   command[check_swap]=/usr/local/nagios/libexec/check_swap -a -w 50%
   -c 20%
   command[check_ntp]=/usr/local/nagios/libexec/check_ntp_time -H
   10.1.1.14 -w 1.0 -c 1.5
   command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w
   5 -c 10 -s Z
   command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w
   150 -c 200
   command[check_users]=/usr/local/nagios/libexec/check_users -w 25 -c 50


 A. Davis
 Email:     ncc...@gmail.com

 "There is no limit to what a man can accomplish
  if he doesn't care who gets the credit." - Ronald Reagan



Andrew Davis wrote:
My /etc/xinetd.d/nrpe is below:

# /etc/xinetd.d/nrpe
# description: NRPE
# default: on
service nrpe
{
        flags           = REUSE
        socket_type     = stream
        port            = 5666
        wait            = no
#        user            = nobody
        user            = daemon
#        group           = nobody
        group           = wheel
        server          = /usr/local/sbin/nrpe
        server_args     = -c /etc/nagios/nrpe.cfg --inetd
        log_on_failure  += USERID
        disable         = no
        only_from       = 127.0.0.1 10.1.1.170
}

Originally, it was set to nobody:nobody. As a test, I set it to daemon:wheel. In all cases, it gives the "cannot run as root" error. I guess I can try making a Nagios user & group and testing with that.
  A. Davis
  Email:     ncc...@gmail.com

  "There is no limit to what a man can accomplish
   if he doesn't care who gets the credit." - Ronald Reagan

Allan Clark wrote:
Reply is bottom-posted.

On Wed, Mar 18, 2009 at 16:57, Andrew Davis <ncc...@gmail.com <mailto:ncc...@gmail.com>> wrote:

    If I'm reading this correctly, the line about "NRPE daemon cannot
    be run as user/group root!" is directly from the source code of
    NRPE. Its not an xinetd thing. I've confirmed that xinetd is
    running and listening on port 5666. I tried changing the
    owner/group from nobody:nobody to another unprivileged user, but
    it didn't work. Same results. It appears that despite my
    configuring the /etc/nagios/nrpe.cfg and the /etc/xinetd.d/nrpe
    files to use a user other than root, it still tries to start it
    as the root user and thus when an incoming connection comes in,
    it gives the "NRPE daemon cannot be run as user/group root!"
    error. Any thoughts on how to rectify this? Since NRPE is working
    fine on Linux, is this just a Mac OS X thing? Any help would be
    immensely appreciated.

    AD


    Andrew Davis wrote:
    FYI: /var/log/system.log on the client shows:

    Mar 18 16:08:07 shu xinetd[29066]: START: nrpe pid=557
    from=10.1.1.170
    Mar 18 16:08:07 shu nrpe[557]: Error: NRPE daemon cannot be run
    as user/group root!

    whether I do the default test (with SSL) or use the -n flag to
    test w/o SSL. The odd thing is that the nrpe config in
    /etc/xinetd.d is set to run as nobody:nobody and
    /etc/nagios/nrpe.cfg is owned by nobody:nobody. Only
    /usr/local/sbin/nrpe is owned by root (as it should be), but is
    also set to 755 perms. I've compared to a Linux box I have with
    NRPE and xinetd working properly and the permissions are identical.

    I'm stumped...

    Andrew Davis wrote:
    I have two Mac OS X servers, one running 10.3, the other
    running 10.4. Neither can be upgraded to 10.5 due to third
    party s/w constraints. Both are PPC based XServe's.

    Trying to compile nrpe with:

        ./configure --sysconfdir=/etc/nagios --enable-ssl

    Initially, I got the "cannot find ssl libraries" error:

        ~
        checking for SSL headers... SSL headers found in /usr/local/ssl
        checking for SSL libraries... configure: error: Cannot find
        ssl libraries

    I downloaded the latest openssl and built it with:

        ./config --prefix=/usr/local shared
        --openssldir=/usr/local/openssl
        make
        make test
        make install

    I then had to edit ~/src/nrpe/configure and change the
    reference from libssl.so to libssl.dylib

    After that, nrpe compiled cleanly and I was able to move
    ~src/nrpe/src/nrpe to /usr/local/sbin and start xinetd up. I've
    confirmed that port 5666 is open and xinetd is running:

        /usr/local/src/nrpe-2.12/src root# ps waux|grep xinet|grep
-v greproot 29066 0.0 -0.0 27484 308 ?? Ss 3:53PM 0:00.02 /usr/sbin/xinetd -pidfile
        /var/run/xinetd.pid -stayalive
        /usr/local/src/nrpe-2.12/src root# netstat -an|grep
5666tcp4 0 0 *.5666 *.* LISTEN

    However, when connecting from the remote server, I get:

        /usr/local/nagios/libexec/check_nrpe -H host.mydomain.org
        <http://host.mydomain.org>
        CHECK_NRPE: Error - Could not complete SSL handshake.

    The same test but w/o SSL gives yields:

        [nag...@nephilim src]$ /usr/local/nagios/libexec/check_nrpe
        -n -H host.mydomain.org <http://host.mydomain.org>
        CHECK_NRPE: Received 0 bytes from daemon.  Check the remote
        server logs for error messages.

    So two questions:

    1) I'm a UNIX guy, but obviously Mac's are A) different and B)
    a tad different being BSD-based. So what's the proper way to
    stop/restart the xinetd daemon?
    2) Any thoughts on SSL handshake error? I've googled it, but
    I'm not getting very far.

    Anyone have a step-by-step for compiling nagios plugins and
    NRPE from source on OS X 10.x (specifically 10.3 and 10.4)? I'm
    using NRPE for all other internal hosts, so I prefer to use it
    for the Mac's too. I know I could do it via check_by_ssh and
    get around this, but I prefer to use NRPE if I can.
--


On a Mac, your xinetd is a bolt-on over the launchd that's there by default; you've obviously got it running. Since you're in /etc/xinetd.d/<something>, you need to cnfigure a different username via xinetd's config. Look for a /etc/xinetd.d/nrpe file, or similar, containing the config for your nrpe service. I tend to grep for the port number in order to find the file. Remember to check /local/*

The time service has an example with juicy comments:


service time
{
# This is for quick on or off of the service
        disable         = yes
...
...
# External services must fill out the following
#       user            =
#       group           =
...
...
}


Take a look there, see if you can choose a better username and/or group and if your port of xinetd honours it. I don't know if you have a nrpe user, or run it as nobody.

A better option would be a proper launchd config, allowing you to shutdown xinetd if you're installing it there for this purpose only, but then it's a Mac-only thing, and would be more difficult to maintain for non-Mac people.

Allan

------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
Nagios-users mailing list
Nagios-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nagios-users
::: Please include Nagios version, plugin version (-v) and OS when reporting 
any issue. 
::: Messages without supporting info will risk being sent to /dev/null

Reply via email to