summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2015-10-08 04:30:48 +1100
committerDamien Miller <djm@mindrot.org>2015-10-08 04:30:48 +1100
commit9846a2f4067383bb76b4e31a9d2303e0a9c13a73 (patch)
tree8663fbdaa27ed750fa08a63ae797a16081da88bd
parent0c46bbe68b70bdf0d6d20588e5847e71f3739fe6 (diff)
hook tame(2) sandbox up to build
OpenBSD only for now
-rw-r--r--Makefile.in2
-rw-r--r--configure.ac11
-rw-r--r--sandbox-tame.c8
3 files changed, 17 insertions, 4 deletions
diff --git a/Makefile.in b/Makefile.in
index 0901f4225..8305cec9d 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -110,7 +110,7 @@ SSHDOBJS=sshd.o auth-rhosts.o auth-passwd.o auth-rsa.o auth-rh-rsa.o \
110 sftp-server.o sftp-common.o \ 110 sftp-server.o sftp-common.o \
111 roaming_common.o roaming_serv.o \ 111 roaming_common.o roaming_serv.o \
112 sandbox-null.o sandbox-rlimit.o sandbox-systrace.o sandbox-darwin.o \ 112 sandbox-null.o sandbox-rlimit.o sandbox-systrace.o sandbox-darwin.o \
113 sandbox-seccomp-filter.o sandbox-capsicum.o 113 sandbox-seccomp-filter.o sandbox-capsicum.o sandbox-tame.o
114 114
115MANPAGES = moduli.5.out scp.1.out ssh-add.1.out ssh-agent.1.out ssh-keygen.1.out ssh-keyscan.1.out ssh.1.out sshd.8.out sftp-server.8.out sftp.1.out ssh-keysign.8.out ssh-pkcs11-helper.8.out sshd_config.5.out ssh_config.5.out 115MANPAGES = moduli.5.out scp.1.out ssh-add.1.out ssh-agent.1.out ssh-keygen.1.out ssh-keyscan.1.out ssh.1.out sshd.8.out sftp-server.8.out sftp.1.out ssh-keysign.8.out ssh-pkcs11-helper.8.out sshd_config.5.out ssh_config.5.out
116MANPAGES_IN = moduli.5 scp.1 ssh-add.1 ssh-agent.1 ssh-keygen.1 ssh-keyscan.1 ssh.1 sshd.8 sftp-server.8 sftp.1 ssh-keysign.8 ssh-pkcs11-helper.8 sshd_config.5 ssh_config.5 116MANPAGES_IN = moduli.5 scp.1 ssh-add.1 ssh-agent.1 ssh-keygen.1 ssh-keyscan.1 ssh.1 sshd.8 sftp-server.8 sftp.1 ssh-keysign.8 ssh-pkcs11-helper.8 sshd_config.5 ssh_config.5
diff --git a/configure.ac b/configure.ac
index d900df4b5..1693cfae8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -854,6 +854,7 @@ mips-sony-bsd|mips-sony-newsos4)
854 AC_DEFINE([SYSLOG_R_SAFE_IN_SIGHAND], [1], 854 AC_DEFINE([SYSLOG_R_SAFE_IN_SIGHAND], [1],
855 [syslog_r function is safe to use in in a signal handler]) 855 [syslog_r function is safe to use in in a signal handler])
856 TEST_MALLOC_OPTIONS="AFGJPRX" 856 TEST_MALLOC_OPTIONS="AFGJPRX"
857 AC_CHECK_FUNCS([tame])
857 ;; 858 ;;
858*-*-solaris*) 859*-*-solaris*)
859 if test "x$withval" != "xno" ; then 860 if test "x$withval" != "xno" ; then
@@ -2997,7 +2998,7 @@ fi
2997# Decide which sandbox style to use 2998# Decide which sandbox style to use
2998sandbox_arg="" 2999sandbox_arg=""
2999AC_ARG_WITH([sandbox], 3000AC_ARG_WITH([sandbox],
3000 [ --with-sandbox=style Specify privilege separation sandbox (no, darwin, rlimit, systrace, seccomp_filter, capsicum)], 3001 [ --with-sandbox=style Specify privilege separation sandbox (no, capsicum, darwin, rlimit, seccomp_filter, systrace, tame)],
3001 [ 3002 [
3002 if test "x$withval" = "xyes" ; then 3003 if test "x$withval" = "xyes" ; then
3003 sandbox_arg="" 3004 sandbox_arg=""
@@ -3093,7 +3094,13 @@ AC_RUN_IFELSE(
3093 [AC_MSG_WARN([cross compiling: assuming yes])] 3094 [AC_MSG_WARN([cross compiling: assuming yes])]
3094) 3095)
3095 3096
3096if test "x$sandbox_arg" = "xsystrace" || \ 3097if test "x$sandbox_arg" = "xtame" || \
3098 ( test -z "$sandbox_arg" && test "x$ac_cv_func_tame" = "xyes" ) ; then
3099 test "x$ac_cv_func_tame" != "xyes" && \
3100 AC_MSG_ERROR([tame sandbox requires tame(2) support])
3101 SANDBOX_STYLE="tame"
3102 AC_DEFINE([SANDBOX_TAME], [1], [Sandbox using tame(2)])
3103elif test "x$sandbox_arg" = "xsystrace" || \
3097 ( test -z "$sandbox_arg" && test "x$have_systr_policy_kill" = "x1" ) ; then 3104 ( test -z "$sandbox_arg" && test "x$have_systr_policy_kill" = "x1" ) ; then
3098 test "x$have_systr_policy_kill" != "x1" && \ 3105 test "x$have_systr_policy_kill" != "x1" && \
3099 AC_MSG_ERROR([systrace sandbox requires systrace headers and SYSTR_POLICY_KILL support]) 3106 AC_MSG_ERROR([systrace sandbox requires systrace headers and SYSTR_POLICY_KILL support])
diff --git a/sandbox-tame.c b/sandbox-tame.c
index 12c91adea..daa3f3a74 100644
--- a/sandbox-tame.c
+++ b/sandbox-tame.c
@@ -15,6 +15,10 @@
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */ 16 */
17 17
18#include "includes.h"
19
20#ifdef SANDBOX_TAME
21
18#include <sys/types.h> 22#include <sys/types.h>
19#include <sys/ioctl.h> 23#include <sys/ioctl.h>
20#include <sys/syscall.h> 24#include <sys/syscall.h>
@@ -38,7 +42,7 @@ struct ssh_sandbox {
38}; 42};
39 43
40struct ssh_sandbox * 44struct ssh_sandbox *
41ssh_sandbox_init(void) 45ssh_sandbox_init(struct monitor *m)
42{ 46{
43 struct ssh_sandbox *box; 47 struct ssh_sandbox *box;
44 48
@@ -69,3 +73,5 @@ ssh_sandbox_parent_preauth(struct ssh_sandbox *box, pid_t child_pid)
69 box->child_pid = child_pid; 73 box->child_pid = child_pid;
70 /* Nothing to do here */ 74 /* Nothing to do here */
71} 75}
76
77#endif /* SANDBOX_TAME */