tests: test-gssapi is now run as non-root

Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
This commit is contained in:
Nikos Mavrogiannopoulos
2017-09-08 12:04:31 +02:00
committed by Nikos Mavrogiannopoulos
parent 834326fe70
commit 8eafacf2a9
4 changed files with 47 additions and 30 deletions

View File

@@ -40,14 +40,15 @@ dist_check_SCRIPTS += radius-test full-test unix-test kerberos-test radius-test-
#other root requiring tests #other root requiring tests
dist_check_SCRIPTS += test-iroute test-multi-cookie test-pass-script test-pass-opt-cert \ dist_check_SCRIPTS += test-iroute test-multi-cookie test-pass-script test-pass-opt-cert \
test-cookie-timeout test-cookie-timeout-2 test-explicit-ip test-gssapi \ test-cookie-timeout test-cookie-timeout-2 test-explicit-ip \
test-cookie-invalidation test-user-config test-append-routes test-ban test-cookie-invalidation test-user-config test-append-routes test-ban
endif endif
if HAVE_CWRAP if HAVE_CWRAP
dist_check_SCRIPTS += test-pass test-pass-cert test-cert test-group-pass \ dist_check_SCRIPTS += test-pass test-pass-cert test-cert test-group-pass \
test-pass-group-cert test-pass-group-cert-no-pass test-sighup \ test-pass-group-cert test-pass-group-cert-no-pass test-sighup \
test-enc-key test-sighup-key-change test-get-cert test-san-cert test-enc-key test-sighup-key-change test-get-cert test-san-cert \
test-gssapi
if HAVE_CWRAP_PAM if HAVE_CWRAP_PAM
dist_check_SCRIPTS += test-pam test-pam-noauth dist_check_SCRIPTS += test-pam test-pam-noauth

View File

@@ -45,8 +45,8 @@ try-mtu-discovery = false
# #
# There may be multiple certificate and key pairs and each key # There may be multiple certificate and key pairs and each key
# should correspond to the preceding certificate. # should correspond to the preceding certificate.
server-cert = ./certs/server-cert.pem server-cert = @SRCDIR@/certs/server-cert.pem
server-key = ./certs/server-key.pem server-key = @SRCDIR@/certs/server-key.pem
# Diffie-Hellman parameters. Only needed if you require support # Diffie-Hellman parameters. Only needed if you require support
# for the DHE ciphersuites (by default this server supports ECDHE). # for the DHE ciphersuites (by default this server supports ECDHE).
@@ -122,19 +122,19 @@ cookie-validity = 172800
use-utmp = true use-utmp = true
# PID file # PID file
pid-file = /var/run/ocserv.pid pid-file = ./ocserv.pid
# The default server directory. Does not require any devices present. # The default server directory. Does not require any devices present.
#chroot-dir = /path/to/chroot #chroot-dir = /path/to/chroot
# socket file used for IPC, will be appended with .PID # socket file used for IPC, will be appended with .PID
# It must be accessible within the chroot environment (if any) # It must be accessible within the chroot environment (if any)
socket-file = /var/run/ocserv-socket socket-file = ./ocserv-socket
# The user the worker processes will be run as. It should be # The user the worker processes will be run as. It should be
# unique (no other services run as this user). # unique (no other services run as this user).
run-as-user = nobody run-as-user = @USERNAME@
run-as-group = daemon run-as-group = @GROUP@
# Network settings # Network settings

View File

@@ -29,6 +29,8 @@ max-same-clients = 2
tcp-port = 4449 tcp-port = 4449
udp-port = 4449 udp-port = 4449
#listen-clear-file = ./ocserv-gssapi-conn.socket
# Keepalive in seconds # Keepalive in seconds
keepalive = 32400 keepalive = 32400
@@ -45,8 +47,8 @@ try-mtu-discovery = false
# #
# There may be multiple certificate and key pairs and each key # There may be multiple certificate and key pairs and each key
# should correspond to the preceding certificate. # should correspond to the preceding certificate.
server-cert = ./certs/server-cert.pem server-cert = @SRCDIR@/certs/server-cert.pem
server-key = ./certs/server-key.pem server-key = @SRCDIR@/certs/server-key.pem
# Diffie-Hellman parameters. Only needed if you require support # Diffie-Hellman parameters. Only needed if you require support
# for the DHE ciphersuites (by default this server supports ECDHE). # for the DHE ciphersuites (by default this server supports ECDHE).
@@ -122,19 +124,21 @@ cookie-validity = 172800
use-utmp = true use-utmp = true
# PID file # PID file
pid-file = /var/run/ocserv.pid pid-file = ./ocserv.pid
# The default server directory. Does not require any devices present. # The default server directory. Does not require any devices present.
#chroot-dir = /path/to/chroot #chroot-dir = /path/to/chroot
# socket file used for IPC, will be appended with .PID # socket file used for IPC, will be appended with .PID
# It must be accessible within the chroot environment (if any) # It must be accessible within the chroot environment (if any)
socket-file = /var/run/ocserv-socket socket-file = ./ocserv-gssapi-socket
# The user the worker processes will be run as. It should be # The user the worker processes will be run as. It should be
# unique (no other services run as this user). # unique (no other services run as this user).
run-as-user = nobody run-as-user = @USERNAME@
run-as-group = daemon run-as-group = @GROUP@
#run-as-user = root
#run-as-group = root
# Network settings # Network settings

