|
Lines 143-148
int mm_answer_gss_userok(int, Buffer *);
Link Here
|
| 143 |
int mm_answer_gss_checkmic(int, Buffer *); |
143 |
int mm_answer_gss_checkmic(int, Buffer *); |
| 144 |
#endif |
144 |
#endif |
| 145 |
|
145 |
|
|
|
146 |
#ifdef AUDIT_EVENTS |
| 147 |
int mm_answer_audit_event(int, Buffer *); |
| 148 |
int mm_answer_audit_command(int, Buffer *); |
| 149 |
#endif |
| 150 |
|
| 146 |
static Authctxt *authctxt; |
151 |
static Authctxt *authctxt; |
| 147 |
static BIGNUM *ssh1_challenge = NULL; /* used for ssh1 rsa auth */ |
152 |
static BIGNUM *ssh1_challenge = NULL; /* used for ssh1 rsa auth */ |
| 148 |
|
153 |
|
|
Lines 186-191
struct mon_table mon_dispatch_proto20[]
Link Here
|
| 186 |
{MONITOR_REQ_PAM_RESPOND, MON_ISAUTH, mm_answer_pam_respond}, |
191 |
{MONITOR_REQ_PAM_RESPOND, MON_ISAUTH, mm_answer_pam_respond}, |
| 187 |
{MONITOR_REQ_PAM_FREE_CTX, MON_ONCE|MON_AUTHDECIDE, mm_answer_pam_free_ctx}, |
192 |
{MONITOR_REQ_PAM_FREE_CTX, MON_ONCE|MON_AUTHDECIDE, mm_answer_pam_free_ctx}, |
| 188 |
#endif |
193 |
#endif |
|
|
194 |
#ifdef AUDIT_EVENTS |
| 195 |
{MONITOR_REQ_AUDIT_EVENT, 0, mm_answer_audit_event}, |
| 196 |
#endif |
| 189 |
#ifdef BSD_AUTH |
197 |
#ifdef BSD_AUTH |
| 190 |
{MONITOR_REQ_BSDAUTHQUERY, MON_ISAUTH, mm_answer_bsdauthquery}, |
198 |
{MONITOR_REQ_BSDAUTHQUERY, MON_ISAUTH, mm_answer_bsdauthquery}, |
| 191 |
{MONITOR_REQ_BSDAUTHRESPOND, MON_AUTH,mm_answer_bsdauthrespond}, |
199 |
{MONITOR_REQ_BSDAUTHRESPOND, MON_AUTH,mm_answer_bsdauthrespond}, |
|
Lines 211-216
struct mon_table mon_dispatch_postauth20
Link Here
|
| 211 |
{MONITOR_REQ_PTY, 0, mm_answer_pty}, |
219 |
{MONITOR_REQ_PTY, 0, mm_answer_pty}, |
| 212 |
{MONITOR_REQ_PTYCLEANUP, 0, mm_answer_pty_cleanup}, |
220 |
{MONITOR_REQ_PTYCLEANUP, 0, mm_answer_pty_cleanup}, |
| 213 |
{MONITOR_REQ_TERM, 0, mm_answer_term}, |
221 |
{MONITOR_REQ_TERM, 0, mm_answer_term}, |
|
|
222 |
#ifdef AUDIT_EVENTS |
| 223 |
{MONITOR_REQ_AUDIT_EVENT, MON_PERMIT, mm_answer_audit_event}, |
| 224 |
{MONITOR_REQ_AUDIT_COMMAND, MON_PERMIT, mm_answer_audit_command}, |
| 225 |
#endif |
| 214 |
{0, 0, NULL} |
226 |
{0, 0, NULL} |
| 215 |
}; |
227 |
}; |
| 216 |
|
228 |
|
|
Lines 239-244
struct mon_table mon_dispatch_proto15[]
Link Here
|
| 239 |
{MONITOR_REQ_PAM_RESPOND, MON_ISAUTH, mm_answer_pam_respond}, |
251 |
{MONITOR_REQ_PAM_RESPOND, MON_ISAUTH, mm_answer_pam_respond}, |
| 240 |
{MONITOR_REQ_PAM_FREE_CTX, MON_ONCE|MON_AUTHDECIDE, mm_answer_pam_free_ctx}, |
252 |
{MONITOR_REQ_PAM_FREE_CTX, MON_ONCE|MON_AUTHDECIDE, mm_answer_pam_free_ctx}, |
| 241 |
#endif |
253 |
#endif |
|
|
254 |
#ifdef AUDIT_EVENTS |
| 255 |
{MONITOR_REQ_AUDIT_EVENT, 0, mm_answer_audit_event}, |
| 256 |
#endif |
| 242 |
{0, 0, NULL} |
257 |
{0, 0, NULL} |
| 243 |
}; |
258 |
}; |
| 244 |
|
259 |
|
|
Lines 246-251
struct mon_table mon_dispatch_postauth15
Link Here
|
| 246 |
{MONITOR_REQ_PTY, MON_ONCE, mm_answer_pty}, |
261 |
{MONITOR_REQ_PTY, MON_ONCE, mm_answer_pty}, |
| 247 |
{MONITOR_REQ_PTYCLEANUP, MON_ONCE, mm_answer_pty_cleanup}, |
262 |
{MONITOR_REQ_PTYCLEANUP, MON_ONCE, mm_answer_pty_cleanup}, |
| 248 |
{MONITOR_REQ_TERM, 0, mm_answer_term}, |
263 |
{MONITOR_REQ_TERM, 0, mm_answer_term}, |
|
|
264 |
#ifdef AUDIT_EVENTS |
| 265 |
{MONITOR_REQ_AUDIT_EVENT, MON_PERMIT, mm_answer_audit_event}, |
| 266 |
{MONITOR_REQ_AUDIT_COMMAND, MON_PERMIT|MON_ONCE, mm_answer_audit_command}, |
| 267 |
#endif |
| 249 |
{0, 0, NULL} |
268 |
{0, 0, NULL} |
| 250 |
}; |
269 |
}; |
| 251 |
|
270 |
|
|
Lines 609-614
mm_answer_pwnamallow(int sock, Buffer *m
Link Here
|
| 609 |
if (options.use_pam) |
628 |
if (options.use_pam) |
| 610 |
monitor_permit(mon_dispatch, MONITOR_REQ_PAM_START, 1); |
629 |
monitor_permit(mon_dispatch, MONITOR_REQ_PAM_START, 1); |
| 611 |
#endif |
630 |
#endif |
|
|
631 |
#ifdef AUDIT_EVENTS |
| 632 |
monitor_permit(mon_dispatch, MONITOR_REQ_AUDIT_EVENT, 1); |
| 633 |
#endif |
| 612 |
|
634 |
|
| 613 |
return (0); |
635 |
return (0); |
| 614 |
} |
636 |
} |
|
Lines 1490-1495
mm_answer_term(int sock, Buffer *req)
Link Here
|
| 1490 |
/* Terminate process */ |
1512 |
/* Terminate process */ |
| 1491 |
exit(res); |
1513 |
exit(res); |
| 1492 |
} |
1514 |
} |
|
|
1515 |
|
| 1516 |
#ifdef AUDIT_EVENTS |
| 1517 |
/* Report that an audit event occurred */ |
| 1518 |
int |
| 1519 |
mm_answer_audit_event(int socket, Buffer *m) |
| 1520 |
{ |
| 1521 |
ssh_audit_event_t event; |
| 1522 |
|
| 1523 |
debug3("%s entering", __func__); |
| 1524 |
|
| 1525 |
event = buffer_get_int(m); |
| 1526 |
buffer_free(m); |
| 1527 |
switch(event) { |
| 1528 |
case AUTH_FAIL_PUBKEY: |
| 1529 |
case AUTH_FAIL_HOSTBASED: |
| 1530 |
case AUTH_FAIL_GSSAPI: |
| 1531 |
case LOGIN_EXCEED_MAXTRIES: |
| 1532 |
case LOGIN_ROOT_DENIED: |
| 1533 |
case CONNECTION_CLOSE: |
| 1534 |
audit_event(event); |
| 1535 |
break; |
| 1536 |
default: |
| 1537 |
fatal("Audit event type %d not permitted", event); |
| 1538 |
} |
| 1539 |
|
| 1540 |
return (0); |
| 1541 |
} |
| 1542 |
|
| 1543 |
int |
| 1544 |
mm_answer_audit_command(int socket, Buffer *m) |
| 1545 |
{ |
| 1546 |
u_int len; |
| 1547 |
char *cmd; |
| 1548 |
|
| 1549 |
debug3("%s entering", __func__); |
| 1550 |
cmd = buffer_get_string(m, &len); |
| 1551 |
/* sanity check command, if so how? */ |
| 1552 |
audit_run_command(cmd); |
| 1553 |
xfree(cmd); |
| 1554 |
buffer_free(m); |
| 1555 |
return (0); |
| 1556 |
} |
| 1557 |
#endif /* AUDIT_EVENTS */ |
| 1493 |
|
1558 |
|
| 1494 |
void |
1559 |
void |
| 1495 |
monitor_apply_keystate(struct monitor *pmonitor) |
1560 |
monitor_apply_keystate(struct monitor *pmonitor) |