audit.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*
  2. * Copyright (c) 2004, 2005 Darren Tucker. All rights reserved.
  3. *
  4. * Redistribution and use in source and binary forms, with or without
  5. * modification, are permitted provided that the following conditions
  6. * are met:
  7. * 1. Redistributions of source code must retain the above copyright
  8. * notice, this list of conditions and the following disclaimer.
  9. * 2. Redistributions in binary form must reproduce the above copyright
  10. * notice, this list of conditions and the following disclaimer in the
  11. * documentation and/or other materials provided with the distribution.
  12. *
  13. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  14. * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  15. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  16. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  17. * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  18. * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  19. * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  20. * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  21. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  22. * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  23. */
  24. #ifndef _SSH_AUDIT_H
  25. # define _SSH_AUDIT_H
  26. #include "loginrec.h"
  27. #include "sshkey.h"
  28. struct ssh;
  29. enum ssh_audit_event_type {
  30. SSH_LOGIN_EXCEED_MAXTRIES,
  31. SSH_LOGIN_ROOT_DENIED,
  32. SSH_AUTH_SUCCESS,
  33. SSH_AUTH_FAIL_NONE,
  34. SSH_AUTH_FAIL_PASSWD,
  35. SSH_AUTH_FAIL_KBDINT, /* keyboard-interactive or challenge-response */
  36. SSH_AUTH_FAIL_PUBKEY, /* ssh2 pubkey or ssh1 rsa */
  37. SSH_AUTH_FAIL_HOSTBASED, /* ssh2 hostbased or ssh1 rhostsrsa */
  38. SSH_AUTH_FAIL_GSSAPI,
  39. SSH_INVALID_USER,
  40. SSH_NOLOGIN, /* denied by /etc/nologin, not implemented */
  41. SSH_CONNECTION_CLOSE, /* closed after attempting auth or session */
  42. SSH_CONNECTION_ABANDON, /* closed without completing auth */
  43. SSH_AUDIT_UNKNOWN
  44. };
  45. enum ssh_audit_kex {
  46. SSH_AUDIT_UNSUPPORTED_CIPHER,
  47. SSH_AUDIT_UNSUPPORTED_MAC,
  48. SSH_AUDIT_UNSUPPORTED_COMPRESSION
  49. };
  50. typedef enum ssh_audit_event_type ssh_audit_event_t;
  51. int listening_for_clients(void);
  52. void audit_connection_from(const char *, int);
  53. void audit_event(struct ssh *, ssh_audit_event_t);
  54. void audit_count_session_open(void);
  55. void audit_session_open(struct logininfo *);
  56. void audit_session_close(struct logininfo *);
  57. int audit_run_command(struct ssh *, const char *);
  58. void audit_end_command(struct ssh *, int, const char *);
  59. ssh_audit_event_t audit_classify_auth(const char *);
  60. int audit_keyusage(struct ssh *, int, char *, int);
  61. void audit_key(struct ssh *, int, int *, const struct sshkey *);
  62. void audit_unsupported(struct ssh *, int);
  63. void audit_kex(struct ssh *, int, char *, char *, char *, char *);
  64. void audit_unsupported_body(struct ssh *, int);
  65. void audit_kex_body(struct ssh *, int, char *, char *, char *, char *, pid_t, uid_t);
  66. void audit_session_key_free(struct ssh *, int ctos);
  67. void audit_session_key_free_body(struct ssh *, int ctos, pid_t, uid_t);
  68. void audit_destroy_sensitive_data(struct ssh *, const char *, pid_t, uid_t);
  69. #endif /* _SSH_AUDIT_H */