xref: /freebsd/contrib/blocklist/diff/ssh.diff (revision 5f4c09dd85bff675e0ca63c55ea3c517e0fddfcc)
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