improve audit of server ket management
This commit is contained in:
parent
b9127ef973
commit
2c1a4adbdd
@ -1,74 +0,0 @@
|
|||||||
diff -up openssh-5.6p1/log.h.wIm openssh-5.6p1/log.h
|
|
||||||
--- openssh-5.6p1/log.h.wIm 2008-06-13 02:22:54.000000000 +0200
|
|
||||||
+++ openssh-5.6p1/log.h 2011-01-11 10:35:32.000000000 +0100
|
|
||||||
@@ -63,6 +63,7 @@ void verbose(const char *, ...) __at
|
|
||||||
void debug(const char *, ...) __attribute__((format(printf, 1, 2)));
|
|
||||||
void debug2(const char *, ...) __attribute__((format(printf, 1, 2)));
|
|
||||||
void debug3(const char *, ...) __attribute__((format(printf, 1, 2)));
|
|
||||||
+void debug_wIm(const char *);
|
|
||||||
|
|
||||||
void do_log(LogLevel, const char *, va_list);
|
|
||||||
void cleanup_exit(int) __attribute__((noreturn));
|
|
||||||
diff -up openssh-5.6p1/Makefile.in.wIm openssh-5.6p1/Makefile.in
|
|
||||||
--- openssh-5.6p1/Makefile.in.wIm 2010-05-12 08:51:39.000000000 +0200
|
|
||||||
+++ openssh-5.6p1/Makefile.in 2011-01-11 10:35:32.000000000 +0100
|
|
||||||
@@ -69,7 +69,7 @@ LIBSSH_OBJS=acss.o authfd.o authfile.o b
|
|
||||||
cipher-bf1.o cipher-ctr.o cipher-3des1.o cleanup.o \
|
|
||||||
compat.o compress.o crc32.o deattack.o fatal.o hostfile.o \
|
|
||||||
log.o match.o md-sha256.o moduli.o nchan.o packet.o \
|
|
||||||
- readpass.o rsa.o ttymodes.o xmalloc.o addrmatch.o \
|
|
||||||
+ readpass.o rsa.o ttymodes.o whereIam.o xmalloc.o addrmatch.o \
|
|
||||||
atomicio.o key.o dispatch.o kex.o mac.o uidswap.o uuencode.o misc.o \
|
|
||||||
monitor_fdpass.o rijndael.o ssh-dss.o ssh-rsa.o dh.o kexdh.o \
|
|
||||||
kexgex.o kexdhc.o kexgexc.o msg.o progressmeter.o dns.o \
|
|
||||||
diff -up openssh-5.6p1/sshd.c.wIm openssh-5.6p1/sshd.c
|
|
||||||
--- openssh-5.6p1/sshd.c.wIm 2010-04-16 07:56:22.000000000 +0200
|
|
||||||
+++ openssh-5.6p1/sshd.c 2011-01-11 10:35:32.000000000 +0100
|
|
||||||
@@ -139,6 +139,9 @@ int deny_severity;
|
|
||||||
|
|
||||||
extern char *__progname;
|
|
||||||
|
|
||||||
+/* trace of fork processes */
|
|
||||||
+extern int whereIam;
|
|
||||||
+
|
|
||||||
/* Server configuration options. */
|
|
||||||
ServerOptions options;
|
|
||||||
|
|
||||||
@@ -652,6 +655,7 @@ privsep_preauth(Authctxt *authctxt)
|
|
||||||
} else {
|
|
||||||
/* child */
|
|
||||||
|
|
||||||
+ whereIam = 1;
|
|
||||||
close(pmonitor->m_sendfd);
|
|
||||||
|
|
||||||
/* Demote the child */
|
|
||||||
@@ -693,6 +697,7 @@ privsep_postauth(Authctxt *authctxt)
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ whereIam = 2;
|
|
||||||
close(pmonitor->m_sendfd);
|
|
||||||
|
|
||||||
/* Demote the private keys to public keys. */
|
|
||||||
@@ -1299,6 +1304,8 @@ main(int ac, char **av)
|
|
||||||
Key *key;
|
|
||||||
Authctxt *authctxt;
|
|
||||||
|
|
||||||
+ whereIam = 0;
|
|
||||||
+
|
|
||||||
#ifdef HAVE_SECUREWARE
|
|
||||||
(void)set_auth_parameters(ac, av);
|
|
||||||
#endif
|
|
||||||
diff -up openssh-5.6p1/whereIam.c.wIm openssh-5.6p1/whereIam.c
|
|
||||||
--- openssh-5.6p1/whereIam.c.wIm 2011-01-11 10:35:32.000000000 +0100
|
|
||||||
+++ openssh-5.6p1/whereIam.c 2011-01-11 10:35:32.000000000 +0100
|
|
||||||
@@ -0,0 +1,9 @@
|
|
||||||
+
|
|
||||||
+int whereIam = -1;
|
|
||||||
+
|
|
||||||
+void debug_wIm(const char *txt)
|
|
||||||
+{
|
|
||||||
+ debug("%s: %s wIm = %d, euid=%d", txt, __func__, whereIam, geteuid());
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+
|
|
@ -45,7 +45,7 @@ diff -up openssh-5.8p1/audit-linux.c.audit1 openssh-5.8p1/audit-linux.c
|
|||||||
+ "root denied",
|
+ "root denied",
|
||||||
+ "success",
|
+ "success",
|
||||||
+ "none",
|
+ "none",
|
||||||
+ "paasword",
|
+ "pasword",
|
||||||
+ "chalenge-response",
|
+ "chalenge-response",
|
||||||
+ "pubkey",
|
+ "pubkey",
|
||||||
+ "hostbased",
|
+ "hostbased",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
diff -up openssh-5.8p1/audit-bsm.c.audit3 openssh-5.8p1/audit-bsm.c
|
diff -up openssh-5.8p1/audit-bsm.c.audit3 openssh-5.8p1/audit-bsm.c
|
||||||
--- openssh-5.8p1/audit-bsm.c.audit3 2011-02-09 21:51:19.000000000 +0100
|
--- openssh-5.8p1/audit-bsm.c.audit3 2011-02-17 15:09:38.000000000 +0100
|
||||||
+++ openssh-5.8p1/audit-bsm.c 2011-02-09 21:51:19.000000000 +0100
|
+++ openssh-5.8p1/audit-bsm.c 2011-02-17 15:09:38.000000000 +0100
|
||||||
@@ -383,4 +383,16 @@ audit_event(ssh_audit_event_t event)
|
@@ -383,4 +383,16 @@ audit_event(ssh_audit_event_t event)
|
||||||
debug("%s: unhandled event %d", __func__, event);
|
debug("%s: unhandled event %d", __func__, event);
|
||||||
}
|
}
|
||||||
@ -19,18 +19,18 @@ diff -up openssh-5.8p1/audit-bsm.c.audit3 openssh-5.8p1/audit-bsm.c
|
|||||||
+}
|
+}
|
||||||
#endif /* BSM */
|
#endif /* BSM */
|
||||||
diff -up openssh-5.8p1/audit.c.audit3 openssh-5.8p1/audit.c
|
diff -up openssh-5.8p1/audit.c.audit3 openssh-5.8p1/audit.c
|
||||||
--- openssh-5.8p1/audit.c.audit3 2011-02-09 21:51:19.000000000 +0100
|
--- openssh-5.8p1/audit.c.audit3 2011-02-17 15:09:38.000000000 +0100
|
||||||
+++ openssh-5.8p1/audit.c 2011-02-09 21:51:19.000000000 +0100
|
+++ openssh-5.8p1/audit.c 2011-02-17 15:10:27.000000000 +0100
|
||||||
@@ -36,6 +36,8 @@
|
@@ -36,6 +36,8 @@
|
||||||
#include "key.h"
|
#include "key.h"
|
||||||
#include "hostfile.h"
|
#include "hostfile.h"
|
||||||
#include "auth.h"
|
#include "auth.h"
|
||||||
+#include "ssh-gss.h"
|
+#include "ssh-gss.h"
|
||||||
+#include "monitor_wrap.h"
|
+#include "monitor_wrap.h"
|
||||||
|
#include "xmalloc.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Care must be taken when using this since it WILL NOT be initialized when
|
@@ -139,6 +141,18 @@ audit_key(int type, int *rv, const Key *
|
||||||
@@ -138,6 +140,18 @@ audit_key(int type, int *rv, const Key *
|
|
||||||
xfree(fp);
|
xfree(fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,7 +49,7 @@ diff -up openssh-5.8p1/audit.c.audit3 openssh-5.8p1/audit.c
|
|||||||
# ifndef CUSTOM_SSH_AUDIT_EVENTS
|
# ifndef CUSTOM_SSH_AUDIT_EVENTS
|
||||||
/*
|
/*
|
||||||
* Null implementations of audit functions.
|
* Null implementations of audit functions.
|
||||||
@@ -221,5 +235,24 @@ audit_keyusage(int host_user, const char
|
@@ -222,5 +236,24 @@ audit_keyusage(int host_user, const char
|
||||||
debug("audit %s key usage euid %d user %s key type %s key length %d fingerprint %s, result %d",
|
debug("audit %s key usage euid %d user %s key type %s key length %d fingerprint %s, result %d",
|
||||||
host_user ? "hostbased" : "pubkey", geteuid(), audit_username(), type, len, fp, rv);
|
host_user ? "hostbased" : "pubkey", geteuid(), audit_username(), type, len, fp, rv);
|
||||||
}
|
}
|
||||||
@ -75,8 +75,8 @@ diff -up openssh-5.8p1/audit.c.audit3 openssh-5.8p1/audit.c
|
|||||||
# endif /* !defined CUSTOM_SSH_AUDIT_EVENTS */
|
# endif /* !defined CUSTOM_SSH_AUDIT_EVENTS */
|
||||||
#endif /* SSH_AUDIT_EVENTS */
|
#endif /* SSH_AUDIT_EVENTS */
|
||||||
diff -up openssh-5.8p1/audit.h.audit3 openssh-5.8p1/audit.h
|
diff -up openssh-5.8p1/audit.h.audit3 openssh-5.8p1/audit.h
|
||||||
--- openssh-5.8p1/audit.h.audit3 2011-02-09 21:51:19.000000000 +0100
|
--- openssh-5.8p1/audit.h.audit3 2011-02-17 15:09:38.000000000 +0100
|
||||||
+++ openssh-5.8p1/audit.h 2011-02-09 21:51:19.000000000 +0100
|
+++ openssh-5.8p1/audit.h 2011-02-17 15:09:38.000000000 +0100
|
||||||
@@ -56,5 +56,9 @@ void audit_run_command(const char *);
|
@@ -56,5 +56,9 @@ void audit_run_command(const char *);
|
||||||
ssh_audit_event_t audit_classify_auth(const char *);
|
ssh_audit_event_t audit_classify_auth(const char *);
|
||||||
int audit_keyusage(int, const char *, unsigned, char *, int);
|
int audit_keyusage(int, const char *, unsigned, char *, int);
|
||||||
@ -88,8 +88,8 @@ diff -up openssh-5.8p1/audit.h.audit3 openssh-5.8p1/audit.h
|
|||||||
|
|
||||||
#endif /* _SSH_AUDIT_H */
|
#endif /* _SSH_AUDIT_H */
|
||||||
diff -up openssh-5.8p1/audit-linux.c.audit3 openssh-5.8p1/audit-linux.c
|
diff -up openssh-5.8p1/audit-linux.c.audit3 openssh-5.8p1/audit-linux.c
|
||||||
--- openssh-5.8p1/audit-linux.c.audit3 2011-02-09 21:51:19.000000000 +0100
|
--- openssh-5.8p1/audit-linux.c.audit3 2011-02-17 15:09:38.000000000 +0100
|
||||||
+++ openssh-5.8p1/audit-linux.c 2011-02-09 21:51:19.000000000 +0100
|
+++ openssh-5.8p1/audit-linux.c 2011-02-17 15:09:38.000000000 +0100
|
||||||
@@ -36,6 +36,8 @@
|
@@ -36,6 +36,8 @@
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "audit.h"
|
#include "audit.h"
|
||||||
@ -99,7 +99,7 @@ diff -up openssh-5.8p1/audit-linux.c.audit3 openssh-5.8p1/audit-linux.c
|
|||||||
|
|
||||||
#define AUDIT_LOG_SIZE 128
|
#define AUDIT_LOG_SIZE 128
|
||||||
|
|
||||||
@@ -156,4 +158,54 @@ audit_event(ssh_audit_event_t event)
|
@@ -223,4 +225,54 @@ audit_event(ssh_audit_event_t event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,17 +109,17 @@ diff -up openssh-5.8p1/audit-linux.c.audit3 openssh-5.8p1/audit-linux.c
|
|||||||
+#ifdef AUDIT_CRYPTO_SESSION
|
+#ifdef AUDIT_CRYPTO_SESSION
|
||||||
+ char buf[AUDIT_LOG_SIZE];
|
+ char buf[AUDIT_LOG_SIZE];
|
||||||
+ const static char *name[] = { "cipher", "mac", "comp" };
|
+ const static char *name[] = { "cipher", "mac", "comp" };
|
||||||
+ int audit_fd, audit_ok;
|
+ int audit_fd;
|
||||||
+
|
+
|
||||||
+ snprintf(buf, sizeof(buf), "unsupported-%s direction=? cipher=? ksize=? rport=%d laddr=%s lport=%d",
|
+ snprintf(buf, sizeof(buf), "op=unsupported-%s direction=? cipher=? ksize=? rport=%d laddr=%s lport=%d",
|
||||||
+ name[what], get_remote_port(), get_local_ipaddr(packet_get_connection_in()),
|
+ name[what], get_remote_port(), get_local_ipaddr(packet_get_connection_in()),
|
||||||
+ get_local_port());
|
+ get_local_port());
|
||||||
+ audit_fd = audit_open();
|
+ audit_fd = audit_open();
|
||||||
+ if (audit_fd < 0)
|
+ if (audit_fd < 0)
|
||||||
+ /* no problem, the next instruction will be fatal() */
|
+ /* no problem, the next instruction will be fatal() */
|
||||||
+ return;
|
+ return;
|
||||||
+ audit_ok = audit_log_acct_message(audit_fd, AUDIT_CRYPTO_SESSION, NULL,
|
+ audit_log_user_message(audit_fd, AUDIT_CRYPTO_SESSION,
|
||||||
+ buf, NULL, -1, NULL, get_remote_ipaddr(), NULL, 0);
|
+ buf, NULL, get_remote_ipaddr(), NULL, 0);
|
||||||
+ audit_close(audit_fd);
|
+ audit_close(audit_fd);
|
||||||
+#endif
|
+#endif
|
||||||
+}
|
+}
|
||||||
@ -133,7 +133,7 @@ diff -up openssh-5.8p1/audit-linux.c.audit3 openssh-5.8p1/audit-linux.c
|
|||||||
+ const static char *direction[] = { "from-server", "from-client", "both" };
|
+ const static char *direction[] = { "from-server", "from-client", "both" };
|
||||||
+ Cipher *cipher = cipher_by_name(enc);
|
+ Cipher *cipher = cipher_by_name(enc);
|
||||||
+
|
+
|
||||||
+ snprintf(buf, sizeof(buf), "start direction=%s cipher=%s, ksize=%d rport=%d laddr=%s lport=%d",
|
+ snprintf(buf, sizeof(buf), "op=start direction=%s cipher=%s ksize=%d rport=%d laddr=%s lport=%d",
|
||||||
+ direction[ctos], enc, cipher ? 8 * cipher->key_len : 0,
|
+ direction[ctos], enc, cipher ? 8 * cipher->key_len : 0,
|
||||||
+ get_remote_port(), get_local_ipaddr(packet_get_connection_in()), get_local_port());
|
+ get_remote_port(), get_local_ipaddr(packet_get_connection_in()), get_local_port());
|
||||||
+ audit_fd = audit_open();
|
+ audit_fd = audit_open();
|
||||||
@ -144,8 +144,8 @@ diff -up openssh-5.8p1/audit-linux.c.audit3 openssh-5.8p1/audit-linux.c
|
|||||||
+ else
|
+ else
|
||||||
+ fatal("cannot open audit"); /* Must prevent login */
|
+ fatal("cannot open audit"); /* Must prevent login */
|
||||||
+ }
|
+ }
|
||||||
+ audit_ok = audit_log_acct_message(audit_fd, AUDIT_CRYPTO_SESSION, NULL,
|
+ audit_ok = audit_log_user_message(audit_fd, AUDIT_CRYPTO_SESSION,
|
||||||
+ buf, NULL, -1, NULL, get_remote_ipaddr(), NULL, 1);
|
+ buf, NULL, get_remote_ipaddr(), NULL, 1);
|
||||||
+ audit_close(audit_fd);
|
+ audit_close(audit_fd);
|
||||||
+ /* do not abort if the error is EPERM and sshd is run as non root user */
|
+ /* do not abort if the error is EPERM and sshd is run as non root user */
|
||||||
+ if ((audit_ok < 0) && ((audit_ok != -1) || (getuid() == 0)))
|
+ if ((audit_ok < 0) && ((audit_ok != -1) || (getuid() == 0)))
|
||||||
@ -155,8 +155,8 @@ diff -up openssh-5.8p1/audit-linux.c.audit3 openssh-5.8p1/audit-linux.c
|
|||||||
+
|
+
|
||||||
#endif /* USE_LINUX_AUDIT */
|
#endif /* USE_LINUX_AUDIT */
|
||||||
diff -up openssh-5.8p1/auditstub.c.audit3 openssh-5.8p1/auditstub.c
|
diff -up openssh-5.8p1/auditstub.c.audit3 openssh-5.8p1/auditstub.c
|
||||||
--- openssh-5.8p1/auditstub.c.audit3 2011-02-09 21:51:19.000000000 +0100
|
--- openssh-5.8p1/auditstub.c.audit3 2011-02-17 15:09:38.000000000 +0100
|
||||||
+++ openssh-5.8p1/auditstub.c 2011-02-09 21:51:19.000000000 +0100
|
+++ openssh-5.8p1/auditstub.c 2011-02-17 15:09:38.000000000 +0100
|
||||||
@@ -0,0 +1,39 @@
|
@@ -0,0 +1,39 @@
|
||||||
+/* $Id: auditstub.c,v 1.1 jfch Exp $ */
|
+/* $Id: auditstub.c,v 1.1 jfch Exp $ */
|
||||||
+
|
+
|
||||||
@ -199,7 +199,7 @@ diff -up openssh-5.8p1/auditstub.c.audit3 openssh-5.8p1/auditstub.c
|
|||||||
+
|
+
|
||||||
diff -up openssh-5.8p1/cipher.c.audit3 openssh-5.8p1/cipher.c
|
diff -up openssh-5.8p1/cipher.c.audit3 openssh-5.8p1/cipher.c
|
||||||
--- openssh-5.8p1/cipher.c.audit3 2011-02-09 15:24:23.000000000 +0100
|
--- openssh-5.8p1/cipher.c.audit3 2011-02-09 15:24:23.000000000 +0100
|
||||||
+++ openssh-5.8p1/cipher.c 2011-02-09 21:51:19.000000000 +0100
|
+++ openssh-5.8p1/cipher.c 2011-02-17 15:09:38.000000000 +0100
|
||||||
@@ -59,15 +59,7 @@ extern void ssh1_3des_iv(EVP_CIPHER_CTX
|
@@ -59,15 +59,7 @@ extern void ssh1_3des_iv(EVP_CIPHER_CTX
|
||||||
extern const EVP_CIPHER *evp_aes_128_ctr(void);
|
extern const EVP_CIPHER *evp_aes_128_ctr(void);
|
||||||
extern void ssh_aes_ctr_iv(EVP_CIPHER_CTX *, int, u_char *, u_int);
|
extern void ssh_aes_ctr_iv(EVP_CIPHER_CTX *, int, u_char *, u_int);
|
||||||
@ -219,7 +219,7 @@ diff -up openssh-5.8p1/cipher.c.audit3 openssh-5.8p1/cipher.c
|
|||||||
{ "3des", SSH_CIPHER_3DES, 8, 16, 0, 1, evp_ssh1_3des },
|
{ "3des", SSH_CIPHER_3DES, 8, 16, 0, 1, evp_ssh1_3des },
|
||||||
diff -up openssh-5.8p1/cipher.h.audit3 openssh-5.8p1/cipher.h
|
diff -up openssh-5.8p1/cipher.h.audit3 openssh-5.8p1/cipher.h
|
||||||
--- openssh-5.8p1/cipher.h.audit3 2009-01-28 06:38:41.000000000 +0100
|
--- openssh-5.8p1/cipher.h.audit3 2009-01-28 06:38:41.000000000 +0100
|
||||||
+++ openssh-5.8p1/cipher.h 2011-02-09 21:51:19.000000000 +0100
|
+++ openssh-5.8p1/cipher.h 2011-02-17 15:09:38.000000000 +0100
|
||||||
@@ -61,7 +61,16 @@
|
@@ -61,7 +61,16 @@
|
||||||
typedef struct Cipher Cipher;
|
typedef struct Cipher Cipher;
|
||||||
typedef struct CipherContext CipherContext;
|
typedef struct CipherContext CipherContext;
|
||||||
@ -240,7 +240,7 @@ diff -up openssh-5.8p1/cipher.h.audit3 openssh-5.8p1/cipher.h
|
|||||||
EVP_CIPHER_CTX evp;
|
EVP_CIPHER_CTX evp;
|
||||||
diff -up openssh-5.8p1/kex.c.audit3 openssh-5.8p1/kex.c
|
diff -up openssh-5.8p1/kex.c.audit3 openssh-5.8p1/kex.c
|
||||||
--- openssh-5.8p1/kex.c.audit3 2010-09-24 14:11:14.000000000 +0200
|
--- openssh-5.8p1/kex.c.audit3 2010-09-24 14:11:14.000000000 +0200
|
||||||
+++ openssh-5.8p1/kex.c 2011-02-09 21:51:19.000000000 +0100
|
+++ openssh-5.8p1/kex.c 2011-02-17 15:09:38.000000000 +0100
|
||||||
@@ -49,6 +49,7 @@
|
@@ -49,6 +49,7 @@
|
||||||
#include "dispatch.h"
|
#include "dispatch.h"
|
||||||
#include "monitor.h"
|
#include "monitor.h"
|
||||||
@ -305,7 +305,7 @@ diff -up openssh-5.8p1/kex.c.audit3 openssh-5.8p1/kex.c
|
|||||||
choose_hostkeyalg(kex, cprop[PROPOSAL_SERVER_HOST_KEY_ALGS],
|
choose_hostkeyalg(kex, cprop[PROPOSAL_SERVER_HOST_KEY_ALGS],
|
||||||
diff -up openssh-5.8p1/Makefile.in.audit3 openssh-5.8p1/Makefile.in
|
diff -up openssh-5.8p1/Makefile.in.audit3 openssh-5.8p1/Makefile.in
|
||||||
--- openssh-5.8p1/Makefile.in.audit3 2011-02-04 01:42:13.000000000 +0100
|
--- openssh-5.8p1/Makefile.in.audit3 2011-02-04 01:42:13.000000000 +0100
|
||||||
+++ openssh-5.8p1/Makefile.in 2011-02-09 21:53:15.000000000 +0100
|
+++ openssh-5.8p1/Makefile.in 2011-02-17 15:09:38.000000000 +0100
|
||||||
@@ -76,7 +76,7 @@ LIBSSH_OBJS=acss.o authfd.o authfile.o b
|
@@ -76,7 +76,7 @@ LIBSSH_OBJS=acss.o authfd.o authfile.o b
|
||||||
monitor_fdpass.o rijndael.o ssh-dss.o ssh-ecdsa.o ssh-rsa.o dh.o \
|
monitor_fdpass.o rijndael.o ssh-dss.o ssh-ecdsa.o ssh-rsa.o dh.o \
|
||||||
kexdh.o kexgex.o kexdhc.o kexgexc.o bufec.o kexecdh.o kexecdhc.o \
|
kexdh.o kexgex.o kexdhc.o kexgexc.o bufec.o kexecdh.o kexecdhc.o \
|
||||||
@ -316,8 +316,8 @@ diff -up openssh-5.8p1/Makefile.in.audit3 openssh-5.8p1/Makefile.in
|
|||||||
SSHOBJS= ssh.o readconf.o clientloop.o sshtty.o \
|
SSHOBJS= ssh.o readconf.o clientloop.o sshtty.o \
|
||||||
sshconnect.o sshconnect1.o sshconnect2.o mux.o \
|
sshconnect.o sshconnect1.o sshconnect2.o mux.o \
|
||||||
diff -up openssh-5.8p1/monitor.c.audit3 openssh-5.8p1/monitor.c
|
diff -up openssh-5.8p1/monitor.c.audit3 openssh-5.8p1/monitor.c
|
||||||
--- openssh-5.8p1/monitor.c.audit3 2011-02-09 21:51:19.000000000 +0100
|
--- openssh-5.8p1/monitor.c.audit3 2011-02-17 15:09:38.000000000 +0100
|
||||||
+++ openssh-5.8p1/monitor.c 2011-02-09 21:51:19.000000000 +0100
|
+++ openssh-5.8p1/monitor.c 2011-02-17 15:09:38.000000000 +0100
|
||||||
@@ -89,6 +89,7 @@
|
@@ -89,6 +89,7 @@
|
||||||
#include "ssh2.h"
|
#include "ssh2.h"
|
||||||
#include "jpake.h"
|
#include "jpake.h"
|
||||||
@ -414,7 +414,7 @@ diff -up openssh-5.8p1/monitor.c.audit3 openssh-5.8p1/monitor.c
|
|||||||
+#endif /* SSH_AUDIT_EVENTS */
|
+#endif /* SSH_AUDIT_EVENTS */
|
||||||
diff -up openssh-5.8p1/monitor.h.audit3 openssh-5.8p1/monitor.h
|
diff -up openssh-5.8p1/monitor.h.audit3 openssh-5.8p1/monitor.h
|
||||||
--- openssh-5.8p1/monitor.h.audit3 2008-11-05 06:20:46.000000000 +0100
|
--- openssh-5.8p1/monitor.h.audit3 2008-11-05 06:20:46.000000000 +0100
|
||||||
+++ openssh-5.8p1/monitor.h 2011-02-09 21:51:19.000000000 +0100
|
+++ openssh-5.8p1/monitor.h 2011-02-17 15:09:38.000000000 +0100
|
||||||
@@ -66,6 +66,8 @@ enum monitor_reqtype {
|
@@ -66,6 +66,8 @@ enum monitor_reqtype {
|
||||||
MONITOR_REQ_JPAKE_STEP2, MONITOR_ANS_JPAKE_STEP2,
|
MONITOR_REQ_JPAKE_STEP2, MONITOR_ANS_JPAKE_STEP2,
|
||||||
MONITOR_REQ_JPAKE_KEY_CONFIRM, MONITOR_ANS_JPAKE_KEY_CONFIRM,
|
MONITOR_REQ_JPAKE_KEY_CONFIRM, MONITOR_ANS_JPAKE_KEY_CONFIRM,
|
||||||
@ -426,7 +426,7 @@ diff -up openssh-5.8p1/monitor.h.audit3 openssh-5.8p1/monitor.h
|
|||||||
struct mm_master;
|
struct mm_master;
|
||||||
diff -up openssh-5.8p1/monitor_wrap.c.audit3 openssh-5.8p1/monitor_wrap.c
|
diff -up openssh-5.8p1/monitor_wrap.c.audit3 openssh-5.8p1/monitor_wrap.c
|
||||||
--- openssh-5.8p1/monitor_wrap.c.audit3 2010-08-31 14:41:14.000000000 +0200
|
--- openssh-5.8p1/monitor_wrap.c.audit3 2010-08-31 14:41:14.000000000 +0200
|
||||||
+++ openssh-5.8p1/monitor_wrap.c 2011-02-09 21:51:19.000000000 +0100
|
+++ openssh-5.8p1/monitor_wrap.c 2011-02-17 15:09:38.000000000 +0100
|
||||||
@@ -1412,3 +1412,38 @@ mm_jpake_check_confirm(const BIGNUM *k,
|
@@ -1412,3 +1412,38 @@ mm_jpake_check_confirm(const BIGNUM *k,
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
@ -468,7 +468,7 @@ diff -up openssh-5.8p1/monitor_wrap.c.audit3 openssh-5.8p1/monitor_wrap.c
|
|||||||
+#endif /* SSH_AUDIT_EVENTS */
|
+#endif /* SSH_AUDIT_EVENTS */
|
||||||
diff -up openssh-5.8p1/monitor_wrap.h.audit3 openssh-5.8p1/monitor_wrap.h
|
diff -up openssh-5.8p1/monitor_wrap.h.audit3 openssh-5.8p1/monitor_wrap.h
|
||||||
--- openssh-5.8p1/monitor_wrap.h.audit3 2009-03-05 14:58:22.000000000 +0100
|
--- openssh-5.8p1/monitor_wrap.h.audit3 2009-03-05 14:58:22.000000000 +0100
|
||||||
+++ openssh-5.8p1/monitor_wrap.h 2011-02-09 21:51:19.000000000 +0100
|
+++ openssh-5.8p1/monitor_wrap.h 2011-02-17 15:09:38.000000000 +0100
|
||||||
@@ -74,6 +74,8 @@ void mm_sshpam_free_ctx(void *);
|
@@ -74,6 +74,8 @@ void mm_sshpam_free_ctx(void *);
|
||||||
#include "audit.h"
|
#include "audit.h"
|
||||||
void mm_audit_event(ssh_audit_event_t);
|
void mm_audit_event(ssh_audit_event_t);
|
||||||
@ -480,7 +480,7 @@ diff -up openssh-5.8p1/monitor_wrap.h.audit3 openssh-5.8p1/monitor_wrap.h
|
|||||||
struct Session;
|
struct Session;
|
||||||
diff -up openssh-5.8p1/sshd.c.audit3 openssh-5.8p1/sshd.c
|
diff -up openssh-5.8p1/sshd.c.audit3 openssh-5.8p1/sshd.c
|
||||||
--- openssh-5.8p1/sshd.c.audit3 2011-01-11 07:20:31.000000000 +0100
|
--- openssh-5.8p1/sshd.c.audit3 2011-01-11 07:20:31.000000000 +0100
|
||||||
+++ openssh-5.8p1/sshd.c 2011-02-09 21:51:19.000000000 +0100
|
+++ openssh-5.8p1/sshd.c 2011-02-17 15:09:38.000000000 +0100
|
||||||
@@ -118,6 +118,7 @@
|
@@ -118,6 +118,7 @@
|
||||||
#endif
|
#endif
|
||||||
#include "monitor_wrap.h"
|
#include "monitor_wrap.h"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
diff -up openssh-5.8p1/audit-bsm.c.audit4 openssh-5.8p1/audit-bsm.c
|
diff -up openssh-5.8p1/audit-bsm.c.audit4 openssh-5.8p1/audit-bsm.c
|
||||||
--- openssh-5.8p1/audit-bsm.c.audit4 2011-02-09 22:24:22.000000000 +0100
|
--- openssh-5.8p1/audit-bsm.c.audit4 2011-02-17 10:34:25.000000000 +0100
|
||||||
+++ openssh-5.8p1/audit-bsm.c 2011-02-09 22:24:22.000000000 +0100
|
+++ openssh-5.8p1/audit-bsm.c 2011-02-17 10:34:25.000000000 +0100
|
||||||
@@ -395,4 +395,10 @@ audit_kex_body(int ctos, char *enc, char
|
@@ -395,4 +395,10 @@ audit_kex_body(int ctos, char *enc, char
|
||||||
{
|
{
|
||||||
/* not implemented */
|
/* not implemented */
|
||||||
@ -13,8 +13,8 @@ diff -up openssh-5.8p1/audit-bsm.c.audit4 openssh-5.8p1/audit-bsm.c
|
|||||||
+}
|
+}
|
||||||
#endif /* BSM */
|
#endif /* BSM */
|
||||||
diff -up openssh-5.8p1/audit.c.audit4 openssh-5.8p1/audit.c
|
diff -up openssh-5.8p1/audit.c.audit4 openssh-5.8p1/audit.c
|
||||||
--- openssh-5.8p1/audit.c.audit4 2011-02-09 22:24:22.000000000 +0100
|
--- openssh-5.8p1/audit.c.audit4 2011-02-17 10:34:25.000000000 +0100
|
||||||
+++ openssh-5.8p1/audit.c 2011-02-09 22:24:22.000000000 +0100
|
+++ openssh-5.8p1/audit.c 2011-02-17 10:34:25.000000000 +0100
|
||||||
@@ -152,6 +152,12 @@ audit_kex(int ctos, char *enc, char *mac
|
@@ -152,6 +152,12 @@ audit_kex(int ctos, char *enc, char *mac
|
||||||
PRIVSEP(audit_kex_body(ctos, enc, mac, comp));
|
PRIVSEP(audit_kex_body(ctos, enc, mac, comp));
|
||||||
}
|
}
|
||||||
@ -43,8 +43,8 @@ diff -up openssh-5.8p1/audit.c.audit4 openssh-5.8p1/audit.c
|
|||||||
# endif /* !defined CUSTOM_SSH_AUDIT_EVENTS */
|
# endif /* !defined CUSTOM_SSH_AUDIT_EVENTS */
|
||||||
#endif /* SSH_AUDIT_EVENTS */
|
#endif /* SSH_AUDIT_EVENTS */
|
||||||
diff -up openssh-5.8p1/audit.h.audit4 openssh-5.8p1/audit.h
|
diff -up openssh-5.8p1/audit.h.audit4 openssh-5.8p1/audit.h
|
||||||
--- openssh-5.8p1/audit.h.audit4 2011-02-09 22:24:22.000000000 +0100
|
--- openssh-5.8p1/audit.h.audit4 2011-02-17 10:34:25.000000000 +0100
|
||||||
+++ openssh-5.8p1/audit.h 2011-02-09 22:24:22.000000000 +0100
|
+++ openssh-5.8p1/audit.h 2011-02-17 10:34:25.000000000 +0100
|
||||||
@@ -60,5 +60,7 @@ void audit_unsupported(int);
|
@@ -60,5 +60,7 @@ void audit_unsupported(int);
|
||||||
void audit_kex(int, char *, char *, char *);
|
void audit_kex(int, char *, char *, char *);
|
||||||
void audit_unsupported_body(int);
|
void audit_unsupported_body(int);
|
||||||
@ -54,9 +54,9 @@ diff -up openssh-5.8p1/audit.h.audit4 openssh-5.8p1/audit.h
|
|||||||
|
|
||||||
#endif /* _SSH_AUDIT_H */
|
#endif /* _SSH_AUDIT_H */
|
||||||
diff -up openssh-5.8p1/audit-linux.c.audit4 openssh-5.8p1/audit-linux.c
|
diff -up openssh-5.8p1/audit-linux.c.audit4 openssh-5.8p1/audit-linux.c
|
||||||
--- openssh-5.8p1/audit-linux.c.audit4 2011-02-09 22:24:22.000000000 +0100
|
--- openssh-5.8p1/audit-linux.c.audit4 2011-02-17 10:34:25.000000000 +0100
|
||||||
+++ openssh-5.8p1/audit-linux.c 2011-02-09 22:24:22.000000000 +0100
|
+++ openssh-5.8p1/audit-linux.c 2011-02-17 10:34:25.000000000 +0100
|
||||||
@@ -179,13 +179,14 @@ audit_unsupported_body(int what)
|
@@ -246,13 +246,14 @@ audit_unsupported_body(int what)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,8 +71,8 @@ diff -up openssh-5.8p1/audit-linux.c.audit4 openssh-5.8p1/audit-linux.c
|
|||||||
- const static char *direction[] = { "from-server", "from-client", "both" };
|
- const static char *direction[] = { "from-server", "from-client", "both" };
|
||||||
Cipher *cipher = cipher_by_name(enc);
|
Cipher *cipher = cipher_by_name(enc);
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "start direction=%s cipher=%s, ksize=%d rport=%d laddr=%s lport=%d",
|
snprintf(buf, sizeof(buf), "op=start direction=%s cipher=%s ksize=%d rport=%d laddr=%s lport=%d",
|
||||||
@@ -208,4 +209,26 @@ audit_kex_body(int ctos, char *enc, char
|
@@ -275,4 +276,29 @@ audit_kex_body(int ctos, char *enc, char
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,7 +82,10 @@ diff -up openssh-5.8p1/audit-linux.c.audit4 openssh-5.8p1/audit-linux.c
|
|||||||
+ char buf[AUDIT_LOG_SIZE];
|
+ char buf[AUDIT_LOG_SIZE];
|
||||||
+ int audit_fd, audit_ok;
|
+ int audit_fd, audit_ok;
|
||||||
+
|
+
|
||||||
+ snprintf(buf, sizeof(buf), "destroy kind=session direction=%s", direction[ctos]);
|
+ snprintf(buf, sizeof(buf), "op=destroy kind=session direction=%s rport=%d laddr=%s lport=%d",
|
||||||
|
+ direction[ctos], get_remote_port(),
|
||||||
|
+ get_local_ipaddr(packet_get_connection_in()),
|
||||||
|
+ get_local_port());
|
||||||
+ audit_fd = audit_open();
|
+ audit_fd = audit_open();
|
||||||
+ if (audit_fd < 0) {
|
+ if (audit_fd < 0) {
|
||||||
+ if (errno != EINVAL && errno != EPROTONOSUPPORT &&
|
+ if (errno != EINVAL && errno != EPROTONOSUPPORT &&
|
||||||
@ -90,8 +93,8 @@ diff -up openssh-5.8p1/audit-linux.c.audit4 openssh-5.8p1/audit-linux.c
|
|||||||
+ error("cannot open audit");
|
+ error("cannot open audit");
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+ audit_ok = audit_log_acct_message(audit_fd, AUDIT_CRYPTO_KEY_USER, NULL,
|
+ audit_ok = audit_log_user_message(audit_fd, AUDIT_CRYPTO_KEY_USER,
|
||||||
+ buf, NULL, -1, NULL, get_remote_ipaddr(), NULL, 1);
|
+ buf, NULL, get_remote_ipaddr(), NULL, 1);
|
||||||
+ audit_close(audit_fd);
|
+ audit_close(audit_fd);
|
||||||
+ /* do not abort if the error is EPERM and sshd is run as non root user */
|
+ /* do not abort if the error is EPERM and sshd is run as non root user */
|
||||||
+ if ((audit_ok < 0) && ((audit_ok != -1) || (getuid() == 0)))
|
+ if ((audit_ok < 0) && ((audit_ok != -1) || (getuid() == 0)))
|
||||||
@ -100,8 +103,8 @@ diff -up openssh-5.8p1/audit-linux.c.audit4 openssh-5.8p1/audit-linux.c
|
|||||||
+
|
+
|
||||||
#endif /* USE_LINUX_AUDIT */
|
#endif /* USE_LINUX_AUDIT */
|
||||||
diff -up openssh-5.8p1/auditstub.c.audit4 openssh-5.8p1/auditstub.c
|
diff -up openssh-5.8p1/auditstub.c.audit4 openssh-5.8p1/auditstub.c
|
||||||
--- openssh-5.8p1/auditstub.c.audit4 2011-02-09 22:24:22.000000000 +0100
|
--- openssh-5.8p1/auditstub.c.audit4 2011-02-17 10:34:25.000000000 +0100
|
||||||
+++ openssh-5.8p1/auditstub.c 2011-02-09 22:24:22.000000000 +0100
|
+++ openssh-5.8p1/auditstub.c 2011-02-17 10:34:25.000000000 +0100
|
||||||
@@ -37,3 +37,7 @@ audit_kex(int ctos, char *enc, char *mac
|
@@ -37,3 +37,7 @@ audit_kex(int ctos, char *enc, char *mac
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -111,8 +114,8 @@ diff -up openssh-5.8p1/auditstub.c.audit4 openssh-5.8p1/auditstub.c
|
|||||||
+{
|
+{
|
||||||
+}
|
+}
|
||||||
diff -up openssh-5.8p1/kex.c.audit4 openssh-5.8p1/kex.c
|
diff -up openssh-5.8p1/kex.c.audit4 openssh-5.8p1/kex.c
|
||||||
--- openssh-5.8p1/kex.c.audit4 2011-02-09 22:24:22.000000000 +0100
|
--- openssh-5.8p1/kex.c.audit4 2011-02-17 10:34:25.000000000 +0100
|
||||||
+++ openssh-5.8p1/kex.c 2011-02-09 22:24:22.000000000 +0100
|
+++ openssh-5.8p1/kex.c 2011-02-17 10:34:25.000000000 +0100
|
||||||
@@ -624,3 +624,34 @@ dump_digest(char *msg, u_char *digest, i
|
@@ -624,3 +624,34 @@ dump_digest(char *msg, u_char *digest, i
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
}
|
}
|
||||||
@ -150,7 +153,7 @@ diff -up openssh-5.8p1/kex.c.audit4 openssh-5.8p1/kex.c
|
|||||||
+
|
+
|
||||||
diff -up openssh-5.8p1/kex.h.audit4 openssh-5.8p1/kex.h
|
diff -up openssh-5.8p1/kex.h.audit4 openssh-5.8p1/kex.h
|
||||||
--- openssh-5.8p1/kex.h.audit4 2010-09-24 14:11:14.000000000 +0200
|
--- openssh-5.8p1/kex.h.audit4 2010-09-24 14:11:14.000000000 +0200
|
||||||
+++ openssh-5.8p1/kex.h 2011-02-09 22:24:22.000000000 +0100
|
+++ openssh-5.8p1/kex.h 2011-02-17 10:34:25.000000000 +0100
|
||||||
@@ -156,6 +156,8 @@ void kexgex_server(Kex *);
|
@@ -156,6 +156,8 @@ void kexgex_server(Kex *);
|
||||||
void kexecdh_client(Kex *);
|
void kexecdh_client(Kex *);
|
||||||
void kexecdh_server(Kex *);
|
void kexecdh_server(Kex *);
|
||||||
@ -162,7 +165,7 @@ diff -up openssh-5.8p1/kex.h.audit4 openssh-5.8p1/kex.h
|
|||||||
BIGNUM *, BIGNUM *, BIGNUM *, u_char **, u_int *);
|
BIGNUM *, BIGNUM *, BIGNUM *, u_char **, u_int *);
|
||||||
diff -up openssh-5.8p1/mac.c.audit4 openssh-5.8p1/mac.c
|
diff -up openssh-5.8p1/mac.c.audit4 openssh-5.8p1/mac.c
|
||||||
--- openssh-5.8p1/mac.c.audit4 2008-06-13 02:58:50.000000000 +0200
|
--- openssh-5.8p1/mac.c.audit4 2008-06-13 02:58:50.000000000 +0200
|
||||||
+++ openssh-5.8p1/mac.c 2011-02-09 22:24:22.000000000 +0100
|
+++ openssh-5.8p1/mac.c 2011-02-17 10:34:25.000000000 +0100
|
||||||
@@ -162,6 +162,20 @@ mac_clear(Mac *mac)
|
@@ -162,6 +162,20 @@ mac_clear(Mac *mac)
|
||||||
mac->umac_ctx = NULL;
|
mac->umac_ctx = NULL;
|
||||||
}
|
}
|
||||||
@ -186,15 +189,15 @@ diff -up openssh-5.8p1/mac.c.audit4 openssh-5.8p1/mac.c
|
|||||||
int
|
int
|
||||||
diff -up openssh-5.8p1/mac.h.audit4 openssh-5.8p1/mac.h
|
diff -up openssh-5.8p1/mac.h.audit4 openssh-5.8p1/mac.h
|
||||||
--- openssh-5.8p1/mac.h.audit4 2007-06-11 06:01:42.000000000 +0200
|
--- openssh-5.8p1/mac.h.audit4 2007-06-11 06:01:42.000000000 +0200
|
||||||
+++ openssh-5.8p1/mac.h 2011-02-09 22:24:22.000000000 +0100
|
+++ openssh-5.8p1/mac.h 2011-02-17 10:34:25.000000000 +0100
|
||||||
@@ -28,3 +28,4 @@ int mac_setup(Mac *, char *);
|
@@ -28,3 +28,4 @@ int mac_setup(Mac *, char *);
|
||||||
int mac_init(Mac *);
|
int mac_init(Mac *);
|
||||||
u_char *mac_compute(Mac *, u_int32_t, u_char *, int);
|
u_char *mac_compute(Mac *, u_int32_t, u_char *, int);
|
||||||
void mac_clear(Mac *);
|
void mac_clear(Mac *);
|
||||||
+void mac_destroy(Mac *);
|
+void mac_destroy(Mac *);
|
||||||
diff -up openssh-5.8p1/monitor.c.audit4 openssh-5.8p1/monitor.c
|
diff -up openssh-5.8p1/monitor.c.audit4 openssh-5.8p1/monitor.c
|
||||||
--- openssh-5.8p1/monitor.c.audit4 2011-02-09 22:24:22.000000000 +0100
|
--- openssh-5.8p1/monitor.c.audit4 2011-02-17 10:34:25.000000000 +0100
|
||||||
+++ openssh-5.8p1/monitor.c 2011-02-09 22:24:22.000000000 +0100
|
+++ openssh-5.8p1/monitor.c 2011-02-17 10:34:25.000000000 +0100
|
||||||
@@ -180,6 +180,7 @@ int mm_answer_audit_event(int, Buffer *)
|
@@ -180,6 +180,7 @@ int mm_answer_audit_event(int, Buffer *)
|
||||||
int mm_answer_audit_command(int, Buffer *);
|
int mm_answer_audit_command(int, Buffer *);
|
||||||
int mm_answer_audit_unsupported_body(int, Buffer *);
|
int mm_answer_audit_unsupported_body(int, Buffer *);
|
||||||
@ -255,8 +258,8 @@ diff -up openssh-5.8p1/monitor.c.audit4 openssh-5.8p1/monitor.c
|
|||||||
+}
|
+}
|
||||||
#endif /* SSH_AUDIT_EVENTS */
|
#endif /* SSH_AUDIT_EVENTS */
|
||||||
diff -up openssh-5.8p1/monitor.h.audit4 openssh-5.8p1/monitor.h
|
diff -up openssh-5.8p1/monitor.h.audit4 openssh-5.8p1/monitor.h
|
||||||
--- openssh-5.8p1/monitor.h.audit4 2011-02-09 22:24:22.000000000 +0100
|
--- openssh-5.8p1/monitor.h.audit4 2011-02-17 10:34:25.000000000 +0100
|
||||||
+++ openssh-5.8p1/monitor.h 2011-02-09 22:24:22.000000000 +0100
|
+++ openssh-5.8p1/monitor.h 2011-02-17 10:34:25.000000000 +0100
|
||||||
@@ -68,6 +68,7 @@ enum monitor_reqtype {
|
@@ -68,6 +68,7 @@ enum monitor_reqtype {
|
||||||
MONITOR_REQ_JPAKE_CHECK_CONFIRM, MONITOR_ANS_JPAKE_CHECK_CONFIRM,
|
MONITOR_REQ_JPAKE_CHECK_CONFIRM, MONITOR_ANS_JPAKE_CHECK_CONFIRM,
|
||||||
MONITOR_REQ_AUDIT_UNSUPPORTED, MONITOR_ANS_AUDIT_UNSUPPORTED,
|
MONITOR_REQ_AUDIT_UNSUPPORTED, MONITOR_ANS_AUDIT_UNSUPPORTED,
|
||||||
@ -266,8 +269,8 @@ diff -up openssh-5.8p1/monitor.h.audit4 openssh-5.8p1/monitor.h
|
|||||||
|
|
||||||
struct mm_master;
|
struct mm_master;
|
||||||
diff -up openssh-5.8p1/monitor_wrap.c.audit4 openssh-5.8p1/monitor_wrap.c
|
diff -up openssh-5.8p1/monitor_wrap.c.audit4 openssh-5.8p1/monitor_wrap.c
|
||||||
--- openssh-5.8p1/monitor_wrap.c.audit4 2011-02-09 22:24:22.000000000 +0100
|
--- openssh-5.8p1/monitor_wrap.c.audit4 2011-02-17 10:34:25.000000000 +0100
|
||||||
+++ openssh-5.8p1/monitor_wrap.c 2011-02-09 22:24:22.000000000 +0100
|
+++ openssh-5.8p1/monitor_wrap.c 2011-02-17 10:34:25.000000000 +0100
|
||||||
@@ -1446,4 +1446,17 @@ mm_audit_kex_body(int ctos, char *cipher
|
@@ -1446,4 +1446,17 @@ mm_audit_kex_body(int ctos, char *cipher
|
||||||
|
|
||||||
buffer_free(&m);
|
buffer_free(&m);
|
||||||
@ -287,8 +290,8 @@ diff -up openssh-5.8p1/monitor_wrap.c.audit4 openssh-5.8p1/monitor_wrap.c
|
|||||||
+}
|
+}
|
||||||
#endif /* SSH_AUDIT_EVENTS */
|
#endif /* SSH_AUDIT_EVENTS */
|
||||||
diff -up openssh-5.8p1/monitor_wrap.h.audit4 openssh-5.8p1/monitor_wrap.h
|
diff -up openssh-5.8p1/monitor_wrap.h.audit4 openssh-5.8p1/monitor_wrap.h
|
||||||
--- openssh-5.8p1/monitor_wrap.h.audit4 2011-02-09 22:24:22.000000000 +0100
|
--- openssh-5.8p1/monitor_wrap.h.audit4 2011-02-17 10:34:25.000000000 +0100
|
||||||
+++ openssh-5.8p1/monitor_wrap.h 2011-02-09 22:24:22.000000000 +0100
|
+++ openssh-5.8p1/monitor_wrap.h 2011-02-17 10:34:25.000000000 +0100
|
||||||
@@ -76,6 +76,7 @@ void mm_audit_event(ssh_audit_event_t);
|
@@ -76,6 +76,7 @@ void mm_audit_event(ssh_audit_event_t);
|
||||||
void mm_audit_run_command(const char *);
|
void mm_audit_run_command(const char *);
|
||||||
void mm_audit_unsupported_body(int);
|
void mm_audit_unsupported_body(int);
|
||||||
@ -299,7 +302,7 @@ diff -up openssh-5.8p1/monitor_wrap.h.audit4 openssh-5.8p1/monitor_wrap.h
|
|||||||
struct Session;
|
struct Session;
|
||||||
diff -up openssh-5.8p1/packet.c.audit4 openssh-5.8p1/packet.c
|
diff -up openssh-5.8p1/packet.c.audit4 openssh-5.8p1/packet.c
|
||||||
--- openssh-5.8p1/packet.c.audit4 2010-11-24 00:46:37.000000000 +0100
|
--- openssh-5.8p1/packet.c.audit4 2010-11-24 00:46:37.000000000 +0100
|
||||||
+++ openssh-5.8p1/packet.c 2011-02-09 22:24:22.000000000 +0100
|
+++ openssh-5.8p1/packet.c 2011-02-17 10:34:25.000000000 +0100
|
||||||
@@ -497,6 +497,7 @@ packet_close(void)
|
@@ -497,6 +497,7 @@ packet_close(void)
|
||||||
}
|
}
|
||||||
cipher_cleanup(&active_state->send_context);
|
cipher_cleanup(&active_state->send_context);
|
||||||
@ -394,7 +397,7 @@ diff -up openssh-5.8p1/packet.c.audit4 openssh-5.8p1/packet.c
|
|||||||
+
|
+
|
||||||
diff -up openssh-5.8p1/packet.h.audit4 openssh-5.8p1/packet.h
|
diff -up openssh-5.8p1/packet.h.audit4 openssh-5.8p1/packet.h
|
||||||
--- openssh-5.8p1/packet.h.audit4 2010-11-20 05:19:38.000000000 +0100
|
--- openssh-5.8p1/packet.h.audit4 2010-11-20 05:19:38.000000000 +0100
|
||||||
+++ openssh-5.8p1/packet.h 2011-02-09 22:24:22.000000000 +0100
|
+++ openssh-5.8p1/packet.h 2011-02-17 10:34:25.000000000 +0100
|
||||||
@@ -125,4 +125,5 @@ void packet_restore_state(void);
|
@@ -125,4 +125,5 @@ void packet_restore_state(void);
|
||||||
void *packet_get_input(void);
|
void *packet_get_input(void);
|
||||||
void *packet_get_output(void);
|
void *packet_get_output(void);
|
||||||
@ -402,8 +405,8 @@ diff -up openssh-5.8p1/packet.h.audit4 openssh-5.8p1/packet.h
|
|||||||
+void packet_destroy_all(void);
|
+void packet_destroy_all(void);
|
||||||
#endif /* PACKET_H */
|
#endif /* PACKET_H */
|
||||||
diff -up openssh-5.8p1/sshd.c.audit4 openssh-5.8p1/sshd.c
|
diff -up openssh-5.8p1/sshd.c.audit4 openssh-5.8p1/sshd.c
|
||||||
--- openssh-5.8p1/sshd.c.audit4 2011-02-09 22:24:22.000000000 +0100
|
--- openssh-5.8p1/sshd.c.audit4 2011-02-17 10:34:25.000000000 +0100
|
||||||
+++ openssh-5.8p1/sshd.c 2011-02-09 22:24:22.000000000 +0100
|
+++ openssh-5.8p1/sshd.c 2011-02-17 10:34:25.000000000 +0100
|
||||||
@@ -663,6 +663,8 @@ privsep_preauth(Authctxt *authctxt)
|
@@ -663,6 +663,8 @@ privsep_preauth(Authctxt *authctxt)
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
@ -1,20 +1,20 @@
|
|||||||
diff -up openssh-5.8p1/audit-bsm.c.audit5 openssh-5.8p1/audit-bsm.c
|
diff -up openssh-5.8p1/audit-bsm.c.audit5 openssh-5.8p1/audit-bsm.c
|
||||||
--- openssh-5.8p1/audit-bsm.c.audit5 2011-02-09 22:33:51.000000000 +0100
|
--- openssh-5.8p1/audit-bsm.c.audit5 2011-02-17 10:36:14.000000000 +0100
|
||||||
+++ openssh-5.8p1/audit-bsm.c 2011-02-09 22:33:52.000000000 +0100
|
+++ openssh-5.8p1/audit-bsm.c 2011-02-17 10:36:14.000000000 +0100
|
||||||
@@ -401,4 +401,10 @@ audit_session_key_free_body(int ctos)
|
@@ -401,4 +401,10 @@ audit_session_key_free_body(int ctos)
|
||||||
{
|
{
|
||||||
/* not implemented */
|
/* not implemented */
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+void
|
+void
|
||||||
+audit_destroy_sensitive_data(void)
|
+audit_destroy_sensitive_data(const char *fp)
|
||||||
+{
|
+{
|
||||||
+ /* not implemented */
|
+ /* not implemented */
|
||||||
+}
|
+}
|
||||||
#endif /* BSM */
|
#endif /* BSM */
|
||||||
diff -up openssh-5.8p1/audit.c.audit5 openssh-5.8p1/audit.c
|
diff -up openssh-5.8p1/audit.c.audit5 openssh-5.8p1/audit.c
|
||||||
--- openssh-5.8p1/audit.c.audit5 2011-02-09 22:33:51.000000000 +0100
|
--- openssh-5.8p1/audit.c.audit5 2011-02-17 10:36:14.000000000 +0100
|
||||||
+++ openssh-5.8p1/audit.c 2011-02-09 22:33:52.000000000 +0100
|
+++ openssh-5.8p1/audit.c 2011-02-17 10:36:14.000000000 +0100
|
||||||
@@ -268,5 +268,14 @@ audit_session_key_free_body(int ctos)
|
@@ -268,5 +268,14 @@ audit_session_key_free_body(int ctos)
|
||||||
{
|
{
|
||||||
debug("audit session key discard euid %d direction %d", geteuid(), ctos);
|
debug("audit session key discard euid %d direction %d", geteuid(), ctos);
|
||||||
@ -24,36 +24,36 @@ diff -up openssh-5.8p1/audit.c.audit5 openssh-5.8p1/audit.c
|
|||||||
+ * This will be called on destroy private part of the server key
|
+ * This will be called on destroy private part of the server key
|
||||||
+ */
|
+ */
|
||||||
+void
|
+void
|
||||||
+audit_destroy_sensitive_data(void)
|
+audit_destroy_sensitive_data(const char *fp)
|
||||||
+{
|
+{
|
||||||
+ debug("audit destroy sensitive data euid %d", geteuid());
|
+ debug("audit destroy sensitive data euid %d fingerprint %s", geteuid(), fp);
|
||||||
+}
|
+}
|
||||||
# endif /* !defined CUSTOM_SSH_AUDIT_EVENTS */
|
# endif /* !defined CUSTOM_SSH_AUDIT_EVENTS */
|
||||||
#endif /* SSH_AUDIT_EVENTS */
|
#endif /* SSH_AUDIT_EVENTS */
|
||||||
diff -up openssh-5.8p1/audit.h.audit5 openssh-5.8p1/audit.h
|
diff -up openssh-5.8p1/audit.h.audit5 openssh-5.8p1/audit.h
|
||||||
--- openssh-5.8p1/audit.h.audit5 2011-02-09 22:33:51.000000000 +0100
|
--- openssh-5.8p1/audit.h.audit5 2011-02-17 10:36:14.000000000 +0100
|
||||||
+++ openssh-5.8p1/audit.h 2011-02-09 22:33:52.000000000 +0100
|
+++ openssh-5.8p1/audit.h 2011-02-17 10:36:14.000000000 +0100
|
||||||
@@ -62,5 +62,6 @@ void audit_unsupported_body(int);
|
@@ -62,5 +62,6 @@ void audit_unsupported_body(int);
|
||||||
void audit_kex_body(int, char *, char *, char *);
|
void audit_kex_body(int, char *, char *, char *);
|
||||||
void audit_session_key_free(int ctos);
|
void audit_session_key_free(int ctos);
|
||||||
void audit_session_key_free_body(int ctos);
|
void audit_session_key_free_body(int ctos);
|
||||||
+void audit_destroy_sensitive_data(void);
|
+void audit_destroy_sensitive_data(const char *);
|
||||||
|
|
||||||
#endif /* _SSH_AUDIT_H */
|
#endif /* _SSH_AUDIT_H */
|
||||||
diff -up openssh-5.8p1/audit-linux.c.audit5 openssh-5.8p1/audit-linux.c
|
diff -up openssh-5.8p1/audit-linux.c.audit5 openssh-5.8p1/audit-linux.c
|
||||||
--- openssh-5.8p1/audit-linux.c.audit5 2011-02-09 22:33:51.000000000 +0100
|
--- openssh-5.8p1/audit-linux.c.audit5 2011-02-17 10:36:14.000000000 +0100
|
||||||
+++ openssh-5.8p1/audit-linux.c 2011-02-09 22:33:52.000000000 +0100
|
+++ openssh-5.8p1/audit-linux.c 2011-02-17 10:36:14.000000000 +0100
|
||||||
@@ -231,4 +231,26 @@ audit_session_key_free_body(int ctos)
|
@@ -301,4 +301,26 @@ audit_session_key_free_body(int ctos)
|
||||||
error("cannot write into audit");
|
error("cannot write into audit");
|
||||||
}
|
}
|
||||||
|
|
||||||
+void
|
+void
|
||||||
+audit_destroy_sensitive_data(void)
|
+audit_destroy_sensitive_data(const char *fp)
|
||||||
+{
|
+{
|
||||||
+ char buf[AUDIT_LOG_SIZE];
|
+ char buf[AUDIT_LOG_SIZE];
|
||||||
+ int audit_fd, audit_ok;
|
+ int audit_fd, audit_ok;
|
||||||
+
|
+
|
||||||
+ snprintf(buf, sizeof(buf), "destroy kind=server direction=?");
|
+ snprintf(buf, sizeof(buf), "op=destroy kind=server fp=%s direction=?", fp);
|
||||||
+ audit_fd = audit_open();
|
+ audit_fd = audit_open();
|
||||||
+ if (audit_fd < 0) {
|
+ if (audit_fd < 0) {
|
||||||
+ if (errno != EINVAL && errno != EPROTONOSUPPORT &&
|
+ if (errno != EINVAL && errno != EPROTONOSUPPORT &&
|
||||||
@ -61,8 +61,8 @@ diff -up openssh-5.8p1/audit-linux.c.audit5 openssh-5.8p1/audit-linux.c
|
|||||||
+ error("cannot open audit");
|
+ error("cannot open audit");
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+ audit_ok = audit_log_acct_message(audit_fd, AUDIT_CRYPTO_KEY_USER, NULL,
|
+ audit_ok = audit_log_user_message(audit_fd, AUDIT_CRYPTO_KEY_USER,
|
||||||
+ buf, NULL, -1, NULL, get_remote_ipaddr(), NULL, 1);
|
+ buf, NULL, get_remote_ipaddr(), NULL, 1);
|
||||||
+ audit_close(audit_fd);
|
+ audit_close(audit_fd);
|
||||||
+ /* do not abort if the error is EPERM and sshd is run as non root user */
|
+ /* do not abort if the error is EPERM and sshd is run as non root user */
|
||||||
+ if ((audit_ok < 0) && ((audit_ok != -1) || (getuid() == 0)))
|
+ if ((audit_ok < 0) && ((audit_ok != -1) || (getuid() == 0)))
|
||||||
@ -71,8 +71,8 @@ diff -up openssh-5.8p1/audit-linux.c.audit5 openssh-5.8p1/audit-linux.c
|
|||||||
+
|
+
|
||||||
#endif /* USE_LINUX_AUDIT */
|
#endif /* USE_LINUX_AUDIT */
|
||||||
diff -up openssh-5.8p1/monitor.c.audit5 openssh-5.8p1/monitor.c
|
diff -up openssh-5.8p1/monitor.c.audit5 openssh-5.8p1/monitor.c
|
||||||
--- openssh-5.8p1/monitor.c.audit5 2011-02-09 22:33:52.000000000 +0100
|
--- openssh-5.8p1/monitor.c.audit5 2011-02-17 10:36:14.000000000 +0100
|
||||||
+++ openssh-5.8p1/monitor.c 2011-02-09 22:33:52.000000000 +0100
|
+++ openssh-5.8p1/monitor.c 2011-02-17 10:36:14.000000000 +0100
|
||||||
@@ -181,6 +181,7 @@ int mm_answer_audit_command(int, Buffer
|
@@ -181,6 +181,7 @@ int mm_answer_audit_command(int, Buffer
|
||||||
int mm_answer_audit_unsupported_body(int, Buffer *);
|
int mm_answer_audit_unsupported_body(int, Buffer *);
|
||||||
int mm_answer_audit_kex_body(int, Buffer *);
|
int mm_answer_audit_kex_body(int, Buffer *);
|
||||||
@ -113,7 +113,7 @@ diff -up openssh-5.8p1/monitor.c.audit5 openssh-5.8p1/monitor.c
|
|||||||
#endif
|
#endif
|
||||||
{0, 0, NULL}
|
{0, 0, NULL}
|
||||||
};
|
};
|
||||||
@@ -2272,4 +2277,15 @@ mm_answer_audit_session_key_free_body(in
|
@@ -2272,4 +2277,20 @@ mm_answer_audit_session_key_free_body(in
|
||||||
mm_request_send(sock, MONITOR_ANS_AUDIT_SESSION_KEY_FREE, m);
|
mm_request_send(sock, MONITOR_ANS_AUDIT_SESSION_KEY_FREE, m);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -121,7 +121,12 @@ diff -up openssh-5.8p1/monitor.c.audit5 openssh-5.8p1/monitor.c
|
|||||||
+int
|
+int
|
||||||
+mm_answer_audit_server_key_free(int sock, Buffer *m)
|
+mm_answer_audit_server_key_free(int sock, Buffer *m)
|
||||||
+{
|
+{
|
||||||
+ audit_destroy_sensitive_data();
|
+ int len;
|
||||||
|
+ char *fp;
|
||||||
|
+
|
||||||
|
+ fp = buffer_get_string(m, &len);
|
||||||
|
+
|
||||||
|
+ audit_destroy_sensitive_data(fp);
|
||||||
+
|
+
|
||||||
+ buffer_clear(m);
|
+ buffer_clear(m);
|
||||||
+
|
+
|
||||||
@ -130,8 +135,8 @@ diff -up openssh-5.8p1/monitor.c.audit5 openssh-5.8p1/monitor.c
|
|||||||
+}
|
+}
|
||||||
#endif /* SSH_AUDIT_EVENTS */
|
#endif /* SSH_AUDIT_EVENTS */
|
||||||
diff -up openssh-5.8p1/monitor.h.audit5 openssh-5.8p1/monitor.h
|
diff -up openssh-5.8p1/monitor.h.audit5 openssh-5.8p1/monitor.h
|
||||||
--- openssh-5.8p1/monitor.h.audit5 2011-02-09 22:33:52.000000000 +0100
|
--- openssh-5.8p1/monitor.h.audit5 2011-02-17 10:36:14.000000000 +0100
|
||||||
+++ openssh-5.8p1/monitor.h 2011-02-09 22:33:52.000000000 +0100
|
+++ openssh-5.8p1/monitor.h 2011-02-17 10:36:14.000000000 +0100
|
||||||
@@ -69,6 +69,7 @@ enum monitor_reqtype {
|
@@ -69,6 +69,7 @@ enum monitor_reqtype {
|
||||||
MONITOR_REQ_AUDIT_UNSUPPORTED, MONITOR_ANS_AUDIT_UNSUPPORTED,
|
MONITOR_REQ_AUDIT_UNSUPPORTED, MONITOR_ANS_AUDIT_UNSUPPORTED,
|
||||||
MONITOR_REQ_AUDIT_KEX, MONITOR_ANS_AUDIT_KEX,
|
MONITOR_REQ_AUDIT_KEX, MONITOR_ANS_AUDIT_KEX,
|
||||||
@ -141,19 +146,21 @@ diff -up openssh-5.8p1/monitor.h.audit5 openssh-5.8p1/monitor.h
|
|||||||
|
|
||||||
struct mm_master;
|
struct mm_master;
|
||||||
diff -up openssh-5.8p1/monitor_wrap.c.audit5 openssh-5.8p1/monitor_wrap.c
|
diff -up openssh-5.8p1/monitor_wrap.c.audit5 openssh-5.8p1/monitor_wrap.c
|
||||||
--- openssh-5.8p1/monitor_wrap.c.audit5 2011-02-09 22:33:52.000000000 +0100
|
--- openssh-5.8p1/monitor_wrap.c.audit5 2011-02-17 10:36:14.000000000 +0100
|
||||||
+++ openssh-5.8p1/monitor_wrap.c 2011-02-09 22:33:52.000000000 +0100
|
+++ openssh-5.8p1/monitor_wrap.c 2011-02-17 10:36:14.000000000 +0100
|
||||||
@@ -1459,4 +1459,16 @@ mm_audit_session_key_free_body(int ctos)
|
@@ -1459,4 +1459,18 @@ mm_audit_session_key_free_body(int ctos)
|
||||||
&m);
|
&m);
|
||||||
buffer_free(&m);
|
buffer_free(&m);
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+void
|
+void
|
||||||
+mm_audit_destroy_sensitive_data(void)
|
+mm_audit_destroy_sensitive_data(const char *fp)
|
||||||
+{
|
+{
|
||||||
+ Buffer m;
|
+ Buffer m;
|
||||||
+
|
+
|
||||||
+ buffer_init(&m);
|
+ buffer_init(&m);
|
||||||
|
+ buffer_put_cstring(&m, fp);
|
||||||
|
+
|
||||||
+ mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUDIT_SERVER_KEY_FREE, &m);
|
+ mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUDIT_SERVER_KEY_FREE, &m);
|
||||||
+ mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_AUDIT_SERVER_KEY_FREE,
|
+ mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_AUDIT_SERVER_KEY_FREE,
|
||||||
+ &m);
|
+ &m);
|
||||||
@ -161,55 +168,108 @@ diff -up openssh-5.8p1/monitor_wrap.c.audit5 openssh-5.8p1/monitor_wrap.c
|
|||||||
+}
|
+}
|
||||||
#endif /* SSH_AUDIT_EVENTS */
|
#endif /* SSH_AUDIT_EVENTS */
|
||||||
diff -up openssh-5.8p1/monitor_wrap.h.audit5 openssh-5.8p1/monitor_wrap.h
|
diff -up openssh-5.8p1/monitor_wrap.h.audit5 openssh-5.8p1/monitor_wrap.h
|
||||||
--- openssh-5.8p1/monitor_wrap.h.audit5 2011-02-09 22:33:52.000000000 +0100
|
--- openssh-5.8p1/monitor_wrap.h.audit5 2011-02-17 10:36:14.000000000 +0100
|
||||||
+++ openssh-5.8p1/monitor_wrap.h 2011-02-09 22:33:52.000000000 +0100
|
+++ openssh-5.8p1/monitor_wrap.h 2011-02-17 10:36:14.000000000 +0100
|
||||||
@@ -77,6 +77,7 @@ void mm_audit_run_command(const char *);
|
@@ -77,6 +77,7 @@ void mm_audit_run_command(const char *);
|
||||||
void mm_audit_unsupported_body(int);
|
void mm_audit_unsupported_body(int);
|
||||||
void mm_audit_kex_body(int, char *, char *, char *);
|
void mm_audit_kex_body(int, char *, char *, char *);
|
||||||
void mm_audit_session_key_free_body(int);
|
void mm_audit_session_key_free_body(int);
|
||||||
+void mm_audit_server_key_free_body(void);
|
+void mm_audit_destroy_sensitive_data(const char *);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct Session;
|
struct Session;
|
||||||
diff -up openssh-5.8p1/session.c.audit5 openssh-5.8p1/session.c
|
diff -up openssh-5.8p1/session.c.audit5 openssh-5.8p1/session.c
|
||||||
--- openssh-5.8p1/session.c.audit5 2010-12-01 02:02:59.000000000 +0100
|
--- openssh-5.8p1/session.c.audit5 2010-12-01 02:02:59.000000000 +0100
|
||||||
+++ openssh-5.8p1/session.c 2011-02-09 22:33:52.000000000 +0100
|
+++ openssh-5.8p1/session.c 2011-02-17 10:36:14.000000000 +0100
|
||||||
@@ -1615,6 +1615,7 @@ do_child(Session *s, const char *command
|
@@ -132,7 +132,7 @@ extern int log_stderr;
|
||||||
|
extern int debug_flag;
|
||||||
|
extern u_int utmp_len;
|
||||||
|
extern int startup_pipe;
|
||||||
|
-extern void destroy_sensitive_data(void);
|
||||||
|
+extern void destroy_sensitive_data(int);
|
||||||
|
extern Buffer loginmsg;
|
||||||
|
|
||||||
|
/* original command from peer. */
|
||||||
|
@@ -1614,7 +1614,7 @@ do_child(Session *s, const char *command
|
||||||
|
int r = 0;
|
||||||
|
|
||||||
/* remove hostkey from the child's memory */
|
/* remove hostkey from the child's memory */
|
||||||
destroy_sensitive_data();
|
- destroy_sensitive_data();
|
||||||
+ PRIVSEP(audit_destroy_sensitive_data());
|
+ destroy_sensitive_data(1);
|
||||||
|
|
||||||
/* Force a password change */
|
/* Force a password change */
|
||||||
if (s->authctxt->force_pwchange) {
|
if (s->authctxt->force_pwchange) {
|
||||||
diff -up openssh-5.8p1/sshd.c.audit5 openssh-5.8p1/sshd.c
|
diff -up openssh-5.8p1/sshd.c.audit5 openssh-5.8p1/sshd.c
|
||||||
--- openssh-5.8p1/sshd.c.audit5 2011-02-09 22:33:52.000000000 +0100
|
--- openssh-5.8p1/sshd.c.audit5 2011-02-17 10:36:14.000000000 +0100
|
||||||
+++ openssh-5.8p1/sshd.c 2011-02-09 22:33:52.000000000 +0100
|
+++ openssh-5.8p1/sshd.c 2011-02-17 10:36:14.000000000 +0100
|
||||||
@@ -579,6 +579,7 @@ demote_sensitive_data(void)
|
@@ -253,7 +253,7 @@ Buffer loginmsg;
|
||||||
|
struct passwd *privsep_pw = NULL;
|
||||||
|
|
||||||
|
/* Prototypes for various functions defined later in this file. */
|
||||||
|
-void destroy_sensitive_data(void);
|
||||||
|
+void destroy_sensitive_data(int);
|
||||||
|
void demote_sensitive_data(void);
|
||||||
|
|
||||||
|
static void do_ssh1_kex(void);
|
||||||
|
@@ -534,7 +534,7 @@ sshd_exchange_identification(int sock_in
|
||||||
|
|
||||||
|
/* Destroy the host and server keys. They will no longer be needed. */
|
||||||
|
void
|
||||||
|
-destroy_sensitive_data(void)
|
||||||
|
+destroy_sensitive_data(int privsep)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
@@ -544,8 +544,16 @@ destroy_sensitive_data(void)
|
||||||
|
}
|
||||||
|
for (i = 0; i < options.num_host_key_files; i++) {
|
||||||
|
if (sensitive_data.host_keys[i]) {
|
||||||
|
+ char *fp;
|
||||||
|
+
|
||||||
|
+ fp = key_fingerprint(sensitive_data.host_keys[i],
|
||||||
|
+ FIPS_mode() ? SSH_FP_SHA1 : SSH_FP_MD5, SSH_FP_HEX);
|
||||||
|
key_free(sensitive_data.host_keys[i]);
|
||||||
|
sensitive_data.host_keys[i] = NULL;
|
||||||
|
+ if (privsep)
|
||||||
|
+ PRIVSEP(audit_destroy_sensitive_data(fp));
|
||||||
|
+ else
|
||||||
|
+ audit_destroy_sensitive_data(fp);
|
||||||
|
}
|
||||||
|
if (sensitive_data.host_certificates[i]) {
|
||||||
|
key_free(sensitive_data.host_certificates[i]);
|
||||||
|
@@ -571,11 +579,17 @@ demote_sensitive_data(void)
|
||||||
|
|
||||||
|
for (i = 0; i < options.num_host_key_files; i++) {
|
||||||
|
if (sensitive_data.host_keys[i]) {
|
||||||
|
+ char *fp;
|
||||||
|
+
|
||||||
|
+ fp = key_fingerprint(sensitive_data.host_keys[i],
|
||||||
|
+ FIPS_mode() ? SSH_FP_SHA1 : SSH_FP_MD5, SSH_FP_HEX);
|
||||||
|
tmp = key_demote(sensitive_data.host_keys[i]);
|
||||||
|
key_free(sensitive_data.host_keys[i]);
|
||||||
|
sensitive_data.host_keys[i] = tmp;
|
||||||
|
if (tmp->type == KEY_RSA1)
|
||||||
|
sensitive_data.ssh1_host_key = tmp;
|
||||||
|
+ audit_destroy_sensitive_data(fp);
|
||||||
|
+ xfree(fp);
|
||||||
}
|
}
|
||||||
/* Certs do not need demotion */
|
/* Certs do not need demotion */
|
||||||
}
|
}
|
||||||
+ audit_destroy_sensitive_data();
|
@@ -2024,7 +2038,7 @@ main(int ac, char **av)
|
||||||
|
|
||||||
/* We do not clear ssh1_host key and cookie. XXX - Okay Niels? */
|
|
||||||
}
|
|
||||||
@@ -2023,8 +2024,10 @@ main(int ac, char **av)
|
|
||||||
if (use_privsep) {
|
|
||||||
privsep_postauth(authctxt);
|
privsep_postauth(authctxt);
|
||||||
/* the monitor process [priv] will not return */
|
/* the monitor process [priv] will not return */
|
||||||
- if (!compat20)
|
if (!compat20)
|
||||||
+ if (!compat20) {
|
- destroy_sensitive_data();
|
||||||
destroy_sensitive_data();
|
+ destroy_sensitive_data(0);
|
||||||
+ audit_destroy_sensitive_data();
|
|
||||||
+ }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
packet_set_timeout(options.client_alive_interval,
|
packet_set_timeout(options.client_alive_interval,
|
||||||
@@ -2265,6 +2268,7 @@ do_ssh1_kex(void)
|
@@ -2264,7 +2278,7 @@ do_ssh1_kex(void)
|
||||||
|
session_id[i] = session_key[i] ^ session_key[i + 16];
|
||||||
}
|
}
|
||||||
/* Destroy the private and public keys. No longer. */
|
/* Destroy the private and public keys. No longer. */
|
||||||
destroy_sensitive_data();
|
- destroy_sensitive_data();
|
||||||
+ audit_destroy_sensitive_data();
|
+ destroy_sensitive_data(0);
|
||||||
|
|
||||||
if (use_privsep)
|
if (use_privsep)
|
||||||
mm_ssh1_session_id(session_id);
|
mm_ssh1_session_id(session_id);
|
||||||
|
13
openssh.spec
13
openssh.spec
@ -71,7 +71,7 @@
|
|||||||
|
|
||||||
# Do not forget to bump pam_ssh_agent_auth release if you rewind the main package release to 1
|
# Do not forget to bump pam_ssh_agent_auth release if you rewind the main package release to 1
|
||||||
%define openssh_ver 5.8p1
|
%define openssh_ver 5.8p1
|
||||||
%define openssh_rel 3
|
%define openssh_rel 4
|
||||||
%define pam_ssh_agent_ver 0.9.2
|
%define pam_ssh_agent_ver 0.9.2
|
||||||
%define pam_ssh_agent_rel 30
|
%define pam_ssh_agent_rel 30
|
||||||
|
|
||||||
@ -93,14 +93,16 @@ Source3: sshd.init
|
|||||||
Source4: http://prdownloads.sourceforge.net/pamsshagentauth/pam_ssh_agent_auth/pam_ssh_agent_auth-%{pam_ssh_agent_ver}.tar.bz2
|
Source4: http://prdownloads.sourceforge.net/pamsshagentauth/pam_ssh_agent_auth/pam_ssh_agent_auth-%{pam_ssh_agent_ver}.tar.bz2
|
||||||
Source5: pam_ssh_agent-rmheaders
|
Source5: pam_ssh_agent-rmheaders
|
||||||
|
|
||||||
Patch100: openssh-5.6p1-wIm.patch
|
Patch100: openssh-5.8p1-wIm.patch
|
||||||
Patch0: openssh-5.6p1-redhat.patch
|
Patch0: openssh-5.6p1-redhat.patch
|
||||||
#https://bugzilla.mindrot.org/show_bug.cgi?id=1402
|
#https://bugzilla.mindrot.org/show_bug.cgi?id=1402
|
||||||
Patch1: openssh-5.8p1-audit1.patch
|
Patch1: openssh-5.8p1-audit1.patch
|
||||||
Patch2: openssh-5.8p1-audit2.patch
|
Patch2: openssh-5.8p1-audit2.patch
|
||||||
|
Patch102: openssh-5.8p1-audit2a.patch
|
||||||
Patch3: openssh-5.8p1-audit3.patch
|
Patch3: openssh-5.8p1-audit3.patch
|
||||||
Patch4: openssh-5.8p1-audit4.patch
|
Patch4: openssh-5.8p1-audit4.patch
|
||||||
Patch5: openssh-5.8p1-audit5.patch
|
Patch5: openssh-5.8p1-audit5.patch
|
||||||
|
Patch105: openssh-5.8p1-audit5a.patch
|
||||||
#https://bugzilla.mindrot.org/show_bug.cgi?id=1640
|
#https://bugzilla.mindrot.org/show_bug.cgi?id=1640
|
||||||
Patch9: openssh-5.8p1-vendor.patch
|
Patch9: openssh-5.8p1-vendor.patch
|
||||||
# --- pam_ssh-agent ---
|
# --- pam_ssh-agent ---
|
||||||
@ -286,9 +288,11 @@ The module is most useful for su and sudo service stacks.
|
|||||||
%patch0 -p1 -b .redhat
|
%patch0 -p1 -b .redhat
|
||||||
%patch1 -p1 -b .audit1
|
%patch1 -p1 -b .audit1
|
||||||
%patch2 -p1 -b .audit2
|
%patch2 -p1 -b .audit2
|
||||||
|
%patch102 -p1 -b .audit2a
|
||||||
%patch3 -p1 -b .audit3
|
%patch3 -p1 -b .audit3
|
||||||
%patch4 -p1 -b .audit4
|
%patch4 -p1 -b .audit4
|
||||||
%patch5 -p1 -b .audit5
|
%patch5 -p1 -b .audit5
|
||||||
|
%patch105 -p1 -b .audit5a
|
||||||
%patch9 -p1 -b .vendor
|
%patch9 -p1 -b .vendor
|
||||||
%if %{pam_ssh_agent}
|
%if %{pam_ssh_agent}
|
||||||
pushd pam_ssh_agent_auth-%{pam_ssh_agent_ver}
|
pushd pam_ssh_agent_auth-%{pam_ssh_agent_ver}
|
||||||
@ -299,7 +303,9 @@ rm -f $(cat %{SOURCE5})
|
|||||||
popd
|
popd
|
||||||
%endif
|
%endif
|
||||||
%patch20 -p1 -b .akc
|
%patch20 -p1 -b .akc
|
||||||
|
%if %{ldap}
|
||||||
%patch21 -p1 -b .ldap
|
%patch21 -p1 -b .ldap
|
||||||
|
%endif
|
||||||
%if %{WITH_SELINUX}
|
%if %{WITH_SELINUX}
|
||||||
#SELinux
|
#SELinux
|
||||||
%patch22 -p1 -b .selinux
|
%patch22 -p1 -b .selinux
|
||||||
@ -604,6 +610,9 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Feb 17 2011 Jan F. Chadima <jchadima@redhat.com> - 5.8p1-4 + 0.9.2-30
|
||||||
|
- improve audit of server ket management
|
||||||
|
|
||||||
* Wed Feb 16 2011 Jan F. Chadima <jchadima@redhat.com> - 5.8p1-3 + 0.9.2-30
|
* Wed Feb 16 2011 Jan F. Chadima <jchadima@redhat.com> - 5.8p1-3 + 0.9.2-30
|
||||||
- improve audit of logins and auths
|
- improve audit of logins and auths
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user