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