View File

@@ -20,19 +20,24 @@
SERV="${SERV:-../src/ocserv}" SERV="${SERV:-../src/ocserv}"
srcdir=${srcdir:-.} srcdir=${srcdir:-.}
builddir=${builddir:-.}
NO_NEED_ROOT=1
PORT=4449 PORT=4449
if test -f /etc/gss/mech.d/mech.ntlmssp.conf;then NTLMSSP_CONF=""
NTLMSSP_CONF=/etc/gss/mech.d/mech.ntlmssp.conf for conf in /etc/gss/mech.d/mech.ntlmssp.conf /etc/gss/mech.d/ntlmssp.conf;do
else if test -f ${conf};then
NTLMSSP_CONF=/etc/gss/mech.d/ntlmssp.conf NTLMSSP_CONF=${conf}
fi fi
done
if test ! -f $NTLMSSP_CONF;then if test -z "$NTLMSSP_CONF";then
echo "GSS NTLM SSP was not found" echo "GSS NTLM SSP was not found"
exit 77 exit 77
fi fi
echo $NTLMSSP_CONF
$SERV --version 2>&1|grep gssapi >/dev/null 2>&1 $SERV --version 2>&1|grep gssapi >/dev/null 2>&1
if [ $? != 0 ];then if [ $? != 0 ];then
exit 77 exit 77
@@ -42,20 +47,26 @@ fi
echo "Testing local backend with gssapi... " echo "Testing local backend with gssapi... "
export NTLM_USER_FILE=$srcdir/ntlm.pass export NTLM_USER_FILE=${builddir}/ntlm.pass
echo "TESTINVALID:testinvalid:testpass" >$NTLM_USER_FILE echo "TESTINVALID:testinvalid:testpass" >$NTLM_USER_FILE
echo "TESTINVALID:testinvalid:wrongpass" >$NTLM_USER_FILE.wrong echo "TESTINVALID:testinvalid:wrongpass" >$NTLM_USER_FILE.wrong
launch_server -d 1 -f -c data/test-gssapi.config & PID=$! VERBOSE=1
update_config test-gssapi.config
launch_sr_server -d 1 -f -c ${CONFIG} & PID=$!
wait_server $PID wait_server $PID
echo "Connecting with curl... " #CURLOPTS="--cacert ${srcdir}/certs/ca.pem"
curl https://testinvalid:testpass@localhost:4449 --cacert ${srcdir}/certs/ca.pem --negotiate -f -v || CURLOPTS="--insecure"
echo "Connecting with curl/negotiate... "
LD_PRELOAD=libsocket_wrapper.so curl https://testinvalid:testpass@$ADDRESS:$PORT ${CURLOPTS} --negotiate -f -v ||
fail $PID "Could not connect to server" fail $PID "Could not connect to server"
export NTLM_USER_FILE=$srcdir/ntlm.pass.wrong export NTLM_USER_FILE=${builddir}/ntlm.pass.wrong
echo "Connecting with curl and wrong password... " echo "Connecting with curl and wrong password... "
curl https://testinvalid:wrongpass@localhost:4449 --cacert ${srcdir}/certs/ca.pem --negotiate -f -v && LD_PRELOAD=libsocket_wrapper.so curl https://testinvalid:wrongpass@$ADDRESS:$PORT ${CURLOPTS} --negotiate -f -v &&
fail $PID "Connected to server with wrong password" fail $PID "Connected to server with wrong password"
kill $PID kill $PID
@@ -66,15 +77,16 @@ echo "Testing local backend with gssapi and local-map on... "
sleep 2 sleep 2
# Test whether no-local-map is by default true # Test whether no-local-map is by default true
launch_server -d 1 -f -c data/test-gssapi-local-map.config & PID=$! update_config test-gssapi-local-map.config
launch_sr_server -d 1 -f -c ${CONFIG} & PID=$!
wait_server $PID wait_server $PID
echo "Connecting with curl... " echo "Connecting with curl... "
curl https://testinvalid:testpass@localhost:4449 --cacert ${srcdir}/certs/ca.pem --negotiate -f -v && LD_PRELOAD=libsocket_wrapper.so curl https://testinvalid:testpass@$ADDRESS:$PORT ${CURLOPTS} --negotiate -f -v &&
fail $PID "Connected to server even when local map was required" fail $PID "Connected to server even when local map was required"
rm -f $srcdir/ntlm.pass rm -f ${builddir}/ntlm.pass
rm -f $srcdir/ntlm.pass.wrong rm -f ${builddir}/ntlm.pass.wrong
kill $PID kill $PID
wait wait