another audit improovements
This commit is contained in:
parent
1732b09b93
commit
f9ff105e58
@ -1,6 +1,6 @@
|
||||
diff -up openssh-5.8p1/audit-bsm.c.audit1 openssh-5.8p1/audit-bsm.c
|
||||
--- openssh-5.8p1/audit-bsm.c.audit1 2011-01-17 11:15:29.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-bsm.c 2011-02-23 09:45:05.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-bsm.c 2011-02-24 13:49:49.000000000 +0100
|
||||
@@ -305,6 +305,12 @@ audit_run_command(const char *command)
|
||||
}
|
||||
|
||||
@ -16,7 +16,7 @@ diff -up openssh-5.8p1/audit-bsm.c.audit1 openssh-5.8p1/audit-bsm.c
|
||||
/* not implemented */
|
||||
diff -up openssh-5.8p1/audit.c.audit1 openssh-5.8p1/audit.c
|
||||
--- openssh-5.8p1/audit.c.audit1 2011-01-17 11:15:30.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.c 2011-02-23 09:45:05.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.c 2011-02-24 13:49:49.000000000 +0100
|
||||
@@ -182,5 +182,18 @@ audit_run_command(const char *command)
|
||||
debug("audit run command euid %d user %s command '%.200s'", geteuid(),
|
||||
audit_username(), command);
|
||||
@ -38,7 +38,7 @@ diff -up openssh-5.8p1/audit.c.audit1 openssh-5.8p1/audit.c
|
||||
#endif /* SSH_AUDIT_EVENTS */
|
||||
diff -up openssh-5.8p1/audit.h.audit1 openssh-5.8p1/audit.h
|
||||
--- openssh-5.8p1/audit.h.audit1 2011-01-17 11:15:30.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.h 2011-02-23 09:45:05.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.h 2011-02-24 13:49:49.000000000 +0100
|
||||
@@ -52,6 +52,7 @@ void audit_event(ssh_audit_event_t);
|
||||
void audit_session_open(struct logininfo *);
|
||||
void audit_session_close(struct logininfo *);
|
||||
@ -49,7 +49,7 @@ diff -up openssh-5.8p1/audit.h.audit1 openssh-5.8p1/audit.h
|
||||
#endif /* _SSH_AUDIT_H */
|
||||
diff -up openssh-5.8p1/audit-linux.c.audit1 openssh-5.8p1/audit-linux.c
|
||||
--- openssh-5.8p1/audit-linux.c.audit1 2011-01-17 11:15:30.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-linux.c 2011-02-23 09:46:43.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-linux.c 2011-02-24 13:49:49.000000000 +0100
|
||||
@@ -35,13 +35,20 @@
|
||||
|
||||
#include "log.h"
|
||||
@ -259,7 +259,7 @@ diff -up openssh-5.8p1/audit-linux.c.audit1 openssh-5.8p1/audit-linux.c
|
||||
default:
|
||||
diff -up openssh-5.8p1/monitor.c.audit1 openssh-5.8p1/monitor.c
|
||||
--- openssh-5.8p1/monitor.c.audit1 2010-09-10 03:23:34.000000000 +0200
|
||||
+++ openssh-5.8p1/monitor.c 2011-02-23 09:45:05.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor.c 2011-02-24 13:49:49.000000000 +0100
|
||||
@@ -177,6 +177,7 @@ int mm_answer_gss_checkmic(int, Buffer *
|
||||
#ifdef SSH_AUDIT_EVENTS
|
||||
int mm_answer_audit_event(int, Buffer *);
|
||||
@ -307,7 +307,7 @@ diff -up openssh-5.8p1/monitor.c.audit1 openssh-5.8p1/monitor.c
|
||||
void
|
||||
diff -up openssh-5.8p1/monitor.h.audit1 openssh-5.8p1/monitor.h
|
||||
--- openssh-5.8p1/monitor.h.audit1 2008-11-05 06:20:46.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor.h 2011-02-23 09:45:05.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor.h 2011-02-24 13:49:49.000000000 +0100
|
||||
@@ -60,6 +60,7 @@ enum monitor_reqtype {
|
||||
MONITOR_REQ_PAM_RESPOND, MONITOR_ANS_PAM_RESPOND,
|
||||
MONITOR_REQ_PAM_FREE_CTX, MONITOR_ANS_PAM_FREE_CTX,
|
||||
@ -318,7 +318,7 @@ diff -up openssh-5.8p1/monitor.h.audit1 openssh-5.8p1/monitor.h
|
||||
MONITOR_REQ_JPAKE_GET_PWDATA, MONITOR_ANS_JPAKE_GET_PWDATA,
|
||||
diff -up openssh-5.8p1/monitor_wrap.c.audit1 openssh-5.8p1/monitor_wrap.c
|
||||
--- openssh-5.8p1/monitor_wrap.c.audit1 2010-08-31 14:41:14.000000000 +0200
|
||||
+++ openssh-5.8p1/monitor_wrap.c 2011-02-23 09:45:05.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor_wrap.c 2011-02-24 13:49:49.000000000 +0100
|
||||
@@ -1163,6 +1163,20 @@ mm_audit_run_command(const char *command
|
||||
mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUDIT_COMMAND, &m);
|
||||
buffer_free(&m);
|
||||
@ -342,7 +342,7 @@ diff -up openssh-5.8p1/monitor_wrap.c.audit1 openssh-5.8p1/monitor_wrap.c
|
||||
#ifdef GSSAPI
|
||||
diff -up openssh-5.8p1/monitor_wrap.h.audit1 openssh-5.8p1/monitor_wrap.h
|
||||
--- openssh-5.8p1/monitor_wrap.h.audit1 2009-03-05 14:58:22.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor_wrap.h 2011-02-23 09:45:05.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor_wrap.h 2011-02-24 13:49:49.000000000 +0100
|
||||
@@ -74,6 +74,7 @@ void mm_sshpam_free_ctx(void *);
|
||||
#include "audit.h"
|
||||
void mm_audit_event(ssh_audit_event_t);
|
||||
@ -353,7 +353,7 @@ diff -up openssh-5.8p1/monitor_wrap.h.audit1 openssh-5.8p1/monitor_wrap.h
|
||||
struct Session;
|
||||
diff -up openssh-5.8p1/session.c.audit1 openssh-5.8p1/session.c
|
||||
--- openssh-5.8p1/session.c.audit1 2010-12-01 02:02:59.000000000 +0100
|
||||
+++ openssh-5.8p1/session.c 2011-02-23 09:45:05.000000000 +0100
|
||||
+++ openssh-5.8p1/session.c 2011-02-24 13:49:49.000000000 +0100
|
||||
@@ -809,14 +809,16 @@ do_exec(Session *s, const char *command)
|
||||
}
|
||||
|
||||
@ -362,14 +362,14 @@ diff -up openssh-5.8p1/session.c.audit1 openssh-5.8p1/session.c
|
||||
+ if (command != NULL) {
|
||||
PRIVSEP(audit_run_command(command));
|
||||
- else if (s->ttyfd == -1) {
|
||||
+ command = xstrdup(command);
|
||||
+ s->command = xstrdup(command);
|
||||
+ } else if (s->ttyfd == -1) {
|
||||
char *shell = s->pw->pw_shell;
|
||||
|
||||
if (shell[0] == '\0') /* empty shell means /bin/sh */
|
||||
shell =_PATH_BSHELL;
|
||||
PRIVSEP(audit_run_command(shell));
|
||||
+ command = xstrdup(shell);
|
||||
+ s->command = xstrdup(shell);
|
||||
}
|
||||
#endif
|
||||
if (s->ttyfd != -1)
|
||||
@ -388,7 +388,7 @@ diff -up openssh-5.8p1/session.c.audit1 openssh-5.8p1/session.c
|
||||
if (s->display)
|
||||
diff -up openssh-5.8p1/session.h.audit1 openssh-5.8p1/session.h
|
||||
--- openssh-5.8p1/session.h.audit1 2008-05-19 07:34:50.000000000 +0200
|
||||
+++ openssh-5.8p1/session.h 2011-02-23 09:45:05.000000000 +0100
|
||||
+++ openssh-5.8p1/session.h 2011-02-24 13:49:49.000000000 +0100
|
||||
@@ -60,6 +60,11 @@ struct Session {
|
||||
char *name;
|
||||
char *val;
|
||||
@ -401,3 +401,16 @@ diff -up openssh-5.8p1/session.h.audit1 openssh-5.8p1/session.h
|
||||
};
|
||||
|
||||
void do_authenticated(Authctxt *);
|
||||
diff -up openssh-5.8p1/sshd.c.audit1 openssh-5.8p1/sshd.c
|
||||
--- openssh-5.8p1/sshd.c.audit1 2011-02-24 13:50:29.000000000 +0100
|
||||
+++ openssh-5.8p1/sshd.c 2011-02-24 13:50:47.000000000 +0100
|
||||
@@ -2342,7 +2342,8 @@ cleanup_exit(int i)
|
||||
do_cleanup(the_authctxt);
|
||||
#ifdef SSH_AUDIT_EVENTS
|
||||
/* done after do_cleanup so it can cancel the PAM auth 'thread' */
|
||||
- if (!use_privsep || mm_is_monitor())
|
||||
+ if ((the_authctxt == NULL || !the_authctxt->authenticated) &&
|
||||
+ (!use_privsep || mm_is_monitor()))
|
||||
audit_event(SSH_CONNECTION_ABANDON);
|
||||
#endif
|
||||
_exit(i);
|
||||
|
@ -0,0 +1,39 @@
|
||||
diff -up openssh-5.8p1/audit-linux.c.audit1a openssh-5.8p1/audit-linux.c
|
||||
--- openssh-5.8p1/audit-linux.c.audit1a 2011-02-24 13:16:51.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-linux.c 2011-02-24 13:17:17.000000000 +0100
|
||||
@@ -143,7 +143,7 @@ audit_connection_from(const char *host,
|
||||
void
|
||||
audit_run_command(const char *command)
|
||||
{
|
||||
- if (!user_login_count++)
|
||||
+ if (!user_login_count++ && !options.use_pam)
|
||||
linux_audit_user_logxxx(the_authctxt->pw->pw_uid, NULL, get_remote_name_or_ip(utmp_len, options.use_dns),
|
||||
NULL, "ssh", 1, AUDIT_USER_LOGIN);
|
||||
linux_audit_user_logxxx(the_authctxt->pw->pw_uid, NULL, get_remote_name_or_ip(utmp_len, options.use_dns),
|
||||
@@ -155,7 +155,7 @@ audit_end_command(const char *command)
|
||||
{
|
||||
linux_audit_user_logxxx(the_authctxt->pw->pw_uid, NULL, get_remote_name_or_ip(utmp_len, options.use_dns),
|
||||
NULL, "ssh", 1, AUDIT_USER_END);
|
||||
- if (!--user_login_count)
|
||||
+ if (!--user_login_count && !options.use_pam)
|
||||
linux_audit_user_logxxx(the_authctxt->pw->pw_uid, NULL, get_remote_name_or_ip(utmp_len, options.use_dns),
|
||||
NULL, "ssh", 1, AUDIT_USER_LOGOUT);
|
||||
}
|
||||
@@ -163,7 +163,7 @@ audit_end_command(const char *command)
|
||||
void
|
||||
audit_session_open(struct logininfo *li)
|
||||
{
|
||||
- if (!user_login_count++)
|
||||
+ if (!user_login_count++ && !options.use_pam)
|
||||
linux_audit_user_logxxx(li->uid, NULL, li->hostname,
|
||||
NULL, li->line, 1, AUDIT_USER_LOGIN);
|
||||
linux_audit_user_logxxx(li->uid, NULL, li->hostname,
|
||||
@@ -175,7 +175,7 @@ audit_session_close(struct logininfo *li
|
||||
{
|
||||
linux_audit_user_logxxx(li->uid, NULL, li->hostname,
|
||||
NULL, li->line, 1, AUDIT_USER_END);
|
||||
- if (!--user_login_count)
|
||||
+ if (!--user_login_count && !options.use_pam)
|
||||
linux_audit_user_logxxx(li->uid, NULL, li->hostname,
|
||||
NULL, li->line, 1, AUDIT_USER_LOGOUT);
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
diff -up openssh-5.8p1/audit-bsm.c.audit2 openssh-5.8p1/audit-bsm.c
|
||||
--- openssh-5.8p1/audit-bsm.c.audit2 2011-02-23 07:46:37.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-bsm.c 2011-02-23 07:46:37.000000000 +0100
|
||||
--- openssh-5.8p1/audit-bsm.c.audit2 2011-02-24 09:38:06.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-bsm.c 2011-02-24 09:38:06.000000000 +0100
|
||||
@@ -322,6 +322,12 @@ audit_session_close(struct logininfo *li
|
||||
/* not implemented */
|
||||
}
|
||||
@ -15,8 +15,8 @@ diff -up openssh-5.8p1/audit-bsm.c.audit2 openssh-5.8p1/audit-bsm.c
|
||||
audit_event(ssh_audit_event_t event)
|
||||
{
|
||||
diff -up openssh-5.8p1/audit.c.audit2 openssh-5.8p1/audit.c
|
||||
--- openssh-5.8p1/audit.c.audit2 2011-02-23 07:46:37.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.c 2011-02-23 07:47:32.000000000 +0100
|
||||
--- openssh-5.8p1/audit.c.audit2 2011-02-24 09:38:06.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.c 2011-02-24 09:46:00.000000000 +0100
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "key.h"
|
||||
#include "hostfile.h"
|
||||
@ -35,7 +35,7 @@ diff -up openssh-5.8p1/audit.c.audit2 openssh-5.8p1/audit.c
|
||||
+ char *fp;
|
||||
+ const char *crypto_name;
|
||||
+
|
||||
+ fp = key_fingerprint(key, SSH_FP_MD5, SSH_FP_HEX);
|
||||
+ fp = key_selected_fingerprint(key, SSH_FP_HEX);
|
||||
+ if (key->type == KEY_RSA1)
|
||||
+ crypto_name = "ssh-rsa1";
|
||||
+ else
|
||||
@ -48,7 +48,7 @@ diff -up openssh-5.8p1/audit.c.audit2 openssh-5.8p1/audit.c
|
||||
# ifndef CUSTOM_SSH_AUDIT_EVENTS
|
||||
/*
|
||||
* Null implementations of audit functions.
|
||||
@@ -195,5 +212,16 @@ audit_end_command(const char *command)
|
||||
@@ -195,5 +212,17 @@ audit_end_command(const char *command)
|
||||
audit_username(), command);
|
||||
}
|
||||
|
||||
@ -60,14 +60,15 @@ diff -up openssh-5.8p1/audit.c.audit2 openssh-5.8p1/audit.c
|
||||
+int
|
||||
+audit_keyusage(int host_user, const char *type, unsigned bits, char *fp, int rv)
|
||||
+{
|
||||
+ debug("audit %s key usage euid %d user %s key type %s key length %d fingerprint %s, result %d",
|
||||
+ host_user ? "pubkey" : "hostbased", geteuid(), audit_username(), type, bits, fp, rv);
|
||||
+ debug("audit %s key usage euid %d user %s key type %s key length %d fingerprint %s%s, result %d",
|
||||
+ host_user ? "pubkey" : "hostbased", geteuid(), audit_username(), type, bits,
|
||||
+ key_fingerprint_prefix(), fp, rv);
|
||||
+}
|
||||
# endif /* !defined CUSTOM_SSH_AUDIT_EVENTS */
|
||||
#endif /* SSH_AUDIT_EVENTS */
|
||||
diff -up openssh-5.8p1/audit.h.audit2 openssh-5.8p1/audit.h
|
||||
--- openssh-5.8p1/audit.h.audit2 2011-02-23 07:46:37.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.h 2011-02-23 07:48:16.000000000 +0100
|
||||
--- openssh-5.8p1/audit.h.audit2 2011-02-24 09:38:06.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.h 2011-02-24 09:38:06.000000000 +0100
|
||||
@@ -28,6 +28,7 @@
|
||||
# define _SSH_AUDIT_H
|
||||
|
||||
@ -85,8 +86,8 @@ diff -up openssh-5.8p1/audit.h.audit2 openssh-5.8p1/audit.h
|
||||
|
||||
#endif /* _SSH_AUDIT_H */
|
||||
diff -up openssh-5.8p1/audit-linux.c.audit2 openssh-5.8p1/audit-linux.c
|
||||
--- openssh-5.8p1/audit-linux.c.audit2 2011-02-23 07:46:37.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-linux.c 2011-02-23 07:46:37.000000000 +0100
|
||||
--- openssh-5.8p1/audit-linux.c.audit2 2011-02-24 09:38:06.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-linux.c 2011-02-24 09:47:31.000000000 +0100
|
||||
@@ -41,6 +41,8 @@
|
||||
#include "servconf.h"
|
||||
#include "canohost.h"
|
||||
@ -119,8 +120,8 @@ diff -up openssh-5.8p1/audit-linux.c.audit2 openssh-5.8p1/audit-linux.c
|
||||
+ buf, audit_username(), -1, NULL, get_remote_ipaddr(), NULL, rv);
|
||||
+ if ((rc < 0) && ((rc != -1) || (getuid() == 0)))
|
||||
+ goto out;
|
||||
+ snprintf(buf, sizeof(buf), "key algo=%s size=%d fp=%s rport=%d",
|
||||
+ type, bits, fp, get_remote_port());
|
||||
+ snprintf(buf, sizeof(buf), "key algo=%s size=%d fp=%s%s rport=%d",
|
||||
+ type, bits, key_fingerprint_prefix(), fp, get_remote_port());
|
||||
+ rc = audit_log_acct_message(audit_fd, AUDIT_USER_AUTH, NULL,
|
||||
+ buf, audit_username(), -1, NULL, get_remote_ipaddr(), NULL, rv);
|
||||
+out:
|
||||
@ -135,8 +136,8 @@ diff -up openssh-5.8p1/audit-linux.c.audit2 openssh-5.8p1/audit-linux.c
|
||||
|
||||
/* Below is the sshd audit API code */
|
||||
diff -up openssh-5.8p1/auth2-hostbased.c.audit2 openssh-5.8p1/auth2-hostbased.c
|
||||
--- openssh-5.8p1/auth2-hostbased.c.audit2 2010-08-05 05:04:50.000000000 +0200
|
||||
+++ openssh-5.8p1/auth2-hostbased.c 2011-02-23 07:46:37.000000000 +0100
|
||||
--- openssh-5.8p1/auth2-hostbased.c.audit2 2011-02-24 09:38:06.000000000 +0100
|
||||
+++ openssh-5.8p1/auth2-hostbased.c 2011-02-24 09:38:06.000000000 +0100
|
||||
@@ -136,6 +136,18 @@ done:
|
||||
return authenticated;
|
||||
}
|
||||
@ -157,8 +158,8 @@ diff -up openssh-5.8p1/auth2-hostbased.c.audit2 openssh-5.8p1/auth2-hostbased.c
|
||||
int
|
||||
hostbased_key_allowed(struct passwd *pw, const char *cuser, char *chost,
|
||||
diff -up openssh-5.8p1/auth2-pubkey.c.audit2 openssh-5.8p1/auth2-pubkey.c
|
||||
--- openssh-5.8p1/auth2-pubkey.c.audit2 2010-12-01 01:50:14.000000000 +0100
|
||||
+++ openssh-5.8p1/auth2-pubkey.c 2011-02-23 07:46:37.000000000 +0100
|
||||
--- openssh-5.8p1/auth2-pubkey.c.audit2 2011-02-24 09:38:06.000000000 +0100
|
||||
+++ openssh-5.8p1/auth2-pubkey.c 2011-02-24 09:38:06.000000000 +0100
|
||||
@@ -177,6 +177,18 @@ done:
|
||||
return authenticated;
|
||||
}
|
||||
@ -180,7 +181,7 @@ diff -up openssh-5.8p1/auth2-pubkey.c.audit2 openssh-5.8p1/auth2-pubkey.c
|
||||
{
|
||||
diff -up openssh-5.8p1/auth.h.audit2 openssh-5.8p1/auth.h
|
||||
--- openssh-5.8p1/auth.h.audit2 2010-05-10 03:58:03.000000000 +0200
|
||||
+++ openssh-5.8p1/auth.h 2011-02-23 07:46:37.000000000 +0100
|
||||
+++ openssh-5.8p1/auth.h 2011-02-24 09:38:06.000000000 +0100
|
||||
@@ -170,6 +170,7 @@ void abandon_challenge_response(Authctxt
|
||||
char *authorized_keys_file(struct passwd *);
|
||||
char *authorized_keys_file2(struct passwd *);
|
||||
@ -198,8 +199,8 @@ diff -up openssh-5.8p1/auth.h.audit2 openssh-5.8p1/auth.h
|
||||
/* debug messages during authentication */
|
||||
void auth_debug_add(const char *fmt,...) __attribute__((format(printf, 1, 2)));
|
||||
diff -up openssh-5.8p1/auth-rsa.c.audit2 openssh-5.8p1/auth-rsa.c
|
||||
--- openssh-5.8p1/auth-rsa.c.audit2 2010-12-04 23:01:47.000000000 +0100
|
||||
+++ openssh-5.8p1/auth-rsa.c 2011-02-23 07:46:37.000000000 +0100
|
||||
--- openssh-5.8p1/auth-rsa.c.audit2 2011-02-24 09:38:06.000000000 +0100
|
||||
+++ openssh-5.8p1/auth-rsa.c 2011-02-24 09:48:39.000000000 +0100
|
||||
@@ -92,7 +92,10 @@ auth_rsa_verify_response(Key *key, BIGNU
|
||||
{
|
||||
u_char buf[32], mdbuf[16];
|
||||
@ -222,7 +223,7 @@ diff -up openssh-5.8p1/auth-rsa.c.audit2 openssh-5.8p1/auth-rsa.c
|
||||
+ rv = timingsafe_bcmp(response, mdbuf, 16) == 0;
|
||||
+
|
||||
+#ifdef SSH_AUDIT_EVENTS
|
||||
+ fp = key_fingerprint(key, SSH_FP_MD5, SSH_FP_HEX);
|
||||
+ fp = key_selected_fingerprint(key, SSH_FP_HEX);
|
||||
+ if (audit_keyusage(1, "ssh-rsa1", RSA_size(key->rsa) * 8, fp, rv) == 0) {
|
||||
+ debug("unsuccessful audit");
|
||||
+ rv = 0;
|
||||
@ -237,8 +238,8 @@ diff -up openssh-5.8p1/auth-rsa.c.audit2 openssh-5.8p1/auth-rsa.c
|
||||
|
||||
/*
|
||||
diff -up openssh-5.8p1/monitor.c.audit2 openssh-5.8p1/monitor.c
|
||||
--- openssh-5.8p1/monitor.c.audit2 2011-02-23 07:46:37.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor.c 2011-02-23 07:46:37.000000000 +0100
|
||||
--- openssh-5.8p1/monitor.c.audit2 2011-02-24 09:38:06.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor.c 2011-02-24 09:38:06.000000000 +0100
|
||||
@@ -1238,7 +1238,17 @@ mm_answer_keyverify(int sock, Buffer *m)
|
||||
if (!valid_data)
|
||||
fatal("%s: bad signature data blob", __func__);
|
||||
|
@ -1,6 +1,6 @@
|
||||
diff -up openssh-5.8p1/audit-bsm.c.audit3 openssh-5.8p1/audit-bsm.c
|
||||
--- openssh-5.8p1/audit-bsm.c.audit3 2011-02-23 10:05:33.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-bsm.c 2011-02-23 10:05:33.000000000 +0100
|
||||
--- openssh-5.8p1/audit-bsm.c.audit3 2011-02-24 09:54:32.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-bsm.c 2011-02-24 09:54:32.000000000 +0100
|
||||
@@ -389,4 +389,16 @@ audit_event(ssh_audit_event_t event)
|
||||
debug("%s: unhandled event %d", __func__, event);
|
||||
}
|
||||
@ -19,8 +19,8 @@ diff -up openssh-5.8p1/audit-bsm.c.audit3 openssh-5.8p1/audit-bsm.c
|
||||
+}
|
||||
#endif /* BSM */
|
||||
diff -up openssh-5.8p1/audit.c.audit3 openssh-5.8p1/audit.c
|
||||
--- openssh-5.8p1/audit.c.audit3 2011-02-23 10:05:33.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.c 2011-02-23 10:07:53.000000000 +0100
|
||||
--- openssh-5.8p1/audit.c.audit3 2011-02-24 09:54:32.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.c 2011-02-24 09:56:03.000000000 +0100
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
#include <stdarg.h>
|
||||
@ -57,9 +57,9 @@ diff -up openssh-5.8p1/audit.c.audit3 openssh-5.8p1/audit.c
|
||||
# ifndef CUSTOM_SSH_AUDIT_EVENTS
|
||||
/*
|
||||
* Null implementations of audit functions.
|
||||
@@ -223,5 +238,26 @@ 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",
|
||||
host_user ? "pubkey" : "hostbased", geteuid(), audit_username(), type, bits, fp, rv);
|
||||
@@ -224,5 +239,26 @@ audit_keyusage(int host_user, const char
|
||||
host_user ? "pubkey" : "hostbased", geteuid(), audit_username(), type, bits,
|
||||
key_fingerprint_prefix(), fp, rv);
|
||||
}
|
||||
+
|
||||
+/*
|
||||
@ -68,7 +68,7 @@ diff -up openssh-5.8p1/audit.c.audit3 openssh-5.8p1/audit.c
|
||||
+void
|
||||
+audit_unsupported_body(int what)
|
||||
+{
|
||||
+ debug("audit unsupported protocol ieuid %d type %d", geteuid(), what);
|
||||
+ debug("audit unsupported protocol euid %d type %d", geteuid(), what);
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
@ -85,8 +85,8 @@ diff -up openssh-5.8p1/audit.c.audit3 openssh-5.8p1/audit.c
|
||||
# endif /* !defined CUSTOM_SSH_AUDIT_EVENTS */
|
||||
#endif /* SSH_AUDIT_EVENTS */
|
||||
diff -up openssh-5.8p1/audit.h.audit3 openssh-5.8p1/audit.h
|
||||
--- openssh-5.8p1/audit.h.audit3 2011-02-23 10:05:33.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.h 2011-02-23 10:05:33.000000000 +0100
|
||||
--- openssh-5.8p1/audit.h.audit3 2011-02-24 09:54:32.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.h 2011-02-24 09:54:32.000000000 +0100
|
||||
@@ -57,5 +57,9 @@ void audit_end_command(const char *);
|
||||
ssh_audit_event_t audit_classify_auth(const char *);
|
||||
int audit_keyusage(int, const char *, unsigned, char *, int);
|
||||
@ -98,8 +98,8 @@ diff -up openssh-5.8p1/audit.h.audit3 openssh-5.8p1/audit.h
|
||||
|
||||
#endif /* _SSH_AUDIT_H */
|
||||
diff -up openssh-5.8p1/audit-linux.c.audit3 openssh-5.8p1/audit-linux.c
|
||||
--- openssh-5.8p1/audit-linux.c.audit3 2011-02-23 10:05:33.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-linux.c 2011-02-23 10:05:33.000000000 +0100
|
||||
--- openssh-5.8p1/audit-linux.c.audit3 2011-02-24 09:54:32.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-linux.c 2011-02-24 09:54:32.000000000 +0100
|
||||
@@ -40,6 +40,8 @@
|
||||
#include "auth.h"
|
||||
#include "servconf.h"
|
||||
@ -167,8 +167,8 @@ diff -up openssh-5.8p1/audit-linux.c.audit3 openssh-5.8p1/audit-linux.c
|
||||
+
|
||||
#endif /* USE_LINUX_AUDIT */
|
||||
diff -up openssh-5.8p1/auditstub.c.audit3 openssh-5.8p1/auditstub.c
|
||||
--- openssh-5.8p1/auditstub.c.audit3 2011-02-23 10:05:33.000000000 +0100
|
||||
+++ openssh-5.8p1/auditstub.c 2011-02-23 10:05:33.000000000 +0100
|
||||
--- openssh-5.8p1/auditstub.c.audit3 2011-02-24 09:54:32.000000000 +0100
|
||||
+++ openssh-5.8p1/auditstub.c 2011-02-24 09:54:32.000000000 +0100
|
||||
@@ -0,0 +1,39 @@
|
||||
+/* $Id: auditstub.c,v 1.1 jfch Exp $ */
|
||||
+
|
||||
@ -211,7 +211,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
|
||||
--- openssh-5.8p1/cipher.c.audit3 2011-02-09 15:24:23.000000000 +0100
|
||||
+++ openssh-5.8p1/cipher.c 2011-02-23 10:05:33.000000000 +0100
|
||||
+++ openssh-5.8p1/cipher.c 2011-02-24 09:54:32.000000000 +0100
|
||||
@@ -59,15 +59,7 @@ extern void ssh1_3des_iv(EVP_CIPHER_CTX
|
||||
extern const EVP_CIPHER *evp_aes_128_ctr(void);
|
||||
extern void ssh_aes_ctr_iv(EVP_CIPHER_CTX *, int, u_char *, u_int);
|
||||
@ -231,7 +231,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 },
|
||||
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 2011-02-23 10:05:33.000000000 +0100
|
||||
+++ openssh-5.8p1/cipher.h 2011-02-24 09:54:32.000000000 +0100
|
||||
@@ -61,7 +61,16 @@
|
||||
typedef struct Cipher Cipher;
|
||||
typedef struct CipherContext CipherContext;
|
||||
@ -252,7 +252,7 @@ diff -up openssh-5.8p1/cipher.h.audit3 openssh-5.8p1/cipher.h
|
||||
EVP_CIPHER_CTX evp;
|
||||
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 2011-02-23 10:05:33.000000000 +0100
|
||||
+++ openssh-5.8p1/kex.c 2011-02-24 09:54:32.000000000 +0100
|
||||
@@ -49,6 +49,7 @@
|
||||
#include "dispatch.h"
|
||||
#include "monitor.h"
|
||||
@ -317,7 +317,7 @@ diff -up openssh-5.8p1/kex.c.audit3 openssh-5.8p1/kex.c
|
||||
choose_hostkeyalg(kex, cprop[PROPOSAL_SERVER_HOST_KEY_ALGS],
|
||||
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 2011-02-23 10:05:33.000000000 +0100
|
||||
+++ openssh-5.8p1/Makefile.in 2011-02-24 09:54:32.000000000 +0100
|
||||
@@ -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 \
|
||||
kexdh.o kexgex.o kexdhc.o kexgexc.o bufec.o kexecdh.o kexecdhc.o \
|
||||
@ -328,8 +328,8 @@ diff -up openssh-5.8p1/Makefile.in.audit3 openssh-5.8p1/Makefile.in
|
||||
SSHOBJS= ssh.o readconf.o clientloop.o sshtty.o \
|
||||
sshconnect.o sshconnect1.o sshconnect2.o mux.o \
|
||||
diff -up openssh-5.8p1/monitor.c.audit3 openssh-5.8p1/monitor.c
|
||||
--- openssh-5.8p1/monitor.c.audit3 2011-02-23 10:05:33.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor.c 2011-02-23 10:05:33.000000000 +0100
|
||||
--- openssh-5.8p1/monitor.c.audit3 2011-02-24 09:54:32.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor.c 2011-02-24 09:54:32.000000000 +0100
|
||||
@@ -89,6 +89,7 @@
|
||||
#include "ssh2.h"
|
||||
#include "jpake.h"
|
||||
@ -429,8 +429,8 @@ diff -up openssh-5.8p1/monitor.c.audit3 openssh-5.8p1/monitor.c
|
||||
+
|
||||
+#endif /* SSH_AUDIT_EVENTS */
|
||||
diff -up openssh-5.8p1/monitor.h.audit3 openssh-5.8p1/monitor.h
|
||||
--- openssh-5.8p1/monitor.h.audit3 2011-02-23 10:05:33.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor.h 2011-02-23 10:05:33.000000000 +0100
|
||||
--- openssh-5.8p1/monitor.h.audit3 2011-02-24 09:54:32.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor.h 2011-02-24 09:54:32.000000000 +0100
|
||||
@@ -67,6 +67,8 @@ enum monitor_reqtype {
|
||||
MONITOR_REQ_JPAKE_STEP2, MONITOR_ANS_JPAKE_STEP2,
|
||||
MONITOR_REQ_JPAKE_KEY_CONFIRM, MONITOR_ANS_JPAKE_KEY_CONFIRM,
|
||||
@ -441,8 +441,8 @@ diff -up openssh-5.8p1/monitor.h.audit3 openssh-5.8p1/monitor.h
|
||||
|
||||
struct mm_master;
|
||||
diff -up openssh-5.8p1/monitor_wrap.c.audit3 openssh-5.8p1/monitor_wrap.c
|
||||
--- openssh-5.8p1/monitor_wrap.c.audit3 2011-02-23 10:05:33.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor_wrap.c 2011-02-23 10:05:33.000000000 +0100
|
||||
--- openssh-5.8p1/monitor_wrap.c.audit3 2011-02-24 09:54:32.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor_wrap.c 2011-02-24 09:54:32.000000000 +0100
|
||||
@@ -1426,3 +1426,41 @@ mm_jpake_check_confirm(const BIGNUM *k,
|
||||
return success;
|
||||
}
|
||||
@ -486,8 +486,8 @@ diff -up openssh-5.8p1/monitor_wrap.c.audit3 openssh-5.8p1/monitor_wrap.c
|
||||
+}
|
||||
+#endif /* SSH_AUDIT_EVENTS */
|
||||
diff -up openssh-5.8p1/monitor_wrap.h.audit3 openssh-5.8p1/monitor_wrap.h
|
||||
--- openssh-5.8p1/monitor_wrap.h.audit3 2011-02-23 10:05:33.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor_wrap.h 2011-02-23 10:05:33.000000000 +0100
|
||||
--- openssh-5.8p1/monitor_wrap.h.audit3 2011-02-24 09:54:32.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor_wrap.h 2011-02-24 09:54:32.000000000 +0100
|
||||
@@ -75,6 +75,8 @@ void mm_sshpam_free_ctx(void *);
|
||||
void mm_audit_event(ssh_audit_event_t);
|
||||
void mm_audit_run_command(const char *);
|
||||
@ -499,7 +499,7 @@ diff -up openssh-5.8p1/monitor_wrap.h.audit3 openssh-5.8p1/monitor_wrap.h
|
||||
struct Session;
|
||||
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 2011-02-23 10:05:33.000000000 +0100
|
||||
+++ openssh-5.8p1/sshd.c 2011-02-24 09:54:32.000000000 +0100
|
||||
@@ -118,6 +118,7 @@
|
||||
#endif
|
||||
#include "monitor_wrap.h"
|
||||
|
@ -1,6 +1,6 @@
|
||||
diff -up openssh-5.8p1/audit-bsm.c.audit4 openssh-5.8p1/audit-bsm.c
|
||||
--- openssh-5.8p1/audit-bsm.c.audit4 2011-02-23 09:23:30.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-bsm.c 2011-02-23 09:23:30.000000000 +0100
|
||||
--- openssh-5.8p1/audit-bsm.c.audit4 2011-02-24 13:54:02.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-bsm.c 2011-02-24 13:54:02.000000000 +0100
|
||||
@@ -401,4 +401,10 @@ audit_kex_body(int ctos, char *enc, char
|
||||
{
|
||||
/* not implemented */
|
||||
@ -13,8 +13,8 @@ diff -up openssh-5.8p1/audit-bsm.c.audit4 openssh-5.8p1/audit-bsm.c
|
||||
+}
|
||||
#endif /* BSM */
|
||||
diff -up openssh-5.8p1/audit.c.audit4 openssh-5.8p1/audit.c
|
||||
--- openssh-5.8p1/audit.c.audit4 2011-02-23 09:23:30.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.c 2011-02-23 09:23:30.000000000 +0100
|
||||
--- openssh-5.8p1/audit.c.audit4 2011-02-24 13:54:02.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.c 2011-02-24 13:54:02.000000000 +0100
|
||||
@@ -143,6 +143,12 @@ audit_kex(int ctos, char *enc, char *mac
|
||||
PRIVSEP(audit_kex_body(ctos, enc, mac, comp, getpid(), getuid()));
|
||||
}
|
||||
@ -28,7 +28,7 @@ diff -up openssh-5.8p1/audit.c.audit4 openssh-5.8p1/audit.c
|
||||
# ifndef CUSTOM_SSH_AUDIT_EVENTS
|
||||
/*
|
||||
* Null implementations of audit functions.
|
||||
@@ -259,5 +265,15 @@ audit_kex_body(int ctos, char *enc, char
|
||||
@@ -260,5 +266,15 @@ audit_kex_body(int ctos, char *enc, char
|
||||
(unsigned)geteuid(), ctos, enc, mac, compress, (long)pid,
|
||||
(unsigned)uid);
|
||||
}
|
||||
@ -45,8 +45,8 @@ diff -up openssh-5.8p1/audit.c.audit4 openssh-5.8p1/audit.c
|
||||
# endif /* !defined CUSTOM_SSH_AUDIT_EVENTS */
|
||||
#endif /* SSH_AUDIT_EVENTS */
|
||||
diff -up openssh-5.8p1/audit.h.audit4 openssh-5.8p1/audit.h
|
||||
--- openssh-5.8p1/audit.h.audit4 2011-02-23 09:23:30.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.h 2011-02-23 09:23:30.000000000 +0100
|
||||
--- openssh-5.8p1/audit.h.audit4 2011-02-24 13:54:02.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.h 2011-02-24 13:54:02.000000000 +0100
|
||||
@@ -61,5 +61,7 @@ void audit_unsupported(int);
|
||||
void audit_kex(int, char *, char *, char *);
|
||||
void audit_unsupported_body(int);
|
||||
@ -56,9 +56,9 @@ diff -up openssh-5.8p1/audit.h.audit4 openssh-5.8p1/audit.h
|
||||
|
||||
#endif /* _SSH_AUDIT_H */
|
||||
diff -up openssh-5.8p1/audit-linux.c.audit4 openssh-5.8p1/audit-linux.c
|
||||
--- openssh-5.8p1/audit-linux.c.audit4 2011-02-23 09:23:30.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-linux.c 2011-02-23 09:23:30.000000000 +0100
|
||||
@@ -281,6 +281,8 @@ audit_unsupported_body(int what)
|
||||
--- openssh-5.8p1/audit-linux.c.audit4 2011-02-24 13:54:02.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-linux.c 2011-02-24 13:54:02.000000000 +0100
|
||||
@@ -285,6 +285,8 @@ audit_unsupported_body(int what)
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -67,7 +67,7 @@ diff -up openssh-5.8p1/audit-linux.c.audit4 openssh-5.8p1/audit-linux.c
|
||||
void
|
||||
audit_kex_body(int ctos, char *enc, char *mac, char *compress, pid_t pid,
|
||||
uid_t uid)
|
||||
@@ -288,7 +290,6 @@ audit_kex_body(int ctos, char *enc, char
|
||||
@@ -292,7 +294,6 @@ audit_kex_body(int ctos, char *enc, char
|
||||
#ifdef AUDIT_CRYPTO_SESSION
|
||||
char buf[AUDIT_LOG_SIZE];
|
||||
int audit_fd, audit_ok;
|
||||
@ -75,7 +75,7 @@ diff -up openssh-5.8p1/audit-linux.c.audit4 openssh-5.8p1/audit-linux.c
|
||||
Cipher *cipher = cipher_by_name(enc);
|
||||
|
||||
snprintf(buf, sizeof(buf), "op=start direction=%s cipher=%s ksize=%d spid=%jd suid=%jd rport=%d laddr=%s lport=%d",
|
||||
@@ -312,4 +313,30 @@ audit_kex_body(int ctos, char *enc, char
|
||||
@@ -316,4 +317,30 @@ audit_kex_body(int ctos, char *enc, char
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -107,8 +107,8 @@ diff -up openssh-5.8p1/audit-linux.c.audit4 openssh-5.8p1/audit-linux.c
|
||||
+
|
||||
#endif /* USE_LINUX_AUDIT */
|
||||
diff -up openssh-5.8p1/auditstub.c.audit4 openssh-5.8p1/auditstub.c
|
||||
--- openssh-5.8p1/auditstub.c.audit4 2011-02-23 09:23:30.000000000 +0100
|
||||
+++ openssh-5.8p1/auditstub.c 2011-02-23 09:23:30.000000000 +0100
|
||||
--- openssh-5.8p1/auditstub.c.audit4 2011-02-24 13:54:02.000000000 +0100
|
||||
+++ openssh-5.8p1/auditstub.c 2011-02-24 13:54:02.000000000 +0100
|
||||
@@ -27,6 +27,8 @@
|
||||
* Red Hat author: Jan F. Chadima <jchadima@redhat.com>
|
||||
*/
|
||||
@ -132,8 +132,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
|
||||
--- openssh-5.8p1/kex.c.audit4 2011-02-23 09:23:30.000000000 +0100
|
||||
+++ openssh-5.8p1/kex.c 2011-02-23 09:23:30.000000000 +0100
|
||||
--- openssh-5.8p1/kex.c.audit4 2011-02-24 13:54:02.000000000 +0100
|
||||
+++ openssh-5.8p1/kex.c 2011-02-24 13:54:02.000000000 +0100
|
||||
@@ -624,3 +624,34 @@ dump_digest(char *msg, u_char *digest, i
|
||||
fprintf(stderr, "\n");
|
||||
}
|
||||
@ -171,7 +171,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
|
||||
--- openssh-5.8p1/kex.h.audit4 2010-09-24 14:11:14.000000000 +0200
|
||||
+++ openssh-5.8p1/kex.h 2011-02-23 09:23:30.000000000 +0100
|
||||
+++ openssh-5.8p1/kex.h 2011-02-24 13:54:02.000000000 +0100
|
||||
@@ -156,6 +156,8 @@ void kexgex_server(Kex *);
|
||||
void kexecdh_client(Kex *);
|
||||
void kexecdh_server(Kex *);
|
||||
@ -183,7 +183,7 @@ diff -up openssh-5.8p1/kex.h.audit4 openssh-5.8p1/kex.h
|
||||
BIGNUM *, BIGNUM *, BIGNUM *, u_char **, u_int *);
|
||||
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 2011-02-23 09:23:30.000000000 +0100
|
||||
+++ openssh-5.8p1/mac.c 2011-02-24 13:54:02.000000000 +0100
|
||||
@@ -162,6 +162,20 @@ mac_clear(Mac *mac)
|
||||
mac->umac_ctx = NULL;
|
||||
}
|
||||
@ -207,15 +207,15 @@ diff -up openssh-5.8p1/mac.c.audit4 openssh-5.8p1/mac.c
|
||||
int
|
||||
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 2011-02-23 09:23:30.000000000 +0100
|
||||
+++ openssh-5.8p1/mac.h 2011-02-24 13:54:02.000000000 +0100
|
||||
@@ -28,3 +28,4 @@ int mac_setup(Mac *, char *);
|
||||
int mac_init(Mac *);
|
||||
u_char *mac_compute(Mac *, u_int32_t, u_char *, int);
|
||||
void mac_clear(Mac *);
|
||||
+void mac_destroy(Mac *);
|
||||
diff -up openssh-5.8p1/monitor.c.audit4 openssh-5.8p1/monitor.c
|
||||
--- openssh-5.8p1/monitor.c.audit4 2011-02-23 09:23:30.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor.c 2011-02-23 09:23:30.000000000 +0100
|
||||
--- openssh-5.8p1/monitor.c.audit4 2011-02-24 13:54:02.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor.c 2011-02-24 13:54:02.000000000 +0100
|
||||
@@ -181,6 +181,7 @@ int mm_answer_audit_command(int, Buffer
|
||||
int mm_answer_audit_end_command(int, Buffer *);
|
||||
int mm_answer_audit_unsupported_body(int, Buffer *);
|
||||
@ -311,8 +311,8 @@ diff -up openssh-5.8p1/monitor.c.audit4 openssh-5.8p1/monitor.c
|
||||
+}
|
||||
#endif /* SSH_AUDIT_EVENTS */
|
||||
diff -up openssh-5.8p1/monitor.h.audit4 openssh-5.8p1/monitor.h
|
||||
--- openssh-5.8p1/monitor.h.audit4 2011-02-23 09:23:30.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor.h 2011-02-23 09:23:30.000000000 +0100
|
||||
--- openssh-5.8p1/monitor.h.audit4 2011-02-24 13:54:02.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor.h 2011-02-24 13:54:02.000000000 +0100
|
||||
@@ -69,6 +69,7 @@ enum monitor_reqtype {
|
||||
MONITOR_REQ_JPAKE_CHECK_CONFIRM, MONITOR_ANS_JPAKE_CHECK_CONFIRM,
|
||||
MONITOR_REQ_AUDIT_UNSUPPORTED, MONITOR_ANS_AUDIT_UNSUPPORTED,
|
||||
@ -322,8 +322,8 @@ diff -up openssh-5.8p1/monitor.h.audit4 openssh-5.8p1/monitor.h
|
||||
|
||||
struct mm_master;
|
||||
diff -up openssh-5.8p1/monitor_wrap.c.audit4 openssh-5.8p1/monitor_wrap.c
|
||||
--- openssh-5.8p1/monitor_wrap.c.audit4 2011-02-23 09:23:30.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor_wrap.c 2011-02-23 09:23:30.000000000 +0100
|
||||
--- openssh-5.8p1/monitor_wrap.c.audit4 2011-02-24 13:54:02.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor_wrap.c 2011-02-24 13:54:02.000000000 +0100
|
||||
@@ -601,12 +601,14 @@ mm_send_keystate(struct monitor *monitor
|
||||
fatal("%s: conversion of newkeys failed", __func__);
|
||||
|
||||
@ -360,8 +360,8 @@ diff -up openssh-5.8p1/monitor_wrap.c.audit4 openssh-5.8p1/monitor_wrap.c
|
||||
+}
|
||||
#endif /* SSH_AUDIT_EVENTS */
|
||||
diff -up openssh-5.8p1/monitor_wrap.h.audit4 openssh-5.8p1/monitor_wrap.h
|
||||
--- openssh-5.8p1/monitor_wrap.h.audit4 2011-02-23 09:23:30.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor_wrap.h 2011-02-23 09:23:30.000000000 +0100
|
||||
--- openssh-5.8p1/monitor_wrap.h.audit4 2011-02-24 13:54:02.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor_wrap.h 2011-02-24 13:54:02.000000000 +0100
|
||||
@@ -77,6 +77,7 @@ void mm_audit_run_command(const char *);
|
||||
void mm_audit_end_command(const char *);
|
||||
void mm_audit_unsupported_body(int);
|
||||
@ -372,7 +372,7 @@ diff -up openssh-5.8p1/monitor_wrap.h.audit4 openssh-5.8p1/monitor_wrap.h
|
||||
struct Session;
|
||||
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 2011-02-23 09:23:30.000000000 +0100
|
||||
+++ openssh-5.8p1/packet.c 2011-02-24 13:54:02.000000000 +0100
|
||||
@@ -60,6 +60,7 @@
|
||||
#include <signal.h>
|
||||
|
||||
@ -434,7 +434,7 @@ diff -up openssh-5.8p1/packet.c.audit4 openssh-5.8p1/packet.c
|
||||
}
|
||||
active_state->newkeys[mode] = kex_get_newkeys(mode);
|
||||
if (active_state->newkeys[mode] == NULL)
|
||||
@@ -1912,6 +1922,55 @@ packet_get_newkeys(int mode)
|
||||
@@ -1912,6 +1922,54 @@ packet_get_newkeys(int mode)
|
||||
return (void *)active_state->newkeys[mode];
|
||||
}
|
||||
|
||||
@ -469,12 +469,11 @@ diff -up openssh-5.8p1/packet.c.audit4 openssh-5.8p1/packet.c
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+packet_destroy_all(int privsep)
|
||||
+packet_destroy_all(int audit_it, int privsep)
|
||||
+{
|
||||
+ int audit_it;
|
||||
+
|
||||
+ audit_it = packet_state_has_keys (active_state) ||
|
||||
+ packet_state_has_keys (backup_state);
|
||||
+ if (audit_it)
|
||||
+ audit_it = packet_state_has_keys (active_state) ||
|
||||
+ packet_state_has_keys (backup_state);
|
||||
+ packet_destroy_state(active_state);
|
||||
+ packet_destroy_state(backup_state);
|
||||
+ if (audit_it) {
|
||||
@ -490,7 +489,7 @@ diff -up openssh-5.8p1/packet.c.audit4 openssh-5.8p1/packet.c
|
||||
/*
|
||||
* Save the state for the real connection, and use a separate state when
|
||||
* resuming a suspended connection.
|
||||
@@ -1919,18 +1978,12 @@ packet_get_newkeys(int mode)
|
||||
@@ -1919,18 +1977,12 @@ packet_get_newkeys(int mode)
|
||||
void
|
||||
packet_backup_state(void)
|
||||
{
|
||||
@ -510,7 +509,7 @@ diff -up openssh-5.8p1/packet.c.audit4 openssh-5.8p1/packet.c
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1947,9 +2000,7 @@ packet_restore_state(void)
|
||||
@@ -1947,9 +1999,7 @@ packet_restore_state(void)
|
||||
backup_state = active_state;
|
||||
active_state = tmp;
|
||||
active_state->connection_in = backup_state->connection_in;
|
||||
@ -520,7 +519,7 @@ diff -up openssh-5.8p1/packet.c.audit4 openssh-5.8p1/packet.c
|
||||
len = buffer_len(&backup_state->input);
|
||||
if (len > 0) {
|
||||
buf = buffer_ptr(&backup_state->input);
|
||||
@@ -1957,4 +2008,10 @@ packet_restore_state(void)
|
||||
@@ -1957,4 +2007,10 @@ packet_restore_state(void)
|
||||
buffer_clear(&backup_state->input);
|
||||
add_recv_bytes(len);
|
||||
}
|
||||
@ -533,16 +532,29 @@ 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
|
||||
--- openssh-5.8p1/packet.h.audit4 2010-11-20 05:19:38.000000000 +0100
|
||||
+++ openssh-5.8p1/packet.h 2011-02-23 09:23:30.000000000 +0100
|
||||
+++ openssh-5.8p1/packet.h 2011-02-24 13:54:02.000000000 +0100
|
||||
@@ -125,4 +125,5 @@ void packet_restore_state(void);
|
||||
void *packet_get_input(void);
|
||||
void *packet_get_output(void);
|
||||
|
||||
+void packet_destroy_all(int);
|
||||
+void packet_destroy_all(int, int);
|
||||
#endif /* PACKET_H */
|
||||
diff -up openssh-5.8p1/session.c.audit4 openssh-5.8p1/session.c
|
||||
--- openssh-5.8p1/session.c.audit4 2011-02-24 13:54:01.000000000 +0100
|
||||
+++ openssh-5.8p1/session.c 2011-02-24 13:54:02.000000000 +0100
|
||||
@@ -1617,6 +1617,9 @@ do_child(Session *s, const char *command
|
||||
|
||||
/* remove hostkey from the child's memory */
|
||||
destroy_sensitive_data();
|
||||
+ /* Don't audit this - both us and the parent would be talking to the
|
||||
+ monitor over a single socket, with no synchronization. */
|
||||
+ packet_destroy_all(0, 1);
|
||||
|
||||
/* Force a password change */
|
||||
if (s->authctxt->force_pwchange) {
|
||||
diff -up openssh-5.8p1/sshd.c.audit4 openssh-5.8p1/sshd.c
|
||||
--- openssh-5.8p1/sshd.c.audit4 2011-02-23 09:23:30.000000000 +0100
|
||||
+++ openssh-5.8p1/sshd.c 2011-02-23 09:23:30.000000000 +0100
|
||||
--- openssh-5.8p1/sshd.c.audit4 2011-02-24 13:54:02.000000000 +0100
|
||||
+++ openssh-5.8p1/sshd.c 2011-02-24 13:55:09.000000000 +0100
|
||||
@@ -663,6 +663,8 @@ privsep_preauth(Authctxt *authctxt)
|
||||
return (0);
|
||||
}
|
||||
@ -558,7 +570,7 @@ diff -up openssh-5.8p1/sshd.c.audit4 openssh-5.8p1/sshd.c
|
||||
buffer_clear(&loginmsg);
|
||||
+ newkeys_destroy(current_keys[MODE_OUT]);
|
||||
+ newkeys_destroy(current_keys[MODE_IN]);
|
||||
+ packet_destroy_all(0);
|
||||
+ packet_destroy_all(1, 0);
|
||||
monitor_child_postauth(pmonitor);
|
||||
|
||||
/* NEVERREACHED */
|
||||
@ -566,7 +578,7 @@ diff -up openssh-5.8p1/sshd.c.audit4 openssh-5.8p1/sshd.c
|
||||
*/
|
||||
if (use_privsep) {
|
||||
mm_send_keystate(pmonitor);
|
||||
+ packet_destroy_all(1);
|
||||
+ packet_destroy_all(1, 1);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@ -574,8 +586,16 @@ diff -up openssh-5.8p1/sshd.c.audit4 openssh-5.8p1/sshd.c
|
||||
do_authenticated(authctxt);
|
||||
|
||||
/* The connection has been terminated. */
|
||||
+ packet_destroy_all(0);
|
||||
+ packet_destroy_all(1, 0);
|
||||
+
|
||||
packet_get_state(MODE_IN, NULL, NULL, NULL, &ibytes);
|
||||
packet_get_state(MODE_OUT, NULL, NULL, NULL, &obytes);
|
||||
verbose("Transferred: sent %llu, received %llu bytes",
|
||||
@@ -2345,6 +2353,7 @@ cleanup_exit(int i)
|
||||
{
|
||||
if (the_authctxt)
|
||||
do_cleanup(the_authctxt);
|
||||
+ packet_destroy_all(1, is_privsep_child);
|
||||
#ifdef SSH_AUDIT_EVENTS
|
||||
/* done after do_cleanup so it can cancel the PAM auth 'thread' */
|
||||
if ((the_authctxt == NULL || !the_authctxt->authenticated) &&
|
||||
|
@ -0,0 +1,13 @@
|
||||
diff -ur openssh/sshd.c openssh-5.8p1/sshd.c
|
||||
--- openssh/sshd.c 2011-02-23 16:23:05.720096223 +0100
|
||||
+++ openssh-5.8p1/sshd.c 2011-02-23 17:04:24.206612620 +0100
|
||||
@@ -748,7 +748,8 @@
|
||||
buffer_clear(&loginmsg);
|
||||
newkeys_destroy(current_keys[MODE_OUT]);
|
||||
newkeys_destroy(current_keys[MODE_IN]);
|
||||
- packet_destroy_all(1, 0);
|
||||
+ audit_session_key_free_body(2, getpid(), getuid());
|
||||
+ packet_destroy_all(0, 0);
|
||||
monitor_child_postauth(pmonitor);
|
||||
|
||||
/* NEVERREACHED */
|
@ -1,6 +1,6 @@
|
||||
diff -up openssh-5.8p1/audit-bsm.c.audit5 openssh-5.8p1/audit-bsm.c
|
||||
--- openssh-5.8p1/audit-bsm.c.audit5 2011-02-23 09:33:38.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-bsm.c 2011-02-23 09:33:38.000000000 +0100
|
||||
--- openssh-5.8p1/audit-bsm.c.audit5 2011-02-24 13:39:32.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-bsm.c 2011-02-24 13:39:32.000000000 +0100
|
||||
@@ -407,4 +407,22 @@ audit_session_key_free_body(int ctos, pi
|
||||
{
|
||||
/* not implemented */
|
||||
@ -25,9 +25,9 @@ diff -up openssh-5.8p1/audit-bsm.c.audit5 openssh-5.8p1/audit-bsm.c
|
||||
+}
|
||||
#endif /* BSM */
|
||||
diff -up openssh-5.8p1/audit.c.audit5 openssh-5.8p1/audit.c
|
||||
--- openssh-5.8p1/audit.c.audit5 2011-02-23 09:33:38.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.c 2011-02-23 09:33:38.000000000 +0100
|
||||
@@ -275,5 +275,24 @@ audit_session_key_free_body(int ctos, pi
|
||||
--- openssh-5.8p1/audit.c.audit5 2011-02-24 13:39:32.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.c 2011-02-24 13:39:32.000000000 +0100
|
||||
@@ -276,5 +276,24 @@ audit_session_key_free_body(int ctos, pi
|
||||
debug("audit session key discard euid %u direction %d from pid %ld uid %u",
|
||||
(unsigned)geteuid(), ctos, (long)pid, (unsigned)uid);
|
||||
}
|
||||
@ -53,8 +53,8 @@ diff -up openssh-5.8p1/audit.c.audit5 openssh-5.8p1/audit.c
|
||||
# endif /* !defined CUSTOM_SSH_AUDIT_EVENTS */
|
||||
#endif /* SSH_AUDIT_EVENTS */
|
||||
diff -up openssh-5.8p1/audit.h.audit5 openssh-5.8p1/audit.h
|
||||
--- openssh-5.8p1/audit.h.audit5 2011-02-23 09:33:38.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.h 2011-02-23 09:33:38.000000000 +0100
|
||||
--- openssh-5.8p1/audit.h.audit5 2011-02-24 13:39:32.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.h 2011-02-24 13:39:32.000000000 +0100
|
||||
@@ -48,6 +48,8 @@ enum ssh_audit_event_type {
|
||||
};
|
||||
typedef enum ssh_audit_event_type ssh_audit_event_t;
|
||||
@ -73,9 +73,9 @@ diff -up openssh-5.8p1/audit.h.audit5 openssh-5.8p1/audit.h
|
||||
|
||||
#endif /* _SSH_AUDIT_H */
|
||||
diff -up openssh-5.8p1/audit-linux.c.audit5 openssh-5.8p1/audit-linux.c
|
||||
--- openssh-5.8p1/audit-linux.c.audit5 2011-02-23 09:33:38.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-linux.c 2011-02-23 09:33:38.000000000 +0100
|
||||
@@ -339,4 +339,50 @@ audit_session_key_free_body(int ctos, pi
|
||||
--- openssh-5.8p1/audit-linux.c.audit5 2011-02-24 13:39:32.000000000 +0100
|
||||
+++ openssh-5.8p1/audit-linux.c 2011-02-24 13:39:32.000000000 +0100
|
||||
@@ -343,4 +343,50 @@ audit_session_key_free_body(int ctos, pi
|
||||
error("cannot write into audit");
|
||||
}
|
||||
|
||||
@ -127,9 +127,9 @@ diff -up openssh-5.8p1/audit-linux.c.audit5 openssh-5.8p1/audit-linux.c
|
||||
+}
|
||||
#endif /* USE_LINUX_AUDIT */
|
||||
diff -up openssh-5.8p1/key.c.audit5 openssh-5.8p1/key.c
|
||||
--- openssh-5.8p1/key.c.audit5 2011-02-04 01:48:34.000000000 +0100
|
||||
+++ openssh-5.8p1/key.c 2011-02-23 09:33:38.000000000 +0100
|
||||
@@ -1769,6 +1769,30 @@ key_demote(const Key *k)
|
||||
--- openssh-5.8p1/key.c.audit5 2011-02-24 13:39:31.000000000 +0100
|
||||
+++ openssh-5.8p1/key.c 2011-02-24 13:39:32.000000000 +0100
|
||||
@@ -1795,6 +1795,30 @@ key_demote(const Key *k)
|
||||
}
|
||||
|
||||
int
|
||||
@ -161,9 +161,9 @@ diff -up openssh-5.8p1/key.c.audit5 openssh-5.8p1/key.c
|
||||
{
|
||||
if (k == NULL)
|
||||
diff -up openssh-5.8p1/key.h.audit5 openssh-5.8p1/key.h
|
||||
--- openssh-5.8p1/key.h.audit5 2010-11-05 00:19:49.000000000 +0100
|
||||
+++ openssh-5.8p1/key.h 2011-02-23 09:33:38.000000000 +0100
|
||||
@@ -106,6 +106,7 @@ Key *key_generate(int, u_int);
|
||||
--- openssh-5.8p1/key.h.audit5 2011-02-24 13:39:31.000000000 +0100
|
||||
+++ openssh-5.8p1/key.h 2011-02-24 13:39:32.000000000 +0100
|
||||
@@ -109,6 +109,7 @@ Key *key_generate(int, u_int);
|
||||
Key *key_from_private(const Key *);
|
||||
int key_type_from_name(char *);
|
||||
int key_is_cert(const Key *);
|
||||
@ -172,8 +172,8 @@ diff -up openssh-5.8p1/key.h.audit5 openssh-5.8p1/key.h
|
||||
int key_to_certified(Key *, int);
|
||||
int key_drop_cert(Key *);
|
||||
diff -up openssh-5.8p1/monitor.c.audit5 openssh-5.8p1/monitor.c
|
||||
--- openssh-5.8p1/monitor.c.audit5 2011-02-23 09:33:38.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor.c 2011-02-23 09:33:38.000000000 +0100
|
||||
--- openssh-5.8p1/monitor.c.audit5 2011-02-24 13:39:32.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor.c 2011-02-24 13:39:32.000000000 +0100
|
||||
@@ -182,6 +182,7 @@ int mm_answer_audit_end_command(int, Buf
|
||||
int mm_answer_audit_unsupported_body(int, Buffer *);
|
||||
int mm_answer_audit_kex_body(int, Buffer *);
|
||||
@ -240,8 +240,8 @@ diff -up openssh-5.8p1/monitor.c.audit5 openssh-5.8p1/monitor.c
|
||||
+}
|
||||
#endif /* SSH_AUDIT_EVENTS */
|
||||
diff -up openssh-5.8p1/monitor.h.audit5 openssh-5.8p1/monitor.h
|
||||
--- openssh-5.8p1/monitor.h.audit5 2011-02-23 09:33:38.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor.h 2011-02-23 09:33:38.000000000 +0100
|
||||
--- openssh-5.8p1/monitor.h.audit5 2011-02-24 13:39:32.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor.h 2011-02-24 13:39:32.000000000 +0100
|
||||
@@ -70,6 +70,7 @@ enum monitor_reqtype {
|
||||
MONITOR_REQ_AUDIT_UNSUPPORTED, MONITOR_ANS_AUDIT_UNSUPPORTED,
|
||||
MONITOR_REQ_AUDIT_KEX, MONITOR_ANS_AUDIT_KEX,
|
||||
@ -251,8 +251,8 @@ diff -up openssh-5.8p1/monitor.h.audit5 openssh-5.8p1/monitor.h
|
||||
|
||||
struct mm_master;
|
||||
diff -up openssh-5.8p1/monitor_wrap.c.audit5 openssh-5.8p1/monitor_wrap.c
|
||||
--- openssh-5.8p1/monitor_wrap.c.audit5 2011-02-23 09:33:38.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor_wrap.c 2011-02-23 09:33:38.000000000 +0100
|
||||
--- openssh-5.8p1/monitor_wrap.c.audit5 2011-02-24 13:39:32.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor_wrap.c 2011-02-24 13:39:32.000000000 +0100
|
||||
@@ -1480,4 +1480,20 @@ mm_audit_session_key_free_body(int ctos,
|
||||
&m);
|
||||
buffer_free(&m);
|
||||
@ -275,8 +275,8 @@ diff -up openssh-5.8p1/monitor_wrap.c.audit5 openssh-5.8p1/monitor_wrap.c
|
||||
+}
|
||||
#endif /* SSH_AUDIT_EVENTS */
|
||||
diff -up openssh-5.8p1/monitor_wrap.h.audit5 openssh-5.8p1/monitor_wrap.h
|
||||
--- openssh-5.8p1/monitor_wrap.h.audit5 2011-02-23 09:33:38.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor_wrap.h 2011-02-23 09:33:38.000000000 +0100
|
||||
--- openssh-5.8p1/monitor_wrap.h.audit5 2011-02-24 13:39:32.000000000 +0100
|
||||
+++ openssh-5.8p1/monitor_wrap.h 2011-02-24 13:39:32.000000000 +0100
|
||||
@@ -78,6 +78,7 @@ void mm_audit_end_command(const char *);
|
||||
void mm_audit_unsupported_body(int);
|
||||
void mm_audit_kex_body(int, char *, char *, char *, pid_t, uid_t);
|
||||
@ -286,8 +286,8 @@ diff -up openssh-5.8p1/monitor_wrap.h.audit5 openssh-5.8p1/monitor_wrap.h
|
||||
|
||||
struct Session;
|
||||
diff -up openssh-5.8p1/session.c.audit5 openssh-5.8p1/session.c
|
||||
--- openssh-5.8p1/session.c.audit5 2011-02-23 09:33:38.000000000 +0100
|
||||
+++ openssh-5.8p1/session.c 2011-02-23 09:33:38.000000000 +0100
|
||||
--- openssh-5.8p1/session.c.audit5 2011-02-24 13:39:32.000000000 +0100
|
||||
+++ openssh-5.8p1/session.c 2011-02-24 13:43:35.000000000 +0100
|
||||
@@ -132,7 +132,7 @@ extern int log_stderr;
|
||||
extern int debug_flag;
|
||||
extern u_int utmp_len;
|
||||
@ -303,12 +303,12 @@ diff -up openssh-5.8p1/session.c.audit5 openssh-5.8p1/session.c
|
||||
/* remove hostkey from the child's memory */
|
||||
- destroy_sensitive_data();
|
||||
+ destroy_sensitive_data(1);
|
||||
|
||||
/* Force a password change */
|
||||
if (s->authctxt->force_pwchange) {
|
||||
/* Don't audit this - both us and the parent would be talking to the
|
||||
monitor over a single socket, with no synchronization. */
|
||||
packet_destroy_all(0, 1);
|
||||
diff -up openssh-5.8p1/sshd.c.audit5 openssh-5.8p1/sshd.c
|
||||
--- openssh-5.8p1/sshd.c.audit5 2011-02-23 09:33:38.000000000 +0100
|
||||
+++ openssh-5.8p1/sshd.c 2011-02-23 09:33:38.000000000 +0100
|
||||
--- openssh-5.8p1/sshd.c.audit5 2011-02-24 13:39:32.000000000 +0100
|
||||
+++ openssh-5.8p1/sshd.c 2011-02-24 13:43:08.000000000 +0100
|
||||
@@ -253,7 +253,7 @@ Buffer loginmsg;
|
||||
struct passwd *privsep_pw = NULL;
|
||||
|
||||
@ -448,7 +448,7 @@ diff -up openssh-5.8p1/sshd.c.audit5 openssh-5.8p1/sshd.c
|
||||
|
||||
if (use_privsep)
|
||||
mm_ssh1_session_id(session_id);
|
||||
@@ -2351,8 +2402,23 @@ do_ssh2_kex(void)
|
||||
@@ -2351,8 +2402,22 @@ do_ssh2_kex(void)
|
||||
void
|
||||
cleanup_exit(int i)
|
||||
{
|
||||
@ -468,7 +468,6 @@ diff -up openssh-5.8p1/sshd.c.audit5 openssh-5.8p1/sshd.c
|
||||
+ is_privsep_child = use_privsep && pmonitor != NULL && !mm_is_monitor();
|
||||
+ if (sensitive_data.host_keys != NULL)
|
||||
+ destroy_sensitive_data(is_privsep_child);
|
||||
+ packet_destroy_all(is_privsep_child);
|
||||
packet_destroy_all(1, is_privsep_child);
|
||||
#ifdef SSH_AUDIT_EVENTS
|
||||
/* done after do_cleanup so it can cancel the PAM auth 'thread' */
|
||||
if (!use_privsep || mm_is_monitor())
|
||||
|
@ -0,0 +1,21 @@
|
||||
diff -ur openssh/monitor.c openssh-5.8p1/monitor.c
|
||||
--- openssh/monitor.c 2011-02-23 14:22:42.007937852 +0100
|
||||
+++ openssh-5.8p1/monitor.c 2011-02-23 19:26:01.491710679 +0100
|
||||
@@ -106,6 +106,8 @@
|
||||
extern int auth_debug_init;
|
||||
extern Buffer loginmsg;
|
||||
|
||||
+extern void destroy_sensitive_data(int);
|
||||
+
|
||||
/* State exported from the child */
|
||||
|
||||
struct {
|
||||
@@ -1651,6 +1653,8 @@
|
||||
sshpam_cleanup();
|
||||
#endif
|
||||
|
||||
+ destroy_sensitive_data(0);
|
||||
+
|
||||
while (waitpid(pmonitor->m_pid, &status, 0) == -1)
|
||||
if (errno != EINTR)
|
||||
exit(1);
|
@ -1,38 +1,6 @@
|
||||
diff -up openssh-5.8p1/audit.c.fips openssh-5.8p1/audit.c
|
||||
--- openssh-5.8p1/audit.c.fips 2011-02-21 17:05:13.000000000 +0100
|
||||
+++ openssh-5.8p1/audit.c 2011-02-21 17:06:18.000000000 +0100
|
||||
@@ -121,7 +121,7 @@ audit_key(int host_user, int *rv, const
|
||||
char *fp;
|
||||
const char *crypto_name;
|
||||
|
||||
- fp = key_fingerprint(key, SSH_FP_MD5, SSH_FP_HEX);
|
||||
+ fp = key_fingerprint(key, FIPS_mode() ? SSH_FP_SHA1 : SSH_FP_MD5, SSH_FP_HEX);
|
||||
if (key->type == KEY_RSA1)
|
||||
crypto_name = "ssh-rsa1";
|
||||
else
|
||||
diff -up openssh-5.8p1/auth2-pubkey.c.fips openssh-5.8p1/auth2-pubkey.c
|
||||
--- openssh-5.8p1/auth2-pubkey.c.fips 2011-02-21 17:05:14.000000000 +0100
|
||||
+++ openssh-5.8p1/auth2-pubkey.c 2011-02-21 17:05:14.000000000 +0100
|
||||
@@ -36,6 +36,7 @@
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
+#include <openssl/fips.h>
|
||||
|
||||
#include "xmalloc.h"
|
||||
#include "ssh.h"
|
||||
@@ -371,7 +372,7 @@ user_search_key_in_file(FILE *f, char *f
|
||||
found_key = 1;
|
||||
debug("matching key found: file %s, line %lu",
|
||||
file, linenum);
|
||||
- fp = key_fingerprint(found, SSH_FP_MD5, SSH_FP_HEX);
|
||||
+ fp = key_fingerprint(found, FIPS_mode() ? SSH_FP_SHA1 : SSH_FP_MD5, SSH_FP_HEX);
|
||||
verbose("Found matching %s key: %s",
|
||||
key_type(found), fp);
|
||||
xfree(fp);
|
||||
diff -up openssh-5.8p1/authfile.c.fips openssh-5.8p1/authfile.c
|
||||
--- openssh-5.8p1/authfile.c.fips 2010-12-01 02:03:39.000000000 +0100
|
||||
+++ openssh-5.8p1/authfile.c 2011-02-21 17:05:14.000000000 +0100
|
||||
+++ openssh-5.8p1/authfile.c 2011-02-24 10:34:41.000000000 +0100
|
||||
@@ -145,8 +145,14 @@ key_private_rsa1_to_blob(Key *key, Buffe
|
||||
/* Allocate space for the private part of the key in the buffer. */
|
||||
cp = buffer_append_space(&encrypted, buffer_len(&buffer));
|
||||
@ -66,21 +34,9 @@ diff -up openssh-5.8p1/authfile.c.fips openssh-5.8p1/authfile.c
|
||||
cipher_crypt(&ciphercontext, cp,
|
||||
buffer_ptr(blob), buffer_len(blob));
|
||||
cipher_cleanup(&ciphercontext);
|
||||
diff -up openssh-5.8p1/auth-rsa.c.fips openssh-5.8p1/auth-rsa.c
|
||||
--- openssh-5.8p1/auth-rsa.c.fips 2011-02-21 17:05:13.000000000 +0100
|
||||
+++ openssh-5.8p1/auth-rsa.c 2011-02-21 17:07:33.000000000 +0100
|
||||
@@ -119,7 +119,7 @@ auth_rsa_verify_response(Key *key, BIGNU
|
||||
rv = timingsafe_bcmp(response, mdbuf, 16) == 0;
|
||||
|
||||
#ifdef SSH_AUDIT_EVENTS
|
||||
- fp = key_fingerprint(key, SSH_FP_MD5, SSH_FP_HEX);
|
||||
+ fp = key_fingerprint(key, FIPS_mode() ? SSH_FP_SHA1 : SSH_FP_MD5, SSH_FP_HEX);
|
||||
if (audit_keyusage(1, "ssh-rsa1", RSA_size(key->rsa) * 8, fp, rv) == 0) {
|
||||
debug("unsuccessful audit");
|
||||
rv = 0;
|
||||
diff -up openssh-5.8p1/cipher.c.fips openssh-5.8p1/cipher.c
|
||||
--- openssh-5.8p1/cipher.c.fips 2011-02-21 17:05:13.000000000 +0100
|
||||
+++ openssh-5.8p1/cipher.c 2011-02-21 17:05:14.000000000 +0100
|
||||
--- openssh-5.8p1/cipher.c.fips 2011-02-24 10:34:40.000000000 +0100
|
||||
+++ openssh-5.8p1/cipher.c 2011-02-24 10:34:41.000000000 +0100
|
||||
@@ -40,6 +40,7 @@
|
||||
#include <sys/types.h>
|
||||
|
||||
@ -167,7 +123,7 @@ diff -up openssh-5.8p1/cipher.c.fips openssh-5.8p1/cipher.c
|
||||
/*
|
||||
diff -up openssh-5.8p1/cipher-ctr.c.fips openssh-5.8p1/cipher-ctr.c
|
||||
--- openssh-5.8p1/cipher-ctr.c.fips 2010-10-07 13:06:42.000000000 +0200
|
||||
+++ openssh-5.8p1/cipher-ctr.c 2011-02-21 17:05:14.000000000 +0100
|
||||
+++ openssh-5.8p1/cipher-ctr.c 2011-02-24 10:34:41.000000000 +0100
|
||||
@@ -140,7 +140,8 @@ evp_aes_128_ctr(void)
|
||||
aes_ctr.do_cipher = ssh_aes_ctr;
|
||||
#ifndef SSH_OLD_EVP
|
||||
@ -179,8 +135,8 @@ diff -up openssh-5.8p1/cipher-ctr.c.fips openssh-5.8p1/cipher-ctr.c
|
||||
return (&aes_ctr);
|
||||
}
|
||||
diff -up openssh-5.8p1/cipher.h.fips openssh-5.8p1/cipher.h
|
||||
--- openssh-5.8p1/cipher.h.fips 2011-02-21 17:05:13.000000000 +0100
|
||||
+++ openssh-5.8p1/cipher.h 2011-02-21 17:05:14.000000000 +0100
|
||||
--- openssh-5.8p1/cipher.h.fips 2011-02-24 10:34:40.000000000 +0100
|
||||
+++ openssh-5.8p1/cipher.h 2011-02-24 10:34:41.000000000 +0100
|
||||
@@ -87,7 +87,7 @@ void cipher_init(CipherContext *, Ciphe
|
||||
const u_char *, u_int, int);
|
||||
void cipher_crypt(CipherContext *, u_char *, const u_char *, u_int);
|
||||
@ -190,9 +146,29 @@ diff -up openssh-5.8p1/cipher.h.fips openssh-5.8p1/cipher.h
|
||||
u_int cipher_blocksize(const Cipher *);
|
||||
u_int cipher_keylen(const Cipher *);
|
||||
u_int cipher_is_cbc(const Cipher *);
|
||||
diff -up openssh-5.8p1/key.c.fips openssh-5.8p1/key.c
|
||||
--- openssh-5.8p1/key.c.fips 2011-02-24 10:35:39.000000000 +0100
|
||||
+++ openssh-5.8p1/key.c 2011-02-24 10:37:20.000000000 +0100
|
||||
@@ -40,6 +40,7 @@
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <openssl/evp.h>
|
||||
+#include <openssl/fips.h>
|
||||
#include <openbsd-compat/openssl-compat.h>
|
||||
|
||||
#include <stdarg.h>
|
||||
@@ -601,6 +602,8 @@ key_fingerprint_selection(void)
|
||||
static int rv = -1;
|
||||
|
||||
if (rv == -1) {
|
||||
+ if (FIPS_mode())
|
||||
+ return (rv = 1);
|
||||
env = getenv("SSH_FINGERPRINT_TYPE");
|
||||
rv = env && !strcmp (env, "sha");
|
||||
}
|
||||
diff -up openssh-5.8p1/mac.c.fips openssh-5.8p1/mac.c
|
||||
--- openssh-5.8p1/mac.c.fips 2011-02-21 17:05:13.000000000 +0100
|
||||
+++ openssh-5.8p1/mac.c 2011-02-21 17:05:14.000000000 +0100
|
||||
--- openssh-5.8p1/mac.c.fips 2011-02-24 10:34:40.000000000 +0100
|
||||
+++ openssh-5.8p1/mac.c 2011-02-24 10:34:41.000000000 +0100
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <sys/types.h>
|
||||
|
||||
@ -243,8 +219,8 @@ diff -up openssh-5.8p1/mac.c.fips openssh-5.8p1/mac.c
|
||||
for (i = 0; macs[i].name; i++) {
|
||||
if (strcmp(name, macs[i].name) == 0) {
|
||||
diff -up openssh-5.8p1/Makefile.in.fips openssh-5.8p1/Makefile.in
|
||||
--- openssh-5.8p1/Makefile.in.fips 2011-02-21 17:05:14.000000000 +0100
|
||||
+++ openssh-5.8p1/Makefile.in 2011-02-21 17:05:14.000000000 +0100
|
||||
--- openssh-5.8p1/Makefile.in.fips 2011-02-24 10:34:40.000000000 +0100
|
||||
+++ openssh-5.8p1/Makefile.in 2011-02-24 10:34:41.000000000 +0100
|
||||
@@ -145,25 +145,25 @@ libssh.a: $(LIBSSH_OBJS)
|
||||
$(RANLIB) $@
|
||||
|
||||
@ -288,7 +264,7 @@ diff -up openssh-5.8p1/Makefile.in.fips openssh-5.8p1/Makefile.in
|
||||
$(LD) -o $@ sftp-server.o sftp-common.o sftp-server-main.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)
|
||||
diff -up openssh-5.8p1/myproposal.h.fips openssh-5.8p1/myproposal.h
|
||||
--- openssh-5.8p1/myproposal.h.fips 2011-01-13 12:00:22.000000000 +0100
|
||||
+++ openssh-5.8p1/myproposal.h 2011-02-21 17:05:14.000000000 +0100
|
||||
+++ openssh-5.8p1/myproposal.h 2011-02-24 10:34:41.000000000 +0100
|
||||
@@ -81,7 +81,12 @@
|
||||
"hmac-sha1-96,hmac-md5-96"
|
||||
#define KEX_DEFAULT_COMP "none,zlib@openssh.com,zlib"
|
||||
@ -305,7 +281,7 @@ diff -up openssh-5.8p1/myproposal.h.fips openssh-5.8p1/myproposal.h
|
||||
KEX_DEFAULT_KEX,
|
||||
diff -up openssh-5.8p1/openbsd-compat/bsd-arc4random.c.fips openssh-5.8p1/openbsd-compat/bsd-arc4random.c
|
||||
--- openssh-5.8p1/openbsd-compat/bsd-arc4random.c.fips 2010-03-25 22:52:02.000000000 +0100
|
||||
+++ openssh-5.8p1/openbsd-compat/bsd-arc4random.c 2011-02-21 17:05:14.000000000 +0100
|
||||
+++ openssh-5.8p1/openbsd-compat/bsd-arc4random.c 2011-02-24 10:34:41.000000000 +0100
|
||||
@@ -39,6 +39,7 @@
|
||||
static int rc4_ready = 0;
|
||||
static RC4_KEY rc4;
|
||||
@ -347,53 +323,9 @@ diff -up openssh-5.8p1/openbsd-compat/bsd-arc4random.c.fips openssh-5.8p1/openbs
|
||||
#endif /* !HAVE_ARC4RANDOM */
|
||||
|
||||
#ifndef HAVE_ARC4RANDOM_BUF
|
||||
diff -up openssh-5.8p1/ssh-add.c.fips openssh-5.8p1/ssh-add.c
|
||||
--- openssh-5.8p1/ssh-add.c.fips 2010-11-11 04:17:02.000000000 +0100
|
||||
+++ openssh-5.8p1/ssh-add.c 2011-02-21 17:05:14.000000000 +0100
|
||||
@@ -42,6 +42,7 @@
|
||||
#include <sys/param.h>
|
||||
|
||||
#include <openssl/evp.h>
|
||||
+#include <openssl/fips.h>
|
||||
#include "openbsd-compat/openssl-compat.h"
|
||||
|
||||
#include <fcntl.h>
|
||||
@@ -280,7 +281,7 @@ list_identities(AuthenticationConnection
|
||||
key = ssh_get_next_identity(ac, &comment, version)) {
|
||||
had_identities = 1;
|
||||
if (do_fp) {
|
||||
- fp = key_fingerprint(key, SSH_FP_MD5,
|
||||
+ fp = key_fingerprint(key, FIPS_mode() ? SSH_FP_SHA1 : SSH_FP_MD5,
|
||||
SSH_FP_HEX);
|
||||
printf("%d %s %s (%s)\n",
|
||||
key_size(key), fp, comment, key_type(key));
|
||||
diff -up openssh-5.8p1/ssh-agent.c.fips openssh-5.8p1/ssh-agent.c
|
||||
--- openssh-5.8p1/ssh-agent.c.fips 2010-12-01 01:50:35.000000000 +0100
|
||||
+++ openssh-5.8p1/ssh-agent.c 2011-02-21 17:05:14.000000000 +0100
|
||||
@@ -51,6 +51,7 @@
|
||||
|
||||
#include <openssl/evp.h>
|
||||
#include <openssl/md5.h>
|
||||
+#include <openssl/fips.h>
|
||||
#include "openbsd-compat/openssl-compat.h"
|
||||
|
||||
#include <errno.h>
|
||||
@@ -199,9 +200,9 @@ confirm_key(Identity *id)
|
||||
char *p;
|
||||
int ret = -1;
|
||||
|
||||
- p = key_fingerprint(id->key, SSH_FP_MD5, SSH_FP_HEX);
|
||||
- if (ask_permission("Allow use of key %s?\nKey fingerprint %s.",
|
||||
- id->comment, p))
|
||||
+ p = key_fingerprint(id->key, FIPS_mode() ? SSH_FP_SHA1 : SSH_FP_MD5, SSH_FP_HEX);
|
||||
+ if (ask_permission("Allow use of key %s?\nKey %sfingerprint %s.",
|
||||
+ id->comment, FIPS_mode() ? "SHA1 " : "", p))
|
||||
ret = 0;
|
||||
xfree(p);
|
||||
|
||||
diff -up openssh-5.8p1/ssh.c.fips openssh-5.8p1/ssh.c
|
||||
--- openssh-5.8p1/ssh.c.fips 2011-02-04 01:42:15.000000000 +0100
|
||||
+++ openssh-5.8p1/ssh.c 2011-02-21 17:05:14.000000000 +0100
|
||||
+++ openssh-5.8p1/ssh.c 2011-02-24 10:34:41.000000000 +0100
|
||||
@@ -73,6 +73,8 @@
|
||||
|
||||
#include <openssl/evp.h>
|
||||
@ -457,8 +389,8 @@ diff -up openssh-5.8p1/ssh.c.fips openssh-5.8p1/ssh.c
|
||||
if (ssh_connect(host, &hostaddr, options.port,
|
||||
options.address_family, options.connection_attempts, &timeout_ms,
|
||||
diff -up openssh-5.8p1/sshconnect2.c.fips openssh-5.8p1/sshconnect2.c
|
||||
--- openssh-5.8p1/sshconnect2.c.fips 2010-12-01 02:21:51.000000000 +0100
|
||||
+++ openssh-5.8p1/sshconnect2.c 2011-02-21 17:05:14.000000000 +0100
|
||||
--- openssh-5.8p1/sshconnect2.c.fips 2011-02-24 10:34:40.000000000 +0100
|
||||
+++ openssh-5.8p1/sshconnect2.c 2011-02-24 10:34:41.000000000 +0100
|
||||
@@ -44,6 +44,8 @@
|
||||
#include <vis.h>
|
||||
#endif
|
||||
@ -491,134 +423,9 @@ diff -up openssh-5.8p1/sshconnect2.c.fips openssh-5.8p1/sshconnect2.c
|
||||
if (options.hostkeyalgorithms != NULL)
|
||||
myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] =
|
||||
options.hostkeyalgorithms;
|
||||
@@ -590,8 +600,8 @@ input_userauth_pk_ok(int type, u_int32_t
|
||||
key->type, pktype);
|
||||
goto done;
|
||||
}
|
||||
- fp = key_fingerprint(key, SSH_FP_MD5, SSH_FP_HEX);
|
||||
- debug2("input_userauth_pk_ok: fp %s", fp);
|
||||
+ fp = key_fingerprint(key, SSH_FP_SHA1, SSH_FP_HEX);
|
||||
+ debug2("input_userauth_pk_ok: SHA1 fp %s", fp);
|
||||
xfree(fp);
|
||||
|
||||
/*
|
||||
diff -up openssh-5.8p1/sshconnect.c.fips openssh-5.8p1/sshconnect.c
|
||||
--- openssh-5.8p1/sshconnect.c.fips 2011-01-16 13:17:59.000000000 +0100
|
||||
+++ openssh-5.8p1/sshconnect.c 2011-02-21 17:05:14.000000000 +0100
|
||||
@@ -41,6 +41,8 @@
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
+#include <openssl/fips.h>
|
||||
+
|
||||
#include "xmalloc.h"
|
||||
#include "key.h"
|
||||
#include "hostfile.h"
|
||||
@@ -705,6 +707,7 @@ check_host_key(char *hostname, struct so
|
||||
int len, cancelled_forwarding = 0;
|
||||
struct hostkeys *host_hostkeys, *ip_hostkeys;
|
||||
const struct hostkey_entry *host_found, *ip_found;
|
||||
+ int fips_on = FIPS_mode();
|
||||
|
||||
/*
|
||||
* Force accepting of the host key for loopback/localhost. The
|
||||
@@ -798,10 +801,10 @@ check_host_key(char *hostname, struct so
|
||||
"key for IP address '%.128s' to the list "
|
||||
"of known hosts.", type, ip);
|
||||
} else if (options.visual_host_key) {
|
||||
- fp = key_fingerprint(host_key, SSH_FP_MD5, SSH_FP_HEX);
|
||||
- ra = key_fingerprint(host_key, SSH_FP_MD5,
|
||||
+ fp = key_fingerprint(host_key, fips_on ? SSH_FP_SHA1 : SSH_FP_MD5, SSH_FP_HEX);
|
||||
+ ra = key_fingerprint(host_key, fips_on ? SSH_FP_SHA1 : SSH_FP_MD5,
|
||||
SSH_FP_RANDOMART);
|
||||
- logit("Host key fingerprint is %s\n%s\n", fp, ra);
|
||||
+ logit("Host key %sfingerprint is %s\n%s\n", fips_on ? "SHA1 " : "", fp, ra);
|
||||
xfree(ra);
|
||||
xfree(fp);
|
||||
}
|
||||
@@ -830,6 +833,7 @@ check_host_key(char *hostname, struct so
|
||||
goto fail;
|
||||
} else if (options.strict_host_key_checking == 2) {
|
||||
char msg1[1024], msg2[1024];
|
||||
+ int fips_on = FIPS_mode();
|
||||
|
||||
if (show_other_keys(host_hostkeys, host_key))
|
||||
snprintf(msg1, sizeof(msg1),
|
||||
@@ -838,8 +842,8 @@ check_host_key(char *hostname, struct so
|
||||
else
|
||||
snprintf(msg1, sizeof(msg1), ".");
|
||||
/* The default */
|
||||
- fp = key_fingerprint(host_key, SSH_FP_MD5, SSH_FP_HEX);
|
||||
- ra = key_fingerprint(host_key, SSH_FP_MD5,
|
||||
+ fp = key_fingerprint(host_key, fips_on ? SSH_FP_SHA1 : SSH_FP_MD5, SSH_FP_HEX);
|
||||
+ ra = key_fingerprint(host_key, fips_on ? SSH_FP_SHA1 : SSH_FP_MD5,
|
||||
SSH_FP_RANDOMART);
|
||||
msg2[0] = '\0';
|
||||
if (options.verify_host_key_dns) {
|
||||
@@ -855,10 +859,10 @@ check_host_key(char *hostname, struct so
|
||||
snprintf(msg, sizeof(msg),
|
||||
"The authenticity of host '%.200s (%s)' can't be "
|
||||
"established%s\n"
|
||||
- "%s key fingerprint is %s.%s%s\n%s"
|
||||
+ "%s key %sfingerprint is %s.%s%s\n%s"
|
||||
"Are you sure you want to continue connecting "
|
||||
"(yes/no)? ",
|
||||
- host, ip, msg1, type, fp,
|
||||
+ host, ip, msg1, type, fips_on ? "SHA1 " : "", fp,
|
||||
options.visual_host_key ? "\n" : "",
|
||||
options.visual_host_key ? ra : "",
|
||||
msg2);
|
||||
@@ -1208,20 +1212,21 @@ show_other_keys(struct hostkeys *hostkey
|
||||
int i, ret = 0;
|
||||
char *fp, *ra;
|
||||
const struct hostkey_entry *found;
|
||||
+ int fips_on = FIPS_mode();
|
||||
|
||||
for (i = 0; type[i] != -1; i++) {
|
||||
if (type[i] == key->type)
|
||||
continue;
|
||||
if (!lookup_key_in_hostkeys_by_type(hostkeys, type[i], &found))
|
||||
continue;
|
||||
- fp = key_fingerprint(found->key, SSH_FP_MD5, SSH_FP_HEX);
|
||||
- ra = key_fingerprint(found->key, SSH_FP_MD5, SSH_FP_RANDOMART);
|
||||
+ fp = key_fingerprint(found->key, fips_on ? SSH_FP_SHA1 : SSH_FP_MD5, SSH_FP_HEX);
|
||||
+ ra = key_fingerprint(found->key, fips_on ? SSH_FP_SHA1 : SSH_FP_MD5, SSH_FP_RANDOMART);
|
||||
logit("WARNING: %s key found for host %s\n"
|
||||
"in %s:%lu\n"
|
||||
- "%s key fingerprint %s.",
|
||||
+ "%s key %sfingerprint %s.\n%s\n",
|
||||
key_type(found->key),
|
||||
found->host, found->file, found->line,
|
||||
- key_type(found->key), fp);
|
||||
+ key_type(found), fips_on ? "SHA1 ":"", fp, ra);
|
||||
if (options.visual_host_key)
|
||||
logit("%s", ra);
|
||||
xfree(ra);
|
||||
@@ -1235,8 +1240,9 @@ static void
|
||||
warn_changed_key(Key *host_key)
|
||||
{
|
||||
char *fp;
|
||||
+ int fips_on = FIPS_mode();
|
||||
|
||||
- fp = key_fingerprint(host_key, SSH_FP_MD5, SSH_FP_HEX);
|
||||
+ fp = key_fingerprint(host_key, fips_on ? SSH_FP_SHA1 : SSH_FP_MD5, SSH_FP_HEX);
|
||||
|
||||
error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
|
||||
error("@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @");
|
||||
@@ -1244,8 +1250,8 @@ warn_changed_key(Key *host_key)
|
||||
error("IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!");
|
||||
error("Someone could be eavesdropping on you right now (man-in-the-middle attack)!");
|
||||
error("It is also possible that a host key has just been changed.");
|
||||
- error("The fingerprint for the %s key sent by the remote host is\n%s.",
|
||||
- key_type(host_key), fp);
|
||||
+ error("The %sfingerprint for the %s key sent by the remote host is\n%s.",
|
||||
+ fips_on ? "SHA1 ":"", key_type(host_key), fp);
|
||||
error("Please contact your system administrator.");
|
||||
|
||||
xfree(fp);
|
||||
diff -up openssh-5.8p1/sshd.c.fips openssh-5.8p1/sshd.c
|
||||
--- openssh-5.8p1/sshd.c.fips 2011-02-21 17:05:14.000000000 +0100
|
||||
+++ openssh-5.8p1/sshd.c 2011-02-21 17:05:14.000000000 +0100
|
||||
--- openssh-5.8p1/sshd.c.fips 2011-02-24 10:34:41.000000000 +0100
|
||||
+++ openssh-5.8p1/sshd.c 2011-02-24 10:34:41.000000000 +0100
|
||||
@@ -76,6 +76,8 @@
|
||||
#include <openssl/bn.h>
|
||||
#include <openssl/md5.h>
|
||||
@ -628,7 +435,7 @@ diff -up openssh-5.8p1/sshd.c.fips openssh-5.8p1/sshd.c
|
||||
#include "openbsd-compat/openssl-compat.h"
|
||||
|
||||
#ifdef HAVE_SECUREWARE
|
||||
@@ -1327,6 +1329,12 @@ main(int ac, char **av)
|
||||
@@ -1363,6 +1365,12 @@ main(int ac, char **av)
|
||||
(void)set_auth_parameters(ac, av);
|
||||
#endif
|
||||
__progname = ssh_get_progname(av[0]);
|
||||
@ -641,7 +448,7 @@ diff -up openssh-5.8p1/sshd.c.fips openssh-5.8p1/sshd.c
|
||||
init_rng();
|
||||
|
||||
/* Save argv. Duplicate so setproctitle emulation doesn't clobber it */
|
||||
@@ -1488,8 +1496,6 @@ main(int ac, char **av)
|
||||
@@ -1524,8 +1532,6 @@ main(int ac, char **av)
|
||||
else
|
||||
closefrom(REEXEC_DEVCRYPTO_RESERVED_FD);
|
||||
|
||||
@ -650,7 +457,7 @@ diff -up openssh-5.8p1/sshd.c.fips openssh-5.8p1/sshd.c
|
||||
/*
|
||||
* Force logging to stderr until we have loaded the private host
|
||||
* key (unless started from inetd)
|
||||
@@ -1608,6 +1614,10 @@ main(int ac, char **av)
|
||||
@@ -1644,6 +1650,10 @@ main(int ac, char **av)
|
||||
debug("private host key: #%d type %d %s", i, key->type,
|
||||
key_type(key));
|
||||
}
|
||||
@ -661,7 +468,7 @@ diff -up openssh-5.8p1/sshd.c.fips openssh-5.8p1/sshd.c
|
||||
if ((options.protocol & SSH_PROTO_1) && !sensitive_data.have_ssh1_key) {
|
||||
logit("Disabling protocol version 1. Could not load host key");
|
||||
options.protocol &= ~SSH_PROTO_1;
|
||||
@@ -1772,6 +1782,10 @@ main(int ac, char **av)
|
||||
@@ -1808,6 +1818,10 @@ main(int ac, char **av)
|
||||
/* Initialize the random number generator. */
|
||||
arc4random_stir();
|
||||
|
||||
@ -672,7 +479,7 @@ diff -up openssh-5.8p1/sshd.c.fips openssh-5.8p1/sshd.c
|
||||
/* Chdir to the root directory so that the current disk can be
|
||||
unmounted if desired. */
|
||||
chdir("/");
|
||||
@@ -2315,6 +2329,9 @@ do_ssh2_kex(void)
|
||||
@@ -2349,6 +2363,9 @@ do_ssh2_kex(void)
|
||||
if (options.ciphers != NULL) {
|
||||
myproposal[PROPOSAL_ENC_ALGS_CTOS] =
|
||||
myproposal[PROPOSAL_ENC_ALGS_STOC] = options.ciphers;
|
||||
@ -682,7 +489,7 @@ diff -up openssh-5.8p1/sshd.c.fips openssh-5.8p1/sshd.c
|
||||
}
|
||||
myproposal[PROPOSAL_ENC_ALGS_CTOS] =
|
||||
compat_cipher_proposal(myproposal[PROPOSAL_ENC_ALGS_CTOS]);
|
||||
@@ -2324,6 +2341,9 @@ do_ssh2_kex(void)
|
||||
@@ -2358,6 +2375,9 @@ do_ssh2_kex(void)
|
||||
if (options.macs != NULL) {
|
||||
myproposal[PROPOSAL_MAC_ALGS_CTOS] =
|
||||
myproposal[PROPOSAL_MAC_ALGS_STOC] = options.macs;
|
||||
@ -692,43 +499,3 @@ diff -up openssh-5.8p1/sshd.c.fips openssh-5.8p1/sshd.c
|
||||
}
|
||||
if (options.compression == COMP_NONE) {
|
||||
myproposal[PROPOSAL_COMP_ALGS_CTOS] =
|
||||
diff -up openssh-5.8p1/ssh-keygen.c.fips openssh-5.8p1/ssh-keygen.c
|
||||
--- openssh-5.8p1/ssh-keygen.c.fips 2011-02-21 17:05:14.000000000 +0100
|
||||
+++ openssh-5.8p1/ssh-keygen.c 2011-02-21 17:05:14.000000000 +0100
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
#include <openssl/evp.h>
|
||||
#include <openssl/pem.h>
|
||||
+#include <openssl/fips.h>
|
||||
#include "openbsd-compat/openssl-compat.h"
|
||||
|
||||
#include <errno.h>
|
||||
@@ -721,7 +722,7 @@ do_fingerprint(struct passwd *pw)
|
||||
enum fp_type fptype;
|
||||
struct stat st;
|
||||
|
||||
- fptype = print_bubblebabble ? SSH_FP_SHA1 : SSH_FP_MD5;
|
||||
+ fptype = print_bubblebabble ? SSH_FP_SHA1 : FIPS_mode() ? SSH_FP_SHA1 : SSH_FP_MD5;
|
||||
rep = print_bubblebabble ? SSH_FP_BUBBLEBABBLE : SSH_FP_HEX;
|
||||
|
||||
if (!have_identity)
|
||||
@@ -2253,14 +2254,15 @@ passphrase_again:
|
||||
fclose(f);
|
||||
|
||||
if (!quiet) {
|
||||
- char *fp = key_fingerprint(public, SSH_FP_MD5, SSH_FP_HEX);
|
||||
- char *ra = key_fingerprint(public, SSH_FP_MD5,
|
||||
+ int fips_on = FIPS_mode();
|
||||
+ char *fp = key_fingerprint(public, fips_on ? SSH_FP_SHA1 : SSH_FP_MD5, SSH_FP_HEX);
|
||||
+ char *ra = key_fingerprint(public, fips_on ? SSH_FP_SHA1 : SSH_FP_MD5,
|
||||
SSH_FP_RANDOMART);
|
||||
printf("Your public key has been saved in %s.\n",
|
||||
identity_file);
|
||||
- printf("The key fingerprint is:\n");
|
||||
+ printf("The key %sfingerprint is:\n", fips_on ? "SHA1 " : "");
|
||||
printf("%s %s\n", fp, comment);
|
||||
- printf("The key's randomart image is:\n");
|
||||
+ printf("The key's %srandomart image is:\n", fips_on ? "SHA1 " :"");
|
||||
printf("%s\n", ra);
|
||||
xfree(ra);
|
||||
xfree(fp);
|
||||
|
11
openssh.spec
11
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
|
||||
%define openssh_ver 5.8p1
|
||||
%define openssh_rel 7
|
||||
%define openssh_rel 8
|
||||
%define pam_ssh_agent_ver 0.9.2
|
||||
%define pam_ssh_agent_rel 30
|
||||
|
||||
@ -93,8 +93,10 @@ Source3: sshd.init
|
||||
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
|
||||
|
||||
Patch100: openssh-5.8p1-wIm.patch
|
||||
Patch99: openssh-5.8p1-wIm.patch
|
||||
Patch0: openssh-5.6p1-redhat.patch
|
||||
#?
|
||||
Patch100: openssh-5.8p1-fingerprit.patch
|
||||
#https://bugzilla.mindrot.org/show_bug.cgi?id=1402
|
||||
Patch1: openssh-5.8p1-audit1.patch
|
||||
Patch101: openssh-5.8p1-audit1a.patch
|
||||
@ -287,8 +289,9 @@ The module is most useful for su and sudo service stacks.
|
||||
%prep
|
||||
%setup -q -a 4
|
||||
#Do not enable by default
|
||||
###%patch100 -p1 -b .wIm
|
||||
###%patch99 -p1 -b .wIm
|
||||
%patch0 -p1 -b .redhat
|
||||
%patch100 -p1 -b .fingerprint
|
||||
%patch1 -p1 -b .audit1
|
||||
%patch101 -p1 -b .audit1a
|
||||
%patch2 -p1 -b .audit2
|
||||
@ -616,7 +619,7 @@ fi
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Wed Feb 23 2011 Jan F. Chadima <jchadima@redhat.com> - 5.8p1-7 + 0.9.2-30
|
||||
* Thu Feb 24 2011 Jan F. Chadima <jchadima@redhat.com> - 5.8p1-8 + 0.9.2-30
|
||||
- another audit improovements
|
||||
|
||||
* Thu Feb 17 2011 Jan F. Chadima <jchadima@redhat.com> - 5.8p1-4 + 0.9.2-30
|
||||
|
Loading…
Reference in New Issue
Block a user