1*5f4c09ddSEd Maste--- /dev/null 2015-01-22 23:10:33.000000000 -0500 2*5f4c09ddSEd Maste+++ dist/pfilter.c 2015-01-22 23:46:03.000000000 -0500 3*5f4c09ddSEd Maste@@ -0,0 +1,32 @@ 4*5f4c09ddSEd Maste+#include "namespace.h" 5*5f4c09ddSEd Maste+#include "includes.h" 6*5f4c09ddSEd Maste+#include "ssh.h" 7*5f4c09ddSEd Maste+#include "packet.h" 8*5f4c09ddSEd Maste+#include "log.h" 9*5f4c09ddSEd Maste+#include "pfilter.h" 10*5f4c09ddSEd Maste+#include <blacklist.h> 11*5f4c09ddSEd Maste+ 12*5f4c09ddSEd Maste+static struct blacklist *blstate; 13*5f4c09ddSEd Maste+ 14*5f4c09ddSEd Maste+void 15*5f4c09ddSEd Maste+pfilter_init(void) 16*5f4c09ddSEd Maste+{ 17*5f4c09ddSEd Maste+ blstate = blacklist_open(); 18*5f4c09ddSEd Maste+} 19*5f4c09ddSEd Maste+ 20*5f4c09ddSEd Maste+void 21*5f4c09ddSEd Maste+pfilter_notify(int a) 22*5f4c09ddSEd Maste+{ 23*5f4c09ddSEd Maste+ int fd; 24*5f4c09ddSEd Maste+ if (blstate == NULL) 25*5f4c09ddSEd Maste+ pfilter_init(); 26*5f4c09ddSEd Maste+ if (blstate == NULL) 27*5f4c09ddSEd Maste+ return; 28*5f4c09ddSEd Maste+ // XXX: 3? 29*5f4c09ddSEd Maste+ fd = packet_connection_is_on_socket() ? packet_get_connection_in() : 3; 30*5f4c09ddSEd Maste+ (void)blacklist_r(blstate, a, fd, "ssh"); 31*5f4c09ddSEd Maste+ if (a == 0) { 32*5f4c09ddSEd Maste+ blacklist_close(blstate); 33*5f4c09ddSEd Maste+ blstate = NULL; 34*5f4c09ddSEd Maste+ } 35*5f4c09ddSEd Maste+} 36*5f4c09ddSEd Maste--- /dev/null 2015-01-20 21:14:44.000000000 -0500 37*5f4c09ddSEd Maste+++ dist/pfilter.h 2015-01-20 20:16:20.000000000 -0500 38*5f4c09ddSEd Maste@@ -0,0 +1,3 @@ 39*5f4c09ddSEd Maste+ 40*5f4c09ddSEd Maste+void pfilter_notify(int); 41*5f4c09ddSEd Maste+void pfilter_init(void); 42*5f4c09ddSEd MasteIndex: bin/sshd/Makefile 43*5f4c09ddSEd Maste=================================================================== 44*5f4c09ddSEd MasteRCS file: /cvsroot/src/crypto/external/bsd/openssh/bin/sshd/Makefile,v 45*5f4c09ddSEd Masteretrieving revision 1.10 46*5f4c09ddSEd Mastediff -u -u -r1.10 Makefile 47*5f4c09ddSEd Maste--- bin/sshd/Makefile 19 Oct 2014 16:30:58 -0000 1.10 48*5f4c09ddSEd Maste+++ bin/sshd/Makefile 22 Jan 2015 21:39:21 -0000 49*5f4c09ddSEd Maste@@ -15,7 +15,7 @@ 50*5f4c09ddSEd Maste auth2-none.c auth2-passwd.c auth2-pubkey.c \ 51*5f4c09ddSEd Maste monitor_mm.c monitor.c monitor_wrap.c \ 52*5f4c09ddSEd Maste kexdhs.c kexgexs.c kexecdhs.c sftp-server.c sftp-common.c \ 53*5f4c09ddSEd Maste- roaming_common.c roaming_serv.c sandbox-rlimit.c 54*5f4c09ddSEd Maste+ roaming_common.c roaming_serv.c sandbox-rlimit.c pfilter.c 55*5f4c09ddSEd Maste 56*5f4c09ddSEd Maste COPTS.auth-options.c= -Wno-pointer-sign 57*5f4c09ddSEd Maste COPTS.ldapauth.c= -Wno-format-nonliteral # XXX: should fix 58*5f4c09ddSEd Maste@@ -68,3 +68,6 @@ 59*5f4c09ddSEd Maste 60*5f4c09ddSEd Maste LDADD+= -lwrap 61*5f4c09ddSEd Maste DPADD+= ${LIBWRAP} 62*5f4c09ddSEd Maste+ 63*5f4c09ddSEd Maste+LDADD+= -lblacklist 64*5f4c09ddSEd Maste+DPADD+= ${LIBBLACKLIST} 65*5f4c09ddSEd Mastediff -ru openssh-7.7p1/auth-pam.c dist/auth-pam.c 66*5f4c09ddSEd Maste--- openssh-7.7p1/auth-pam.c 2018-04-02 01:38:28.000000000 -0400 67*5f4c09ddSEd Maste+++ dist/auth-pam.c 2018-05-23 11:56:22.206661484 -0400 68*5f4c09ddSEd Maste@@ -103,6 +103,7 @@ 69*5f4c09ddSEd Maste #include "ssh-gss.h" 70*5f4c09ddSEd Maste #endif 71*5f4c09ddSEd Maste #include "monitor_wrap.h" 72*5f4c09ddSEd Maste+#include "pfilter.h" 73*5f4c09ddSEd Maste 74*5f4c09ddSEd Maste extern ServerOptions options; 75*5f4c09ddSEd Maste extern Buffer loginmsg; 76*5f4c09ddSEd Maste@@ -526,6 +527,7 @@ 77*5f4c09ddSEd Maste ssh_msg_send(ctxt->pam_csock, PAM_MAXTRIES, &buffer); 78*5f4c09ddSEd Maste else 79*5f4c09ddSEd Maste ssh_msg_send(ctxt->pam_csock, PAM_AUTH_ERR, &buffer); 80*5f4c09ddSEd Maste+ pfilter_notify(1); 81*5f4c09ddSEd Maste buffer_free(&buffer); 82*5f4c09ddSEd Maste pthread_exit(NULL); 83*5f4c09ddSEd Maste 84*5f4c09ddSEd Maste@@ -804,6 +806,7 @@ 85*5f4c09ddSEd Maste free(msg); 86*5f4c09ddSEd Maste return (0); 87*5f4c09ddSEd Maste } 88*5f4c09ddSEd Maste+ pfilter_notify(1); 89*5f4c09ddSEd Maste error("PAM: %s for %s%.100s from %.100s", msg, 90*5f4c09ddSEd Maste sshpam_authctxt->valid ? "" : "illegal user ", 91*5f4c09ddSEd Maste sshpam_authctxt->user, 92*5f4c09ddSEd Mastediff -ru openssh-7.7p1/auth2.c dist/auth2.c 93*5f4c09ddSEd Maste--- openssh-7.7p1/auth2.c 2018-04-02 01:38:28.000000000 -0400 94*5f4c09ddSEd Maste+++ dist/auth2.c 2018-05-23 11:57:31.022197317 -0400 95*5f4c09ddSEd Maste@@ -51,6 +51,7 @@ 96*5f4c09ddSEd Maste #include "dispatch.h" 97*5f4c09ddSEd Maste #include "pathnames.h" 98*5f4c09ddSEd Maste #include "buffer.h" 99*5f4c09ddSEd Maste+#include "pfilter.h" 100*5f4c09ddSEd Maste 101*5f4c09ddSEd Maste #ifdef GSSAPI 102*5f4c09ddSEd Maste #include "ssh-gss.h" 103*5f4c09ddSEd Maste@@ -242,6 +243,7 @@ 104*5f4c09ddSEd Maste } else { 105*5f4c09ddSEd Maste /* Invalid user, fake password information */ 106*5f4c09ddSEd Maste authctxt->pw = fakepw(); 107*5f4c09ddSEd Maste+ pfilter_notify(1); 108*5f4c09ddSEd Maste #ifdef SSH_AUDIT_EVENTS 109*5f4c09ddSEd Maste PRIVSEP(audit_event(SSH_INVALID_USER)); 110*5f4c09ddSEd Maste #endif 111*5f4c09ddSEd MasteOnly in dist: pfilter.c 112*5f4c09ddSEd MasteOnly in dist: pfilter.h 113*5f4c09ddSEd Mastediff -ru openssh-7.7p1/sshd.c dist/sshd.c 114*5f4c09ddSEd Maste--- openssh-7.7p1/sshd.c 2018-04-02 01:38:28.000000000 -0400 115*5f4c09ddSEd Maste+++ dist/sshd.c 2018-05-23 11:59:39.573197347 -0400 116*5f4c09ddSEd Maste@@ -122,6 +122,7 @@ 117*5f4c09ddSEd Maste #include "auth-options.h" 118*5f4c09ddSEd Maste #include "version.h" 119*5f4c09ddSEd Maste #include "ssherr.h" 120*5f4c09ddSEd Maste+#include "pfilter.h" 121*5f4c09ddSEd Maste 122*5f4c09ddSEd Maste /* Re-exec fds */ 123*5f4c09ddSEd Maste #define REEXEC_DEVCRYPTO_RESERVED_FD (STDERR_FILENO + 1) 124*5f4c09ddSEd Maste@@ -346,6 +347,7 @@ 125*5f4c09ddSEd Maste static void 126*5f4c09ddSEd Maste grace_alarm_handler(int sig) 127*5f4c09ddSEd Maste { 128*5f4c09ddSEd Maste+ pfilter_notify(1); 129*5f4c09ddSEd Maste if (use_privsep && pmonitor != NULL && pmonitor->m_pid > 0) 130*5f4c09ddSEd Maste kill(pmonitor->m_pid, SIGALRM); 131*5f4c09ddSEd Maste 132*5f4c09ddSEd Maste@@ -1835,6 +1837,8 @@ 133*5f4c09ddSEd Maste if (test_flag) 134*5f4c09ddSEd Maste exit(0); 135*5f4c09ddSEd Maste 136*5f4c09ddSEd Maste+ pfilter_init(); 137*5f4c09ddSEd Maste+ 138*5f4c09ddSEd Maste /* 139*5f4c09ddSEd Maste * Clear out any supplemental groups we may have inherited. This 140*5f4c09ddSEd Maste * prevents inadvertent creation of files with bad modes (in the 141*5f4c09ddSEd Maste@@ -2280,6 +2284,9 @@ 142*5f4c09ddSEd Maste { 143*5f4c09ddSEd Maste struct ssh *ssh = active_state; /* XXX */ 144*5f4c09ddSEd Maste 145*5f4c09ddSEd Maste+ if (i == 255) 146*5f4c09ddSEd Maste+ pfilter_notify(1); 147*5f4c09ddSEd Maste+ 148*5f4c09ddSEd Maste if (the_authctxt) { 149*5f4c09ddSEd Maste do_cleanup(ssh, the_authctxt); 150*5f4c09ddSEd Maste if (use_privsep && privsep_is_preauth && 151